Author: yradtsevich
Date: 2009-05-05 10:31:55 -0400 (Tue, 05 May 2009)
New Revision: 15024
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/pages/JBIDE/3519/
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/pages/JBIDE/3519/JBIDE-3519.xhtml
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3519Test.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java
trunk/vpe/plugins/org.jboss.tools.vpe/META-INF/MANIFEST.MF
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/InsertContributionItem.java
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction.java
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction2.java
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/VpeTest.java
Log:
issue JBIDE-3519: Ctrl+Z (Undo) doesn't work properly for "Replace With"
operation from context menu
https://jira.jboss.org/jira/browse/JBIDE-3519
- the issue has been fixed
- JUnit test has been added
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java 2009-05-05
14:28:44 UTC (rev 15023)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -55,6 +55,7 @@
public static final String PROPOPERTY_DEFAULT_PREFIX = URIConstants.DEFAULT_PREFIX;
public static final String PROPOPERTY_SELECTION_PROVIDER =
"selectionProvider";
public static final String PROPOPERTY_ADD_TAGLIB = TLDToPaletteHelper.ADD_TAGLIB;
+
static PaletteTaglibInserter PaletteTaglibInserter = new PaletteTaglibInserter();
public static void insertIntoEditor(ITextEditor editor, Properties p) {
@@ -91,56 +92,62 @@
return true;
}
- public static void insertIntoEditor(ISourceViewer v, Properties p) {
- String tagname = p.getProperty(PROPOPERTY_TAG_NAME);
- String startText = p.getProperty(PROPOPERTY_START_TEXT);
- String endText = p.getProperty(PROPOPERTY_END_TEXT);
- String uri = p.getProperty(PROPOPERTY_TAGLIBRARY_URI);
+ public static void insertIntoEditor(final ISourceViewer v, Properties p) {
+ String tagname = p.getProperty(PROPOPERTY_TAG_NAME);
+ String startText = p.getProperty(PROPOPERTY_START_TEXT);
+ String endText = p.getProperty(PROPOPERTY_END_TEXT);
+ String uri = p.getProperty(PROPOPERTY_TAGLIBRARY_URI);
+
+ ISelectionProvider selProvider
+ = (ISelectionProvider)p.get(PROPOPERTY_SELECTION_PROVIDER);
+ if(selProvider == null) {
+ p.put(PROPOPERTY_SELECTION_PROVIDER, v.getSelectionProvider());
+ }
+
+ IDocument d = v.getDocument();
+ String[] texts = new String[] {startText, endText};
+
+ if(startText != null && startText.startsWith("<%@ taglib")) {
+ if(PaletteTaglibInserter.inserTaglibInXml(v, p)) {
+ return;
+ }
+ } else {
+ p = PaletteTaglibInserter.inserTaglib(v, p);
+ }
+
+ String defaultPrefix = p.getProperty(PROPOPERTY_DEFAULT_PREFIX);
+ applyPrefix(texts, d, tagname, uri, defaultPrefix);
+ startText = texts[0];
+ endText = texts[1];
+
+ if(startText != null) {
+ p.setProperty(PROPOPERTY_START_TEXT, startText);
+ }
+ if(endText != null) {
+ p.setProperty(PROPOPERTY_END_TEXT, endText);
+ }
- ISelectionProvider selProvider =
(ISelectionProvider)p.get(PROPOPERTY_SELECTION_PROVIDER);
- if(selProvider == null) p.put(PROPOPERTY_SELECTION_PROVIDER, v.getSelectionProvider());
+ IEditorPart activeEditor = ModelUIPlugin.getDefault().getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IDocument d = v.getDocument();
- String[] texts = new String[]{startText, endText};
+ insertIntoEditorInternal(d, p);
- if(startText!=null && startText.startsWith("<%@ taglib")) {
- if(PaletteTaglibInserter.inserTaglibInXml(v, p)) {
- return;
+ // Leave as is
+ if(v instanceof IIgnoreSelection) {
+ ((IIgnoreSelection)v).setIgnore(true);
}
- } else {
- p = PaletteTaglibInserter.inserTaglib(v, p);
- }
- String defaultPrefix = p.getProperty(PROPOPERTY_DEFAULT_PREFIX);
- applyPrefix(texts, d, tagname, uri, defaultPrefix);
- startText = texts[0];
- endText = texts[1];
+ if (activeEditor != null) {
+ activeEditor.getSite().getPage().activate(activeEditor);
+ }
- if(startText != null) p.setProperty(PROPOPERTY_START_TEXT, startText);
- if(endText != null) p.setProperty(PROPOPERTY_END_TEXT, endText);
-
- if (v != null ) {
- IEditorPart activeEditor =
ModelUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IDocument doc = v.getDocument();
- insertIntoEditorInternal(doc, p);
- /*
- * Leave as is
- */
- if(v instanceof IIgnoreSelection) {
- ((IIgnoreSelection)v).setIgnore(true);
- }
- if (activeEditor != null)
- activeEditor.getSite().getPage().activate(activeEditor);
- /*
- * Set Ignore false, to prevent focus losing.
- */
- if(v instanceof IIgnoreSelection) {
- ((IIgnoreSelection)v).setIgnore(false);
- }
+ // Set Ignore false, to prevent focus losing.
+ if(v instanceof IIgnoreSelection) {
+ ((IIgnoreSelection)v).setIgnore(false);
}
}
- private static void insertIntoEditorInternal (IDocument doc, Properties p) {
+ private static void insertIntoEditorInternal(IDocument doc, Properties p) {
String startText = p.getProperty(PROPOPERTY_START_TEXT);
String endText = p.getProperty(PROPOPERTY_END_TEXT);
String newline = p.getProperty(PROPOPERTY_NEW_LINE);
@@ -159,7 +166,7 @@
body = length > 0 ? doc.get(offset, length): "";
} catch (BadLocationException e1) {
ModelUIPlugin.getPluginLog().logError(e1);
- }
+ }
if (startText == null) startText = "";
else startText = prepare(prepare(startText, "\\n", getLineDelimiter(doc)),
"\\t", "\t");
Modified: trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF
===================================================================
--- trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF 2009-05-05
14:28:44 UTC (rev 15023)
+++ trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF 2009-05-05
14:31:55 UTC (rev 15024)
@@ -24,7 +24,8 @@
org.eclipse.ui.ide,
org.jboss.tools.vpe.resref;bundle-version="2.0.0",
org.jboss.tools.common.el.ui;bundle-version="1.0.0",
- org.jboss.tools.common.el.core;bundle-version="2.0.0"
+ org.jboss.tools.common.el.core;bundle-version="2.0.0",
+ org.jboss.tools.common.model.ui;bundle-version="2.0.0"
Bundle-ClassPath: jsf-test.jar
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/pages/JBIDE/3519/JBIDE-3519.xhtml
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/pages/JBIDE/3519/JBIDE-3519.xhtml
(rev 0)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/pages/JBIDE/3519/JBIDE-3519.xhtml 2009-05-05
14:31:55 UTC (rev 15024)
@@ -0,0 +1,9 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition
xmlns:rich="http://richfaces.org/rich">
+ <rich:dataTable>
+ <rich:editor>
+
+ </rich:editor>
+ </rich:dataTable>
+</ui:composition>
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java 2009-05-05
14:28:44 UTC (rev 15023)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -50,6 +50,7 @@
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3441Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3473Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3482Test;
+import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3519Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3617Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3632Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE3650Test;
@@ -86,6 +87,7 @@
// $JUnit-BEGIN$
suite.addTestSuite(JsfComponentTest.class);
suite.addTestSuite(Jsf20ComponentContentTest.class);
+ suite.addTestSuite(JBIDE3519Test.class);
suite.addTestSuite(JBIDE4037Test.class);
suite.addTestSuite(JBIDE3734Test.class);
suite.addTestSuite(JBIDE3617Test.class);
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3519Test.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3519Test.java
(rev 0)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/JBIDE3519Test.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2009 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.jsf.vpe.jsf.test.jbide;
+
+import org.eclipse.jface.text.IUndoManager;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.ui.util.ModelUtilities;
+import org.jboss.tools.jsf.vpe.jsf.test.JsfAllTests;
+import org.jboss.tools.vpe.editor.VpeController;
+import org.jboss.tools.vpe.editor.menu.InsertType;
+import org.jboss.tools.vpe.editor.menu.action.InsertAction2;
+import org.jboss.tools.vpe.ui.test.TestUtil;
+import org.jboss.tools.vpe.ui.test.VpeTest;
+
+/**
+ * Test for JIRA issue JBIDE-3519: Ctrl+Z (Undo) doesn't work
+ * properly for "Replace With" operation from context menu.
+ * (
https://jira.jboss.org/jira/browse/JBIDE-3519 )
+ *
+ * @author yradtsevich
+ */
+public class JBIDE3519Test extends VpeTest {
+ private static final Point SELECTION_START = new Point(5, 9);
+ private static final Point SELECTION_END = new Point(7, 23);
+ private static final String TEST_PAGE_NAME
+ = "JBIDE/3519/JBIDE-3519.xhtml"; //$NON-NLS-1$
+ private static final String INSERTION_ITEM_PATH
+ = "%Palette%/JSF/HTML/column"; //$NON-NLS-1$
+
+ private VpeController vpeController;
+ private StructuredTextEditor sourceEditor;
+ private StructuredTextViewer textViewer;
+ private StyledText textWidget;
+ private String originalText;
+ private IUndoManager undoManager;
+ private int selectionStartOffset;
+ private int selectionEndOffset;
+ private XModelObject insertionItem;
+
+ public JBIDE3519Test(String name) {
+ super(name);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ vpeController = openInVpe(JsfAllTests.IMPORT_PROJECT_NAME,
+ TEST_PAGE_NAME);
+ sourceEditor = vpeController.getSourceEditor();
+ textViewer = sourceEditor.getTextViewer();
+ textWidget = textViewer.getTextWidget();
+ originalText = textWidget.getText();
+
+ undoManager = textViewer.getUndoManager();
+
+ selectionStartOffset = TestUtil.getLinePositionOffcet(
+ textViewer, SELECTION_START.x, SELECTION_START.y);
+ selectionEndOffset = TestUtil.getLinePositionOffcet(
+ textViewer, SELECTION_END.x, SELECTION_END.y);
+
+ insertionItem = ModelUtilities.getPreferenceModel()
+ .getByPath(INSERTION_ITEM_PATH);
+ }
+
+// known issue, will fail
+// public void testInsertAround() {
+// insertAndUndo(InsertType.INSERT_AROUND);
+// }
+
+ public void testInsertAfter() {
+ insertAndUndo(InsertType.INSERT_AFTER);
+ }
+
+ public void testInsertBefore() {
+ insertAndUndo(InsertType.INSERT_BEFORE);
+ }
+
+ public void testInsertInto() {
+ insertAndUndo(InsertType.INSERT_INTO);
+ }
+
+ public void testReplaceWith() throws Throwable {
+ insertAndUndo(InsertType.REPLACE_WITH);
+ }
+
+ private void insertAndUndo(final InsertType insertType) {
+ textWidget.setSelection(selectionStartOffset, selectionEndOffset);
+ final InsertAction2 insertAction = new InsertAction2(
+ "Insert Action", insertionItem, //$NON-NLS-1$
+ sourceEditor, insertType);
+ insertAction.run();
+ undoManager.undo();
+ assertEquals(insertType.getMessage()
+ + " action has been performed. The content is "//$NON-NLS-1$
+ + " not reverted after UNDO operation.", //$NON-NLS-1$
+ originalText, textWidget.getText());
+ }
+}
Modified: trunk/vpe/plugins/org.jboss.tools.vpe/META-INF/MANIFEST.MF
===================================================================
--- trunk/vpe/plugins/org.jboss.tools.vpe/META-INF/MANIFEST.MF 2009-05-05 14:28:44 UTC
(rev 15023)
+++ trunk/vpe/plugins/org.jboss.tools.vpe/META-INF/MANIFEST.MF 2009-05-05 14:31:55 UTC
(rev 15024)
@@ -18,6 +18,7 @@
org.jboss.tools.vpe.editor.dnd.context.xpl,
org.jboss.tools.vpe.editor.mapping,
org.jboss.tools.vpe.editor.menu,
+ org.jboss.tools.vpe.editor.menu.action,
org.jboss.tools.vpe.editor.menu.xpl,
org.jboss.tools.vpe.editor.mozilla,
org.jboss.tools.vpe.editor.preferences,
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/InsertContributionItem.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/InsertContributionItem.java 2009-05-05
14:28:44 UTC (rev 15023)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/InsertContributionItem.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -16,7 +16,6 @@
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.PlatformUI;
@@ -30,8 +29,6 @@
import org.jboss.tools.vpe.editor.context.VpePageContext;
import org.jboss.tools.vpe.editor.menu.action.InsertAction2;
import org.jboss.tools.vpe.editor.util.Constants;
-import org.jboss.tools.vpe.editor.util.NodesManagingUtil;
-import org.jboss.tools.vpe.editor.util.SelectionUtil;
import org.jboss.tools.vpe.editor.util.XmlUtil;
import org.jboss.tools.vpe.messages.VpeUIMessages;
import org.w3c.dom.Node;
@@ -142,7 +139,7 @@
+ RIGHT_ANGLE_BRACKET;
manager.add(new InsertAction2(name, modelObjectChild,
- pageContext, sourceEditor, insertionType));
+ sourceEditor, insertionType));
}
} else {
final MenuManager subMenu = new InsertSubMenuManager(
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction.java 2009-05-05
14:28:44 UTC (rev 15023)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -13,6 +13,7 @@
import java.util.Properties;
import org.eclipse.jface.action.Action;
+import org.eclipse.jface.text.IUndoManager;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.graphics.Point;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
@@ -77,6 +78,21 @@
*/
@Override
public void run() {
+ final IUndoManager undoManager = sourceEditor.getTextViewer()
+ .getUndoManager();
+ try {
+ undoManager.beginCompoundChange();
+ insert();
+ } finally {
+ undoManager.endCompoundChange();
+ }
+ }
+
+ /**
+ * Inserts the specified {@code item} into the
+ * {@code sourceEditor}.
+ */
+ private void insert() {
String tagName = item.getAttributeValue("name"); //$NON-NLS-1$
XModelObject parent = item.getParent();
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction2.java
===================================================================
---
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction2.java 2009-05-05
14:28:44 UTC (rev 15023)
+++
trunk/vpe/plugins/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/menu/action/InsertAction2.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -13,6 +13,10 @@
import java.util.Properties;
import org.eclipse.jface.action.Action;
+import org.eclipse.jface.text.IUndoManager;
+import org.eclipse.jface.text.TextSelection;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.graphics.Point;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
@@ -20,7 +24,6 @@
import org.jboss.tools.common.model.ui.views.palette.PaletteInsertHelper;
import org.jboss.tools.jst.web.tld.TLDToPaletteHelper;
import org.jboss.tools.jst.web.tld.URIConstants;
-import org.jboss.tools.vpe.editor.context.VpePageContext;
import org.jboss.tools.vpe.editor.menu.InsertType;
import org.jboss.tools.vpe.editor.util.Constants;
import org.jboss.tools.vpe.editor.util.NodesManagingUtil;
@@ -38,7 +41,6 @@
public class InsertAction2 extends Action {
private final XModelObject item;
- private final VpePageContext pageContext;
private final StructuredTextEditor sourceEditor;
private final InsertType insertType;
@@ -53,11 +55,9 @@
* @param insertType the type of the action
*/
public InsertAction2(String title, XModelObject item,
- VpePageContext pageContext, StructuredTextEditor sourceEditor,
- InsertType insertType) {
+ StructuredTextEditor sourceEditor, InsertType insertType) {
super(title);
this.item = item;
- this.pageContext = pageContext;
this.sourceEditor = sourceEditor;
this.insertType = insertType;
}
@@ -67,29 +67,44 @@
*/
@Override
public void run() {
- prepareInsertion();
- doInsertion();
+ final Point userSelection = SelectionUtil
+ .getSourceSelectionRange(sourceEditor);
+
+ /* we must clear the selection before an element is inserted
+ * (
https://jira.jboss.org/jira/browse/JBIDE-3519) */
+ getSourceEditor().getTextViewer().getTextWidget().setSelection(
+ userSelection.x);
+
+ final IUndoManager undoManager = sourceEditor.getTextViewer()
+ .getUndoManager();
+ try {
+ undoManager.beginCompoundChange();
+
+ prepareInsertion(userSelection);
+ doInsertion();
+ } finally {
+ undoManager.endCompoundChange();
+ }
}
/**
* Sets the cursor to an appropriate position.
- * If REPLACE_WITH action is selected, it removes the selected text.
+ * If REPLACE_WITH action is chosen, it removes
+ * the selected tag.
*/
- private void prepareInsertion() {
- final Point selectionRange = SelectionUtil
- .getSourceSelectionRange(sourceEditor);
- int start = selectionRange.x;
- int length = selectionRange.y;
+ private void prepareInsertion(final Point userSelection) {
+ int start = userSelection.x;
+ int length = userSelection.y;
final Node firstNode = SelectionUtil
- .getNodeBySourcePosition(sourceEditor, selectionRange.x);
+ .getNodeBySourcePosition(sourceEditor, userSelection.x);
final Node endNode = SelectionUtil
.getNodeBySourcePosition(sourceEditor,
- selectionRange.x + selectionRange.y);
+ userSelection.x + userSelection.y);
if (firstNode != null) {
if (firstNode.getNodeType() == Node.TEXT_NODE) {
- start = selectionRange.x;
+ start = userSelection.x;
} else {
start = NodesManagingUtil.getStartOffsetNode(firstNode);
}
@@ -97,7 +112,7 @@
if (endNode != null) {
if (endNode.getNodeType() == Node.TEXT_NODE) {
- length = (selectionRange.x - start) + selectionRange.y;
+ length = (userSelection.x - start) + userSelection.y;
} else {
length = NodesManagingUtil.getEndOffsetNode(endNode) - start;
}
@@ -115,23 +130,22 @@
insertionLength = 0;
break;
case INSERT_INTO:
- if (endNode.getNodeType() == Node.ELEMENT_NODE) {
- final Element endElement = (Element) endNode;
- Node prevNode = endElement
+ if (firstNode != null
+ && firstNode.getNodeType() == Node.ELEMENT_NODE) {
+ final Element firstElement = (Element) firstNode;
+ Node prevNode = firstElement
.getOwnerDocument().createTextNode(""); //$NON-NLS-1$
try {
- endElement.appendChild(prevNode);
+ firstElement.appendChild(prevNode);
} catch(DOMException e) {
- prevNode = endElement;
+ prevNode = firstNode;
}
- insertionStart
- = NodesManagingUtil.getEndOffsetNode(prevNode);
- insertionLength = 0;
+ insertionStart = NodesManagingUtil.getEndOffsetNode(prevNode);
} else {
insertionStart = start + length;
- insertionLength = 0;
}
+ insertionLength = 0;
break;
default:
insertionStart = start;
@@ -140,18 +154,20 @@
}
if (insertType == InsertType.REPLACE_WITH) {
- getSourceEditor().getTextViewer().getTextWidget()
- .replaceTextRange(insertionStart, insertionLength,
- ""); //$NON-NLS-1$
+ sourceEditor.getTextViewer().getTextWidget().replaceTextRange(
+ insertionStart, insertionLength, ""); //$NON-NLS-1$
} else {
// set source selection
- SelectionUtil.setSourceSelection(pageContext,
- insertionStart, insertionLength);
+ sourceEditor.getTextViewer().getTextWidget().setSelection(
+ insertionStart, insertionStart + insertionLength);
+// SelectionUtil.setSourceSelection(pageContext,
+// insertionStart, insertionLength);
}
+
}
/**
- * Inserts selected tag at the cursor.
+ * Inserts chosen tag at the cursor.
*/
private void doInsertion() {
String tagName = item.getAttributeValue("name"); //$NON-NLS-1$
@@ -175,21 +191,21 @@
* selection range after taglib insertion.
*/
String startText = Constants.EMPTY
- + item.getAttributeValue("start text"); //$NON-NLS-1$
+ + item.getAttributeValue(TLDToPaletteHelper.START_TEXT);
String endText = Constants.EMPTY
- + item.getAttributeValue("end text"); //$NON-NLS-1$
+ + item.getAttributeValue(TLDToPaletteHelper.END_TEXT);
// Gets source editor's selection provider with updated text selection.
- ISelectionProvider selProvider = sourceEditor.getSelectionProvider();
+ ISelectionProvider selectionProvider
+ = sourceEditor.getSelectionProvider();
Properties p = new Properties();
- p.setProperty("tag name", tagName); //$NON-NLS-1$
- p.setProperty("start text", startText); //$NON-NLS-1$
- p.setProperty("end text", endText); //$NON-NLS-1$
- p.setProperty("automatically reformat tag body", //$NON-NLS-1$
- item.getAttributeValue(
- "automatically reformat tag body")); //$NON-NLS-1$
+ p.setProperty(PaletteInsertHelper.PROPOPERTY_TAG_NAME, tagName);
+ p.setProperty(PaletteInsertHelper.PROPOPERTY_START_TEXT, startText);
+ p.setProperty(PaletteInsertHelper.PROPOPERTY_END_TEXT, endText);
+ p.setProperty(PaletteInsertHelper.PROPOPERTY_REFORMAT_BODY,
+ item.getAttributeValue(TLDToPaletteHelper.REFORMAT));
p.setProperty(URIConstants.LIBRARY_URI, uri);
p.setProperty(URIConstants.LIBRARY_VERSION, libraryVersion);
String addTaglib = item.getParent().getAttributeValue(
@@ -200,23 +216,15 @@
* Added by Dzmitry Sakovich Fix for JBIDE-1626
*/
// if(((Node)region).getNodeType() == Node.ELEMENT_NODE)
- p.put("selectionProvider", selProvider); //$NON-NLS-1$
+ p.put(PaletteInsertHelper.PROPOPERTY_SELECTION_PROVIDER,
+ selectionProvider);
PaletteInsertHelper.insertIntoEditor(sourceEditor.getTextViewer(), p);
}
/**
- * @return the pageContext
- */
- protected VpePageContext getPageContext() {
- return pageContext;
- }
-
- /**
* @return the sourceEditor
*/
protected StructuredTextEditor getSourceEditor() {
return sourceEditor;
}
-
-
}
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 2009-05-05
14:28:44 UTC (rev 15023)
+++
trunk/vpe/tests/org.jboss.tools.vpe.ui.test/src/org/jboss/tools/vpe/ui/test/VpeTest.java 2009-05-05
14:31:55 UTC (rev 15024)
@@ -19,6 +19,7 @@
import junit.framework.TestCase;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.ILogListener;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
@@ -331,10 +332,10 @@
* @param fileName the name of the file
*
* @return VpeController
- * @throws Throwable
+ * @throws CoreException
*/
- protected VpeController openInVpe(String projectName, String fileName)
- throws Throwable {
+ protected VpeController openInVpe(String projectName, String fileName) throws
CoreException
+ {
// get test page path
final IFile file =
(IFile) TestUtil.getComponentPath(fileName, projectName);