Author: yradtsevich
Date: 2010-05-05 08:27:43 -0400 (Wed, 05 May 2010)
New Revision: 21904
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-6239: Implement predictable selection after DnD.
- now dropped node is selected after DnD
Modified: trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java 2010-05-05
12:21:26 UTC (rev 21903)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java 2010-05-05
12:27:43 UTC (rev 21904)
@@ -367,14 +367,14 @@
}
private void externalDropAny(final String flavor, final String data,
- final Point range) {
+ final int offset) {
StructuredTextEditor sourceEditor = vpeController.getSourceEditor();
if (flavor == null || flavor.length() == 0
|| !(sourceEditor instanceof IDNDTextEditor)) {
return;
}
- sourceEditor.setHighlightRange(range.x, range.y, true);
+ sourceEditor.setHighlightRange(offset, 0, true);
((IDNDTextEditor) sourceEditor).runDropCommand(flavor, data);
}
@@ -461,6 +461,9 @@
dropper.drop(vpeController.getPageContext(),
sourceInnerDragInfo, sourceDropInfo);
+ // select dropped node, JBIDE-6239
+ setSelectedNode(sourceInnerDragInfo.getNode());
+
if (sourceInnerDragInfo != null) {
sourceInnerDragInfo = null;
}
@@ -472,6 +475,17 @@
}
}
+ @SuppressWarnings("restriction")
+ private void setSelectedNode(final Node node) {
+ IndexedRegion sourceNodeBounds
+ = ((IndexedRegion)node);
+
+ vpeController.getSourceEditor().getTextViewer()
+ .getTextWidget().setSelection(
+ sourceNodeBounds.getStartOffset(),
+ sourceNodeBounds.getEndOffset());
+ }
+
private void externalDrop(nsIDOMMouseEvent mouseEvent, String flavor, String data) {
vpeController.onHideTooltip();
@@ -514,7 +528,7 @@
.println(" drop! container: " + dropInfo.getContainer().getNodeName());
//$NON-NLS-1$
}
- externalDropAny(aFlavor, data, range);
+ externalDropAny(aFlavor, data, range.x);
// TypedEvent tEvent = new TypedEvent(mouseEvent);
// tEvent.data = data;