mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move "Data Type Renderers" to "Data Views" node
This commit is contained in:
+7
-21
@@ -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<Configurable> createConfigurables() {
|
||||
ArrayList<Configurable> array = new ArrayList<Configurable>();
|
||||
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();
|
||||
}
|
||||
|
||||
+33
-15
@@ -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<Row> myData = new ArrayList<Row>();
|
||||
|
||||
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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
* <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) {
|
||||
final Getter<DebuggerSettings> debuggerSettingsGetter = new Getter<DebuggerSettings>() {
|
||||
public Collection<? extends Configurable> createConfigurables(@NotNull DebuggerSettingsCategory category) {
|
||||
Getter<DebuggerSettings> settingsGetter = new Getter<DebuggerSettings>() {
|
||||
@Override
|
||||
public DebuggerSettings get() {
|
||||
return DebuggerSettings.getInstance();
|
||||
@@ -48,21 +57,36 @@ class JavaDebuggerSettings extends XDebuggerSettings<Element> {
|
||||
|
||||
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<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();
|
||||
}
|
||||
}
|
||||
|
||||
+13
-55
@@ -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<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;
|
||||
@@ -56,35 +50,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
|
||||
private JTextField myNameField;
|
||||
private ElementsChooser<NodeRenderer> 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<NodeRenderer> 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<NodeRenderer> elementsToSelect = new ArrayList<NodeRenderer>(1);
|
||||
rendererConfiguration.iterateRenderers(new InternalIterator<NodeRenderer>() {
|
||||
@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);
|
||||
|
||||
@@ -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<Breakpoint> {
|
||||
//private final List<MyBreakpointManagerListener> 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<? extends Configurable> getConfigurables() {
|
||||
return Collections.singletonList(new UserRenderersConfigurable(null));
|
||||
}
|
||||
}
|
||||
|
||||
public static Project getContextProjectForEditorFieldsInDebuggerConfigurables() {
|
||||
//todo[nik] improve
|
||||
Project project = CommonDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext());
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<extensionPoint name="xdebugger.settings" interface="com.intellij.xdebugger.settings.XDebuggerSettings"/>
|
||||
<extensionPoint name="xdebugger.breakpointType" interface="com.intellij.xdebugger.breakpoints.XBreakpointType"/>
|
||||
<extensionPoint name="xdebugger.debuggerSupport" interface="com.intellij.xdebugger.impl.DebuggerSupport"/>
|
||||
<extensionPoint name="xdebugger.configurableProvider" interface="com.intellij.xdebugger.settings.DebuggerConfigurableProvider"/>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
@@ -29,11 +30,12 @@
|
||||
<projectService serviceInterface="com.intellij.xdebugger.impl.XDebuggerHistoryManager"
|
||||
serviceImplementation="com.intellij.xdebugger.impl.XDebuggerHistoryManager"/>
|
||||
|
||||
<applicationConfigurable groupId="build" dynamic="true" key="debugger.configurable.display.name" bundle="messages.XDebuggerBundle" provider="com.intellij.xdebugger.impl.settings.DebuggerConfigurableProvider"/>
|
||||
<applicationConfigurable groupId="build" dynamic="true" key="debugger.configurable.display.name" bundle="messages.XDebuggerBundle" instance="com.intellij.xdebugger.impl.settings.DebuggerConfigurable"/>
|
||||
|
||||
<customizableActionGroupProvider implementation="com.intellij.xdebugger.impl.ui.XDebugTabCustomizableActionGroupProvider"/>
|
||||
|
||||
<xdebugger.debuggerSupport implementation="com.intellij.xdebugger.impl.XDebuggerSupport" order="first"/>
|
||||
<xdebugger.configurableProvider implementation="com.intellij.xdebugger.impl.settings.XDebuggerConfigurableProvider" order="first"/>
|
||||
|
||||
<executor implementation="com.intellij.execution.executors.DefaultDebugExecutor" order="first,after run"/>
|
||||
</extensions>
|
||||
|
||||
+38
@@ -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<DebuggerConfigurableProvider> EXTENSION_POINT = ExtensionPointName.create("com.intellij.xdebugger.configurableProvider");
|
||||
|
||||
@NotNull
|
||||
public Collection<? extends Configurable> getConfigurables(@NotNull DebuggerSettingsCategory category) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* General settings of category were applied
|
||||
*/
|
||||
public void generalApplied(@NotNull DebuggerSettingsCategory category) {
|
||||
}
|
||||
}
|
||||
+6
@@ -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
|
||||
}
|
||||
@@ -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<T> implements PersistentStateComponent<T> {
|
||||
public enum Category {
|
||||
GENERAL, DATA_VIEWS, STEPPING, HOTSWAP
|
||||
}
|
||||
|
||||
public static final ExtensionPointName<XDebuggerSettings> EXTENSION_POINT = ExtensionPointName.create("com.intellij.xdebugger.settings");
|
||||
|
||||
private final String myId;
|
||||
@@ -57,17 +56,17 @@ public abstract class XDebuggerSettings<T> implements PersistentStateComponent<T
|
||||
@Nullable
|
||||
@Deprecated
|
||||
/**
|
||||
* @deprecated Please use {@link #createConfigurable(com.intellij.xdebugger.settings.XDebuggerSettings.Category)}
|
||||
* @deprecated Please use {@link #createConfigurables(DebuggerSettingsCategory)}
|
||||
*/
|
||||
public Configurable createConfigurable() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Configurable createConfigurable(@NotNull Category category) {
|
||||
return null;
|
||||
@NotNull
|
||||
public Collection<? extends Configurable> createConfigurables(@NotNull DebuggerSettingsCategory category) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public void generalApplied(@NotNull Category category) {
|
||||
public void generalApplied(@NotNull DebuggerSettingsCategory category) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
public abstract class DebuggerSupport {
|
||||
private static final ExtensionPointName<DebuggerSupport> 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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
+15
-18
@@ -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<DebuggerSettingsPanelProvider> providers = getSortedProviders();
|
||||
|
||||
List<Configurable> configurables = new SmartList<Configurable>();
|
||||
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<DebuggerSettingsPanelProvider> providers, @NotNull List<Configurable> result) {
|
||||
for (Category category : MERGED_CATEGORIES) {
|
||||
private static void computeMergedConfigurables(@NotNull DebuggerConfigurableProvider[] providers, @NotNull List<Configurable> result) {
|
||||
for (DebuggerSettingsCategory category : MERGED_CATEGORIES) {
|
||||
List<Configurable> 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<DebuggerSettingsPanelProvider> providers) {
|
||||
List<Configurable> rootConfigurables = getConfigurables(Category.GENERAL, providers);
|
||||
private static MergedCompositeConfigurable computeGeneralConfigurables(@NotNull DebuggerConfigurableProvider[] providers) {
|
||||
List<Configurable> 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<DebuggerSettingsPanelProvider> getSortedProviders() {
|
||||
List<DebuggerSettingsPanelProvider> providers = null;
|
||||
@@ -225,15 +223,14 @@ public class DebuggerConfigurable implements SearchableConfigurable.Parent {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static List<Configurable> getConfigurables(@NotNull XDebuggerSettings.Category category) {
|
||||
List<DebuggerSettingsPanelProvider> providers = getSortedProviders();
|
||||
return providers.isEmpty() ? Collections.<Configurable>emptyList() : getConfigurables(category, providers);
|
||||
static List<Configurable> getConfigurables(@NotNull DebuggerSettingsCategory category) {
|
||||
return getConfigurables(category, DebuggerConfigurableProvider.EXTENSION_POINT.getExtensions());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static List<Configurable> getConfigurables(@NotNull XDebuggerSettings.Category category, @NotNull List<DebuggerSettingsPanelProvider> providers) {
|
||||
private static List<Configurable> getConfigurables(@NotNull DebuggerSettingsCategory category, @NotNull DebuggerConfigurableProvider[] providers) {
|
||||
List<Configurable> configurables = null;
|
||||
for (DebuggerSettingsPanelProvider provider : providers) {
|
||||
for (DebuggerConfigurableProvider provider : providers) {
|
||||
Collection<? extends Configurable> providerConfigurables = provider.getConfigurables(category);
|
||||
if (!providerConfigurables.isEmpty()) {
|
||||
if (configurables == null) {
|
||||
|
||||
-29
@@ -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();
|
||||
}
|
||||
}
|
||||
+5
-16
@@ -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<? extends Configurable> getConfigurables(@NotNull Category category) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* General settings of category were applied
|
||||
*/
|
||||
public void generalApplied(@NotNull Category category) {
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+64
@@ -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<? extends Configurable> getConfigurables(@NotNull DebuggerSettingsCategory category) {
|
||||
List<Configurable> list;
|
||||
if (category == DebuggerSettingsCategory.GENERAL) {
|
||||
list = new SmartList<Configurable>(SimpleConfigurable.create("debugger.general", "", GeneralConfigurableUi.class, new Getter<XDebuggerGeneralSettings>() {
|
||||
@Override
|
||||
public XDebuggerGeneralSettings get() {
|
||||
return XDebuggerSettingsManager.getInstanceImpl().getGeneralSettings();
|
||||
}
|
||||
}));
|
||||
}
|
||||
else {
|
||||
list = null;
|
||||
}
|
||||
|
||||
for (XDebuggerSettings<?> settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) {
|
||||
Collection<? extends Configurable> configurables = settings.createConfigurables(category);
|
||||
if (!configurables.isEmpty()) {
|
||||
if (list == null) {
|
||||
list = new SmartList<Configurable>();
|
||||
}
|
||||
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<Configurable>();
|
||||
}
|
||||
list.add(configurable);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ContainerUtil.notNullize(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generalApplied(@NotNull DebuggerSettingsCategory category) {
|
||||
for (XDebuggerSettings<?> settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) {
|
||||
settings.generalApplied(category);
|
||||
}
|
||||
}
|
||||
}
|
||||
-77
@@ -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<? extends Configurable> getConfigurables() {
|
||||
List<Configurable> list = new SmartList<Configurable>();
|
||||
for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) {
|
||||
ContainerUtil.addIfNotNull(list, settings.createConfigurable());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<? extends Configurable> getConfigurables(@NotNull XDebuggerSettings.Category category) {
|
||||
List<Configurable> list;
|
||||
if (category == XDebuggerSettings.Category.GENERAL) {
|
||||
list = new SmartList<Configurable>(SimpleConfigurable.create("debugger.general", "", GeneralConfigurableUi.class, new Getter<XDebuggerGeneralSettings>() {
|
||||
@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<Configurable>();
|
||||
}
|
||||
list.add(configurable);
|
||||
}
|
||||
}
|
||||
return ContainerUtil.notNullize(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generalApplied(@NotNull XDebuggerSettings.Category category) {
|
||||
for (XDebuggerSettings settings : XDebuggerSettingsManager.getInstanceImpl().getSettingsList()) {
|
||||
settings.generalApplied(category);
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
-9
@@ -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<GroovyDebuggerSettings> implements Getter<GroovyDebuggerSettings> {
|
||||
@@ -46,17 +51,19 @@ public class GroovyDebuggerSettings extends XDebuggerSettings<GroovyDebuggerSett
|
||||
super("groovy_debugger");
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@SuppressWarnings("EnumSwitchStatementWhichMissesCases")
|
||||
@Nullable
|
||||
@Override
|
||||
public Configurable createConfigurable(@NotNull Category category) {
|
||||
public Collection<? extends Configurable> 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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user