From bcae7b03fb915d7e125335a99d2296089b217233 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 24 Jul 2014 17:09:16 +0200 Subject: [PATCH] move "Data Type Renderers" to "Data Views" node --- .../actions/CustomizeContextViewAction.java | 28 ++----- .../CompoundRendererConfigurable.java | 48 ++++++++---- .../settings/JavaDebuggerSettings.java | 50 ++++++++---- .../settings/UserRenderersConfigurable.java | 68 ++++------------ .../debugger/ui/JavaDebuggerSupport.java | 24 ------ .../src/META-INF/xdebugger.xml | 4 +- .../DebuggerConfigurableProvider.java | 38 +++++++++ .../settings/DebuggerSettingsCategory.java | 6 ++ .../xdebugger/settings/XDebuggerSettings.java | 17 ++-- .../xdebugger/impl/DebuggerSupport.java | 6 ++ .../xdebugger/impl/XDebuggerSupport.java | 12 +-- .../impl/settings/DataViewsConfigurable.java | 6 +- .../impl/settings/DebuggerConfigurable.java | 33 ++++---- .../DebuggerConfigurableProvider.java | 29 ------- .../DebuggerSettingsPanelProvider.java | 21 ++--- .../settings/SubCompositeConfigurable.java | 10 +-- .../XDebuggerConfigurableProvider.java | 64 +++++++++++++++ .../XDebuggerSettingsPanelProviderImpl.java | 77 ------------------- .../debugger/GroovyDebuggerSettings.java | 25 +++--- .../src/messages/DebuggerBundle.properties | 2 +- 20 files changed, 261 insertions(+), 307 deletions(-) create mode 100644 platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerConfigurableProvider.java create mode 100644 platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerSettingsCategory.java delete mode 100644 platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurableProvider.java create mode 100644 platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerConfigurableProvider.java delete mode 100644 platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsPanelProviderImpl.java diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.java index 01d6fcc6e7e8..6214a9e44d7f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/CustomizeContextViewAction.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,14 +17,12 @@ package com.intellij.debugger.actions; import com.intellij.debugger.DebuggerBundle; import com.intellij.debugger.engine.JavaDebugProcess; -import com.intellij.debugger.settings.DebuggerDataViewsConfigurable; +import com.intellij.debugger.settings.JavaDebuggerSettings; import com.intellij.debugger.settings.NodeRendererSettings; -import com.intellij.debugger.settings.UserRenderersConfigurable; import com.intellij.idea.ActionsBundle; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.options.CompositeConfigurable; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.TabbedConfigurable; @@ -40,16 +38,9 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.border.EmptyBorder; -import java.util.ArrayList; import java.util.List; -/** - * User: lex - * Date: Sep 26, 2003 - * Time: 4:39:53 PM - */ public class CustomizeContextViewAction extends XDebuggerTreeActionBase { - @Override public void actionPerformed(AnActionEvent e) { perform(null, "", e); @@ -58,15 +49,11 @@ public class CustomizeContextViewAction extends XDebuggerTreeActionBase { @Override protected void perform(XValueNodeImpl node, @NotNull String nodeName, AnActionEvent e) { final Project project = CommonDataKeys.PROJECT.getData(e.getDataContext()); - Disposable disposable = Disposer.newDisposable(); - final CompositeConfigurable configurable = new TabbedConfigurable(disposable) { + SingleConfigurableEditor editor = new SingleConfigurableEditor(project, new TabbedConfigurable(disposable) { @Override protected List createConfigurables() { - ArrayList array = new ArrayList(); - array.add(new DebuggerDataViewsConfigurable(project)); - array.add(new UserRenderersConfigurable(project)); - return array; + return JavaDebuggerSettings.createDataViewsConfigurable(); } @Override @@ -89,13 +76,12 @@ public class CustomizeContextViewAction extends XDebuggerTreeActionBase { protected void createConfigurableTabs() { for (Configurable configurable : getConfigurables()) { JComponent component = configurable.createComponent(); - component.setBorder(new EmptyBorder(8,8,8,8)); + assert component != null; + component.setBorder(new EmptyBorder(8, 8, 8, 8)); myTabbedPane.addTab(configurable.getDisplayName(), component); } } - }; - - SingleConfigurableEditor editor = new SingleConfigurableEditor(project, configurable); + }); Disposer.register(editor.getDisposable(), disposable); editor.show(); } 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..58b1be02b18f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/CompoundRendererConfigurable.java @@ -29,7 +29,6 @@ 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; @@ -41,7 +40,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; @@ -70,7 +69,6 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { private DebuggerExpressionTextField myChildrenEditor; private DebuggerExpressionTextField myChildrenExpandedEditor; private DebuggerExpressionTextField myListChildrenEditor; - private JComponent myChildrenListEditor; private JLabel myExpandedLabel; private JPanel myMainPanel; private JBTable myTable; @@ -79,10 +77,6 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { 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; @@ -98,6 +92,8 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { return myRenderer; } + @Override + @NotNull public JComponent createComponent() { if (myProject == null) { myProject = JavaDebuggerSupport.getContextProjectForEditorFieldsInDebuggerConfigurables(); @@ -121,10 +117,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 +130,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) { @@ -145,7 +143,8 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { }, myProject); final EditorTextField textField = myClassNameField.getEditorTextField(); final FocusAdapter updateContextListener = new FocusAdapter() { - public void focusLost(FocusEvent e) { + @Override + public void focusLost(@NotNull FocusEvent e) { updateContext(myClassNameField.getText()); } }; @@ -206,6 +205,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { 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 +214,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 +252,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, @@ -300,6 +305,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { }).createPanel(); } + @Override public boolean isModified() { if (myRenderer == null) { return false; @@ -309,7 +315,8 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { return !DebuggerUtilsEx.externalizableEqual(cloned, myOriginalRenderer); } - public void apply() throws ConfigurationException { + @Override + public void apply() { if (myRenderer == null) { return; } @@ -340,6 +347,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { renderer.setClassName(myClassNameField.getText()); } + @Override public void reset() { final TextWithImports emptyExpressionFragment = new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, ""); ((CardLayout)myMainPanel.getLayout()).show(myMainPanel, myRenderer == null ? EMPTY_PANEL_ID : DATA_PANEL_ID); @@ -390,6 +398,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { updateContext(className); } + @Override public void disposeUIResources() { myRenderer = null; myOriginalRenderer = null; @@ -410,7 +419,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { return (MyTableModel)myTable.getModel(); } - private final class MyTableModel extends AbstractTableModel { + private static final class MyTableModel extends AbstractTableModel { private final List myData = new ArrayList(); public MyTableModel() { @@ -423,18 +432,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 +460,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { } } + @Override public Object getValueAt(int rowIndex, int columnIndex) { if (rowIndex >= getRowCount()) { return null; @@ -461,6 +476,7 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { } } + @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if (rowIndex >= getRowCount()) { return; @@ -476,6 +492,8 @@ public class CompoundRendererConfigurable implements UnnamedConfigurable { } } + @NotNull + @Override public String getColumnName(int columnIndex) { switch (columnIndex) { case NAME_TABLE_COLUMN: @@ -513,7 +531,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/JavaDebuggerSettings.java b/java/debugger/impl/src/com/intellij/debugger/settings/JavaDebuggerSettings.java index 2b54742774b3..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,31 +15,40 @@ */ 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. - * + *

* 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 { +public class JavaDebuggerSettings extends XDebuggerSettings { protected JavaDebuggerSettings() { super("java"); } - @Nullable + @NotNull @Override - public Configurable createConfigurable(@NotNull Category category) { - final Getter debuggerSettingsGetter = new Getter() { + public Collection createConfigurables(@NotNull DebuggerSettingsCategory category) { + Getter settingsGetter = new Getter() { @Override public DebuggerSettings get() { return DebuggerSettings.getInstance(); @@ -48,21 +57,36 @@ class JavaDebuggerSettings extends XDebuggerSettings { switch (category) { case GENERAL: - return SimpleConfigurable.create("reference.idesettings.debugger.launching", OptionsBundle.message("options.java.display.name"), - DebuggerLaunchingConfigurable.class, debuggerSettingsGetter); + 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 SimpleConfigurable.create("reference.idesettings.debugger.stepping", OptionsBundle.message("options.java.display.name"), DebuggerSteppingConfigurable.class, debuggerSettingsGetter); + return singletonList(SimpleConfigurable.create("reference.idesettings.debugger.stepping", OptionsBundle.message("options.java.display.name"), + DebuggerSteppingConfigurable.class, settingsGetter)); case HOTSWAP: - return SimpleConfigurable.create("reference.idesettings.debugger.hotswap", OptionsBundle.message("options.java.display.name"), JavaHotSwapConfigurableUi.class, debuggerSettingsGetter); + 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 createDataViewsConfigurable() { + return Arrays.asList(new DebuggerDataViewsConfigurable(null), + SimpleConfigurable.create("reference.idesettings.debugger.typerenderers", DebuggerBundle.message("user.renderers.configurable.display.name"), + UserRenderersConfigurable.class, new Getter() { + @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/UserRenderersConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java index ce69608ac996..a9197da82568 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java @@ -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; @@ -44,8 +39,7 @@ 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 class UserRenderersConfigurable implements ConfigurableUi { 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; @@ -56,35 +50,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config private JTextField myNameField; private ElementsChooser myRendererChooser; private NodeRenderer myCurrentRenderer = null; - private final CompoundRendererConfigurable myRendererDataConfigurable; - - public UserRenderersConfigurable(@Nullable Project project) { - myRendererDataConfigurable = new CompoundRendererConfigurable(project); - } - - @Override - public String getDisplayName() { - return DebuggerBundle.message("user.renderers.configurable.display.name"); - } - - @Override - public String getHelpTopic() { - return "reference.idesettings.debugger.typerenderers"; - } + private final CompoundRendererConfigurable myRendererDataConfigurable = new CompoundRendererConfigurable(); @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 BorderLayout(4, 0)); final JComponent renderersList = createRenderersList(); @@ -146,7 +116,7 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config private void updateCurrentRenderer(List selectedElements) { if (selectedElements.size() != 1) { - // multiselection + // multi selection setCurrentRenderer(null); } else { @@ -158,13 +128,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) { @@ -190,11 +155,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config } @Override - public void apply() throws ConfigurationException { + 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) { @@ -207,11 +172,10 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config } @Override - public boolean isModified() { + 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; @@ -222,9 +186,9 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config } @Override - public void reset() { + public void reset(@NotNull NodeRendererSettings settings) { myRendererChooser.removeAllElements(); - final RendererConfiguration rendererConfiguration = NodeRendererSettings.getInstance().getCustomRenderers(); + final RendererConfiguration rendererConfiguration = settings.getCustomRenderers(); final ArrayList elementsToSelect = new ArrayList(1); rendererConfiguration.iterateRenderers(new InternalIterator() { @Override @@ -242,12 +206,6 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config myRendererDataConfigurable.reset(); } - @Override - 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); diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java b/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java index 8be011f0dc83..5bfbf09c7914 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/JavaDebuggerSupport.java @@ -18,7 +18,6 @@ package com.intellij.debugger.ui; import com.intellij.debugger.DebuggerManagerEx; import com.intellij.debugger.actions.*; import com.intellij.debugger.impl.DebuggerContextImpl; -import com.intellij.debugger.settings.UserRenderersConfigurable; import com.intellij.debugger.ui.breakpoints.Breakpoint; import com.intellij.ide.DataManager; import com.intellij.openapi.Disposable; @@ -26,7 +25,6 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.markup.GutterIconRenderer; -import com.intellij.openapi.options.Configurable; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.xdebugger.AbstractDebuggerSession; @@ -40,14 +38,12 @@ import com.intellij.xdebugger.impl.actions.MarkObjectActionHandler; import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointItem; import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider; import com.intellij.xdebugger.impl.evaluate.quick.common.QuickEvaluateHandler; -import com.intellij.xdebugger.impl.settings.DebuggerSettingsPanelProvider; import com.intellij.xdebugger.impl.ui.DebuggerUIUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; import java.util.Collection; -import java.util.Collections; /** * @author nik @@ -66,7 +62,6 @@ public class JavaDebuggerSupport extends DebuggerSupport { private final ShowExecutionPointActionHandler myShowExecutionPointActionHandler = new ShowExecutionPointActionHandler(); //private final EvaluateActionHandler myEvaluateActionHandler = new EvaluateActionHandler(); private final QuickEvaluateActionHandler myQuickEvaluateHandler = new QuickEvaluateActionHandler(); - private final JavaDebuggerSettingsPanelProvider myDebuggerSettingsPanelProvider = new JavaDebuggerSettingsPanelProvider(); private final DebuggerActionHandler mySmartStepIntoHandler = new JvmSmartStepIntoActionHandler(); private final DebuggerActionHandler myAddToWatchedActionHandler = new AddToWatchActionHandler(); private final JavaMarkObjectActionHandler myMarkObjectActionHandler = new JavaMarkObjectActionHandler(); @@ -214,12 +209,6 @@ public class JavaDebuggerSupport extends DebuggerSupport { return X_EDIT; } - @Override - @NotNull - public DebuggerSettingsPanelProvider getSettingsPanelProvider() { - return myDebuggerSettingsPanelProvider; - } - private static class JavaBreakpointPanelProvider extends BreakpointPanelProvider { //private final List myListeners = ContainerUtil.createLockFreeCopyOnWriteList(); @@ -333,19 +322,6 @@ public class JavaDebuggerSupport extends DebuggerSupport { //} } - final static class JavaDebuggerSettingsPanelProvider extends DebuggerSettingsPanelProvider { - @Override - public int getPriority() { - return 1; - } - - @NotNull - @Override - public Collection getConfigurables() { - return Collections.singletonList(new UserRenderersConfigurable(null)); - } - } - public static Project getContextProjectForEditorFieldsInDebuggerConfigurables() { //todo[nik] improve Project project = CommonDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext()); diff --git a/platform/platform-resources/src/META-INF/xdebugger.xml b/platform/platform-resources/src/META-INF/xdebugger.xml index 68111b8eb7b2..4b03978f9473 100644 --- a/platform/platform-resources/src/META-INF/xdebugger.xml +++ b/platform/platform-resources/src/META-INF/xdebugger.xml @@ -10,6 +10,7 @@ + @@ -29,11 +30,12 @@ - + + diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerConfigurableProvider.java b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerConfigurableProvider.java new file mode 100644 index 000000000000..e386d3d57ec8 --- /dev/null +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerConfigurableProvider.java @@ -0,0 +1,38 @@ +/* + * 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.xdebugger.settings; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.options.Configurable; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; + +public abstract class DebuggerConfigurableProvider { + public static final ExtensionPointName EXTENSION_POINT = ExtensionPointName.create("com.intellij.xdebugger.configurableProvider"); + + @NotNull + public Collection getConfigurables(@NotNull DebuggerSettingsCategory category) { + return Collections.emptyList(); + } + + /** + * General settings of category were applied + */ + public void generalApplied(@NotNull DebuggerSettingsCategory category) { + } +} \ No newline at end of file diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerSettingsCategory.java b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerSettingsCategory.java new file mode 100644 index 000000000000..fab630fe751c --- /dev/null +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/DebuggerSettingsCategory.java @@ -0,0 +1,6 @@ +package com.intellij.xdebugger.settings; + +public enum DebuggerSettingsCategory { + ROOT /* will be placed under root "Debugger" node, use it with care */, + GENERAL, DATA_VIEWS, STEPPING, HOTSWAP +} \ No newline at end of file diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettings.java b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettings.java index 888ca40a4576..1843091c3fb3 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettings.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/settings/XDebuggerSettings.java @@ -23,6 +23,9 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + /** * Implement this class to provide settings page for debugger. Settings page will be placed under 'Debugger' node in the 'Settings' dialog. * An implementation should be registered in plugin.xml: @@ -34,10 +37,6 @@ import org.jetbrains.annotations.Nullable; * @author nik */ public abstract class XDebuggerSettings implements PersistentStateComponent { - public enum Category { - GENERAL, DATA_VIEWS, STEPPING, HOTSWAP - } - public static final ExtensionPointName EXTENSION_POINT = ExtensionPointName.create("com.intellij.xdebugger.settings"); private final String myId; @@ -57,17 +56,17 @@ public abstract class XDebuggerSettings implements PersistentStateComponent createConfigurables(@NotNull DebuggerSettingsCategory category) { + return Collections.emptyList(); } - public void generalApplied(@NotNull Category category) { + public void generalApplied(@NotNull DebuggerSettingsCategory category) { } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/DebuggerSupport.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/DebuggerSupport.java index 840163bb9e43..b09c7388748f 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/DebuggerSupport.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/DebuggerSupport.java @@ -36,6 +36,7 @@ import org.jetbrains.annotations.Nullable; public abstract class DebuggerSupport { private static final ExtensionPointName EXTENSION_POINT = ExtensionPointName.create("com.intellij.xdebugger.debuggerSupport"); + @SuppressWarnings("deprecation") private static final DebuggerSettingsPanelProvider EMPTY_SETTINGS_PANEL_PROVIDER = new DebuggerSettingsPanelProvider() { }; @@ -60,6 +61,11 @@ public abstract class DebuggerSupport { @NotNull public abstract BreakpointPanelProvider getBreakpointPanelProvider(); + /** + * @deprecated Use {@link com.intellij.xdebugger.settings.DebuggerConfigurableProvider} + */ + @Deprecated + @SuppressWarnings("deprecation") @NotNull public DebuggerSettingsPanelProvider getSettingsPanelProvider() { return EMPTY_SETTINGS_PANEL_PROVIDER; diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java index fbfe184a5f3f..7f8eda2a347f 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.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. @@ -26,8 +26,6 @@ import com.intellij.xdebugger.impl.breakpoints.XBreakpointPanelProvider; import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider; import com.intellij.xdebugger.impl.evaluate.quick.XQuickEvaluateHandler; import com.intellij.xdebugger.impl.evaluate.quick.common.QuickEvaluateHandler; -import com.intellij.xdebugger.impl.settings.DebuggerSettingsPanelProvider; -import com.intellij.xdebugger.impl.settings.XDebuggerSettingsPanelProviderImpl; import org.jetbrains.annotations.NotNull; /** @@ -49,7 +47,6 @@ public class XDebuggerSupport extends DebuggerSupport { private final XDebuggerSuspendedActionHandler myShowExecutionPointHandler; private final XDebuggerEvaluateActionHandler myEvaluateHandler; private final XQuickEvaluateHandler myQuickEvaluateHandler; - private final XDebuggerSettingsPanelProviderImpl mySettingsPanelProvider; private final XAddToWatchesFromEditorActionHandler myAddToWatchesActionHandler; private final DebuggerActionHandler myEvaluateInConsoleActionHandler = new XEvaluateInConsoleFromEditorActionHandler(); @@ -118,7 +115,6 @@ public class XDebuggerSupport extends DebuggerSupport { myMuteBreakpointsHandler = new XDebuggerMuteBreakpointsHandler(); myEvaluateHandler = new XDebuggerEvaluateActionHandler(); myQuickEvaluateHandler = new XQuickEvaluateHandler(); - mySettingsPanelProvider = new XDebuggerSettingsPanelProviderImpl(); myMarkObjectActionHandler = new XMarkObjectActionHandler(); myEditBreakpointActionHandler = new XDebuggerEditBreakpointActionHandler(); } @@ -253,10 +249,4 @@ public class XDebuggerSupport extends DebuggerSupport { public EditBreakpointActionHandler getEditBreakpointAction() { return myEditBreakpointActionHandler; } - - @Override - @NotNull - public DebuggerSettingsPanelProvider getSettingsPanelProvider() { - return mySettingsPanelProvider; - } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurable.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurable.java index d140a74f35c8..6ee307cfa573 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurable.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DataViewsConfigurable.java @@ -17,7 +17,7 @@ package com.intellij.xdebugger.impl.settings; import com.intellij.openapi.options.Configurable; import com.intellij.xdebugger.XDebuggerBundle; -import com.intellij.xdebugger.settings.XDebuggerSettings; +import com.intellij.xdebugger.settings.DebuggerSettingsCategory; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -41,8 +41,8 @@ class DataViewsConfigurable extends SubCompositeConfigurable implements Configur @NotNull @Override - protected XDebuggerSettings.Category getCategory() { - return XDebuggerSettings.Category.DATA_VIEWS; + protected DebuggerSettingsCategory getCategory() { + return DebuggerSettingsCategory.DATA_VIEWS; } @NotNull diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurable.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurable.java index dd26fb3dec60..b75f929f7f07 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurable.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurable.java @@ -23,8 +23,8 @@ import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.xdebugger.XDebuggerBundle; import com.intellij.xdebugger.impl.DebuggerSupport; -import com.intellij.xdebugger.settings.XDebuggerSettings; -import com.intellij.xdebugger.settings.XDebuggerSettings.Category; +import com.intellij.xdebugger.settings.DebuggerConfigurableProvider; +import com.intellij.xdebugger.settings.DebuggerSettingsCategory; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -32,14 +32,11 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.*; -/** - * @author Eugene Belyaev & Eugene Zhuravlev - */ public class DebuggerConfigurable implements SearchableConfigurable.Parent { public static final String DISPLAY_NAME = XDebuggerBundle.message("debugger.configurable.display.name"); static final Configurable[] EMPTY_CONFIGURABLES = new Configurable[0]; - private static final Category[] MERGED_CATEGORIES = {Category.STEPPING, Category.HOTSWAP}; + private static final DebuggerSettingsCategory[] MERGED_CATEGORIES = {DebuggerSettingsCategory.STEPPING, DebuggerSettingsCategory.HOTSWAP}; private Configurable myRootConfigurable; private Configurable[] myChildren; @@ -71,14 +68,14 @@ public class DebuggerConfigurable implements SearchableConfigurable.Parent { return; } - List providers = getSortedProviders(); - List configurables = new SmartList(); configurables.add(new DataViewsConfigurable()); + DebuggerConfigurableProvider[] providers = DebuggerConfigurableProvider.EXTENSION_POINT.getExtensions(); computeMergedConfigurables(providers, configurables); - for (DebuggerSettingsPanelProvider provider : providers) { + //noinspection deprecation + for (DebuggerSettingsPanelProvider provider : getSortedProviders()) { configurables.addAll(provider.getConfigurables()); @SuppressWarnings("deprecation") Configurable providerRootConfigurable = provider.getRootConfigurable(); @@ -113,8 +110,8 @@ public class DebuggerConfigurable implements SearchableConfigurable.Parent { } } - private static void computeMergedConfigurables(@NotNull List providers, @NotNull List result) { - for (Category category : MERGED_CATEGORIES) { + private static void computeMergedConfigurables(@NotNull DebuggerConfigurableProvider[] providers, @NotNull List result) { + for (DebuggerSettingsCategory category : MERGED_CATEGORIES) { List configurables = getConfigurables(category, providers); if (!configurables.isEmpty()) { String id = category.name().toLowerCase(Locale.ENGLISH); @@ -125,8 +122,8 @@ public class DebuggerConfigurable implements SearchableConfigurable.Parent { } @Nullable - private static MergedCompositeConfigurable computeGeneralConfigurables(@NotNull List providers) { - List rootConfigurables = getConfigurables(Category.GENERAL, providers); + private static MergedCompositeConfigurable computeGeneralConfigurables(@NotNull DebuggerConfigurableProvider[] providers) { + List rootConfigurables = getConfigurables(DebuggerSettingsCategory.GENERAL, providers); if (rootConfigurables.isEmpty()) { return null; } @@ -198,6 +195,7 @@ public class DebuggerConfigurable implements SearchableConfigurable.Parent { return "project.propDebugger"; } + @SuppressWarnings("deprecation") @NotNull private static List getSortedProviders() { List providers = null; @@ -225,15 +223,14 @@ public class DebuggerConfigurable implements SearchableConfigurable.Parent { } @NotNull - static List getConfigurables(@NotNull XDebuggerSettings.Category category) { - List providers = getSortedProviders(); - return providers.isEmpty() ? Collections.emptyList() : getConfigurables(category, providers); + static List getConfigurables(@NotNull DebuggerSettingsCategory category) { + return getConfigurables(category, DebuggerConfigurableProvider.EXTENSION_POINT.getExtensions()); } @NotNull - private static List getConfigurables(@NotNull XDebuggerSettings.Category category, @NotNull List providers) { + private static List getConfigurables(@NotNull DebuggerSettingsCategory category, @NotNull DebuggerConfigurableProvider[] providers) { List configurables = null; - for (DebuggerSettingsPanelProvider provider : providers) { + for (DebuggerConfigurableProvider provider : providers) { Collection providerConfigurables = provider.getConfigurables(category); if (!providerConfigurables.isEmpty()) { if (configurables == null) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurableProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurableProvider.java deleted file mode 100644 index f52309db8cd6..000000000000 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerConfigurableProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.xdebugger.impl.settings; - -import com.intellij.openapi.options.Configurable; -import com.intellij.openapi.options.ConfigurableProvider; - -/** - * @author nik - */ -public class DebuggerConfigurableProvider extends ConfigurableProvider { - @Override - public Configurable createConfigurable() { - return new DebuggerConfigurable(); - } -} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerSettingsPanelProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerSettingsPanelProvider.java index f6e1c76a77ec..5b0dde609e0c 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerSettingsPanelProvider.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/DebuggerSettingsPanelProvider.java @@ -16,15 +16,15 @@ package com.intellij.xdebugger.impl.settings; import com.intellij.openapi.options.Configurable; -import com.intellij.xdebugger.settings.XDebuggerSettings.Category; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; +@Deprecated /** - * @author nik + * @deprecated Use {@link com.intellij.xdebugger.settings.DebuggerConfigurableProvider} */ public abstract class DebuggerSettingsPanelProvider { public int getPriority() { @@ -38,7 +38,7 @@ public abstract class DebuggerSettingsPanelProvider { @Deprecated /** - * @deprecated Please use {@link #generalApplied(Category)} + * @deprecated Please use {@link com.intellij.xdebugger.settings.DebuggerConfigurableProvider#generalApplied(com.intellij.xdebugger.settings.DebuggerSettingsCategory)} */ public void apply() { } @@ -46,21 +46,10 @@ public abstract class DebuggerSettingsPanelProvider { @Nullable @Deprecated /** - * @deprecated Please use {@link #getConfigurables(Category)} and - * check {@link Category#GENERAL} + * @deprecated Please use {@link com.intellij.xdebugger.settings.DebuggerConfigurableProvider#getConfigurables(com.intellij.xdebugger.settings.DebuggerSettingsCategory)} and + * check {@link com.intellij.xdebugger.settings.DebuggerSettingsCategory#GENERAL} */ public Configurable getRootConfigurable() { return null; } - - @NotNull - public Collection getConfigurables(@NotNull Category category) { - return Collections.emptyList(); - } - - /** - * General settings of category were applied - */ - public void generalApplied(@NotNull Category category) { - } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/SubCompositeConfigurable.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/SubCompositeConfigurable.java index 4875c755915f..ad5ad5b2a9e9 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/SubCompositeConfigurable.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/SubCompositeConfigurable.java @@ -20,8 +20,8 @@ import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.ui.IdeBorderFactory; -import com.intellij.xdebugger.impl.DebuggerSupport; -import com.intellij.xdebugger.settings.XDebuggerSettings; +import com.intellij.xdebugger.settings.DebuggerConfigurableProvider; +import com.intellij.xdebugger.settings.DebuggerSettingsCategory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -77,7 +77,7 @@ abstract class SubCompositeConfigurable implements SearchableConfigurable.Parent protected abstract DataViewsConfigurableUi createRootUi(); @NotNull - protected abstract XDebuggerSettings.Category getCategory(); + protected abstract DebuggerSettingsCategory getCategory(); private boolean isChildrenMerged() { return children != null && children.length == 1; @@ -164,8 +164,8 @@ abstract class SubCompositeConfigurable implements SearchableConfigurable.Parent public final void apply() throws ConfigurationException { if (root != null) { root.apply(getSettings()); - for (DebuggerSupport support : DebuggerSupport.getDebuggerSupports()) { - support.getSettingsPanelProvider().generalApplied(getCategory()); + for (DebuggerConfigurableProvider provider : DebuggerConfigurableProvider.EXTENSION_POINT.getExtensions()) { + provider.generalApplied(getCategory()); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerConfigurableProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerConfigurableProvider.java new file mode 100644 index 000000000000..df1e448c22df --- /dev/null +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerConfigurableProvider.java @@ -0,0 +1,64 @@ +package com.intellij.xdebugger.impl.settings; + +import com.intellij.openapi.options.Configurable; +import com.intellij.openapi.options.SimpleConfigurable; +import com.intellij.openapi.util.Getter; +import com.intellij.util.SmartList; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.xdebugger.settings.DebuggerConfigurableProvider; +import com.intellij.xdebugger.settings.DebuggerSettingsCategory; +import com.intellij.xdebugger.settings.XDebuggerSettings; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.List; + +class XDebuggerConfigurableProvider extends DebuggerConfigurableProvider { + @NotNull + @Override + public Collection getConfigurables(@NotNull DebuggerSettingsCategory category) { + List list; + if (category == DebuggerSettingsCategory.GENERAL) { + list = new SmartList(SimpleConfigurable.create("debugger.general", "", GeneralConfigurableUi.class, new Getter() { + @Override + public XDebuggerGeneralSettings get() { + return XDebuggerSettingsManager.getInstanceImpl().getGeneralSettings(); + } + })); + } + else { + list = null; + } + + for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) { + Collection configurables = settings.createConfigurables(category); + if (!configurables.isEmpty()) { + if (list == null) { + list = new SmartList(); + } + list.addAll(configurables); + } + } + + if (category == DebuggerSettingsCategory.ROOT) { + for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) { + @SuppressWarnings("deprecation") + Configurable configurable = settings.createConfigurable(); + if (configurable != null) { + if (list == null) { + list = new SmartList(); + } + list.add(configurable); + } + } + } + return ContainerUtil.notNullize(list); + } + + @Override + public void generalApplied(@NotNull DebuggerSettingsCategory category) { + for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) { + settings.generalApplied(category); + } + } +} \ No newline at end of file diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsPanelProviderImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsPanelProviderImpl.java deleted file mode 100644 index 793e5f746696..000000000000 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsPanelProviderImpl.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.xdebugger.impl.settings; - -import com.intellij.openapi.options.Configurable; -import com.intellij.openapi.options.SimpleConfigurable; -import com.intellij.openapi.util.Getter; -import com.intellij.util.SmartList; -import com.intellij.util.containers.ContainerUtil; -import com.intellij.xdebugger.settings.XDebuggerSettings; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.List; - -/** - * @author nik - */ -public class XDebuggerSettingsPanelProviderImpl extends DebuggerSettingsPanelProvider { - @NotNull - @Override - public Collection getConfigurables() { - List list = new SmartList(); - for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) { - ContainerUtil.addIfNotNull(list, settings.createConfigurable()); - } - return list; - } - - @NotNull - @Override - public Collection getConfigurables(@NotNull XDebuggerSettings.Category category) { - List list; - if (category == XDebuggerSettings.Category.GENERAL) { - list = new SmartList(SimpleConfigurable.create("debugger.general", "", GeneralConfigurableUi.class, new Getter() { - @Override - public XDebuggerGeneralSettings get() { - return XDebuggerSettingsManager.getInstanceImpl().getGeneralSettings(); - } - })); - } - else { - list = null; - } - - for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) { - Configurable configurable = settings.createConfigurable(category); - if (configurable != null) { - if (list == null) { - list = new SmartList(); - } - list.add(configurable); - } - } - return ContainerUtil.notNullize(list); - } - - @Override - public void generalApplied(@NotNull XDebuggerSettings.Category category) { - for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) { - settings.generalApplied(category); - } - } -} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyDebuggerSettings.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyDebuggerSettings.java index 07ee3e13d212..c2538426a871 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyDebuggerSettings.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyDebuggerSettings.java @@ -23,19 +23,24 @@ import com.intellij.openapi.options.SimpleConfigurable; import com.intellij.openapi.util.Getter; import com.intellij.openapi.util.registry.Registry; import com.intellij.util.xmlb.XmlSerializerUtil; +import com.intellij.xdebugger.settings.DebuggerSettingsCategory; import com.intellij.xdebugger.settings.XDebuggerSettings; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.GroovyBundle; +import java.util.Collection; +import java.util.Collections; + +import static java.util.Collections.singletonList; + /** * @author ilyas */ @State( - name = "GroovyDebuggerSettings", - storages = { + name = "GroovyDebuggerSettings", + storages = { @Storage( - file = StoragePathMacros.APP_CONFIG + "/groovy_debug.xml" + file = StoragePathMacros.APP_CONFIG + "/groovy_debug.xml" )} ) public class GroovyDebuggerSettings extends XDebuggerSettings implements Getter { @@ -46,17 +51,19 @@ public class GroovyDebuggerSettings extends XDebuggerSettings createConfigurables(@NotNull DebuggerSettingsCategory category) { switch (category) { case STEPPING: - return SimpleConfigurable.create("reference.idesettings.debugger.groovy", GroovyBundle.message("groovy.debug.caption"), GroovySteppingConfigurableUi.class, this); + return singletonList(SimpleConfigurable.create("reference.idesettings.debugger.groovy", GroovyBundle.message("groovy.debug.caption"), + "reference.idesettings.debugger.groovy", GroovySteppingConfigurableUi.class, this)); case HOTSWAP: - return SimpleConfigurable.create("reference.idesettings.debugger.groovy", GroovyBundle.message("groovy.debug.caption"), GroovyHotSwapConfigurableUi.class, this); + return singletonList(SimpleConfigurable.create("reference.idesettings.debugger.groovy", GroovyBundle.message("groovy.debug.caption"), + "reference.idesettings.debugger.groovy", GroovyHotSwapConfigurableUi.class, this)); } - return null; + return Collections.emptyList(); } @Override diff --git a/resources-en/src/messages/DebuggerBundle.properties b/resources-en/src/messages/DebuggerBundle.properties index 283f907ff77b..f245bb59ddaa 100644 --- a/resources-en/src/messages/DebuggerBundle.properties +++ b/resources-en/src/messages/DebuggerBundle.properties @@ -228,7 +228,7 @@ label.threads.view.configurable.current.thread.on.top=Move current thread to the label.threads.view.configurable.show.stack.frames.for.synthetic.methods=Show stack &frames for synthetic methods label.threads.view.configurable.show.thread.groups=Show thread &groups threads.view.configurable.display.name=Customize Threads View -user.renderers.configurable.display.name=Data Type Renderers +user.renderers.configurable.display.name=Java Data Type Renderers label.user.renderers.configurable.renderer.name=Renderer name: text.user.renderers.configurable.no.renderers=No renderers button.copy=Copy