summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java130
1 files changed, 49 insertions, 81 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java b/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
index 3ab2028d5813..3a8505c7dfe8 100644
--- a/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
+++ b/java/debugger/impl/src/com/intellij/debugger/settings/UserRenderersConfigurable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,17 +20,12 @@ import com.intellij.debugger.ui.tree.render.CompoundNodeRenderer;
import com.intellij.debugger.ui.tree.render.NodeRenderer;
import com.intellij.ide.util.ElementsChooser;
import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.options.Configurable;
-import com.intellij.openapi.options.ConfigurationException;
-import com.intellij.openapi.options.SearchableConfigurable;
-import com.intellij.openapi.project.Project;
+import com.intellij.openapi.options.ConfigurableUi;
import com.intellij.ui.DocumentAdapter;
import com.intellij.util.IconUtil;
import com.intellij.util.PlatformIcons;
import com.intellij.util.containers.InternalIterator;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
@@ -40,56 +35,25 @@ import java.awt.*;
import java.util.ArrayList;
import java.util.List;
-/**
- * @author Eugene Zhuravlev
- * Date: Feb 19, 2005
- */
-public class UserRenderersConfigurable implements SearchableConfigurable, Configurable.NoScroll {
- private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.settings.UserRenderersConfigurable");
+public final class UserRenderersConfigurable extends JPanel implements ConfigurableUi<NodeRendererSettings> {
private static final Icon ADD_ICON = IconUtil.getAddIcon();
private static final Icon REMOVE_ICON = IconUtil.getRemoveIcon();
private static final Icon COPY_ICON = PlatformIcons.COPY_ICON;
private static final Icon UP_ICON = IconUtil.getMoveUpIcon();
private static final Icon DOWN_ICON = IconUtil.getMoveDownIcon();
- private JPanel myNameFieldPanel;
- private JTextField myNameField;
+ private final JPanel myNameFieldPanel;
+ private final JTextField myNameField;
private ElementsChooser<NodeRenderer> myRendererChooser;
private NodeRenderer myCurrentRenderer = null;
- private final CompoundRendererConfigurable myRendererDataConfigurable;
-
- public UserRenderersConfigurable(@Nullable Project project) {
- myRendererDataConfigurable = new CompoundRendererConfigurable(project);
- }
-
- public String getDisplayName() {
- return DebuggerBundle.message("user.renderers.configurable.display.name");
- }
-
- public String getHelpTopic() {
- return "reference.idesettings.debugger.typerenderers";
- }
-
- @NotNull
- public String getId() {
- return getHelpTopic();
- }
-
- public Runnable enableSearch(String option) {
- return null;
- }
-
- public JComponent createComponent() {
- final JPanel panel = new JPanel(new BorderLayout(4, 0));
+ private final CompoundRendererConfigurable myRendererDataConfigurable = new CompoundRendererConfigurable();
- final JComponent renderersList = createRenderersList();
- final JComponent toolbar = createToolbar();
- final JComponent rendererDataPanel = myRendererDataConfigurable.createComponent();
+ public UserRenderersConfigurable() {
+ super(new BorderLayout(4, 0));
- final JPanel left = new JPanel(new BorderLayout());
-
- left.add(toolbar, BorderLayout.NORTH);
- left.add(renderersList, BorderLayout.CENTER);
+ JPanel left = new JPanel(new BorderLayout());
+ left.add(createToolbar(), BorderLayout.NORTH);
+ left.add(createRenderersList(), BorderLayout.CENTER);
myNameField = new JTextField();
myNameFieldPanel = new JPanel(new BorderLayout());
@@ -98,11 +62,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myNameFieldPanel.setVisible(false);
final JPanel center = new JPanel(new BorderLayout(0, 4));
-
center.add(myNameFieldPanel, BorderLayout.NORTH);
- center.add(rendererDataPanel, BorderLayout.CENTER);
+ center.add(myRendererDataConfigurable, BorderLayout.CENTER);
myNameField.getDocument().addDocumentListener(new DocumentAdapter() {
+ @Override
protected void textChanged(DocumentEvent e) {
if (myCurrentRenderer != null) {
myCurrentRenderer.setName(myNameField.getText());
@@ -111,10 +75,14 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
}
});
- panel.add(left, BorderLayout.WEST);
- panel.add(center, BorderLayout.CENTER);
+ add(left, BorderLayout.WEST);
+ add(center, BorderLayout.CENTER);
+ }
- return panel;
+ @Override
+ @NotNull
+ public JComponent getComponent() {
+ return this;
}
private JComponent createRenderersList() {
@@ -122,12 +90,14 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myRendererChooser.getEmptyText().setText(DebuggerBundle.message("text.user.renderers.configurable.no.renderers"));
myRendererChooser.addElementsMarkListener(new ElementsChooser.ElementsMarkListener<NodeRenderer>() {
+ @Override
public void elementMarkChanged(final NodeRenderer element, final boolean isMarked) {
element.setEnabled(isMarked);
}
});
myRendererChooser.addListSelectionListener(new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
+ @Override
+ public void valueChanged(@NotNull ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
updateCurrentRenderer(myRendererChooser.getSelectedElements());
}
@@ -138,7 +108,7 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
private void updateCurrentRenderer(List<NodeRenderer> selectedElements) {
if (selectedElements.size() != 1) {
- // multiselection
+ // multi selection
setCurrentRenderer(null);
}
else {
@@ -150,13 +120,8 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
if (myCurrentRenderer == renderer) {
return;
}
- try {
- if (myRendererDataConfigurable.isModified()) {
- myRendererDataConfigurable.apply();
- }
- }
- catch (ConfigurationException e) {
- LOG.error(e);
+ if (myRendererDataConfigurable.isModified()) {
+ myRendererDataConfigurable.apply();
}
myCurrentRenderer = renderer;
if (renderer != null) {
@@ -181,11 +146,12 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
return toolbar.getComponent();
}
- public void apply() throws ConfigurationException {
+ @Override
+ public void apply(@NotNull NodeRendererSettings settings) {
myRendererDataConfigurable.apply();
- flushTo(NodeRendererSettings.getInstance().getCustomRenderers());
+ flushTo(settings.getCustomRenderers());
- NodeRendererSettings.getInstance().fireRenderersChanged();
+ settings.fireRenderersChanged();
}
private void flushTo(final RendererConfiguration rendererConfiguration) {
@@ -197,11 +163,11 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
rendererConfiguration.setRenderers(renderers);
}
- public boolean isModified() {
+ @Override
+ public boolean isModified(@NotNull NodeRendererSettings settings) {
if (myRendererDataConfigurable.isModified()) {
return true;
}
- final NodeRendererSettings settings = NodeRendererSettings.getInstance();
final RendererConfiguration rendererConfiguration = settings.getCustomRenderers();
if (myRendererChooser.getElementCount() != rendererConfiguration.getRendererCount()) {
return true;
@@ -211,11 +177,13 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
return !uiConfiguration.equals(rendererConfiguration);
}
- public void reset() {
+ @Override
+ public void reset(@NotNull NodeRendererSettings settings) {
myRendererChooser.removeAllElements();
- final RendererConfiguration rendererConfiguration = NodeRendererSettings.getInstance().getCustomRenderers();
+ final RendererConfiguration rendererConfiguration = settings.getCustomRenderers();
final ArrayList<NodeRenderer> elementsToSelect = new ArrayList<NodeRenderer>(1);
rendererConfiguration.iterateRenderers(new InternalIterator<NodeRenderer>() {
+ @Override
public boolean visit(final NodeRenderer renderer) {
final NodeRenderer clonedRenderer = (NodeRenderer)renderer.clone();
myRendererChooser.addElement(clonedRenderer, clonedRenderer.isEnabled());
@@ -230,21 +198,18 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myRendererDataConfigurable.reset();
}
- public void disposeUIResources() {
- myRendererChooser.removeAllElements();
- myRendererDataConfigurable.disposeUIResources();
- }
-
private class AddAction extends AnAction {
public AddAction() {
super(DebuggerBundle.message("button.add"), DebuggerBundle.message("user.renderers.configurable.button.description.add"), ADD_ICON);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final NodeRenderer renderer = (NodeRenderer)NodeRendererSettings.getInstance().createRenderer(CompoundNodeRenderer.UNIQUE_ID);
renderer.setEnabled(true);
myRendererChooser.addElement(renderer, renderer.isEnabled());
SwingUtilities.invokeLater(new Runnable() {
+ @Override
public void run() {
myNameField.requestFocus();
}
@@ -257,16 +222,18 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
super(DebuggerBundle.message("button.remove"), DebuggerBundle.message("user.renderers.configurable.button.description.remove"), REMOVE_ICON);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
for (NodeRenderer selectedElement : myRendererChooser.getSelectedElements()) {
myRendererChooser.removeElement(selectedElement);
}
}
+ @Override
public void update(AnActionEvent e) {
super.update(e);
- final Presentation presentation = e.getPresentation();
- presentation.setEnabled(myRendererChooser.getSelectedElement() != null);
+
+ e.getPresentation().setEnabled(myRendererChooser.getSelectedElement() != null);
}
}
@@ -275,18 +242,18 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
super(DebuggerBundle.message("button.copy"), DebuggerBundle.message("user.renderers.configurable.button.description.copy"), COPY_ICON);
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final NodeRenderer selectedElement = myRendererChooser.getSelectedElement();
if (selectedElement != null) {
- final NodeRenderer cloned = (NodeRenderer)selectedElement.clone();
- myRendererChooser.addElement(cloned, true);
+ myRendererChooser.addElement((NodeRenderer)selectedElement.clone(), true);
}
}
+ @Override
public void update(AnActionEvent e) {
super.update(e);
- final Presentation presentation = e.getPresentation();
- presentation.setEnabled(myRendererChooser.getSelectedElement() != null);
+ e.getPresentation().setEnabled(myRendererChooser.getSelectedElement() != null);
}
}
@@ -300,6 +267,7 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myMoveUp = up;
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final int selectedRow = myRendererChooser.getSelectedElementRow();
if (selectedRow < 0) {
@@ -315,10 +283,10 @@ public class UserRenderersConfigurable implements SearchableConfigurable, Config
myRendererChooser.moveElement(myRendererChooser.getElementAt(selectedRow), newRow);
}
+ @Override
public void update(AnActionEvent e) {
super.update(e);
- final Presentation presentation = e.getPresentation();
- presentation.setEnabled(myRendererChooser.getSelectedElement() != null);
+ e.getPresentation().setEnabled(myRendererChooser.getSelectedElement() != null);
}
}
}