Java Code Examples for com.intellij.openapi.progress.ProgressManager#checkCanceled()
The following examples show how to use
com.intellij.openapi.progress.ProgressManager#checkCanceled() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ReadMostlyRWLock.java From consulo with Apache License 2.0 | 6 votes |
public void readLock() { checkReadThreadAccess(); Reader status = R.get(); throwIfImpatient(status); if (tryReadLock(status)) { return; } for (int iter = 0; ; iter++) { if (tryReadLock(status)) { break; } ProgressManager.checkCanceled(); waitABit(status, iter); } }
Example 2
Source File: ShelveChangesManager.java From consulo with Apache License 2.0 | 6 votes |
public List<VirtualFile> gatherPatchFiles(final Collection<VirtualFile> files) { final List<VirtualFile> result = new ArrayList<>(); final LinkedList<VirtualFile> filesQueue = new LinkedList<>(files); while (!filesQueue.isEmpty()) { ProgressManager.checkCanceled(); final VirtualFile file = filesQueue.removeFirst(); if (file.isDirectory()) { filesQueue.addAll(Arrays.asList(file.getChildren())); continue; } if (PatchFileType.NAME.equals(file.getFileType().getName())) { result.add(file); } } return result; }
Example 3
Source File: UsingNamespaceFix.java From consulo-csharp with Apache License 2.0 | 6 votes |
@RequiredReadAction private static <T extends DotNetQualifiedElement> void collect(Set<NamespaceReference> result, Collection<T> element, Condition<T> condition) { for(T type : element) { String presentableParentQName = type.getPresentableParentQName(); if(StringUtil.isEmpty(presentableParentQName)) { continue; } ProgressManager.checkCanceled(); if(!condition.value(type)) { continue; } result.add(new NamespaceReference(presentableParentQName, null)); } }
Example 4
Source File: BashVarProcessor.java From BashSupport with Apache License 2.0 | 5 votes |
public boolean execute(@NotNull PsiElement psiElement, @NotNull ResolveState resolveState) { ProgressManager.checkCanceled(); if (psiElement instanceof BashVarDef) { BashVarDef varDef = (BashVarDef) psiElement; if (!varName.equals(varDef.getName()) || startElement == psiElement || startElement.equals(psiElement)) { //proceed with the search return true; } PsiElement includeCommand = resolveState.get(resolvingIncludeCommand); // we have the same name, so it's a possible hit -> now check the scope boolean localVarDef = varDef.isFunctionScopeLocal(); boolean isValid = checkLocalness && localVarDef ? isValidLocalDefinition(varDef) : isValidDefinition(varDef, resolveState); // if we found a valid local variable definition we must ignore all (otherwise matching) global variable definitions ignoreGlobals = ignoreGlobals || (isValid && checkLocalness && localVarDef); if (isValid) { PsiElement defAnchor = includeCommand != null ? includeCommand : varDef; storeResult(varDef, BashPsiUtils.blockNestingLevel(defAnchor), includeCommand); if (!localVarDef) { globalVariables.add(varDef); } return collectAllDefinitions; } } return true; }
Example 5
Source File: AsyncFilterRunner.java From consulo with Apache License 2.0 | 5 votes |
private void runTasks() { ApplicationManager.getApplication().assertReadAccessAllowed(); if (myEditor.isDisposed()) return; while (!myQueue.isEmpty()) { HighlighterJob highlighter = myQueue.peek(); if (!DumbService.isDumbAware(highlighter.filter) && DumbService.isDumb(highlighter.myProject)) return; while (highlighter.hasUnprocessedLines()) { ProgressManager.checkCanceled(); addLineResult(highlighter.analyzeNextLine()); } LOG.assertTrue(highlighter == myQueue.remove()); } }
Example 6
Source File: ProjectLevelVcsManagerImpl.java From consulo with Apache License 2.0 | 5 votes |
@Override @Nullable public AbstractVcs findVcsByName(String name) { if (name == null) return null; AbstractVcs result = myProject.isDisposed() ? null : AllVcses.getInstance(myProject).getByName(name); ProgressManager.checkCanceled(); return result; }
Example 7
Source File: Unity3dMetaFileProjectViewProvider.java From consulo-unity3d with Apache License 2.0 | 5 votes |
@Nonnull @RequiredReadAction private Collection<AbstractTreeNode> doModify(Collection<AbstractTreeNode> children, ViewSettings settings) { Unity3dRootModuleExtension rootModuleExtension = Unity3dModuleExtensionUtil.getRootModuleExtension(myProject); if(rootModuleExtension == null) { return children; } Boolean showMetaFiles = settings.getViewOption(Unity3dShowMetaFileProjectViewPaneOptionProvider.KEY); if(showMetaFiles == Boolean.TRUE) { return children; } List<AbstractTreeNode> nodes = new ArrayList<>(children.size()); for(AbstractTreeNode child : children) { ProgressManager.checkCanceled(); if(child instanceof ProjectViewNode) { VirtualFile virtualFile = ((ProjectViewNode) child).getVirtualFile(); if(virtualFile != null && virtualFile.getFileType() == Unity3dMetaFileType.INSTANCE && haveOwnerFile(virtualFile)) { continue; } } nodes.add(child); } return nodes; }
Example 8
Source File: CompletionProgressIndicator.java From consulo with Apache License 2.0 | 5 votes |
private void calculateItems(CompletionInitializationContext initContext, WeighingDelegate weigher, CompletionParameters parameters) { duringCompletion(initContext, parameters); ProgressManager.checkCanceled(); CompletionService.getCompletionService().performCompletion(parameters, weigher); ProgressManager.checkCanceled(); weigher.waitFor(); ProgressManager.checkCanceled(); }
Example 9
Source File: BashFunctionVariantsProcessor.java From BashSupport with Apache License 2.0 | 5 votes |
public boolean execute(PsiElement element, ResolveState resolveState) { ProgressManager.checkCanceled(); if (element instanceof BashFunctionDef) { final BashFunctionDef f = (BashFunctionDef) element; if (BashPsiUtils.isValidReferenceScope(startElement, element)) { functionDefs.add(f); } } return true; }
Example 10
Source File: CompletionProgressIndicator.java From consulo with Apache License 2.0 | 5 votes |
void addItem(CompletionResult item) { if (!isRunning()) return; ProgressManager.checkCanceled(); if (!myHandler.isTestingMode()) { LOG.assertTrue(!ApplicationManager.getApplication().isDispatchThread()); } LookupElement lookupElement = item.getLookupElement(); if (!myHasPsiElements && lookupElement.getPsiElement() != null) { myHasPsiElements = true; } boolean forceMiddleMatch = lookupElement.getUserData(CompletionLookupArrangerImpl.FORCE_MIDDLE_MATCH) != null; if (forceMiddleMatch) { myArranger.associateSorter(lookupElement, (CompletionSorterImpl)item.getSorter()); addItemToLookup(item); return; } boolean allowMiddleMatches = myCount > CompletionLookupArrangerImpl.MAX_PREFERRED_COUNT * 2; if (allowMiddleMatches) { addDelayedMiddleMatches(); } myArranger.associateSorter(lookupElement, (CompletionSorterImpl)item.getSorter()); if (item.isStartMatch() || allowMiddleMatches) { addItemToLookup(item); } else { synchronized (myDelayedMiddleMatches) { myDelayedMiddleMatches.add(item); } } }
Example 11
Source File: InspectionEngine.java From consulo with Apache License 2.0 | 5 votes |
@Nonnull public static Map<LocalInspectionToolWrapper, Set<String>> getToolsToSpecifiedLanguages(@Nonnull List<LocalInspectionToolWrapper> toolWrappers) { Map<LocalInspectionToolWrapper, Set<String>> toolToLanguages = new THashMap<>(); for (LocalInspectionToolWrapper wrapper : toolWrappers) { ProgressManager.checkCanceled(); Set<String> specifiedLangIds = getDialectIdsSpecifiedForTool(wrapper); toolToLanguages.put(wrapper, specifiedLangIds); } return toolToLanguages; }
Example 12
Source File: WorkspaceHelper.java From intellij with Apache License 2.0 | 5 votes |
private static WorkspacePath getPackagePath( BuildSystemProvider provider, WorkspaceRoot root, WorkspacePath workspacePath) { File file = root.fileForPath(workspacePath).getParentFile(); while (file != null && FileUtil.isAncestor(root.directory(), file, false)) { ProgressManager.checkCanceled(); if (provider.findBuildFileInDirectory(file) != null) { return root.workspacePathFor(file); } file = file.getParentFile(); } return null; }
Example 13
Source File: CSharpElementGroupImpl.java From consulo-csharp with Apache License 2.0 | 5 votes |
@Override public boolean process(@Nonnull Processor<? super T> processor) { for(T element : myElements) { ProgressManager.checkCanceled(); if(!processor.process(element)) { return false; } } return true; }
Example 14
Source File: FileBasedIndexImpl.java From consulo with Apache License 2.0 | 4 votes |
<K> void ensureUpToDate(@Nonnull final ID<K, ?> indexId, @Nullable Project project, @Nullable GlobalSearchScope filter, @Nullable VirtualFile restrictedFile) { ProgressManager.checkCanceled(); getChangedFilesCollector().ensureUpToDate(); ApplicationManager.getApplication().assertReadAccessAllowed(); NoAccessDuringPsiEvents.checkCallContext(); if (!needsFileContentLoading(indexId)) { return; //indexed eagerly in foreground while building unindexed file list } if (filter == GlobalSearchScope.EMPTY_SCOPE) { return; } if (ActionUtil.isDumbMode(project)) { handleDumbMode(project); } if (myReentrancyGuard.get().booleanValue()) { //assert false : "ensureUpToDate() is not reentrant!"; return; } myReentrancyGuard.set(Boolean.TRUE); try { if (isUpToDateCheckEnabled()) { try { if (!RebuildStatus.isOk(indexId)) { throw new ProcessCanceledException(); } forceUpdate(project, filter, restrictedFile); indexUnsavedDocuments(indexId, project, filter, restrictedFile); } catch (RuntimeException e) { final Throwable cause = e.getCause(); if (cause instanceof StorageException || cause instanceof IOException) { scheduleRebuild(indexId, e); } else { throw e; } } } } finally { myReentrancyGuard.set(Boolean.FALSE); } }
Example 15
Source File: BashResolveUtil.java From BashSupport with Apache License 2.0 | 4 votes |
public static PsiElement resolve(BashVar bashVar, boolean dumbMode, ResolveProcessor processor) { if (bashVar == null || !bashVar.isPhysical()) { return null; } final String varName = bashVar.getReferenceName(); if (varName == null) { return null; } PsiFile psiFile = BashPsiUtils.findFileContext(bashVar); VirtualFile virtualFile = psiFile.getVirtualFile(); String filePath = virtualFile != null ? virtualFile.getPath() : null; Project project = bashVar.getProject(); ResolveState resolveState = ResolveState.initial(); GlobalSearchScope fileScope = GlobalSearchScope.fileScope(psiFile); Collection<BashVarDef> varDefs; if (dumbMode || isScratchFile(virtualFile) || isNotIndexedFile(project, virtualFile)) { varDefs = PsiTreeUtil.collectElementsOfType(psiFile, BashVarDef.class); } else { varDefs = StubIndex.getElements(BashVarDefIndex.KEY, varName, project, fileScope, BashVarDef.class); } for (BashVarDef varDef : varDefs) { ProgressManager.checkCanceled(); processor.execute(varDef, resolveState); } if (!dumbMode && filePath != null) { Collection<BashIncludeCommand> includeCommands = StubIndex.getElements(BashIncludeCommandIndex.KEY, filePath, project, fileScope, BashIncludeCommand.class); if (!includeCommands.isEmpty()) { boolean varIsInFunction = BashPsiUtils.findNextVarDefFunctionDefScope(bashVar) != null; for (BashIncludeCommand command : includeCommands) { ProgressManager.checkCanceled(); boolean includeIsInFunction = BashPsiUtils.findNextVarDefFunctionDefScope(command) != null; //either one of var or include command is in a function or the var is used after the include command if (varIsInFunction || includeIsInFunction || (BashPsiUtils.getFileTextOffset(bashVar) > BashPsiUtils.getFileTextEndOffset(command))) { try { resolveState = resolveState.put(Keys.resolvingIncludeCommand, command); command.processDeclarations(processor, resolveState, command, bashVar); } finally { resolveState = resolveState.put(Keys.resolvingIncludeCommand, null); } } } } } processor.prepareResults(); return processor.getBestResult(false, bashVar); }
Example 16
Source File: AbstractTreeHasher.java From consulo with Apache License 2.0 | 4 votes |
/** * Computes element hash using children hashes. * Creates only single PsiFragment. */ protected TreeHashResult computeElementHash(@Nonnull final PsiElement root, final PsiFragment upper, final NodeSpecificHasher hasher) { if (myForIndexing) { return TreeHashingUtils.computeElementHashForIndexing(this, myCallBack, root, upper, hasher); } ProgressManager.checkCanceled(); final List<PsiElement> children = hasher.getNodeChildren(root); final int size = children.size(); final int[] childHashes = new int[size]; final int[] childCosts = new int[size]; final PsiFragment fragment = buildFragment(hasher, root, getCost(root)); if (upper != null) { fragment.setParent(upper); } if (size == 0 && !(root instanceof LeafElement)) { return new TreeHashResult(hasher.getNodeHash(root), hasher.getNodeCost(root), fragment); } for (int i = 0; i < size; i++) { final TreeHashResult res = hash(children.get(i), fragment, hasher); childHashes[i] = res.getHash(); childCosts[i] = res.getCost(); } final int c = hasher.getNodeCost(root) + vector(childCosts); final int h1 = hasher.getNodeHash(root); final int discardCost = getDiscardCost(root); for (int i = 0; i < size; i++) { if (childCosts[i] <= discardCost && ignoreChildHash(children.get(i))) { childHashes[i] = 0; } } final int h = h1 + vector(childHashes); if (myCallBack != null) { myCallBack.add(h, c, fragment); } return new TreeHashResult(h, c, fragment); }
Example 17
Source File: DFAEngine.java From consulo with Apache License 2.0 | 4 votes |
public List<E> performDFA(final List<E> info) throws DFALimitExceededException { if (LOG.isDebugEnabled()) { LOG.debug("Performing DFA\n" + "Instance: " + myDfa + " Semilattice: " + mySemilattice + "\nCon"); } // initializing dfa final E initial = myDfa.initial(); for (int i = 0; i < myFlow.length; i++) { info.add(i, initial); } final boolean[] visited = new boolean[myFlow.length]; final boolean forward = myDfa.isForward(); final int[] order = ControlFlowUtil.postOrder(myFlow); // Count limit for number of iterations per worklist final int limit = getIterationLimit(forward); int dfaCount = 0; final long startTime = System.nanoTime(); for (int i = forward ? 0 : myFlow.length - 1; forward ? i < myFlow.length : i >= 0; ) { // Check if canceled ProgressManager.checkCanceled(); if (System.nanoTime() - startTime > TIME_LIMIT) { if (LOG.isDebugEnabled()) { LOG.debug("Time limit exceeded"); } throw new DFALimitExceededException("Time limit exceeded"); } // Iteration count per one worklist int count = 0; final Instruction instruction = myFlow[order[i]]; final int number = instruction.num(); if (!visited[number]) { final Queue<Instruction> worklist = new LinkedList<Instruction>(); worklist.add(instruction); visited[number] = true; while (true) { // Check if canceled ProgressManager.checkCanceled(); // It is essential to apply this check!!! // This gives us more chances that resulting info will be closer to expected result // Also it is used as indicator that "equals" method is implemented correctly in E count++; if (count > limit) { if (LOG.isDebugEnabled()) { LOG.debug("Iteration count exceeded on worklist"); } throw new DFALimitExceededException("Iteration count exceeded on worklist"); } final Instruction currentInstruction = worklist.poll(); if (currentInstruction == null) { break; } final int currentNumber = currentInstruction.num(); final E oldE = info.get(currentNumber); final E joinedE = join(currentInstruction, info); final E newE = myDfa.fun(joinedE, currentInstruction); if (!mySemilattice.eq(newE, oldE)) { if (LOG.isDebugEnabled()) { LOG.debug("Number: " + currentNumber + " old: " + oldE.toString() + " new: " + newE.toString()); } info.set(currentNumber, newE); for (Instruction next : getNext(currentInstruction)) { worklist.add(next); visited[next.num()] = true; } } } } // Move to another worklist if (forward) { i++; } else { i--; } dfaCount += count; } if (LOG.isDebugEnabled()) { LOG.debug("Done in: " + (System.nanoTime() - startTime) / 10e6 + "ms. Ratio: " + dfaCount / myFlow.length); } return info; }
Example 18
Source File: TextFieldWithAutoCompletionContributor.java From consulo with Apache License 2.0 | 4 votes |
@RequiredReadAction @Override public void fillCompletionVariants(final CompletionParameters parameters, CompletionResultSet result) { PsiFile file = parameters.getOriginalFile(); final TextFieldWithAutoCompletionListProvider<T> provider = file.getUserData(KEY); if (provider == null) { return; } String adv = provider.getAdvertisement(); if (adv == null) { final String shortcut = getActionShortcut(IdeActions.ACTION_QUICK_JAVADOC); if (shortcut != null) { adv = provider.getQuickDocHotKeyAdvertisement(shortcut); } } if (adv != null) { result.addLookupAdvertisement(adv); } final String prefix = provider.getPrefix(parameters); if (prefix == null) { return; } if (parameters.getInvocationCount() == 0 && !file.getUserData(AUTO_POPUP_KEY)) { // is autopopup return; } final PrefixMatcher prefixMatcher = provider.createPrefixMatcher(prefix); if (prefixMatcher != null) { result = result.withPrefixMatcher(prefixMatcher); } Collection<T> items = provider.getItems(prefix, true, parameters); addCompletionElements(result, provider, items, -10000); Future<Collection<T>> future = ApplicationManager.getApplication().executeOnPooledThread(new Callable<Collection<T>>() { @Override public Collection<T> call() { return provider.getItems(prefix, false, parameters); } }); while (true) { try { Collection<T> tasks = future.get(100, TimeUnit.MILLISECONDS); if (tasks != null) { addCompletionElements(result, provider, tasks, 0); return; } } catch (ProcessCanceledException e) { throw e; } catch (Exception ignore) { } ProgressManager.checkCanceled(); } }
Example 19
Source File: MemberResolveScopeProcessor.java From consulo-csharp with Apache License 2.0 | 4 votes |
@RequiredReadAction private Collection<PsiElement> applyTypeArguments(Collection<PsiElement> psiElements) { if(!(myScopeElement instanceof CSharpReferenceExpression) || psiElements.size() == 0) { return psiElements; } int typeArgumentListSize = CSharpReferenceExpressionImplUtil.getTypeArgumentListSize(myScopeElement); if(typeArgumentListSize == 0) { return psiElements; } DotNetTypeRef[] typeArgumentListRefs = ((CSharpReferenceExpression) myScopeElement).getTypeArgumentListRefs(); List<PsiElement> newPsiElements = new ArrayList<>(psiElements.size()); for(PsiElement psiElement : psiElements) { ProgressManager.checkCanceled(); PsiElement addItem = psiElement; if(psiElement instanceof CSharpElementGroup) { @SuppressWarnings("unchecked") CSharpElementGroup<PsiElement> elementGroup = (CSharpElementGroup<PsiElement>) psiElement; Collection<PsiElement> elements = elementGroup.getElements(); boolean changed = false; final List<PsiElement> anotherItems = new ArrayList<>(elements.size()); for(PsiElement temp : elements) { if(temp instanceof CSharpMethodDeclaration && ((CSharpMethodDeclaration) temp).getGenericParametersCount() == typeArgumentListSize) { DotNetGenericParameter[] genericParameters = ((CSharpMethodDeclaration) temp).getGenericParameters(); DotNetGenericExtractor extractor = CSharpGenericExtractor.create(genericParameters, typeArgumentListRefs); anotherItems.add(GenericUnwrapTool.extract((CSharpMethodDeclaration) temp, extractor)); changed = true; } else { anotherItems.add(temp); } } if(changed) { addItem = new CSharpElementGroupImpl<>(elementGroup.getProject(), elementGroup.getKey(), anotherItems); } } newPsiElements.add(addItem); } return newPsiElements; }
Example 20
Source File: VcsDirtyScopeVfsListener.java From consulo with Apache License 2.0 | 4 votes |
@Nullable @Override public ChangeApplier prepareChange(@Nonnull List<? extends VFileEvent> events) { if (myForbid || !myVcsManager.hasAnyMappings()) return null; final FilesAndDirs dirtyFilesAndDirs = new FilesAndDirs(); // collect files and directories - sources of events for (VFileEvent event : events) { ProgressManager.checkCanceled(); final boolean isDirectory; if (event instanceof VFileCreateEvent) { if (!((VFileCreateEvent)event).getParent().isInLocalFileSystem()) { continue; } isDirectory = ((VFileCreateEvent)event).isDirectory(); } else { final VirtualFile file = Objects.requireNonNull(event.getFile(), "All events but VFileCreateEvent have @NotNull getFile()"); if (!file.isInLocalFileSystem()) { continue; } isDirectory = file.isDirectory(); } if (event instanceof VFileMoveEvent) { add(myVcsManager, dirtyFilesAndDirs, VcsUtil.getFilePath(((VFileMoveEvent)event).getOldPath(), isDirectory)); add(myVcsManager, dirtyFilesAndDirs, VcsUtil.getFilePath(((VFileMoveEvent)event).getNewPath(), isDirectory)); } else if (event instanceof VFilePropertyChangeEvent && ((VFilePropertyChangeEvent)event).isRename()) { // if a file was renamed, then the file is dirty and its parent directory is dirty too; // if a directory was renamed, all its children are recursively dirty, the parent dir is also dirty but not recursively. FilePath oldPath = VcsUtil.getFilePath(((VFilePropertyChangeEvent)event).getOldPath(), isDirectory); FilePath newPath = VcsUtil.getFilePath(((VFilePropertyChangeEvent)event).getNewPath(), isDirectory); // the file is dirty recursively add(myVcsManager, dirtyFilesAndDirs, oldPath); add(myVcsManager, dirtyFilesAndDirs, newPath); FilePath parentPath = oldPath.getParentPath(); if (parentPath != null) { addAsFiles(myVcsManager, dirtyFilesAndDirs, parentPath); // directory is dirty alone } } else { add(myVcsManager, dirtyFilesAndDirs, VcsUtil.getFilePath(event.getPath(), isDirectory)); } } return new ChangeApplier() { @Override public void afterVfsChange() { markDirtyOnPooled(dirtyFilesAndDirs); } }; }