[jbosstools-commits] JBoss Tools SVN: r6975 - trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Tue Mar 18 04:55:00 EDT 2008
Author: sdzmitrovich
Date: 2008-03-18 04:55:00 -0400 (Tue, 18 Mar 2008)
New Revision: 6975
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/EditableTemplateAdapter.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-1492
Modified: trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/EditableTemplateAdapter.java
===================================================================
--- trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/EditableTemplateAdapter.java 2008-03-18 08:44:51 UTC (rev 6974)
+++ trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/EditableTemplateAdapter.java 2008-03-18 08:55:00 UTC (rev 6975)
@@ -21,6 +21,7 @@
import org.jboss.tools.vpe.editor.selection.VpeSelectionController;
import org.jboss.tools.vpe.editor.util.TemplateManagingUtil;
import org.jboss.tools.vpe.editor.util.TextUtil;
+import org.jboss.tools.vpe.editor.util.VisualDomUtil;
import org.mozilla.interfaces.nsIDOMElement;
import org.mozilla.interfaces.nsIDOMKeyEvent;
import org.mozilla.interfaces.nsIDOMNode;
@@ -278,6 +279,7 @@
// if offset is end of text will do nothing
if (focusOffset == node.getNodeValue().length()) {
+ setSourceSelection(pageContext, node, focusOffset, 0);
return true;
}
@@ -362,8 +364,11 @@
// if text was not selected then will be deleted previous character
if (focusOffset == anchorOffset) {
// if offset is start of text then will do nothing
- if (focusOffset == 0)
+ if (focusOffset == 0) {
+
+ setSourceSelection(pageContext, node, 0, 0);
return true;
+ }
// set start offset to previous character
startOffset = focusOffset - 1;
length = 1;
@@ -552,6 +557,8 @@
if (focusOffset != 0) {
setSourceSelection(pageContext, node, focusOffset - 1, 0);
+ } else {
+ setSourceSelection(pageContext, node, 0, 0);
}
}
return true;
@@ -573,27 +580,33 @@
return true;
}
- /*
- * (non-Javadoc)
+ /**
*
- * @see org.jboss.tools.vpe.editor.template.VpeTemplateNodesManager#getSourceNode(org.jboss.tools.vpe.editor.context.VpePageContext,
- * org.mozilla.interfaces.nsIDOMNode)
+ * @param pageContext
+ * @param visualNode
+ * @param elementData
+ * @return
*/
- public Node getSourceNode(VpePageContext pageContext,
+ protected VpeAttributeData getAttributeData(VpePageContext pageContext,
nsIDOMNode visualNode, VpeElementData elementData) {
- if ((elementData != null) && (elementData.getAttributesData() != null)) {
+ // if input data is correct
+ if ((visualNode != null) && (elementData != null)
+ && (elementData.getAttributesData() != null)) {
List<VpeAttributeData> attributesMapping = elementData
.getAttributesData();
for (VpeAttributeData attributeData : attributesMapping) {
- if (attributeData.getVisualAttr().equals(visualNode))
- return attributeData.getSourceAttr();
+ // if visual nodes equals
+ if (visualNode.equals(attributeData.getVisualAttr()))
+ return attributeData;
}
}
+
return null;
+
}
/**
@@ -603,25 +616,67 @@
* @param elementData
* @return
*/
- public nsIDOMNode getVisualNode(VpePageContext pageContext, Node node,
- VpeElementData elementData) {
+ protected VpeAttributeData getAttributeData(VpePageContext pageContext,
+ Node node, VpeElementData elementData) {
- if ((elementData != null) && (elementData.getAttributesData() != null)) {
+ // if input data is correct
+ if ((node != null) && (elementData != null)
+ && (elementData.getAttributesData() != null)) {
List<VpeAttributeData> attributesMapping = elementData
.getAttributesData();
for (VpeAttributeData attributeData : attributesMapping) {
- if (attributeData.getSourceAttr().equals(node))
- return attributeData.getVisualAttr();
+
+ // if source nodes equals
+ if (node.equals(attributeData.getSourceAttr()))
+ return attributeData;
}
}
return null;
+
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.tools.vpe.editor.template.VpeTemplateNodesManager#getSourceNode(org.jboss.tools.vpe.editor.context.VpePageContext,
+ * org.mozilla.interfaces.nsIDOMNode)
+ */
+ public Node getSourceNode(VpePageContext pageContext,
+ nsIDOMNode visualNode, VpeElementData elementData) {
+
+ // get attribute data
+ VpeAttributeData attributeData = getAttributeData(pageContext,
+ visualNode, elementData);
+
+ if (attributeData != null)
+ return attributeData.getSourceAttr();
+
+ return null;
+ }
+
/**
*
* @param pageContext
+ * @param node
+ * @param elementData
+ * @return
+ */
+ public nsIDOMNode getVisualNode(VpePageContext pageContext, Node node,
+ VpeElementData elementData) {
+
+ VpeAttributeData attributeData = getAttributeData(pageContext, node,
+ elementData);
+ if (attributeData != null)
+ return attributeData.getVisualAttr();
+
+ return null;
+ }
+
+ /**
+ *
+ * @param pageContext
* @param visualNode
* @param elementData
* @return
@@ -629,32 +684,26 @@
public boolean isNodeEditable(VpePageContext pageContext,
nsIDOMNode visualNode, VpeElementData elementData) {
- if ((elementData != null) && (elementData.getAttributesData() != null)) {
+ VpeAttributeData attributeData = getAttributeData(pageContext,
+ visualNode, elementData);
- List<VpeAttributeData> attributesMapping = elementData
- .getAttributesData();
+ if (attributeData != null)
+ return attributeData.isEditable();
- for (VpeAttributeData attributeData : attributesMapping) {
-
- if (attributeData.getVisualAttr().equals(visualNode))
- return attributeData.isEditable();
- }
- }
return false;
}
+ /**
+ *
+ */
public boolean isNodeEditable(VpePageContext pageContext, Node node,
VpeElementData elementData) {
- if ((elementData != null) && (elementData.getAttributesData() != null)) {
- List<VpeAttributeData> attributesMapping = elementData
- .getAttributesData();
+ VpeAttributeData attributeData = getAttributeData(pageContext, node,
+ elementData);
- for (VpeAttributeData attributeData : attributesMapping) {
-
- if (attributeData.getSourceAttr().equals(node))
- return attributeData.isEditable();
- }
+ if (attributeData != null) {
+ return attributeData.isEditable();
}
return false;
}
@@ -688,27 +737,55 @@
nsIDOMNode focusedVisualNode = selection.getFocusNode();
+ if (focusedVisualNode == null)
+ return;
+
VpeElementMapping elementMapping = pageContext.getDomMapping()
.getNearElementMapping(focusedVisualNode);
+ if (elementMapping == null)
+ return;
- int focusOffset = selection.getFocusOffset();
- int anchorOffset = selection.getAnchorOffset();
+ int focusOffset;
+ int length;
+ VpeAttributeData attributeData = getAttributeData(pageContext,
+ focusedVisualNode, elementMapping.getElementData());
+
boolean isEditable = isNodeEditable(pageContext, focusedVisualNode,
elementMapping.getElementData());
- Node focusedSourceNode = getSourceNode(pageContext, focusedVisualNode,
- elementMapping.getElementData());
+ Node focusedSourceNode;
+ if (attributeData == null) {
- if (focusedSourceNode == null)
focusedSourceNode = elementMapping.getSourceNode();
- if (isEditable)
- setSourceSelection(pageContext, focusedSourceNode, focusOffset,
- anchorOffset - focusOffset);
- else
- setSourceSelection(pageContext, focusedSourceNode, 0,
- getLengthNode(focusedSourceNode));
+ focusedVisualNode = elementMapping.getVisualNode();
+ focusOffset = 0;
+ length = 0;
+
+ } else {
+
+ focusedSourceNode = getSourceNode(pageContext, focusedVisualNode,
+ elementMapping.getElementData());
+
+ if (focusedSourceNode == null)
+ focusedSourceNode = elementMapping.getSourceNode();
+
+ if (isEditable) {
+
+ focusOffset = selection.getFocusOffset();
+ length = selection.getAnchorOffset() - focusOffset;
+
+ } else {
+
+ focusOffset = 0;
+ length = getLengthNode(focusedSourceNode);
+ }
+
+ }
+
+ setSourceSelection(pageContext, focusedSourceNode, focusOffset, length);
+
if (focusedVisualNode.getNodeType() != nsIDOMNode.ELEMENT_NODE)
focusedVisualNode = focusedVisualNode.getParentNode();
@@ -745,7 +822,6 @@
int visualFocus = 0;
int visualAnchor = 0;
nsIDOMNode visualNode = null;
- nsIDOMNode visualParent = null;
if ((focusNode == anchorNode)
&& isNodeEditable(pageContext, focusNode, elementMapping
.getElementData())) {
@@ -753,8 +829,6 @@
visualNode = getVisualNode(pageContext, focusNode, elementMapping
.getElementData());
if (visualNode != null) {
- visualParent = (nsIDOMNode) visualNode.getParentNode()
- .queryInterface(nsIDOMElement.NS_IDOMELEMENT_IID);
String text = focusNode.getNodeValue();
int start = getStartOffsetNode(focusNode);
focus = focus - start;
@@ -766,18 +840,27 @@
}
if (visualNode == null) {
- visualParent = visualNode = elementMapping.getVisualNode();
+ visualNode = elementMapping.getVisualNode();
}
nsISelection selection = selectionController
.getSelection(nsISelectionController.SELECTION_NORMAL);
- selection.collapse(visualNode, visualFocus);
+ if (visualNode.getNodeType() == nsIDOMNode.TEXT_NODE) {
+ selection.collapse(visualNode, visualFocus);
- // if(visualFocus!=visualAnchor)
- // selection.extend(visualNode, visualAnchor );
+ // if(visualFocus!=visualAnchor)
+ // selection.extend(visualNode, visualAnchor );
+ }
+ else {
+ selection.collapse(visualNode, 0);
+ }
+ if (visualNode.getNodeType() != nsIDOMNode.ELEMENT_NODE) {
+ visualNode = visualNode.getParentNode();
+ }
pageContext.getVisualBuilder().setSelectionRectangle(
- (nsIDOMElement) visualParent);
+ (nsIDOMElement) visualNode
+ .queryInterface(nsIDOMElement.NS_IDOMELEMENT_IID));
}
/*
@@ -796,8 +879,9 @@
for (VpeAttributeData attributeData : attributesMapping) {
- if ((offset > (getStartOffsetNode(attributeData.getSourceAttr())))
- && (offset < (getEndOffsetNode(attributeData
+ if ((offset >= (getStartOffsetNode(attributeData
+ .getSourceAttr())))
+ && (offset <= (getEndOffsetNode(attributeData
.getSourceAttr()))))
return attributeData.getSourceAttr();
}
More information about the jbosstools-commits
mailing list