diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeSelectionTracker.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeSelectionTracker.java new file mode 100644 index 000000000000..b848418b8a35 --- /dev/null +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeSelectionTracker.java @@ -0,0 +1,50 @@ +/* + * Copyright 2000-2013 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.designer.designSurface.tools; + +import com.intellij.designer.model.RadComponent; + +/** + * @author Alexander Lobas + */ +public class MarqueeSelectionTracker extends MarqueeTracker { + private final RadComponent myComponent; + private boolean mySelected; + + public MarqueeSelectionTracker(RadComponent component) { + myComponent = component; + } + + @Override + protected void handleButtonUp(int button) { + if (myState == STATE_DRAG) { + myState = STATE_NONE; + eraseFeedback(); + performSelection(); + } + else { + super.handleButtonUp(button); + } + } + + private void performSelection() { + if (mySelected || myArea.isTree()) { + return; + } + mySelected = true; + SelectionTracker.performSelection(this, myComponent); + } +} \ No newline at end of file diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeTracker.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeTracker.java index 2d58e62b073f..6dcade1a1028 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeTracker.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/MarqueeTracker.java @@ -116,7 +116,7 @@ public class MarqueeTracker extends InputTool { layer.repaint(); } - private void eraseFeedback() { + protected void eraseFeedback() { if (myFeedback != null) { FeedbackLayer layer = myArea.getFeedbackLayer(); layer.remove(myFeedback); diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java index 764300de06a8..fb80d149d172 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java @@ -76,32 +76,35 @@ public class SelectionTracker extends TargetingTool { } } - private void performSelection() { - if (mySelected || myArea.isTree()) { - return; - } - mySelected = true; - - if (myInputEvent.isControlDown()) { - if (myArea.isSelected(myComponent)) { - myArea.deselect(myComponent); - } - else { - myArea.appendSelection(myComponent); - } - } - else if (myInputEvent.isShiftDown()) { - myArea.appendSelection(myComponent); - } - else { - myArea.select(myComponent); - } - } - @Override public void keyPressed(KeyEvent event, EditableArea area) throws Exception { if (event.getKeyCode() == KeyEvent.VK_ESCAPE) { myToolProvider.loadDefaultTool(); } } + + private void performSelection() { + if (mySelected || myArea.isTree()) { + return; + } + mySelected = true; + performSelection(this, myComponent); + } + + public static void performSelection(InputTool tool, RadComponent component) { + if (tool.myInputEvent.isControlDown()) { + if (tool.myArea.isSelected(component)) { + tool.myArea.deselect(component); + } + else { + tool.myArea.appendSelection(component); + } + } + else if (tool.myInputEvent.isShiftDown()) { + tool.myArea.appendSelection(component); + } + else { + tool.myArea.select(component); + } + } } \ No newline at end of file