diff --git a/plugins/ui-designer-core/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java b/plugins/ui-designer-core/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java index 73ac648c1286..1800b233bcff 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java @@ -45,6 +45,7 @@ public final class ComponentTreeBuilder extends AbstractTreeBuilder implements C myExpandStateHandler = new ExpandStateHandler(tree, designer, this); tree.setArea(myTreeArea); + designer.handleTreeArea(myTreeArea); new TreeDropListener(tree, myTreeArea, designer.getToolProvider()); @@ -83,7 +84,13 @@ public final class ComponentTreeBuilder extends AbstractTreeBuilder implements C try { removeListeners(); if (mySurfaceArea == area) { - myTreeArea.setSelection(mySurfaceArea.getSelection()); + try { + myTreeArea.setCanvasSelection(true); + myTreeArea.setSelection(mySurfaceArea.getSelection()); + } + finally { + myTreeArea.setCanvasSelection(false); + } } else { mySurfaceArea.setSelection(myTreeArea.getSelection()); diff --git a/plugins/ui-designer-core/src/com/intellij/designer/componentTree/TreeEditableArea.java b/plugins/ui-designer-core/src/com/intellij/designer/componentTree/TreeEditableArea.java index 3ea92ed0d927..31357b05430f 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/componentTree/TreeEditableArea.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/componentTree/TreeEditableArea.java @@ -45,6 +45,7 @@ public final class TreeEditableArea implements EditableArea, FeedbackTreeLayer, private final ComponentTree myTree; private final AbstractTreeBuilder myTreeBuilder; private final DesignerActionPanel myActionPanel; + private boolean myCanvasSelection; public TreeEditableArea(ComponentTree tree, AbstractTreeBuilder treeBuilder, DesignerActionPanel actionPanel) { myTree = tree; @@ -169,7 +170,15 @@ public final class TreeEditableArea implements EditableArea, FeedbackTreeLayer, fireSelectionChanged(); } - ////////////////////////////////////////////////////////////////////////////////////////// + public boolean isCanvasSelection() { + return myCanvasSelection; + } + + public void setCanvasSelection(boolean canvasSelection) { + myCanvasSelection = canvasSelection; + } + +////////////////////////////////////////////////////////////////////////////////////////// // // Visual // diff --git a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java index ad6d77e4d9c3..d1c55e37490c 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java @@ -22,6 +22,7 @@ import com.intellij.designer.ModuleProvider; import com.intellij.designer.actions.AbstractComboBoxAction; import com.intellij.designer.actions.DesignerActionPanel; import com.intellij.designer.componentTree.TreeComponentDecorator; +import com.intellij.designer.componentTree.TreeEditableArea; import com.intellij.designer.designSurface.tools.*; import com.intellij.designer.model.*; import com.intellij.designer.palette.PaletteGroup; @@ -794,6 +795,9 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider public abstract TreeComponentDecorator getTreeDecorator(); + public void handleTreeArea(TreeEditableArea treeArea) { + } + ////////////////////////////////////////////////////////////////////////////////////////// // // Inspection diff --git a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/RootView.java b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/RootView.java index 1fe5b3becdde..06d2c417510e 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/RootView.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/RootView.java @@ -44,6 +44,7 @@ public class RootView extends JComponent { public void setImage(BufferedImage image) { myImage = image; setBounds(myX, myY, image.getWidth(), image.getHeight()); + repaint(); } @Override