[jbosstools-commits] JBoss Tools SVN: r23024 - in trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe: editor and 1 other directory.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Fri Jun 25 05:44:43 EDT 2010
Author: yradtsevich
Date: 2010-06-25 05:44:43 -0400 (Fri, 25 Jun 2010)
New Revision: 23024
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/editor/VpeVisualDomBuilder.java
Log:
https://jira.jboss.org/browse/JBIDE-6439
- VpeDND refactoring
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-06-25 08:52:32 UTC (rev 23023)
+++ trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java 2010-06-25 09:44:43 UTC (rev 23024)
@@ -35,8 +35,6 @@
import org.jboss.tools.vpe.editor.VpeController;
import org.jboss.tools.vpe.editor.VpeSourceDropInfo;
import org.jboss.tools.vpe.editor.VpeSourceInnerDragInfo;
-import org.jboss.tools.vpe.editor.VpeVisualDomBuilder;
-import org.jboss.tools.vpe.editor.VpeVisualInnerDragInfo;
import org.jboss.tools.vpe.editor.mapping.VpeElementMapping;
import org.jboss.tools.vpe.editor.mapping.VpeNodeMapping;
import org.jboss.tools.vpe.editor.mozilla.MozillaEditor;
@@ -66,6 +64,7 @@
import org.mozilla.interfaces.nsITransferable;
import org.mozilla.xpcom.Mozilla;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
@@ -100,12 +99,6 @@
private VpeController vpeController;
- /* TODO: yradtsevich: sourceInnerDragInfo is a state variable
- * that not always reflects actual state of the object
- * (e.g. during external Drag&Drop and text Drag&Drop).
- * It has to be removed from the class and corresponding
- * methods has to be refactored. */
- private VpeSourceInnerDragInfo sourceInnerDragInfo = null;
private DraggablePattern draggablePattern;
private DropableArea dropableArea;
@@ -115,8 +108,7 @@
}
public void dragStart(nsIDOMEvent domEvent) {
- nsIDOMElement selectedElement = vpeController.getXulRunnerEditor()
- .getLastSelectedElement();
+ nsIDOMElement selectedElement = getSelectedElement();
// start drag sessionvpe-element
if (isTextSelected(getVisualSelection()) || isDraggable(selectedElement)) {
Point pageCoords = getPageCoords(domEvent);
@@ -126,9 +118,13 @@
domEvent.preventDefault();
}
}
+
+ private nsIDOMElement getSelectedElement() {
+ return vpeController.getXulRunnerEditor().getLastSelectedElement();
+ }
/**
- * Calls when drag over event ocure
+ * Called when drag over event occurs
* @param event
*/
public void dragOver(nsIDOMEvent event) {
@@ -140,7 +136,7 @@
final DropResolver dropResolver;
if (isInnerDragSession()) {
if (isTextSelected(getVisualSelection())) {
- dropResolver = getDropResolverForNode(vpeController.getDomMapping().getNearSourceNode(getVisualSelection().getFocusNode()));
+ dropResolver = getDropResolverForNode(getSourceNode(getVisualSelection().getFocusNode()));
} else {
dropResolver = getDropResolverForInternalDrop();
}
@@ -214,8 +210,7 @@
draggablePattern.showDragIcon(new DraggableTextSelection(
textContainer, range.getStartOffset(), range.getEndOffset()));
} else {
- nsIDOMElement selectedElement = vpeController.getXulRunnerEditor()
- .getLastSelectedElement();
+ nsIDOMElement selectedElement = getSelectedElement();
if (isDraggable(selectedElement)) {
draggablePattern.showDragIcon(new DraggableElement(selectedElement));
@@ -283,7 +278,11 @@
}
private DropResolver getDropResolverForInternalDrop() {
- return getDropResolverForNode(sourceInnerDragInfo.getNode());
+ if (InnerDragBuffer.object instanceof Node) {
+ return getDropResolverForNode((Node) InnerDragBuffer.object);
+ } else {
+ return getSimpleDropResolver(false);
+ }
}
private DropResolver getSimpleDropResolver(final boolean canDrop) {
@@ -323,8 +322,7 @@
return;
}
- Node originalSourceNode = vpeController.getDomMapping()
- .getNearSourceNode(originalVisualNode);
+ Node originalSourceNode = getSourceNode(originalVisualNode);
if (originalSourceNode != null
&& originalSourceNode.getNodeType() == Node.TEXT_NODE) {
@@ -397,12 +395,13 @@
* Starts drag session
* @param dragetElement
*/
- private void startDragSession(nsIDOMNode node) {
+ private void startDragSession(nsIDOMElement element) {
+ rememberDragNode((Element) getSourceNode(element));
nsISupportsArray transArray = (nsISupportsArray) getComponentManager()
.createInstanceByContractID(XPCOM.NS_SUPPORTSARRAY_CONTRACTID, null,
nsISupportsArray.NS_ISUPPORTSARRAY_IID);
transArray.appendElement(createTransferable());
- getDragService().invokeDragSession(node, transArray, null,
+ getDragService().invokeDragSession(element, transArray, null,
nsIDragService.DRAGDROP_ACTION_MOVE
| nsIDragService.DRAGDROP_ACTION_COPY
| nsIDragService.DRAGDROP_ACTION_LINK);
@@ -467,52 +466,36 @@
return getDragService().getCurrentSession().getSourceDocument() != null;
}
+ private void rememberDragNode(Node node) {
+ InnerDragBuffer.object = node;
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ InnerDragBuffer.object = null;
+ }
+ });
+ }
+
private boolean isDraggable(nsIDOMElement element) {
vpeController.onHideTooltip();
if (VpeDebug.PRINT_VISUAL_INNER_DRAGDROP_EVENT) {
System.out.print("<<<<<< canInnerDrag"); //$NON-NLS-1$
}
- if (sourceInnerDragInfo != null) {
- sourceInnerDragInfo = null;
- }
+
boolean canDrag = false;
- VpeVisualInnerDragInfo dragInfo = getInnerDragInfo(element);
- if (dragInfo != null) {
- nsIDOMNode dragNode = dragInfo.getNode();
+
+ if (element != null) {
if (VpeDebug.PRINT_VISUAL_INNER_DRAGDROP_EVENT) {
- System.out
- .print(" dragNode: " + dragNode.getNodeName() + "(" + dragNode + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ System.out.print(" dragNode: " + element.getNodeName() + "(" + element + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- switch (dragNode.getNodeType()) {
- case nsIDOMNode.ELEMENT_NODE: {
- canDrag = vpeController.getVisualBuilder().canInnerDrag(queryInterface(dragNode, nsIDOMElement.class));
- break;
- }
- case nsIDOMNode.TEXT_NODE: {
- vpeController.getVisualBuilder();
- canDrag = VpeVisualDomBuilder.isTextEditable(dragNode);
- break;
- }
- }
+
+ canDrag = vpeController.getVisualBuilder().canInnerDrag(element);
if (canDrag) {
- sourceInnerDragInfo = vpeController.getVisualBuilder()
- .getSourceInnerDragInfo(dragInfo);
- if (sourceInnerDragInfo.getNode() != null) {
- InnerDragBuffer.object = sourceInnerDragInfo.getNode();
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- InnerDragBuffer.object = null;
- }
- });
- } else {
- sourceInnerDragInfo = null;
+ Node sourceNode = getSourceNode(element);
+ if (sourceNode == null) {
canDrag = false;
}
}
- if (!canDrag) {
- dragInfo.release();
- }
}
if (VpeDebug.PRINT_VISUAL_INNER_DRAGDROP_EVENT) {
System.out.println(" canDrag: " + canDrag); //$NON-NLS-1$
@@ -520,6 +503,10 @@
return canDrag;
}
+ private Node getSourceNode(nsIDOMNode visualNode) {
+ return vpeController.getDomMapping().getNearSourceNode(visualNode);
+ }
+
private void innerDrop(nsIDOMMouseEvent event) {
vpeController.onHideTooltip();
@@ -527,8 +514,6 @@
System.out.print("<<<<<< innerDrop"); //$NON-NLS-1$
}
- /* TODO: yradtsevich: the code needs to be refactored.
- * See TODO comment for sourceInnerDragInfo */
if (isTextSelected(getVisualSelection())) {
// it is inner Drag&Drop of text
StyledText textWidget = vpeController.getSourceEditor()
@@ -539,7 +524,8 @@
textWidget.replaceTextRange(selectionRange.x, selectionRange.y, ""); //$NON-NLS-1$
dropAny(DndUtil.kUnicodeMime, text);
- } else if (sourceInnerDragInfo != null) {
+ } else if (InnerDragBuffer.object != null
+ && InnerDragBuffer.object instanceof Node) {
VpeSourceDropInfo sourceDropInfo = getDropInfo();
if (sourceDropInfo.getContainer() != null) {
if (VpeDebug.PRINT_VISUAL_INNER_DRAGDROP_EVENT) {
@@ -554,16 +540,14 @@
if (sourceDropInfo.canDrop()) {
VpeDnDHelper dropper = new VpeDnDHelper();
dropper.setDndData(false, true);
- Node node = sourceInnerDragInfo.getNode();
+ Node node = (Node) InnerDragBuffer.object;
dropper.drop(vpeController.getPageContext(),
- sourceInnerDragInfo, sourceDropInfo);
+ new VpeSourceInnerDragInfo(node, 0, 0), sourceDropInfo);
// select dropped node, JBIDE-6239
setSelectedNode(node);
- if (sourceInnerDragInfo != null) {
- sourceInnerDragInfo = null;
- }
+ InnerDragBuffer.object = null;
}
}
}
@@ -696,14 +680,6 @@
}
return dragService;
}
-
- private VpeVisualInnerDragInfo getInnerDragInfo(nsIDOMElement element) {
- if (element == null) {
- return null;
- } else {
- return new VpeVisualInnerDragInfo(element);
- }
- }
private VpeSourceDropInfo getDropInfo() {
Node dropContainer = null;
@@ -713,8 +689,7 @@
&& dropableArea.getHighlightedDropTarget() != null) {
canDrop = true;
DropTarget dropTarget = dropableArea.getHighlightedDropTarget();
- Node targetNode = vpeController.getDomMapping()
- .getNearSourceNode(dropableArea.getNode());
+ Node targetNode = getSourceNode(dropableArea.getNode());
if (dropTarget == DropTarget.BEFORE || dropTarget == DropTarget.AFTER) {
dropContainer = targetNode.getParentNode();
Modified: trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java
===================================================================
--- trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java 2010-06-25 08:52:32 UTC (rev 23023)
+++ trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java 2010-06-25 09:44:43 UTC (rev 23024)
@@ -1844,50 +1844,6 @@
return originalNode;
}
- public VpeSourceInnerDragInfo getSourceInnerDragInfo(
- VpeVisualInnerDragInfo visualDragInfo) {
- nsIDOMNode visualNode = visualDragInfo.getNode();
- int offset = visualDragInfo.getOffset();
- int length = visualDragInfo.getLength();
-
- VpeNodeMapping nodeMapping = domMapping.getNearNodeMapping(visualNode);
- Node sourceNode = nodeMapping.getSourceNode();
-
- if (sourceNode != null) {
- switch (sourceNode.getNodeType()) {
- case Node.TEXT_NODE:
- int end = TextUtil.sourceInnerPosition(visualNode
- .getNodeValue(), offset + length);
- offset = TextUtil.sourceInnerPosition(
- visualNode.getNodeValue(), offset);
- length = end - offset;
- break;
- case Node.ELEMENT_NODE:
- if (visualNode.getNodeType() == Node.TEXT_NODE) {
- // it's attribute
- sourceNode = null;
- if (isTextEditable(visualNode)) {
- String[] atributeNames = ((VpeElementMapping) nodeMapping)
- .getTemplate().getOutputAttributeNames();
- if (atributeNames != null && atributeNames.length > 0) {
- Element sourceElement = (Element) nodeMapping
- .getSourceNode();
- sourceNode = sourceElement
- .getAttributeNode(atributeNames[0]);
- end = TextUtil.sourceInnerPosition(visualNode
- .getNodeValue(), offset + length);
- offset = TextUtil.sourceInnerPosition(visualNode
- .getNodeValue(), offset);
- length = end - offset;
- }
- }
- }
- break;
- }
- }
- return new VpeSourceInnerDragInfo(sourceNode, offset, length);
- }
-
public nsIDOMText getOutputTextNode(Attr attr) {
Element sourceElement = ((Attr) attr).getOwnerElement();
VpeElementMapping elementMapping = domMapping
More information about the jbosstools-commits
mailing list