This commit is contained in:
Alexander Lobas
2012-06-15 13:22:13 +04:00
parent a312c17b8e
commit bfcde9348f
3 changed files with 42 additions and 0 deletions
@@ -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)));
}
@@ -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);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////
//
//
@@ -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) {