public void execute(ClassEntity targetClass) { this.targetClass = targetClass; ProgressManager.getInstance().run(new Task.Backgroundable(project, "GsonFormat") { @Override public void run(@NotNull ProgressIndicator progressIndicator) { progressIndicator.setIndeterminate(true); long currentTimeMillis = System.currentTimeMillis(); execute(); progressIndicator.setIndeterminate(false); progressIndicator.setFraction(1.0); StringBuffer sb = new StringBuffer(); sb.append("GsonFormat [" + (System.currentTimeMillis() - currentTimeMillis) + " ms]\n"); // sb.append("generate class : ( "+generateClassList.size()+" )\n"); // for (String item: generateClassList) { // sb.append(" at "+item+"\n"); // } // sb.append(" \n"); // NotificationCenter.info(sb.toString()); Toast.make(project, MessageType.INFO, sb.toString()); } }); }
/** * Runs the task in the background if it can. * * @param task Task that will create an issue on Github * @param direct {@code true} to run directly with {@link Task#run(ProgressIndicator)}; {@code false} to run with * the {@link com.intellij.openapi.project.ProjectManager}. */ private static void run(Task task, boolean direct) { if (direct) { task.run(new EmptyProgressIndicator()); } else { ProgressManager.getInstance().run(task); } }
@Override public boolean process(T s) { ProgressManager.checkCanceled(); return super.process(s); } }
@Override public void run(@NotNull ProgressIndicator progressIndicator) { progressIndicator.setIndeterminate(true); long currentTimeMillis = System.currentTimeMillis(); execute(); progressIndicator.setIndeterminate(false); progressIndicator.setFraction(1.0); StringBuffer sb = new StringBuffer(); sb.append("GsonFormat [" + (System.currentTimeMillis() - currentTimeMillis) + " ms]\n"); // sb.append("generate class : ( "+generateClassList.size()+" )\n"); // for (String item: generateClassList) { // sb.append(" at "+item+"\n"); // } // sb.append(" \n"); // NotificationCenter.info(sb.toString()); Toast.make(project, MessageType.INFO, sb.toString()); } });
@Override public void run(@NotNull ProgressIndicator indicator) { if (doNotStart || myProject == null || myProject.isDisposed()) { return; } indicator.setIndeterminate(true); consumer.consume(execute()); } });
@Override public void visitCompositeElement(@NotNull GoCompositeElement o) { super.visitCompositeElement(o); for (PsiElement psiElement : o.getChildren()) { psiElement.accept(this); ProgressIndicatorProvider.checkCanceled(); } }
public void executeWithProgress(boolean modal, @NotNull Consumer<Boolean> consumer) { ProgressManager.getInstance().run(new Task.Backgroundable(myProject, getPresentableName(), true) { private boolean doNotStart; @Override public void onCancel() { doNotStart = true; ProcessHandler handler = getProcessHandler(); if (handler != null) { handler.destroyProcess(); } } @Override public boolean shouldStartInBackground() { return !modal; } @Override public boolean isConditionalModal() { return modal; } @Override public void run(@NotNull ProgressIndicator indicator) { if (doNotStart || myProject == null || myProject.isDisposed()) { return; } indicator.setIndeterminate(true); consumer.consume(execute()); } }); }
@Override public void run(@NotNull ProgressIndicator indicator) { indicator.setIndeterminate(true); try { create(errorBean); successCallback.consume(true); } catch (Exception exception) { errorCallback.consume(exception); } }
@Override public void processNames(@NotNull Processor<String> processor, @NotNull GlobalSearchScope scope, IdFilter filter) { for (StubIndexKey<String, T> key : myIndexKeys) { ProgressManager.checkCanceled(); StubIndex.getInstance().processAllKeys(key, processor, scope, filter); } }
@Override public void visitFile(@NotNull PsiFile file) { super.visitFile(file); for (PsiElement psiElement : file.getChildren()) { psiElement.accept(this); ProgressIndicatorProvider.checkCanceled(); } } }
public void executeWithProgress(boolean modal, @NotNull Consumer<Boolean> consumer) { ProgressManager.getInstance().run(new Task.Backgroundable(myProject, getPresentableName(), true) { private boolean doNotStart; @Override public void onCancel() { doNotStart = true; ProcessHandler handler = getProcessHandler(); if (handler != null) { handler.destroyProcess(); } } @Override public boolean shouldStartInBackground() { return !modal; } @Override public boolean isConditionalModal() { return modal; } @Override public void run(@NotNull ProgressIndicator indicator) { if (doNotStart || myProject == null || myProject.isDisposed()) { return; } indicator.setIndeterminate(true); consumer.consume(execute()); } }); }
@Override public void run(@NotNull ProgressIndicator indicator) { if (doNotStart || myProject == null || myProject.isDisposed()) { return; } indicator.setIndeterminate(true); consumer.consume(execute()); } });
private static boolean hasImportUsers(@NotNull GoImportSpec spec) { //noinspection SynchronizationOnLocalVariableOrMethodParameter synchronized (spec) { List<PsiElement> list = spec.getUserData(GoReferenceBase.IMPORT_USERS); if (list != null) { for (PsiElement e : list) { if (e.isValid()) { return true; } ProgressManager.checkCanceled(); } } } return false; }
@SuppressWarnings("SameParameterValue") @NotNull final String task, @NotNull final String... taskParameters) { ProgressManager.getInstance().run( new Task.Modal(null, title, true) { @Override
@Override public void processElementsWithName(@NotNull String s, @NotNull Processor<NavigationItem> processor, @NotNull FindSymbolParameters parameters) { for (StubIndexKey<String, T> key : myIndexKeys) { ProgressManager.checkCanceled(); StubIndex.getInstance().processElements(key, s, parameters.getProject(), parameters.getSearchScope(), parameters.getIdFilter(), myClazz, processor); } }
private static void processLiteralValue(@NotNull ProblemsHolder holder, @NotNull GoLiteralValue o, @NotNull List<GoFieldDeclaration> fields) { List<GoElement> vals = o.getElementList(); for (int elemId = 0; elemId < vals.size(); elemId++) { ProgressManager.checkCanceled(); GoElement element = vals.get(elemId); if (element.getKey() == null && elemId < fields.size()) { String structFieldName = getFieldName(fields.get(elemId)); LocalQuickFix[] fixes = structFieldName != null ? new LocalQuickFix[]{new GoReplaceWithNamedStructFieldQuickFix(structFieldName)} : LocalQuickFix.EMPTY_ARRAY; holder.registerProblem(element, "Unnamed field initialization", ProblemHighlightType.GENERIC_ERROR_OR_WARNING, fixes); } } }
@Override public boolean process(@NotNull GoNamedElement element) { ProgressManager.checkCanceled(); Boolean allowed = null; ExistingImportData importData = null; for (ElementProcessor processor : myProcessors) { if (processor.isMine(myName, element)) { importData = cachedImportData(element, importData); allowed = cachedAllowed(element, allowed); if (allowed == Boolean.FALSE || importData.isDot) break; if (!processor.process(myName, element, importData, myResult)) { return false; } } } return true; }
private static void visitParameterList(@NotNull ProblemsHolder holder, @Nullable GoParameters parameters, @NotNull String ownerType, @NotNull String what) { if (parameters == null || parameters.getParameterDeclarationList().isEmpty()) return; boolean hasNamed = false; boolean hasUnnamed = false; for (GoParameterDeclaration parameterDeclaration : parameters.getParameterDeclarationList()) { ProgressManager.checkCanceled(); if (parameterDeclaration.getParamDefinitionList().isEmpty()) { hasUnnamed = true; } else { hasNamed = true; } if (hasNamed && hasUnnamed) { holder.registerProblem(parameters, ownerType + " has both named and unnamed " + what + " <code>#ref</code> #loc", ProblemHighlightType.GENERIC_ERROR_OR_WARNING); return; } } } }
private static IdFilter createIdFilter(@NotNull Project project, @NotNull Key<CachedValue<IdFilter>> cacheKey, @NotNull Condition<VirtualFile> filterCondition) { return CachedValuesManager.getManager(project).getCachedValue(project, cacheKey, () -> { BitSet bitSet = new BitSet(); ContentIterator iterator = fileOrDir -> { if (filterCondition.value(fileOrDir)) { addToBitSet(bitSet, fileOrDir); } ProgressManager.checkCanceled(); return true; }; FileBasedIndex.getInstance().iterateIndexableFiles(iterator, project, null); return CachedValueProvider.Result.create(new GoIdFilter(bitSet), ProjectRootManager.getInstance(project), VirtualFileManager.VFS_STRUCTURE_MODIFICATIONS); }, false); }
private void visitParameterList(List<GoParameterDeclaration> parameters, String what) { for (GoParameterDeclaration parameterDeclaration : parameters) { for (GoParamDefinition parameter : parameterDeclaration.getParamDefinitionList()) { ProgressManager.checkCanceled(); if (parameter.isBlank()) continue; Query<PsiReference> search = ReferencesSearch.search(parameter, parameter.getUseScope()); if (search.findFirst() != null) continue; holder.registerProblem(parameter, "Unused " + what + " <code>#ref</code> #loc", ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } } };