Author: dmaliarevich
Date: 2012-02-07 09:10:18 -0500 (Tue, 07 Feb 2012)
New Revision: 38462
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/scrolling/ScrollCoordinator.java
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/SelectionManager.java
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SourceDomUtil.java
Log:
https://issues.jboss.org/browse/JBIDE-8701 - searching line position from visual pane was
updated.
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/scrolling/ScrollCoordinator.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/scrolling/ScrollCoordinator.java 2012-02-07
13:47:55 UTC (rev 38461)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/scrolling/ScrollCoordinator.java 2012-02-07
14:10:18 UTC (rev 38462)
@@ -64,11 +64,13 @@
* Check 9 top lines.
*/
for (int i = 0; i < 9; i++) {
- Node n = SourceDomUtil.getSourceNodeByEditorPosition(textViewer, topLine+i, 1);
- nsIDOMElement visualElement = domMapping.getNearVisualElement(n);
- if (visualElement != null) {
- Point r = XulRunnerVpeUtils.getVisualNodeOffset(visualElement);
- resultPositions.add(r.y);
+ Node sourceNode = SourceDomUtil.getSourceNodeByEditorPosition(textViewer, topLine+i,
1);
+ if (sourceNode != null) {
+ nsIDOMElement visualElement = domMapping.getNearVisualElement(sourceNode);
+ if (visualElement != null) {
+ Point r = XulRunnerVpeUtils.getVisualNodeOffset(visualElement);
+ resultPositions.add(r.y);
+ }
}
}
posY = findBetterPosition(resultPositions);
@@ -93,26 +95,31 @@
nsIDOMWindowUtils windowUtils = (nsIDOMWindowUtils)
iInterfaceRequestor.getInterface(nsIDOMWindowUtils.NS_IDOMWINDOWUTILS_IID);
/*
- * Get 9 point from visual part. Mostly in the upper left corner.
+ * Divide visual area into xLines*yLines=30 squares.
+ * Get coordinates of their points of intersection.
* Based on them -- source line will be searched.
- */
- visualPoints.add(new Point(windowInternal.getInnerWidth()/10,
windowInternal.getInnerHeight()/10));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/5,
windowInternal.getInnerHeight()/10));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/2,
windowInternal.getInnerHeight()/10));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/10,
windowInternal.getInnerHeight()/5));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/5,
windowInternal.getInnerHeight()/5));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/2,
windowInternal.getInnerHeight()/5));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/10,
windowInternal.getInnerHeight()/2));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/5,
windowInternal.getInnerHeight()/2));
- visualPoints.add(new Point(windowInternal.getInnerWidth()/2,
windowInternal.getInnerHeight()/2));
+ */
+ int xLines = 6;
+ int yLines = 5;
+ for (int i = 1; i < xLines; i++) {
+ for (int j = 1; j < yLines; j++) {
+ visualPoints.add(new Point(
+ windowInternal.getInnerWidth()*i/xLines,
+ windowInternal.getInnerHeight()*j/yLines));
+ }
+ }
+
for (Point p : visualPoints) {
nsIDOMElement elementFromPoint = windowUtils.elementFromPoint(p.x, p.y, true,
false);
if (elementFromPoint != null) {
ElementImpl sourceElement = domMapping.getNearSourceElementImpl(elementFromPoint);
- /*
- * Transform offset to line number
- */
- resultPositions.add(sourceEditor.getTextViewer().getTextWidget().getLineAtOffset(sourceElement.getStartEndOffset()));
+ if (sourceElement != null) {
+ /*
+ * Transform offset to line number
+ */
+ resultPositions.add(sourceEditor.getTextViewer().getTextWidget()
+ .getLineAtOffset(sourceElement.getStartEndOffset()));
+ }
}
}
line = findBetterPosition(resultPositions);
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/SelectionManager.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/SelectionManager.java 2012-02-07
13:47:55 UTC (rev 38461)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/SelectionManager.java 2012-02-07
14:10:18 UTC (rev 38462)
@@ -110,6 +110,7 @@
selectionData.getSourceNode(),
selectionOffset, selectionLength);
refreshVisualNodeSelection();
+ setUpdateSelectionEventFlag(false);
}
private SelectionData getSelectionData(nsIDOMNode visualNode) {
@@ -238,6 +239,7 @@
restoreVisualCursorPosition(elementMapping.getTemplate(), nodeData, range);
}
}
+ setUpdateSelectionEventFlag(false);
}
/**
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SourceDomUtil.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SourceDomUtil.java 2012-02-07
13:47:55 UTC (rev 38461)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SourceDomUtil.java 2012-02-07
14:10:18 UTC (rev 38462)
@@ -206,7 +206,7 @@
public static final int getLinePositionOffset(ITextViewer itextViewer, int lineIndex,
int linePosition) {
int resultOffset = -1;
StyledText textWidget = itextViewer.getTextWidget();
- if (textWidget != null) {
+ if ((textWidget != null) && (lineIndex <= textWidget.getLineCount())) {
resultOffset = textWidget.getOffsetAtLine(lineIndex);
// here we get's tabs length
// for more example you can see code