8fad9455d48ebfda6f253bfa15a282c966906125
[idea/community.git] / platform / platform-impl / src / com / intellij / diagnostic / errordialog / DisablePluginWarningDialog.java
1 package com.intellij.diagnostic.errordialog;
2
3 import com.intellij.diagnostic.DiagnosticBundle;
4 import com.intellij.openapi.application.ApplicationNamesInfo;
5 import com.intellij.openapi.ui.DialogWrapper;
6 import com.intellij.openapi.util.SystemInfo;
7 import org.jetbrains.annotations.NotNull;
8
9 import javax.swing.*;
10 import java.awt.*;
11 import java.awt.event.ActionEvent;
12
13 /**
14  * @author ksafonov
15  */
16 public class DisablePluginWarningDialog extends DialogWrapper {
17   private JLabel myPromptLabel;
18   private JLabel myRestartLabel;
19   private JPanel myContentPane;
20
21   public static final int DISABLE_EXIT_CODE = OK_EXIT_CODE;
22   public static final int DISABLE_AND_RESTART_EXIT_CODE = NEXT_USER_EXIT_CODE;
23   private final boolean myRestartCapable;
24
25   public DisablePluginWarningDialog(Component c, String pluginName, boolean hasDependants, boolean restartCapable) {
26     super(c, false);
27     myRestartCapable = restartCapable;
28     myPromptLabel.setText(
29       DiagnosticBundle.message(hasDependants ? "error.dialog.disable.plugin.prompt.dependants" : "error.dialog.disable.plugin.prompt",
30                                pluginName));
31     myRestartLabel
32       .setText(DiagnosticBundle.message(restartCapable ? "error.dialog.disable.plugin.restart" : "error.dialog.disable.plugin.norestart",
33                                         ApplicationNamesInfo.getInstance().getFullProductName()));
34
35     setTitle(DiagnosticBundle.message("error.dialog.disable.plugin.title"));
36     init();
37   }
38
39   @Override
40   protected JComponent createCenterPanel() {
41     return myContentPane;
42   }
43
44   @NotNull
45   @Override
46   protected Action[] createActions() {
47     if (SystemInfo.isMac) {
48       if (myRestartCapable) {
49         return new Action[]{getCancelAction(), new DisableAction(), new DisableAndRestartAction()};
50       }
51       else {
52         return new Action[]{getCancelAction(), new DisableAction()};
53       }
54     }
55     else {
56       if (myRestartCapable) {
57         return new Action[]{new DisableAction(), new DisableAndRestartAction(), getCancelAction()};
58       }
59       else {
60         return new Action[]{new DisableAction(), getCancelAction()};
61       }
62     }
63   }
64
65   private class DisableAction extends DialogWrapperAction {
66     protected DisableAction() {
67       super(DiagnosticBundle.message("error.dialog.disable.plugin.action.disable"));
68     }
69
70     @Override
71     protected void doAction(ActionEvent e) {
72       close(DISABLE_EXIT_CODE);
73     }
74   }
75
76   private class DisableAndRestartAction extends DialogWrapperAction {
77     protected DisableAndRestartAction() {
78       super(DiagnosticBundle.message("error.dialog.disable.plugin.action.disableAndRestart"));
79     }
80
81     @Override
82     protected void doAction(ActionEvent e) {
83       close(DISABLE_AND_RESTART_EXIT_CODE);
84     }
85   }
86 }