diff options
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/settings')
-rw-r--r-- | java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java | 139 | ||||
-rw-r--r-- | java/debugger/impl/src/com/intellij/debugger/settings/DebuggerLaunchingConfigurable.java | 39 | ||||
-rw-r--r-- | java/debugger/impl/src/com/intellij/debugger/settings/DebuggerSteppingConfigurable.java | 59 | ||||
-rw-r--r-- | java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java | 59 | ||||
-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.java | 130 |
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); } } } |