diff options
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.java | 130 |
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); } } } |