Author: mareshkau
Date: 2007-08-28 10:54:58 -0400 (Tue, 28 Aug 2007)
New Revision: 3388
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mapping/VpeDomMapping.java
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/EditorDomEventListener.java
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaDomEventListener.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-743
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java
===================================================================
---
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java 2007-08-28
14:40:15 UTC (rev 3387)
+++
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java 2007-08-28
14:54:58 UTC (rev 3388)
@@ -106,6 +106,7 @@
nsISupportsString.NS_ISUPPORTSSTRING_IID);
String data="vpe-element";
transferData.setData(data);
+ iTransferable.setTransferData(VpeController.MODEL_FLAVOR, transferData,
data.length());
iTransferable.setTransferData("text/plain", transferData, data.length());
iTransferable.setTransferData("text/unicode", transferData,data.length()*2);
iTransferable.setTransferData("text/html", transferData, data.length()*2);
@@ -165,18 +166,44 @@
//in this condition early was check for xulelement
if (editorDomEventListener != null) {
if
(getDragService().getCurrentSession().isDataFlavorSupported(VpeController.MODEL_FLAVOR))
{
- MozillaDropInfo info = editorDomEventListener.canExternalDrop(mouseEvent,
VpeController.MODEL_FLAVOR, "");
+
+ MozillaDropInfo info;
+
+ if(getDragService().getCurrentSession().getSourceNode()==null){
+ //external drag
+ info = editorDomEventListener.canExternalDrop(mouseEvent,
VpeController.MODEL_FLAVOR, "");
+ } else {
+ //internal drag
+ info = editorDomEventListener.canInnerDrop(mouseEvent);
+ }
if (info != null) {
canDrop = info.canDrop();
}
}
}
//sets possability to drop current element here
- System.out.println("["+canDrop+"]");
getDragService().getCurrentSession().setCanDrop(canDrop);
mouseEvent.preventDefault();
mouseEvent.stopPropagation();
}
+ /**
+ * Drop Event handler
+ * @param domEvent
+ * @param editorDomEventListener
+ */
+ public void dragDrop(nsIDOMEvent domEvent, EditorDomEventListener
editorDomEventListener) {
+
+ if(editorDomEventListener!=null) {
+
+ if(getDragService().getCurrentSession().getSourceDocument()==null) {
+ //in this case it's is external drag
+ editorDomEventListener.externalDrop((nsIDOMMouseEvent)domEvent.queryInterface(nsIDOMMouseEvent.NS_IDOMMOUSEEVENT_IID),
VpeController.MODEL_FLAVOR, "");
+ } else {
+ // in this case it's is an internal drag
+ editorDomEventListener.innerDrop((nsIDOMMouseEvent)domEvent.queryInterface(nsIDOMMouseEvent.NS_IDOMMOUSEEVENT_IID));
+ }
+ }
+ }
}
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java
===================================================================
---
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java 2007-08-28
14:40:15 UTC (rev 3387)
+++
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java 2007-08-28
14:54:58 UTC (rev 3388)
@@ -2097,7 +2097,7 @@
Node sourceDragNode =
((Document)getModel().getAdapter(Document.class)).createElement(tagname);
VpeVisualInnerDropInfo visualDropInfo =
selectionBuilder.getInnerDropInfo(mouseEvent);
if (visualDropInfo.getDropContainer() != null) {
- VpeSourceInnerDropInfo sourceDropInfo =
visualBuilder.getSourceInnerDropInfo(sourceDragNode, visualDropInfo, true);
+ VpeSourceInnerDropInfo sourceDropInfo =
visualBuilder.getSourceInnerDropInfo(sourceDragNode, visualDropInfo, true);
canDrop = sourceDropInfo.canDrop();
if (canDrop) {
VpeVisualInnerDropInfo newVisualDropInfo =
visualBuilder.getInnerDropInfo(sourceDropInfo.getContainer(),
sourceDropInfo.getOffset());
@@ -2462,4 +2462,9 @@
visualBuilder.getDnd().startDragSession(domEvent);
}
+ public void dragDrop(nsIDOMEvent domEvent) {
+
+ visualBuilder.getDnd().dragDrop(domEvent,this);
+ }
+
}
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java
===================================================================
---
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java 2007-08-28
14:40:15 UTC (rev 3387)
+++
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java 2007-08-28
14:54:58 UTC (rev 3388)
@@ -149,8 +149,8 @@
this.pageContext = pageContext;
this.headNode = visualEditor.getHeadNode();
// TODO Max Areshkau figure out
-// dropper = new VpeDnd();
-// dropper.setDndData(false, true);
+ dropper = new VpeDnd();
+ dropper.setDndData(false, true);
}
public void buildDom(Document sourceDocument) {
@@ -293,8 +293,8 @@
boolean registerFlag = isCurrentMainDocument();
switch (sourceNode.getNodeType()) {
case Node.ELEMENT_NODE:
- Map xmlnsMap = createXmlns((Element)sourceNode);
- Set ifDependencySet = new HashSet();
+ Map<?,?> xmlnsMap = createXmlns((Element)sourceNode);
+ Set<?> ifDependencySet = new HashSet();
pageContext.setCurrentVisualNode(visualOldContainer);
VpeTemplate template = templateManager.getTemplate(pageContext, (Element)sourceNode,
ifDependencySet);
VpeCreationData creationData = template.create(pageContext, sourceNode,
visualDocument);
@@ -318,7 +318,7 @@
registerNodes(elementMapping);
}
if (template.isChildren()) {
- List childrenInfoList = creationData.getChildrenInfoList();
+ List<?> childrenInfoList = creationData.getChildrenInfoList();
if (childrenInfoList == null) {
addChildren(template, sourceNode, visualNewElement != null ? visualNewElement :
visualOldContainer);
} else {
@@ -379,12 +379,12 @@
}
}
- protected void addChildren(VpeTemplate containerTemplate, Node sourceContainer,
nsIDOMNode visualOldContainer, List childrenInfoList) {
+ protected void addChildren(VpeTemplate containerTemplate, Node sourceContainer,
nsIDOMNode visualOldContainer, List<?> childrenInfoList) {
for (int i = 0; i < childrenInfoList.size(); i++) {
VpeChildrenInfo info = (VpeChildrenInfo)childrenInfoList.get(i);
nsIDOMNode visualParent = info.getVisualParent();
if (visualParent == null) visualParent = visualOldContainer;
- List sourceChildren = info.getSourceChildren();
+ List<?> sourceChildren = info.getSourceChildren();
int childrenCount = 0;
if (sourceChildren != null) {
for (int j = 0; j < sourceChildren.size(); j++) {
@@ -1130,9 +1130,12 @@
}
if (!canDrop) {
if(!checkParentsTemplates) return new VpeSourceInnerDropInfo(container, offset,
canDrop);
- offset = ((NodeImpl)container).getIndex();
- container = container.getParentNode();
- return getSourceInnerDropInfo(dragNode, container, offset, false);
+// offset = ((NodeImpl)container).getIndex();
+// container = container.getParentNode();
+ //TODO Max Areshkau unclear logic , if we can drop on element why we trying to drop
+ // this on parent
+ //return getSourceInnerDropInfo(dragNode, container, offset, false);
+ return new VpeSourceInnerDropInfo(container, offset, canDrop);
}
break;
case Node.TEXT_NODE:
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mapping/VpeDomMapping.java
===================================================================
---
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mapping/VpeDomMapping.java 2007-08-28
14:40:15 UTC (rev 3387)
+++
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mapping/VpeDomMapping.java 2007-08-28
14:54:58 UTC (rev 3388)
@@ -81,7 +81,7 @@
while(iter.hasNext()){
Map.Entry<nsIDOMNode,VpeNodeMapping> element = iter.next();
nsIDOMNode key = element.getKey();
- if(visualNode.equals(key)) {
+ if(visualNode!=null&&visualNode.equals(key)) {
return element.getValue();
}
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/EditorDomEventListener.java
===================================================================
---
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/EditorDomEventListener.java 2007-08-28
14:40:15 UTC (rev 3387)
+++
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/EditorDomEventListener.java 2007-08-28
14:54:58 UTC (rev 3388)
@@ -65,4 +65,10 @@
*/
void onRefresh();
void startDragSession(nsIDOMEvent domEvent);
+
+ /**
+ * Calls when drop event occures
+ * @param domEvent
+ */
+ void dragDrop(nsIDOMEvent domEvent);
}
Modified:
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaDomEventListener.java
===================================================================
---
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaDomEventListener.java 2007-08-28
14:40:15 UTC (rev 3387)
+++
branches/jbosstools_xulrunner/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaDomEventListener.java 2007-08-28
14:54:58 UTC (rev 3388)
@@ -367,33 +367,27 @@
//first param are null 0, because this not used in event handler
getEditorDomEventListener().onShowContextMenu(0, domEvent, (nsIDOMNode)
domEvent.getTarget().queryInterface(nsIDOMNode.NS_IDOMNODE_IID));
} else if(DRAGGESTUREEVENT.equals(domEvent.getType())) {
- //here was moved functionality from can drag function
-// System.out.print(DRAGGESTUREEVENT);
nsIDOMMouseEvent mouseEvent = (nsIDOMMouseEvent)
domEvent.queryInterface(nsIDOMMouseEvent.NS_IDOMMOUSEEVENT_IID);
if (editorDomEventListener != null && !isXulElement(mouseEvent)) {
boolean canDragFlag = editorDomEventListener.canInnerDrag(mouseEvent);
- //TODO Max Areshkau think about using can -or not can drag if we can drag we should
//start drag session
- getEditorDomEventListener().startDragSession(domEvent);
- System.out.println("Can drag"+canDragFlag);
+ if(canDragFlag) {
+
+ getEditorDomEventListener().startDragSession(domEvent);
+ }
}
- //TODO Max Areshkau Drag gesture event
} else if(DRAGDROPEVENT.equals(domEvent.getType())) {
-
- System.out.println(DRAGDROPEVENT);
- //TODO Max Areshkau drag drop gesture event
+ // calls when drop event occure
+ getEditorDomEventListener().dragDrop(domEvent);
+ domEvent.stopPropagation();
+ domEvent.preventDefault();
} else if(DRAGENTEREVENT.equals(domEvent.getType())) {
- System.out.println(DRAGENTEREVENT);
- //TODO Max Areshkau drag enter event
+ //just ignore this event
} else if(DRAGEXITEVENT.equals(domEvent.getType())) {
- System.out.println(DRAGEXITEVENT);
- //TODO Max Areshkau drag enter event
+ //just ignore this event
} else if(DRAGOVEREVENT.equals(domEvent.getType())) {
-
getEditorDomEventListener().dragOver(domEvent);
- System.out.println(DRAGOVEREVENT);
- //TODO Max Areshkau drag over event
}
getEditorDomEventListener().onRefresh();