summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/settings
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/settings')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java139
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/DebuggerLaunchingConfigurable.java39
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java59
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java59
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/JavaHotSwapConfigurableUi.java (renamed from java/debugger/impl/src/com/intellij/debugger/settings/DebuggerHotswapConfigurable.java)45
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java130
6 files changed, 191 insertions, 280 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java
index e570b642b2bd..a4484cccc1fe 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java
@@ -25,14 +25,10 @@ import com.intellij.debugger.impl.DebuggerUtilsEx;
import com.intellij.debugger.ui.DebuggerExpressionTextField;
import com.intellij.debugger.ui.JavaDebuggerSupport;
import com.intellij.debugger.ui.tree.render.*;
-import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.editor.Document;
-import com.intellij.openapi.options.ConfigurationException;
-import com.intellij.openapi.options.UnnamedConfigurable;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
@@ -41,7 +37,7 @@ import com.intellij.ui.table.JBTable;
import com.intellij.util.Function;
import com.intellij.util.ui.AbstractTableCellEditor;
import org.jetbrains.annotations.NonNls;
-import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
@@ -52,57 +48,33 @@ import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
-/**
- * @author Eugene Zhuravlev
- * Date: Feb 24, 2005
- */
-public class CompoundRendererConfigurable implements UnnamedConfigurable {
+class CompoundRendererConfigurable extends JPanel {
private CompoundReferenceRenderer myRenderer;
private CompoundReferenceRenderer myOriginalRenderer;
private Project myProject;
- private ClassNameEditorWithBrowseButton myClassNameField;
- private JRadioButton myRbDefaultLabel;
- private JRadioButton myRbExpressionLabel;
- private JRadioButton myRbDefaultChildrenRenderer;
- private JRadioButton myRbExpressionChildrenRenderer;
- private JRadioButton myRbListChildrenRenderer;
- private DebuggerExpressionTextField myLabelEditor;
- private DebuggerExpressionTextField myChildrenEditor;
- private DebuggerExpressionTextField myChildrenExpandedEditor;
+ private final ClassNameEditorWithBrowseButton myClassNameField;
+ private final JRadioButton myRbDefaultLabel;
+ private final JRadioButton myRbExpressionLabel;
+ private final JRadioButton myRbDefaultChildrenRenderer;
+ private final JRadioButton myRbExpressionChildrenRenderer;
+ private final JRadioButton myRbListChildrenRenderer;
+ private final DebuggerExpressionTextField myLabelEditor;
+ private final DebuggerExpressionTextField myChildrenEditor;
+ private final DebuggerExpressionTextField myChildrenExpandedEditor;
private DebuggerExpressionTextField myListChildrenEditor;
- private JComponent myChildrenListEditor;
- private JLabel myExpandedLabel;
- private JPanel myMainPanel;
+ private final JLabel myExpandedLabel;
private JBTable myTable;
@NonNls private static final String EMPTY_PANEL_ID = "EMPTY";
@NonNls private static final String DATA_PANEL_ID = "DATA";
private static final int NAME_TABLE_COLUMN = 0;
private static final int EXPRESSION_TABLE_COLUMN = 1;
- public CompoundRendererConfigurable(@Nullable Project project) {
- myProject = project;
- }
-
- public void setRenderer(NodeRenderer renderer) {
- if (renderer instanceof CompoundReferenceRenderer) {
- myRenderer = (CompoundReferenceRenderer)renderer;
- myOriginalRenderer = (CompoundReferenceRenderer)renderer.clone();
- }
- else {
- myRenderer = myOriginalRenderer = null;
- }
- reset();
- }
-
- public CompoundReferenceRenderer getRenderer() {
- return myRenderer;
- }
+ public CompoundRendererConfigurable() {
+ super(new CardLayout());
- public JComponent createComponent() {
if (myProject == null) {
myProject = JavaDebuggerSupport.getContextProjectForEditorFieldsInDebuggerConfigurables();
}
- final JPanel panel = new JPanel(new GridBagLayout());
myRbDefaultLabel = new JRadioButton(DebuggerBundle.message("label.compound.renderer.configurable.use.default.renderer"));
myRbExpressionLabel = new JRadioButton(DebuggerBundle.message("label.compound.renderer.configurable.use.expression"));
@@ -121,10 +93,11 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
myLabelEditor = new DebuggerExpressionTextField(myProject, null, "ClassLabelExpression");
myChildrenEditor = new DebuggerExpressionTextField(myProject, null, "ClassChildrenExpression");
myChildrenExpandedEditor = new DebuggerExpressionTextField(myProject, null, "ClassChildrenExpression");
- myChildrenListEditor = createChildrenListEditor();
+ JComponent myChildrenListEditor = createChildrenListEditor();
final ItemListener updateListener = new ItemListener() {
- public void itemStateChanged(ItemEvent e) {
+ @Override
+ public void itemStateChanged(@NotNull ItemEvent e) {
updateEnabledState();
}
};
@@ -133,7 +106,8 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
myRbExpressionChildrenRenderer.addItemListener(updateListener);
myClassNameField = new ClassNameEditorWithBrowseButton(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
+ @Override
+ public void actionPerformed(@NotNull ActionEvent e) {
PsiClass psiClass = DebuggerUtils.getInstance()
.chooseClassDialog(DebuggerBundle.message("title.compound.renderer.configurable.choose.renderer.reference.type"), myProject);
if (psiClass != null) {
@@ -143,20 +117,14 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
}
}
}, myProject);
- final EditorTextField textField = myClassNameField.getEditorTextField();
- final FocusAdapter updateContextListener = new FocusAdapter() {
- public void focusLost(FocusEvent e) {
- updateContext(myClassNameField.getText());
- }
- };
- textField.addFocusListener(updateContextListener);
- Disposer.register(myClassNameField, new Disposable() {
+ myClassNameField.getEditorTextField().addFocusListener(new FocusAdapter() {
@Override
- public void dispose() {
- textField.removeFocusListener(updateContextListener);
+ public void focusLost(@NotNull FocusEvent e) {
+ updateContext(myClassNameField.getText());
}
});
+ JPanel panel = new JPanel(new GridBagLayout());
panel.add(new JLabel(DebuggerBundle.message("label.compound.renderer.configurable.apply.to")),
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
@@ -197,15 +165,28 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
panel.add(myChildrenListEditor,
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
new Insets(4, 30, 0, 0), 0, 0));
+ add(new JPanel(), EMPTY_PANEL_ID);
+ add(panel, DATA_PANEL_ID);
+ }
- myMainPanel = new JPanel(new CardLayout());
- myMainPanel.add(new JPanel(), EMPTY_PANEL_ID);
- myMainPanel.add(panel, DATA_PANEL_ID);
- return myMainPanel;
+ public void setRenderer(NodeRenderer renderer) {
+ if (renderer instanceof CompoundReferenceRenderer) {
+ myRenderer = (CompoundReferenceRenderer)renderer;
+ myOriginalRenderer = (CompoundReferenceRenderer)renderer.clone();
+ }
+ else {
+ myRenderer = myOriginalRenderer = null;
+ }
+ reset();
+ }
+
+ public CompoundReferenceRenderer getRenderer() {
+ return myRenderer;
}
private void updateContext(final String qName) {
ApplicationManager.getApplication().runReadAction(new Runnable() {
+ @Override
public void run() {
final Project project = myProject;
final PsiClass psiClass = project != null ? DebuggerUtils.findClass(qName, project, GlobalSearchScope.allScope(project)) : null;
@@ -214,6 +195,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
myChildrenExpandedEditor.setContext(psiClass);
myListChildrenEditor.setContext(psiClass);
+ assert project != null;
PsiType type = DebuggerUtils.getType(qName, project);
myLabelEditor.setThisType(type);
myChildrenEditor.setThisType(type);
@@ -251,17 +233,21 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
final TableColumn exprColumn = myTable.getColumnModel().getColumn(EXPRESSION_TABLE_COLUMN);
exprColumn.setCellEditor(new AbstractTableCellEditor() {
+ @Override
public Object getCellEditorValue() {
return myListChildrenEditor.getText();
}
+ @Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
myListChildrenEditor.setText((TextWithImports)value);
return myListChildrenEditor;
}
});
exprColumn.setCellRenderer(new DefaultTableCellRenderer() {
- public Component getTableCellRendererComponent(JTable table,
+ @NotNull
+ @Override
+ public Component getTableCellRendererComponent(@NotNull JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
@@ -309,7 +295,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
return !DebuggerUtilsEx.externalizableEqual(cloned, myOriginalRenderer);
}
- public void apply() throws ConfigurationException {
+ public void apply() {
if (myRenderer == null) {
return;
}
@@ -342,7 +328,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
public void reset() {
final TextWithImports emptyExpressionFragment = new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, "");
- ((CardLayout)myMainPanel.getLayout()).show(myMainPanel, myRenderer == null ? EMPTY_PANEL_ID : DATA_PANEL_ID);
+ ((CardLayout)getLayout()).show(this, myRenderer == null ? EMPTY_PANEL_ID : DATA_PANEL_ID);
if (myRenderer == null) {
return;
}
@@ -390,27 +376,11 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
updateContext(className);
}
- public void disposeUIResources() {
- myRenderer = null;
- myOriginalRenderer = null;
- myLabelEditor.dispose();
- myChildrenEditor.dispose();
- myChildrenExpandedEditor.dispose();
- myListChildrenEditor.dispose();
- Disposer.dispose(myClassNameField);
- myLabelEditor = null;
- myChildrenEditor = null;
- myChildrenExpandedEditor = null;
- myListChildrenEditor = null;
- myClassNameField = null;
- myProject = null;
- }
-
private MyTableModel getTableModel() {
return (MyTableModel)myTable.getModel();
}
- private final class MyTableModel extends AbstractTableModel {
+ private static final class MyTableModel extends AbstractTableModel {
private final List<Row> myData = new ArrayList<Row>();
public MyTableModel() {
@@ -423,18 +393,23 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
}
}
+ @Override
public int getColumnCount() {
return 2;
}
+ @Override
public int getRowCount() {
return myData.size();
}
+ @Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
+ @NotNull
+ @Override
public Class getColumnClass(int columnIndex) {
switch (columnIndex) {
case NAME_TABLE_COLUMN:
@@ -446,6 +421,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
}
}
+ @Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (rowIndex >= getRowCount()) {
return null;
@@ -461,6 +437,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
}
}
+ @Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if (rowIndex >= getRowCount()) {
return;
@@ -476,6 +453,8 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
}
}
+ @NotNull
+ @Override
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case NAME_TABLE_COLUMN:
@@ -513,7 +492,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable {
return pairs;
}
- private final class Row {
+ private static final class Row {
public String name;
public TextWithImports value;
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerLaunchingConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerLaunchingConfigurable.java
index 490f99bb5461..b0748cfd336d 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerLaunchingConfigurable.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerLaunchingConfigurable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,24 +16,23 @@
package com.intellij.debugger.settings;
import com.intellij.debugger.DebuggerBundle;
-import com.intellij.openapi.options.Configurable;
-import com.intellij.openapi.options.OptionsBundle;
+import com.intellij.openapi.options.ConfigurableUi;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.ui.StateRestoringCheckBox;
import com.intellij.ui.components.panels.VerticalBox;
+import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
-public class DebuggerLaunchingConfigurable implements Configurable {
+class DebuggerLaunchingConfigurable implements ConfigurableUi<DebuggerSettings> {
private JRadioButton myRbSocket;
private JRadioButton myRbShmem;
private StateRestoringCheckBox myCbForceClassicVM;
private JCheckBox myCbDisableJIT;
@Override
- public void reset() {
- final DebuggerSettings settings = DebuggerSettings.getInstance();
+ public void reset(@NotNull DebuggerSettings settings) {
if (!SystemInfo.isWindows) {
myRbSocket.setSelected(true);
myRbShmem.setEnabled(false);
@@ -52,8 +51,8 @@ public class DebuggerLaunchingConfigurable implements Configurable {
}
@Override
- public void apply() {
- getSettingsTo(DebuggerSettings.getInstance());
+ public void apply(@NotNull DebuggerSettings settings) {
+ getSettingsTo(settings);
}
private void getSettingsTo(DebuggerSettings settings) {
@@ -68,25 +67,15 @@ public class DebuggerLaunchingConfigurable implements Configurable {
}
@Override
- public boolean isModified() {
- final DebuggerSettings currentSettings = DebuggerSettings.getInstance();
- final DebuggerSettings debuggerSettings = currentSettings.clone();
+ public boolean isModified(@NotNull DebuggerSettings currentSettings) {
+ DebuggerSettings debuggerSettings = currentSettings.clone();
getSettingsTo(debuggerSettings);
return !debuggerSettings.equals(currentSettings);
}
+ @NotNull
@Override
- public String getDisplayName() {
- return OptionsBundle.message("options.java.display.name");
- }
-
- @Override
- public String getHelpTopic() {
- return "reference.idesettings.debugger.launching";
- }
-
- @Override
- public JComponent createComponent() {
+ public JComponent getComponent() {
myCbForceClassicVM = new StateRestoringCheckBox(DebuggerBundle.message("label.debugger.launching.configurable.force.classic.vm"));
myCbDisableJIT = new JCheckBox(DebuggerBundle.message("label.debugger.launching.configurable.disable.jit"));
myRbSocket = new JRadioButton(DebuggerBundle.message("label.debugger.launching.configurable.socket"));
@@ -110,12 +99,6 @@ public class DebuggerLaunchingConfigurable implements Configurable {
JPanel result = new JPanel(new BorderLayout());
result.add(panel, BorderLayout.NORTH);
-
return result;
}
-
-
- @Override
- public void disposeUIResources() {
- }
} \ No newline at end of file
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java
index cec458ccbb70..cf7e367f1ce8 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,10 +17,7 @@ package com.intellij.debugger.settings;
import com.intellij.debugger.DebuggerBundle;
import com.intellij.debugger.ui.JavaDebuggerSupport;
-import com.intellij.openapi.options.Configurable;
-import com.intellij.openapi.options.OptionsBundle;
-import com.intellij.openapi.options.SearchableConfigurable;
-import com.intellij.openapi.project.Project;
+import com.intellij.openapi.options.ConfigurableUi;
import com.intellij.ui.classFilter.ClassFilterEditor;
import org.jetbrains.annotations.NotNull;
@@ -29,18 +26,16 @@ import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-public class DebuggerSteppingConfigurable implements SearchableConfigurable, Configurable.NoScroll {
+class DebuggerSteppingConfigurable implements ConfigurableUi<DebuggerSettings> {
private JCheckBox myCbStepInfoFiltersEnabled;
private JCheckBox myCbSkipSyntheticMethods;
private JCheckBox myCbSkipConstructors;
private JCheckBox myCbSkipClassLoaders;
private ClassFilterEditor mySteppingFilterEditor;
private JCheckBox myCbSkipSimpleGetters;
- private Project myProject;
@Override
- public void reset() {
- final DebuggerSettings settings = DebuggerSettings.getInstance();
+ public void reset(@NotNull DebuggerSettings settings) {
myCbSkipSimpleGetters.setSelected(settings.SKIP_GETTERS);
myCbSkipSyntheticMethods.setSelected(settings.SKIP_SYNTHETIC_METHODS);
myCbSkipConstructors.setSelected(settings.SKIP_CONSTRUCTORS);
@@ -50,13 +45,11 @@ public class DebuggerSteppingConfigurable implements SearchableConfigurable, Con
mySteppingFilterEditor.setFilters(settings.getSteppingFilters());
mySteppingFilterEditor.setEnabled(settings.TRACING_FILTERS_ENABLED);
-
-
}
@Override
- public void apply() {
- getSettingsTo(DebuggerSettings.getInstance());
+ public void apply(@NotNull DebuggerSettings settings) {
+ getSettingsTo(settings);
}
private void getSettingsTo(DebuggerSettings settings) {
@@ -71,39 +64,16 @@ public class DebuggerSteppingConfigurable implements SearchableConfigurable, Con
}
@Override
- public boolean isModified() {
- final DebuggerSettings currentSettings = DebuggerSettings.getInstance();
- final DebuggerSettings debuggerSettings = currentSettings.clone();
+ public boolean isModified(@NotNull DebuggerSettings currentSettings) {
+ DebuggerSettings debuggerSettings = currentSettings.clone();
getSettingsTo(debuggerSettings);
return !debuggerSettings.equals(currentSettings);
}
@Override
- public String getDisplayName() {
- return OptionsBundle.message("options.java.display.name");
- }
-
- @Override
@NotNull
- public String getHelpTopic() {
- return "reference.idesettings.debugger.stepping";
- }
-
- @Override
- @NotNull
- public String getId() {
- return getHelpTopic();
- }
-
- @Override
- public Runnable enableSearch(String option) {
- return null;
- }
-
- @Override
- public JComponent createComponent() {
+ public JComponent getComponent() {
final JPanel panel = new JPanel(new GridBagLayout());
- myProject = JavaDebuggerSupport.getContextProjectForEditorFieldsInDebuggerConfigurables();
myCbSkipSyntheticMethods = new JCheckBox(DebuggerBundle.message("label.debugger.general.configurable.skip.synthetic.methods"));
myCbSkipConstructors = new JCheckBox(DebuggerBundle.message("label.debugger.general.configurable.skip.constructors"));
myCbSkipClassLoaders = new JCheckBox(DebuggerBundle.message("label.debugger.general.configurable.skip.classLoaders"));
@@ -115,7 +85,7 @@ public class DebuggerSteppingConfigurable implements SearchableConfigurable, Con
panel.add(myCbSkipSimpleGetters, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0),0, 0));
panel.add(myCbStepInfoFiltersEnabled, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(8, 0, 0, 0),0, 0));
- mySteppingFilterEditor = new ClassFilterEditor(myProject, null, "reference.viewBreakpoints.classFilters.newPattern");
+ mySteppingFilterEditor = new ClassFilterEditor(JavaDebuggerSupport.getContextProjectForEditorFieldsInDebuggerConfigurables(), null, "reference.viewBreakpoints.classFilters.newPattern");
panel.add(mySteppingFilterEditor, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 0, 0),0, 0));
myCbStepInfoFiltersEnabled.addActionListener(new ActionListener() {
@@ -126,11 +96,4 @@ public class DebuggerSteppingConfigurable implements SearchableConfigurable, Con
});
return panel;
}
-
- @Override
- public void disposeUIResources() {
- mySteppingFilterEditor = null;
- myProject = null;
- }
-
-}
+} \ No newline at end of file
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java b/java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java
index 7151cb9f650e..e6f271b3981a 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java
@@ -15,41 +15,78 @@
*/
package com.intellij.debugger.settings;
+import com.intellij.debugger.DebuggerBundle;
import com.intellij.openapi.options.Configurable;
+import com.intellij.openapi.options.OptionsBundle;
+import com.intellij.openapi.options.SimpleConfigurable;
+import com.intellij.openapi.util.Getter;
+import com.intellij.xdebugger.settings.DebuggerSettingsCategory;
import com.intellij.xdebugger.settings.XDebuggerSettings;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import static java.util.Collections.singletonList;
+
/**
* We cannot now transform DebuggerSettings to XDebuggerSettings: getState/loadState is not called for EP,
* but we cannot use standard implementation to save our state, due to backward compatibility we must use own state spec.
- *
+ * <p/>
* But we must implement createConfigurable as part of XDebuggerSettings otherwise java general settings will be before xdebugger general setting,
* because JavaDebuggerSettingsPanelProvider has higher priority than XDebuggerSettingsPanelProviderImpl.
*/
-class JavaDebuggerSettings extends XDebuggerSettings<Element> {
+public class JavaDebuggerSettings extends XDebuggerSettings<Element> {
protected JavaDebuggerSettings() {
super("java");
}
- @Nullable
+ @NotNull
@Override
- public Configurable createConfigurable(@NotNull Category category) {
+ public Collection<? extends Configurable> createConfigurables(@NotNull DebuggerSettingsCategory category) {
+ Getter<DebuggerSettings> settingsGetter = new Getter<DebuggerSettings>() {
+ @Override
+ public DebuggerSettings get() {
+ return DebuggerSettings.getInstance();
+ }
+ };
+
switch (category) {
- case ROOT:
- return new DebuggerLaunchingConfigurable();
+ case GENERAL:
+ return singletonList(SimpleConfigurable.create("reference.idesettings.debugger.launching", OptionsBundle.message("options.java.display.name"),
+ DebuggerLaunchingConfigurable.class, settingsGetter));
case DATA_VIEWS:
- return new DebuggerDataViewsConfigurable(null);
+ return createDataViewsConfigurable();
case STEPPING:
- return new DebuggerSteppingConfigurable();
+ return singletonList(SimpleConfigurable.create("reference.idesettings.debugger.stepping", OptionsBundle.message("options.java.display.name"),
+ DebuggerSteppingConfigurable.class, settingsGetter));
+ case HOTSWAP:
+ return singletonList(SimpleConfigurable.create("reference.idesettings.debugger.hotswap", OptionsBundle.message("options.java.display.name"),
+ JavaHotSwapConfigurableUi.class, settingsGetter));
}
- return null;
+ return Collections.emptyList();
+ }
+
+ @SuppressWarnings("SpellCheckingInspection")
+ @NotNull
+ public static List<Configurable> createDataViewsConfigurable() {
+ return Arrays.<Configurable>asList(new DebuggerDataViewsConfigurable(null),
+ SimpleConfigurable.create("reference.idesettings.debugger.typerenderers", DebuggerBundle.message("user.renderers.configurable.display.name"),
+ UserRenderersConfigurable.class, new Getter<NodeRendererSettings>() {
+ @Override
+ public NodeRendererSettings get() {
+ return NodeRendererSettings.getInstance();
+ }
+ }));
}
@Override
- public void generalApplied(@NotNull XDebuggerSettings.Category category) {
- if (category == XDebuggerSettings.Category.DATA_VIEWS) {
+ public void generalApplied(@NotNull DebuggerSettingsCategory category) {
+ if (category == DebuggerSettingsCategory.DATA_VIEWS) {
NodeRendererSettings.getInstance().fireRenderersChanged();
}
}
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerHotswapConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/JavaHotSwapConfigurableUi.java
index a70be30556e2..82a33a895fcb 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/DebuggerHotswapConfigurable.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/JavaHotSwapConfigurableUi.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,14 +16,14 @@
package com.intellij.debugger.settings;
import com.intellij.debugger.DebuggerBundle;
-import com.intellij.openapi.options.SearchableConfigurable;
+import com.intellij.openapi.options.ConfigurableUi;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
-public class DebuggerHotswapConfigurable implements SearchableConfigurable {
+class JavaHotSwapConfigurableUi implements ConfigurableUi<DebuggerSettings> {
private JCheckBox myHotswapInBackground;
private JCheckBox myCbCompileBeforeHotswap;
private JCheckBox myCbHangWarningEnabled;
@@ -31,8 +31,8 @@ public class DebuggerHotswapConfigurable implements SearchableConfigurable {
private JRadioButton myRbNever;
private JRadioButton myRbAsk;
- public void reset() {
- final DebuggerSettings settings = DebuggerSettings.getInstance();
+ @Override
+ public void reset(@NotNull DebuggerSettings settings) {
myHotswapInBackground.setSelected(settings.HOTSWAP_IN_BACKGROUND);
myCbCompileBeforeHotswap.setSelected(settings.COMPILE_BEFORE_HOTSWAP);
myCbHangWarningEnabled.setSelected(settings.HOTSWAP_HANG_WARNING_ENABLED);
@@ -48,8 +48,9 @@ public class DebuggerHotswapConfigurable implements SearchableConfigurable {
}
}
- public void apply() {
- getSettingsTo(DebuggerSettings.getInstance());
+ @Override
+ public void apply(@NotNull DebuggerSettings settings) {
+ getSettingsTo(settings);
}
private void getSettingsTo(DebuggerSettings settings) {
@@ -68,31 +69,16 @@ public class DebuggerHotswapConfigurable implements SearchableConfigurable {
}
}
- public boolean isModified() {
- final DebuggerSettings currentSettings = DebuggerSettings.getInstance();
+ @Override
+ public boolean isModified(@NotNull DebuggerSettings currentSettings) {
final DebuggerSettings debuggerSettings = currentSettings.clone();
getSettingsTo(debuggerSettings);
return !debuggerSettings.equals(currentSettings);
}
- public String getDisplayName() {
- return DebuggerBundle.message("debugger.hotswap.configurable.display.name");
- }
-
- public String getHelpTopic() {
- return "reference.idesettings.debugger.hotswap";
- }
-
@NotNull
- public String getId() {
- return getHelpTopic();
- }
-
- public Runnable enableSearch(String option) {
- return null;
- }
-
- public JComponent createComponent() {
+ @Override
+ public JComponent getComponent() {
final JPanel panel = new JPanel(new GridBagLayout());
myCbCompileBeforeHotswap = new JCheckBox(DebuggerBundle.message("label.debugger.hotswap.configurable.compile.before.hotswap"));
@@ -130,9 +116,4 @@ public class DebuggerHotswapConfigurable implements SearchableConfigurable {
return panel;
}
-
-
- public void disposeUIResources() {
- }
-
-}
+} \ No newline at end of file
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
index 3ab2028d5813..3a8505c7dfe8 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,17 +20,12 @@ import com.intellij.debugger.ui.tree.render.CompoundNodeRenderer;
import com.intellij.debugger.ui.tree.render.NodeRenderer;
import com.intellij.ide.util.ElementsChooser;
import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.options.Configurable;
-import com.intellij.openapi.options.ConfigurationException;
-import com.intellij.openapi.options.SearchableConfigurable;
-import com.intellij.openapi.project.Project;
+import com.intellij.openapi.options.ConfigurableUi;
import com.intellij.ui.DocumentAdapter;
import com.intellij.util.IconUtil;
import com.intellij.util.PlatformIcons;
import com.intellij.util.containers.InternalIterator;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
@@ -40,56 +35,25 @@ import java.awt.*;
import java.util.ArrayList;
import java.util.List;
-/**
- * @author Eugene Zhuravlev
- * Date: Feb 19, 2005
- */
-public class UserRenderersConfigurable implements SearchableConfigurable, Configurable.NoScroll {
- private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.settings.UserRenderersConfigurable");
+public final class UserRenderersConfigurable extends JPanel implements ConfigurableUi<NodeRendererSettings> {
private static final Icon ADD_ICON = IconUtil.getAddIcon();
private static final Icon REMOVE_ICON = IconUtil.getRemoveIcon();
private static final Icon COPY_ICON = PlatformIcons.COPY_ICON;
private static final Icon UP_ICON = IconUtil.getMoveUpIcon();
private static final Icon DOWN_ICON = IconUtil.getMoveDownIcon();
- private JPanel myNameFieldPanel;
- private JTextField myNameField;
+ private final JPanel myNameFieldPanel;
+ private final JTextField myNameField;
private ElementsChooser<NodeRenderer> myRendererChooser;
private NodeRenderer myCurrentRenderer = null;
- private final CompoundRendererConfigurable myRendererDataConfigurable;
-
- public UserRenderersConfigurable(@Nullable Project project) {
- myRendererDataConfigurable = new CompoundRendererConfigurable(project);
- }
-
- public String getDisplayName() {
- return DebuggerBundle.message("user.renderers.configurable.display.name");
- }
-
- public String getHelpTopic() {
- return "reference.idesettings.debugger.typerenderers";
- }
-
- @NotNull
- public String getId() {
- return getHelpTopic();
- }
-
- public Runnable enableSearch(String option) {
- return null;
- }
-
- public JComponent createComponent() {
- final JPanel panel = new JPanel(new BorderLayout(4, 0));
+ private final CompoundRendererConfigurable myRendererDataConfigurable = new CompoundRendererConfigurable();
- final JComponent renderersList = createRenderersList();
- final JComponent toolbar = createToolbar();
- final JComponent rendererDataPanel = myRendererDataConfigurable.createComponent();
+ public UserRenderersConfigurable() {
+ super(new BorderLayout(4, 0));
- final JPanel left = new JPanel(new BorderLayout());
-
- left.add(toolbar, BorderLayout.NORTH);
- left.add(renderersList, BorderLayout.CENTER);
+ JPanel left = new JPanel(new BorderLayout());
+ left.add(createToolbar(), BorderLayout.NORTH);
+ left.add(createRenderersList(), BorderLayout.CENTER);
myNameField = new JTextField();
myNameFieldPanel = new JPanel(new BorderLayout());
@@ -98,11 +62,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myNameFieldPanel.setVisible(false);
final JPanel center = new JPanel(new BorderLayout(0, 4));
-
center.add(myNameFieldPanel, BorderLayout.NORTH);
- center.add(rendererDataPanel, BorderLayout.CENTER);
+ center.add(myRendererDataConfigurable, BorderLayout.CENTER);
myNameField.getDocument().addDocumentListener(new DocumentAdapter() {
+ @Override
protected void textChanged(DocumentEvent e) {
if (myCurrentRenderer != null) {
myCurrentRenderer.setName(myNameField.getText());
@@ -111,10 +75,14 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
}
});
- panel.add(left, BorderLayout.WEST);
- panel.add(center, BorderLayout.CENTER);
+ add(left, BorderLayout.WEST);
+ add(center, BorderLayout.CENTER);
+ }
- return panel;
+ @Override
+ @NotNull
+ public JComponent getComponent() {
+ return this;
}
private JComponent createRenderersList() {
@@ -122,12 +90,14 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myRendererChooser.getEmptyText().setText(DebuggerBundle.message("text.user.renderers.configurable.no.renderers"));
myRendererChooser.addElementsMarkListener(new ElementsChooser.ElementsMarkListener<NodeRenderer>() {
+ @Override
public void elementMarkChanged(final NodeRenderer element, final boolean isMarked) {
element.setEnabled(isMarked);
}
});
myRendererChooser.addListSelectionListener(new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
+ @Override
+ public void valueChanged(@NotNull ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
updateCurrentRenderer(myRendererChooser.getSelectedElements());
}
@@ -138,7 +108,7 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
private void updateCurrentRenderer(List<NodeRenderer> selectedElements) {
if (selectedElements.size() != 1) {
- // multiselection
+ // multi selection
setCurrentRenderer(null);
}
else {
@@ -150,13 +120,8 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
if (myCurrentRenderer == renderer) {
return;
}
- try {
- if (myRendererDataConfigurable.isModified()) {
- myRendererDataConfigurable.apply();
- }
- }
- catch (ConfigurationException e) {
- LOG.error(e);
+ if (myRendererDataConfigurable.isModified()) {
+ myRendererDataConfigurable.apply();
}
myCurrentRenderer = renderer;
if (renderer != null) {
@@ -181,11 +146,12 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
return toolbar.getComponent();
}
- public void apply() throws ConfigurationException {
+ @Override
+ public void apply(@NotNull NodeRendererSettings settings) {
myRendererDataConfigurable.apply();
- flushTo(NodeRendererSettings.getInstance().getCustomRenderers());
+ flushTo(settings.getCustomRenderers());
- NodeRendererSettings.getInstance().fireRenderersChanged();
+ settings.fireRenderersChanged();
}
private void flushTo(final RendererConfiguration rendererConfiguration) {
@@ -197,11 +163,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
rendererConfiguration.setRenderers(renderers);
}
- public boolean isModified() {
+ @Override
+ public boolean isModified(@NotNull NodeRendererSettings settings) {
if (myRendererDataConfigurable.isModified()) {
return true;
}
- final NodeRendererSettings settings = NodeRendererSettings.getInstance();
final RendererConfiguration rendererConfiguration = settings.getCustomRenderers();
if (myRendererChooser.getElementCount() != rendererConfiguration.getRendererCount()) {
return true;
@@ -211,11 +177,13 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
return !uiConfiguration.equals(rendererConfiguration);
}
- public void reset() {
+ @Override
+ public void reset(@NotNull NodeRendererSettings settings) {
myRendererChooser.removeAllElements();
- final RendererConfiguration rendererConfiguration = NodeRendererSettings.getInstance().getCustomRenderers();
+ final RendererConfiguration rendererConfiguration = settings.getCustomRenderers();
final ArrayList<NodeRenderer> elementsToSelect = new ArrayList<NodeRenderer>(1);
rendererConfiguration.iterateRenderers(new InternalIterator<NodeRenderer>() {
+ @Override
public boolean visit(final NodeRenderer renderer) {
final NodeRenderer clonedRenderer = (NodeRenderer)renderer.clone();
myRendererChooser.addElement(clonedRenderer, clonedRenderer.isEnabled());
@@ -230,21 +198,18 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myRendererDataConfigurable.reset();
}
- public void disposeUIResources() {
- myRendererChooser.removeAllElements();
- myRendererDataConfigurable.disposeUIResources();
- }
-
private class AddAction extends AnAction {
public AddAction() {
super(DebuggerBundle.message("button.add"), DebuggerBundle.message("user.renderers.configurable.button.description.add"), ADD_ICON);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final NodeRenderer renderer = (NodeRenderer)NodeRendererSettings.getInstance().createRenderer(CompoundNodeRenderer.UNIQUE_ID);
renderer.setEnabled(true);
myRendererChooser.addElement(renderer, renderer.isEnabled());
SwingUtilities.invokeLater(new Runnable() {
+ @Override
public void run() {
myNameField.requestFocus();
}
@@ -257,16 +222,18 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
super(DebuggerBundle.message("button.remove"), DebuggerBundle.message("user.renderers.configurable.button.description.remove"), REMOVE_ICON);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
for (NodeRenderer selectedElement : myRendererChooser.getSelectedElements()) {
myRendererChooser.removeElement(selectedElement);
}
}
+ @Override
public void update(AnActionEvent e) {
super.update(e);
- final Presentation presentation = e.getPresentation();
- presentation.setEnabled(myRendererChooser.getSelectedElement() != null);
+
+ e.getPresentation().setEnabled(myRendererChooser.getSelectedElement() != null);
}
}
@@ -275,18 +242,18 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
super(DebuggerBundle.message("button.copy"), DebuggerBundle.message("user.renderers.configurable.button.description.copy"), COPY_ICON);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final NodeRenderer selectedElement = myRendererChooser.getSelectedElement();
if (selectedElement != null) {
- final NodeRenderer cloned = (NodeRenderer)selectedElement.clone();
- myRendererChooser.addElement(cloned, true);
+ myRendererChooser.addElement((NodeRenderer)selectedElement.clone(), true);
}
}
+ @Override
public void update(AnActionEvent e) {
super.update(e);
- final Presentation presentation = e.getPresentation();
- presentation.setEnabled(myRendererChooser.getSelectedElement() != null);
+ e.getPresentation().setEnabled(myRendererChooser.getSelectedElement() != null);
}
}
@@ -300,6 +267,7 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myMoveUp = up;
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final int selectedRow = myRendererChooser.getSelectedElementRow();
if (selectedRow < 0) {
@@ -315,10 +283,10 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myRendererChooser.moveElement(myRendererChooser.getElementAt(selectedRow), newRow);
}
+ @Override
public void update(AnActionEvent e) {
super.update(e);
- final Presentation presentation = e.getPresentation();
- presentation.setEnabled(myRendererChooser.getSelectedElement() != null);
+ e.getPresentation().setEnabled(myRendererChooser.getSelectedElement() != null);
}
}
}