List of usage examples for com.intellij.openapi.ui Messages showDialog
public static int showDialog(Project project, String message, @NotNull @Nls(capitalization = Nls.Capitalization.Title) String title, @Nullable String moreInfo, String @NotNull [] options, int defaultOptionIndex, int focusedOptionIndex, Icon icon)
From source file:com.goide.actions.tool.GoFmtCheckinFactory.java
License:Apache License
@Override @Nullable//from www. j ava2 s . c o m public CheckinHandler createHandler(@Nonnull CheckinProjectPanel panel, @Nonnull CommitContext commitContext) { if (!ModuleExtensionHelper.getInstance(panel.getProject()).hasModuleExtension(GoModuleExtension.class)) { return null; } return new CheckinHandler() { @Override public RefreshableOnComponent getBeforeCheckinConfigurationPanel() { JCheckBox checkBox = new JCheckBox("Go fmt"); return new RefreshableOnComponent() { @Override @Nonnull public JComponent getComponent() { JPanel panel = new JPanel(new BorderLayout()); panel.add(checkBox, BorderLayout.WEST); return panel; } @Override public void refresh() { } @Override public void saveState() { PropertiesComponent.getInstance(panel.getProject()).setValue(GO_FMT, Boolean.toString(checkBox.isSelected())); } @Override public void restoreState() { checkBox.setSelected(enabled(panel)); } }; } @Override public ReturnResult beforeCheckin(@Nullable CommitExecutor executor, PairConsumer<Object, Object> additionalDataConsumer) { if (enabled(panel)) { Ref<Boolean> success = Ref.create(true); FileDocumentManager.getInstance().saveAllDocuments(); for (PsiFile file : getPsiFiles()) { VirtualFile virtualFile = file.getVirtualFile(); new GoFmtFileAction().doSomething(virtualFile, ModuleUtilCore.findModuleForPsiElement(file), file.getProject(), "Go fmt", true, result -> { if (!result) success.set(false); }); } if (!success.get()) { return showErrorMessage(executor); } } return super.beforeCheckin(); } @Nonnull private ReturnResult showErrorMessage(@Nullable CommitExecutor executor) { String[] buttons = new String[] { "&Details...", commitButtonMessage(executor, panel), CommonBundle.getCancelButtonText() }; int answer = Messages.showDialog(panel.getProject(), "<html><body>GoFmt returned non-zero code on some of the files.<br/>" + "Would you like to commit anyway?</body></html>\n", "Go Fmt", null, buttons, 0, 1, UIUtil.getWarningIcon()); if (answer == Messages.OK) { return ReturnResult.CLOSE_WINDOW; } if (answer == Messages.NO) { return ReturnResult.COMMIT; } return ReturnResult.CANCEL; } @Nonnull private List<PsiFile> getPsiFiles() { Collection<VirtualFile> files = panel.getVirtualFiles(); List<PsiFile> psiFiles = ContainerUtil.newArrayList(); PsiManager manager = PsiManager.getInstance(panel.getProject()); for (VirtualFile file : files) { PsiFile psiFile = manager.findFile(file); if (psiFile instanceof GoFile) { psiFiles.add(psiFile); } } return psiFiles; } }; }