blob: 8fad9455d48ebfda6f253bfa15a282c966906125 [file] [log] [blame]
package com.intellij.diagnostic.errordialog;
import com.intellij.diagnostic.DiagnosticBundle;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
/**
* @author ksafonov
*/
public class DisablePluginWarningDialog extends DialogWrapper {
private JLabel myPromptLabel;
private JLabel myRestartLabel;
private JPanel myContentPane;
public static final int DISABLE_EXIT_CODE = OK_EXIT_CODE;
public static final int DISABLE_AND_RESTART_EXIT_CODE = NEXT_USER_EXIT_CODE;
private final boolean myRestartCapable;
public DisablePluginWarningDialog(Component c, String pluginName, boolean hasDependants, boolean restartCapable) {
super(c, false);
myRestartCapable = restartCapable;
myPromptLabel.setText(
DiagnosticBundle.message(hasDependants ? "error.dialog.disable.plugin.prompt.dependants" : "error.dialog.disable.plugin.prompt",
pluginName));
myRestartLabel
.setText(DiagnosticBundle.message(restartCapable ? "error.dialog.disable.plugin.restart" : "error.dialog.disable.plugin.norestart",
ApplicationNamesInfo.getInstance().getFullProductName()));
setTitle(DiagnosticBundle.message("error.dialog.disable.plugin.title"));
init();
}
@Override
protected JComponent createCenterPanel() {
return myContentPane;
}
@NotNull
@Override
protected Action[] createActions() {
if (SystemInfo.isMac) {
if (myRestartCapable) {
return new Action[]{getCancelAction(), new DisableAction(), new DisableAndRestartAction()};
}
else {
return new Action[]{getCancelAction(), new DisableAction()};
}
}
else {
if (myRestartCapable) {
return new Action[]{new DisableAction(), new DisableAndRestartAction(), getCancelAction()};
}
else {
return new Action[]{new DisableAction(), getCancelAction()};
}
}
}
private class DisableAction extends DialogWrapperAction {
protected DisableAction() {
super(DiagnosticBundle.message("error.dialog.disable.plugin.action.disable"));
}
@Override
protected void doAction(ActionEvent e) {
close(DISABLE_EXIT_CODE);
}
}
private class DisableAndRestartAction extends DialogWrapperAction {
protected DisableAndRestartAction() {
super(DiagnosticBundle.message("error.dialog.disable.plugin.action.disableAndRestart"));
}
@Override
protected void doAction(ActionEvent e) {
close(DISABLE_AND_RESTART_EXIT_CODE);
}
}
}