From bfcde9348f36c377dd0c213fff6420730c636f30 Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Fri, 15 Jun 2012 13:22:13 +0400 Subject: [PATCH] Palette --- .../designSurface/DesignerEditorPanel.java | 7 +++++++ .../palette/PaletteItemsComponent.java | 15 ++++++++++++++ .../designer/palette/PalettePanel.java | 20 +++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java index 7102c3e2ceb6..ac236143dc01 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java @@ -111,6 +111,7 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider protected QuickFixManager myQuickFixManager; + private PaletteItem myActivePaletteItem; private List myExpandedComponents; private Property mySelectionProperty; private int[][] myExpandedState; @@ -317,7 +318,13 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider mySurfaceArea.addSelectionListener(mySourceSelectionListener); } + @Nullable + public final PaletteItem getActivePaletteItem() { + return myActivePaletteItem; + } + public final void activatePaletteItem(@Nullable PaletteItem paletteItem) { + myActivePaletteItem = paletteItem; if (paletteItem != null) { myToolProvider.setActiveTool(new CreationTool(true, createCreationFactory(paletteItem))); } diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java index 61bcf90e8ec0..97bca2ef27a2 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java @@ -160,6 +160,21 @@ public class PaletteItemsComponent extends JBList { } } + public void restoreSelection(PaletteItem paletteItem) { + if (paletteItem == null) { + clearSelection(); + } + else { + int index = myGroup.getItems().indexOf(paletteItem); + if (index == -1) { + clearSelection(); + } + else { + takeFocusFrom(index); + } + } + } + ////////////////////////////////////////////////////////////////////////////////////////// // // diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java index 7ad81f93cfa8..3a420b558fb5 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java @@ -89,6 +89,15 @@ public class PalettePanel extends JPanel { } public void loadPalette(@Nullable DesignerEditorPanel designer) { + if (myDesigner == null && designer == null) { + return; + } + if (myDesigner != null && designer != null && myGroups.equals(designer.getPaletteGroups())) { + myDesigner = designer; + restoreSelection(); + return; + } + for (PaletteItemsComponent itemsComponent : myItemsComponents) { itemsComponent.removeListSelectionListener(mySelectionListener); } @@ -122,6 +131,17 @@ public class PalettePanel extends JPanel { } myPaletteContainer.revalidate(); + + if (myDesigner != null) { + restoreSelection(); + } + } + + private void restoreSelection() { + PaletteItem paletteItem = myDesigner.getActivePaletteItem(); + for (PaletteItemsComponent itemsComponent : myItemsComponents) { + itemsComponent.restoreSelection(paletteItem); + } } private void notifySelection(@Nullable ListSelectionEvent event) {