Author: mareshkau
Date: 2011-03-02 03:28:12 -0500 (Wed, 02 Mar 2011)
New Revision: 29438
Added:
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/FlasherData.java
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/resources/TestProject/WebContent/pages/selection/
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/resources/TestProject/WebContent/pages/selection/jbide-8115-test-case.html
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/editor/MultipleSelectionTest.java
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2505Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2582Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3127Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3163Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3650Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE4037Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JsfJbide2362Test.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/SelectWholeElement_JBIDE4713.java
trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/Flasher.java
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java
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
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualKeyHandler.java
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaEditor.java
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/KeyEventManager.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/SelectionUtil.java
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/VpeTest.java
Log:
https://issues.jboss.org/browse/JBIDE-8115, multiple selection has been added
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2505Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2505Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2505Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -102,7 +102,7 @@
for (int i=0;i<10;i++) {
- nsIDOMNode domNode = vpeController.getXulRunnerEditor().getLastSelectedNode();
+ nsIDOMNode domNode = vpeController.getXulRunnerEditor().getSelectedElement();
assertNotNull(domNode);
//we process selections only with reasons, but when we select programticly,
@@ -140,7 +140,7 @@
for (int i=0;i<10;i++) {
- nsIDOMNode domNode = vpeController.getXulRunnerEditor().getLastSelectedNode();
+ nsIDOMNode domNode = vpeController.getXulRunnerEditor().getSelectedElement();
assertNotNull(domNode);
vpeController.visualRefresh();
}
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2582Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2582Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE2582Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -172,7 +172,7 @@
SelectionUtil.setSourceSelection(controller.getPageContext(), elementNode, 1,
0);
- nsIDOMNode node =
SelectionUtil.getLastSelectedNode(controller.getPageContext());
+ nsIDOMNode node = SelectionUtil.getSelectedNode(controller.getPageContext());
assertEquals("Node names should be equals", "Hello",
node.getFirstChild().getNodeValue()); //$NON-NLS-1$ //$NON-NLS-2$
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3127Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3127Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3127Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -42,7 +42,7 @@
int offcet =
TestUtil.getLinePositionOffcet(editor.getSourceEditor().getTextViewer(), 13, 78);
editor.getSourceEditor().getTextViewer().setSelectedRange(offcet, 1);
assertTrue("VE sould be visible",
vpeController.isVisualEditorVisible()); //$NON-NLS-1$
- assertTrue("It's should be a
div","DIV".equalsIgnoreCase(vpeController.getXulRunnerEditor().getLastSelectedNode().getNodeName()));
//$NON-NLS-1$//$NON-NLS-2$
+ assertTrue("It's should be a
div","DIV".equalsIgnoreCase(vpeController.getXulRunnerEditor().getSelectedElement().getNodeName()));
//$NON-NLS-1$//$NON-NLS-2$
VpeEditorPart editorPart = ((VpeEditorPart)editor.getVisualEditor());
editorPart.maximizeSource();
assertFalse("Visual part shouldn't be
visible",vpeController.isVisualEditorVisible()); //$NON-NLS-1$
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3163Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3163Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3163Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -41,22 +41,22 @@
XulRunnerEditor xulRunnerEditor = controller.getXulRunnerEditor();
int position = TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(),
1, 6);
part.getSourceEditor().getTextViewer().setSelectedRange(position, 0);
- assertTrue("Show be selected Text
Node",xulRunnerEditor.getLastSelectedNode().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
+ assertTrue("Show be selected Text
Node",xulRunnerEditor.getSelectedElement().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
position = TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(), 1,
7);
part.getSourceEditor().getTextViewer().setSelectedRange(position, 0);
- assertTrue("Selected should be Element
Node",xulRunnerEditor.getLastSelectedNode().getNodeType()==nsIDOMNode.ELEMENT_NODE);
//$NON-NLS-1$
+ assertTrue("Selected should be Element
Node",xulRunnerEditor.getSelectedElement().getNodeType()==nsIDOMNode.ELEMENT_NODE);
//$NON-NLS-1$
position = TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(), 1,
15);
part.getSourceEditor().getTextViewer().setSelectedRange(position, 0);
- assertTrue("Selected should be Text
Node",xulRunnerEditor.getLastSelectedNode().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
+ assertTrue("Selected should be Text
Node",xulRunnerEditor.getSelectedElement().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
position = TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(), 1,
20);
part.getSourceEditor().getTextViewer().setSelectedRange(position, 0);
- assertTrue("Selected should be Text
Node",xulRunnerEditor.getLastSelectedNode().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
+ assertTrue("Selected should be Text
Node",xulRunnerEditor.getSelectedElement().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
position = TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(), 1,
25);
part.getSourceEditor().getTextViewer().setSelectedRange(position, 0);
- assertTrue("Selected should be Text
Node",xulRunnerEditor.getLastSelectedNode().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
+ assertTrue("Selected should be Text
Node",xulRunnerEditor.getSelectedElement().getNodeType()==nsIDOMNode.TEXT_NODE);
//$NON-NLS-1$
position = TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(), 1,
26);
part.getSourceEditor().getTextViewer().setSelectedRange(position, 0);
- assertTrue("Selected should be Element
Node",xulRunnerEditor.getLastSelectedNode().getNodeType()==nsIDOMNode.ELEMENT_NODE);
//$NON-NLS-1$
+ assertTrue("Selected should be Element
Node",xulRunnerEditor.getSelectedElement().getNodeType()==nsIDOMNode.ELEMENT_NODE);
//$NON-NLS-1$
}
}
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3650Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3650Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3650Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -67,7 +67,7 @@
int focusOffcetInSourceDocument =
TestUtil.getLinePositionOffcet(part.getSourceEditor().getTextViewer(), srcLine,
srcLinePos);
part.getSourceEditor().getTextViewer().getTextWidget().setCaretOffset(focusOffcetInSourceDocument);
vpeController.getPageContext().getSourceBuilder().getStructuredTextViewer().setSelectedRange(focusOffcetInSourceDocument,
0);
- nsIDOMNode lastSelectedNode =
vpeController.getXulRunnerEditor().getLastSelectedNode();
+ nsIDOMNode lastSelectedNode =
vpeController.getXulRunnerEditor().getSelectedElement();
NodeImpl sourceSelectedNode=null;
//was selected source el
if(attributeName!=null) {
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE4037Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE4037Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE4037Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -43,7 +43,7 @@
TestUtil.waitForJobs();
nsIDOMElement rootElement = TestUtil.getVpeController(part)
.getXulRunnerEditor()
- .getLastSelectedElement();
+ .getSelectedElement();
//check if something selected
assertNotNull(rootElement);
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JsfJbide2362Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JsfJbide2362Test.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JsfJbide2362Test.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -167,7 +167,7 @@
node, 1, 0);
assertEquals(domMapping.getNearNodeMapping(node)
- .getVisualNode(), xulRunnerEditor.getLastSelectedNode());
+ .getVisualNode(), xulRunnerEditor.getSelectedElement());
String insertedString = null;
int offset;
@@ -188,7 +188,7 @@
// wait
TestUtil.delay(700);
// wait
- assertNotNull(xulRunnerEditor.getLastSelectedNode());
+ assertNotNull(xulRunnerEditor.getSelectedElement());
}
}
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/SelectWholeElement_JBIDE4713.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/SelectWholeElement_JBIDE4713.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/SelectWholeElement_JBIDE4713.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -60,7 +60,7 @@
selectionEndOffset - selectionStartOffset);
TestUtil.waitForIdle();
- nsIDOMNode selectedNode = SelectionUtil.getLastSelectedNode(
+ nsIDOMNode selectedNode = SelectionUtil.getSelectedNode(
vpeController.getPageContext());
assertTrue(selectedNode.getNodeType() == nsIDOMNode.ELEMENT_NODE);
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 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/dnd/VpeDnD.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -134,7 +134,7 @@
}
private nsIDOMElement getSelectedElement() {
- return vpeController.getXulRunnerEditor().getLastSelectedElement();
+ return vpeController.getXulRunnerEditor().getSelectedElement();
}
/**
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 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -984,7 +984,7 @@
toggleLookup = "true".equals(toggleLookupAttr.getNodeValue());
//$NON-NLS-1$
}
- nsIDOMElement selectedElem = getLastSelectedElement();
+ nsIDOMElement selectedElem = getSelectedElement();
// Fixes JBIDE-1823 author dmaliarevich
if (null == selectedElem) {
return null;
@@ -1087,9 +1087,12 @@
return visualEditor.getContentArea();
}
- public void setSelectionRectangle(/* nsIDOMElement */nsIDOMNode visualElement) {
- int resizerConstrains = getResizerConstrains(visualElement);
- visualEditor.setSelectionRectangle(visualElement, resizerConstrains);
+ public void setSelectionRectangle(/* nsIDOMElement */List<nsIDOMNode> visualNodes)
{
+ int resizerConstrains = VpeTagDescription.RESIZE_CONSTRAINS_NONE;
+ if(visualNodes.size()==1){
+ resizerConstrains = getResizerConstrains(visualNodes.get(0));
+ }
+ visualEditor.setSelectionRectangle(visualNodes, resizerConstrains);
}
/**
@@ -1478,9 +1481,8 @@
return null;
}
- nsIDOMElement getLastSelectedElement() {
-
- return xulRunnerEditor.getLastSelectedElement();
+ private nsIDOMElement getSelectedElement() {
+ return xulRunnerEditor.getSelectedElement();
}
public void pushIncludeStack(VpeIncludeInfo includeInfo) {
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualKeyHandler.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualKeyHandler.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualKeyHandler.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -1759,7 +1759,7 @@
}
private nsIDOMElement getSelectedNode() {
- return pageContext.getEditPart().getController().getXulRunnerEditor().getLastSelectedElement();
+ return pageContext.getEditPart().getController().getXulRunnerEditor().getSelectedElement();
}
}
\ No newline at end of file
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaEditor.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaEditor.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/mozilla/MozillaEditor.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -956,8 +956,8 @@
// getContentAreaEventListener().setVisualEditor(null);
}
- public void setSelectionRectangle(/*nsIDOMElement*/nsIDOMNode element, int
resizerConstrains) {
- xulRunnerEditor.setSelectionRectangle(element, resizerConstrains);
+ public void setSelectionRectangle(/*nsIDOMElement*/List<nsIDOMNode> nodes, int
resizerConstrains) {
+ xulRunnerEditor.setSelectionRectangle(nodes, resizerConstrains);
}
/**
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/KeyEventManager.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/KeyEventManager.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/KeyEventManager.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -169,7 +169,7 @@
VpeTemplate template = elementMapping.getTemplate();
nsIDOMNode visualNode = SelectionUtil
- .getLastSelectedNode(getPageContext());
+ .getSelectedNode(getPageContext());
NodeData nodeData = template.getNodeData(visualNode, elementData,
domMapping);
@@ -254,7 +254,7 @@
VpeTemplate template = elementMapping.getTemplate();
nsIDOMNode visualNode = SelectionUtil
- .getLastSelectedNode(getPageContext());
+ .getSelectedNode(getPageContext());
NodeData nodeData = template.getNodeData(visualNode, elementData,
domMapping);
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 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/template/SelectionManager.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -11,6 +11,9 @@
package org.jboss.tools.vpe.editor.template;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.swt.graphics.Point;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
import org.eclipse.wst.xml.core.internal.document.NodeImpl;
@@ -70,7 +73,7 @@
}
if (selectionData.getVisualNode().getNodeType() != nsIDOMNode.TEXT_NODE
- && SelectionUtil.getLastSelectedNode(getPageContext())
+ && SelectionUtil.getSelectedNode(getPageContext())
== selectionData.getVisualNode()) {
return;
}
@@ -158,24 +161,26 @@
return;
}
- VpeNodeMapping nodeMapping = SelectionUtil
- .getNodeMappingBySourceSelection(getSourceEditor(), getDomMapping());
- if (nodeMapping == null) {
+ List<VpeNodeMapping> nodeMappings = SelectionUtil
+ .getNodeMappingsBySourceSelection(getSourceEditor(), getDomMapping());
+ if (nodeMappings == null) {
return;
}
// visual node which will be selected
- nsIDOMNode targetVisualNode;
- if (nodeMapping instanceof VpeElementMapping) {
- VpeElementMapping elementMapping = (VpeElementMapping) nodeMapping;
- targetVisualNode = elementMapping.getTemplate()
- .getVisualNodeBySourcePosition(elementMapping,
- range, getDomMapping());
- } else {
- targetVisualNode = nodeMapping.getVisualNode();
+ List<nsIDOMNode> targetVisualNodes = new ArrayList<nsIDOMNode>();
+ for (VpeNodeMapping nodeMapping : nodeMappings) {
+ if (nodeMapping instanceof VpeElementMapping) {
+ VpeElementMapping elementMapping = (VpeElementMapping) nodeMapping;
+ targetVisualNodes.add(elementMapping.getTemplate()
+ .getVisualNodeBySourcePosition(elementMapping,
+ range, getDomMapping()));
+ } else {
+ targetVisualNodes.add(nodeMapping.getVisualNode());
+ }
}
getPageContext().getVisualBuilder().setSelectionRectangle(
- targetVisualNode);
+ targetVisualNodes);
}
/**
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SelectionUtil.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SelectionUtil.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/util/SelectionUtil.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -252,7 +252,6 @@
nodeMappings.add(nodeMapping);
}
}
-
return nodeMappings;
}
@@ -344,9 +343,14 @@
* VpePageContext object
* @return nsIDOMNode the last selected node
*/
- public static nsIDOMNode getLastSelectedNode(VpePageContext pageContext) {
- return pageContext.getVisualBuilder().getXulRunnerEditor()
- .getLastSelectedNode();
+ public static nsIDOMNode getSelectedNode(VpePageContext pageContext) {
+ nsIDOMNode domNode=null;
+ List<nsIDOMNode> selectedNodes =
pageContext.getVisualBuilder().getXulRunnerEditor()
+ .getLastSelectedNodes();
+ if(selectedNodes!=null&&selectedNodes.size()>0){
+ domNode=selectedNodes.get(0);
+ }
+ return domNode;
}
/**
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -379,7 +379,7 @@
TestUtil.delay(50);
- assertNotNull(xulRunnerEditor.getLastSelectedNode());
+ assertNotNull(xulRunnerEditor.getSelectedElement());
nsIDOMNode sample;
if (nodeMapping.getSourceNode().getNodeType() == Node.TEXT_NODE
@@ -391,7 +391,7 @@
sample = nodeMapping.getVisualNode();
}
- assertEquals(sample, xulRunnerEditor.getLastSelectedNode());
+ assertEquals(sample, xulRunnerEditor.getSelectedElement());
}
}
}
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/Flasher.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/Flasher.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/Flasher.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -1,5 +1,7 @@
package org.jboss.tools.vpe.xulrunner.editor;
+import java.util.List;
+
import org.eclipse.core.runtime.Platform;
import org.jboss.tools.vpe.xulrunner.util.XPCOM;
import org.mozilla.interfaces.inIFlasher;
@@ -36,40 +38,55 @@
||IS_OPEN_JDK
||IS_LINUX) {
drawOutline = new DrawOutlineInterface() {
- private nsIDOMElement lastBorderedElement = null;
- public void drawElementOutline(nsIDOMElement domElement) {
- if (this.lastBorderedElement != null
- && this.lastBorderedElement.getAttribute(XulRunnerEditor.STYLE_ATTR) !=
null) {
- String style = this.lastBorderedElement
- .getAttribute(PREV_STYLE_ATTR_NAME);
- this.lastBorderedElement.removeAttribute(PREV_STYLE_ATTR_NAME);
- this.lastBorderedElement.setAttribute(XulRunnerEditor.STYLE_ATTR, style);
- }
-
+ private List<FlasherData> previouslyBorderedElements = null;
+ public void drawElementOutline(List<FlasherData> flasherData) {
+ clearPreviouslySelectedElements();
// save style for early bordered element
- String oldstyle = domElement.getAttribute(XulRunnerEditor.STYLE_ATTR);
- domElement.setAttribute(XulRunnerEditor.STYLE_ATTR,
- domElement.getAttribute(XulRunnerEditor.STYLE_ATTR) + ';'
- + String.format(ELEMENT_BORDER_PATTERN, iFlasher.getColor()));
-
- this.lastBorderedElement = domElement;
- this.lastBorderedElement.setAttribute(PREV_STYLE_ATTR_NAME,
- oldstyle);
-
+ saveOldStyle(flasherData);
+ this.previouslyBorderedElements = flasherData;
}
+ private void clearPreviouslySelectedElements(){
+ if(previouslyBorderedElements!=null){
+ for (FlasherData borderedData : previouslyBorderedElements) {
+ nsIDOMElement lastBorderedElement = borderedData.getElement();
+ if (lastBorderedElement != null
+ && lastBorderedElement.getAttribute(XulRunnerEditor.STYLE_ATTR) != null)
{
+ String style = lastBorderedElement
+ .getAttribute(PREV_STYLE_ATTR_NAME);
+ lastBorderedElement.removeAttribute(PREV_STYLE_ATTR_NAME);
+ lastBorderedElement.setAttribute(XulRunnerEditor.STYLE_ATTR, style);
+ }
+ }
+ }
+ }
+
+ private void saveOldStyle(List<FlasherData> flasherData){
+ for (FlasherData flasherData2 : flasherData) {
+ nsIDOMElement domElement = flasherData2.getElement();
+ String oldstyle = domElement.getAttribute(XulRunnerEditor.STYLE_ATTR);
+ domElement.setAttribute(XulRunnerEditor.STYLE_ATTR,
+ domElement.getAttribute(XulRunnerEditor.STYLE_ATTR) + ';'
+ + String.format(ELEMENT_BORDER_PATTERN, flasherData2.getSelectionColor()));
+ domElement.setAttribute(PREV_STYLE_ATTR_NAME, oldstyle);
+ }
+ }
+
};
} else {
drawOutline = new DrawOutlineInterface() {
- public void drawElementOutline(nsIDOMElement domElement) {
- iFlasher.drawElementOutline(domElement);
+ public void drawElementOutline(List<FlasherData> flasherData) {
+ for (FlasherData flasherData2 : flasherData) {
+ iFlasher.setColor(flasherData2.getSelectionColor());
+ iFlasher.drawElementOutline(flasherData2.getElement());
+ }
}
};
}
}
- public void drawElementOutline(nsIDOMElement domElement) {
+ public void drawElementOutline(List<FlasherData> flasherData) {
- drawOutline.drawElementOutline(domElement);
+ drawOutline.drawElementOutline(flasherData);
}
public void scrollElementIntoView(nsIDOMElement element) {
@@ -94,6 +111,6 @@
*
*/
interface DrawOutlineInterface{
- public void drawElementOutline(nsIDOMElement domElement);
+ public void drawElementOutline(List<FlasherData> flasherData);
};
Added:
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/FlasherData.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/FlasherData.java
(rev 0)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/FlasherData.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.vpe.xulrunner.editor;
+
+import org.mozilla.interfaces.nsIDOMElement;
+
+/**
+ *
+ * Transfer object which contains flasher
+ *
+ * @author mareshkau
+ *
+ */
+public class FlasherData {
+
+ private nsIDOMElement element;
+ private String selectionColor;
+
+ public FlasherData(String drawColor,nsIDOMElement element){
+ this.selectionColor=drawColor;
+ this.element=element;
+ }
+
+ protected nsIDOMElement getElement() {
+ return element;
+ }
+ protected String getSelectionColor() {
+ return selectionColor;
+ }
+}
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/plugins/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -12,6 +12,7 @@
package org.jboss.tools.vpe.xulrunner.editor;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
@@ -95,7 +96,7 @@
public static final String STYLE_ATTR = "style"; //$NON-NLS-1$
// private nsIDOMElement lastSelectedElement;
- private nsIDOMNode lastSelectedNode;
+ private List<nsIDOMNode> selectedNodes;
private int lastResizerConstrains;
private Listener eventListenet = new Listener() {
@@ -242,17 +243,20 @@
return domWindow.getDocument();
}
- /**
- * Function created to restore functionality of MozillaBrowser
- *
- * @return
- */
- public nsIDOMElement getLastSelectedElement() {
- return getSelectedElementForNode(lastSelectedNode);
- }
+// /**
+// * Function created to restore functionality of MozillaBrowser
+// *
+// * @return
+// */
+// public nsIDOMElement getLastSelectedElement() {
+// return getElementForNode(lastSelectedNode);
+// }
- public nsIDOMNode getLastSelectedNode() {
- return lastSelectedNode;
+ public List<nsIDOMNode> getLastSelectedNodes() {
+ if(selectedNodes==null){
+ selectedNodes=Collections.<nsIDOMNode>emptyList();
+ }
+ return selectedNodes;
}
/**
@@ -262,26 +266,27 @@
* @param resizerConstrains
* @param scroll
*/
- public void setSelectionRectangle(nsIDOMNode node, int resizerConstrains) {
+ public void setSelectionRectangle(List<nsIDOMNode> nodes, int resizerConstrains)
{
if (getFlasher() == null) {
return;
}
- this.lastSelectedNode = node;
+ this.selectedNodes = nodes;
- nsIDOMElement element = getLastSelectedElement();
- if (element != null) {
- repaint();
- scrollToElement(element);
- }
- redrawSelectionRectangle();
+ nsIDOMElement element = getSelectedElement();
+ if (element != null) {
+ repaint();
+ scrollToElement(element);
+ }
+ redrawSelectionRectangle();
- if (xulRunnerVpeResizer != null) {
- if (element != null && resizerConstrains != 0) {
- xulRunnerVpeResizer.show(element, resizerConstrains);
- } else {
- xulRunnerVpeResizer.hide();
+ if (xulRunnerVpeResizer != null) {
+ if (element != null && resizerConstrains != 0) {
+ xulRunnerVpeResizer.show(element, resizerConstrains);
+ } else {
+ xulRunnerVpeResizer.hide();
+ }
}
- }
+
lastResizerConstrains = resizerConstrains;
@@ -392,9 +397,9 @@
*
*/
public void showResizer() {
- if (xulRunnerVpeResizer != null && getLastSelectedElement() != null
+ if (xulRunnerVpeResizer != null && getSelectedElement() != null
&& lastResizerConstrains != 0) {
- xulRunnerVpeResizer.show(getLastSelectedElement(),
+ xulRunnerVpeResizer.show(getSelectedElement(),
lastResizerConstrains);
}
}
@@ -409,28 +414,54 @@
}
public void redrawSelectionRectangle() {
- nsIDOMElement element = getLastSelectedElement();
- if (element != null) {
- if (isVisible(element)) {
- if (element.getAttribute(VPE_INVISIBLE_ELEMENT) == null
- || (!element.getAttribute(VPE_INVISIBLE_ELEMENT)
+// nsIDOMElement element = get SelectedElement();
+// if (element != null) {
+// if (isVisible(element)) {
+// if (element.getAttribute(VPE_INVISIBLE_ELEMENT) == null
+// || (!element.getAttribute(VPE_INVISIBLE_ELEMENT)
+// .equals(Boolean.TRUE.toString()))) {
+// getFlasher().setColor(FLASHER_VISUAL_ELEMENT_COLOR);
+// } else {
+// getFlasher().setColor(FLASHER_HIDDEN_ELEMENT_COLOR);
+// }
+// drawElementOutline(element);
+// } else {
+// getFlasher().setColor(FLASHER_HIDDEN_ELEMENT_COLOR);
+// nsIDOMElement domElement = findVisibleParentElement(element);
+// if (domElement != null) {
+// drawElementOutline(domElement);
+// }
+// }
+// }
+ List<FlasherData> flasherDatas = new ArrayList<FlasherData>();
+ for (nsIDOMNode domNode : getLastSelectedNodes()) {
+ flasherDatas.add(prepareFlasherData(domNode));
+ }
+ drawElementOutline(flasherDatas);
+ }
+
+ private FlasherData prepareFlasherData(nsIDOMNode domNode){
+ nsIDOMElement domElement = getElementForNode(domNode);
+ String selectionBorderColor = FLASHER_VISUAL_ELEMENT_COLOR;
+ if (domElement != null) {
+ if (isVisible(domElement)) {
+ if (domElement.getAttribute(VPE_INVISIBLE_ELEMENT) == null
+ || (!domElement.getAttribute(VPE_INVISIBLE_ELEMENT)
.equals(Boolean.TRUE.toString()))) {
- getFlasher().setColor(FLASHER_VISUAL_ELEMENT_COLOR);
+ selectionBorderColor = FLASHER_VISUAL_ELEMENT_COLOR;
} else {
- getFlasher().setColor(FLASHER_HIDDEN_ELEMENT_COLOR);
- }
-
- drawElementOutline(element);
+ selectionBorderColor = FLASHER_HIDDEN_ELEMENT_COLOR;
+ }
} else {
- getFlasher().setColor(FLASHER_HIDDEN_ELEMENT_COLOR);
- nsIDOMElement domElement = findVisibleParentElement(element);
-
- if (domElement != null) {
- drawElementOutline(domElement);
- }
+ selectionBorderColor = FLASHER_HIDDEN_ELEMENT_COLOR;
+ domElement = findVisibleParentElement(domElement);
}
}
+
+ return new FlasherData(selectionBorderColor, domElement);
}
+
+
/**
* Scrools viiew to some elements
@@ -449,7 +480,7 @@
* If node is a text node, then returns its parent
* Else returns null;
*/
- private nsIDOMElement getSelectedElementForNode(nsIDOMNode node) {
+ private static nsIDOMElement getElementForNode(nsIDOMNode node) {
if (node != null) {
if (node.getNodeType() == nsIDOMNode.ELEMENT_NODE) {
return XPCOM.queryInterface(node, nsIDOMElement.class);
@@ -469,8 +500,8 @@
* arround which border will be shown
*
*/
- private void drawElementOutline(nsIDOMElement element) {
- getFlasher().drawElementOutline(element);
+ private void drawElementOutline(List<FlasherData> flasherData) {
+ getFlasher().drawElementOutline(flasherData);
}
/**
@@ -492,7 +523,7 @@
@Override
protected void onDispose() {
- lastSelectedNode = null;
+ selectedNodes = new ArrayList<nsIDOMNode>();
if (flasher != null) {
flasher.dispose();
flasher = null;
@@ -507,5 +538,15 @@
}
}
-
+ /**
+ *
+ * @return selected element if only one element selected in visual part
+ */
+ public nsIDOMElement getSelectedElement(){
+ nsIDOMElement resizeElement = null;
+ if(getLastSelectedNodes()!=null&&getLastSelectedNodes().size()>0){
+ resizeElement =getElementForNode(getLastSelectedNodes().get(0));
+ }
+ return resizeElement;
+ }
}
Added:
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/resources/TestProject/WebContent/pages/selection/jbide-8115-test-case.html
===================================================================
---
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/resources/TestProject/WebContent/pages/selection/jbide-8115-test-case.html
(rev 0)
+++
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/resources/TestProject/WebContent/pages/selection/jbide-8115-test-case.html 2011-03-02
08:28:12 UTC (rev 29438)
@@ -0,0 +1,13 @@
+<html>
+<head></head>
+<body>
+<input type ="button" value="1" />
+<p/>
+<input type ="button" value="2" />
+<p/>
+<input type ="button" value="3" />
+<p/>
+<input type ="button" value="4" />
+<p/>
+</body>
+</html>
\ No newline at end of file
Modified:
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/VpeTest.java
===================================================================
---
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/VpeTest.java 2011-03-02
03:19:37 UTC (rev 29437)
+++
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/VpeTest.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -354,7 +354,7 @@
TestUtil.delay(50);
- assertNotNull(xulRunnerEditor.getLastSelectedNode());
+ assertNotNull(xulRunnerEditor.getSelectedElement());
nsIDOMNode sample;
if (nodeMapping.getSourceNode().getNodeType() == Node.TEXT_NODE
@@ -366,7 +366,7 @@
sample = nodeMapping.getVisualNode();
}
- assertEquals(sample, xulRunnerEditor.getLastSelectedNode());
+ assertEquals(sample, xulRunnerEditor.getSelectedElement());
}
}
}
Added:
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/editor/MultipleSelectionTest.java
===================================================================
---
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/editor/MultipleSelectionTest.java
(rev 0)
+++
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/editor/MultipleSelectionTest.java 2011-03-02
08:28:12 UTC (rev 29438)
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.vpe.ui.test.editor;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.part.FileEditorInput;
+import org.jboss.tools.jst.jsp.jspeditor.JSPMultiPageEditor;
+import org.jboss.tools.vpe.base.test.TestUtil;
+import org.jboss.tools.vpe.base.test.VpeTest;
+import org.jboss.tools.vpe.ui.test.VpeUiTests;
+
+/**
+ * Junit test for JBIDE-8115
+ *
+ * @author mareshkau
+ *
+ */
+public class MultipleSelectionTest extends VpeTest{
+
+ private static final String
TEST_CASE="WebContent/pages/selection/jbide-8115-test-case.html"; //$NON-NLS-1$
+
+ public MultipleSelectionTest(String name) {
+ super(name);
+ }
+
+ public void testMultipleSelectionForSimplePage() throws CoreException, IOException{
+ IFile file = (IFile) TestUtil.getComponentPath(TEST_CASE,
+ VpeUiTests.IMPORT_PROJECT_NAME);
+ IEditorInput input = new FileEditorInput(file);
+ JSPMultiPageEditor part = openEditor(input);
+ ITextViewer viewer = part.getSourceEditor().getTextViewer();
+
+ int startSelectionOffcet = TestUtil.getLinePositionOffcet(viewer, 6, 1);
+ int endSelectionOffcet = TestUtil.getLinePositionOffcet(viewer, 9, 4);
+ viewer.setSelectedRange(startSelectionOffcet, endSelectionOffcet);
+ }
+}