Skip to main content
summaryrefslogtreecommitdiffstats
path: root/jsf
diff options
context:
space:
mode:
authorcrogers2010-04-23 18:03:30 +0000
committercrogers2010-04-23 18:03:30 +0000
commit2475261b903298ce063c365be8a5271bc7a5ee17 (patch)
treeab8e52b2dd8b6bf56ed542b2b913f0a3b66dc66f /jsf
parentd0f82d193872ce61bc37915d1e4d3b3d06340872 (diff)
downloadwebtools.jsf-2475261b903298ce063c365be8a5271bc7a5ee17.tar.gz
webtools.jsf-2475261b903298ce063c365be8a5271bc7a5ee17.tar.xz
webtools.jsf-2475261b903298ce063c365be8a5271bc7a5ee17.zip
[Bug 199788] Web Page Editor doesn't allow drops in the HTML head tag.
Diffstat (limited to 'jsf')
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties2
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/single/AddSubNodeCommand.java20
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/HeadItemCreationEditPolicy.java117
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HTMLElementEditFactory.java12
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HeadElementEdit.java72
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/InsertStylesheetLinkAction.java56
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/StylesheetLinkElementEdit.java53
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java4
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/RootContainerPositionRule.java11
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java28
10 files changed, 350 insertions, 25 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties
index b8262cb8c..90f1c4d6a 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/JMTResources.properties
@@ -119,6 +119,8 @@ ElementEdit.Submenu.Taglib=Open Definition File
TableInsertHeaderFooterCommand.ColumnHeader=Column Header
TableInsertHeaderFooterCommand.ColumnFooter=Column Footer
+HeadElementEdit.Submenu.InsertStylesheetLink=Stylesheet Link
+
Action.Name.Copy=Copy
Action.Name.Cut=Cut
Action.Name.Paste=Paste
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/single/AddSubNodeCommand.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/single/AddSubNodeCommand.java
index a099b9efd..178aba7f0 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/single/AddSubNodeCommand.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/single/AddSubNodeCommand.java
@@ -14,6 +14,7 @@ package org.eclipse.jst.pagedesigner.commands.single;
import java.util.Iterator;
import java.util.Map;
+import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
import org.eclipse.jst.pagedesigner.utils.JSPUtil;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
@@ -53,16 +54,27 @@ public class AddSubNodeCommand extends SingleNodeCommand {
* @see org.eclipse.jst.pagedesigner.commands.DesignerCommand#doExecute()
*/
protected void doExecute() {
- String prefix = JSPUtil.getOrCreatePrefix(_parent.getModel(), _url,
- null);
- _child = (IDOMElement) _parent.getOwnerDocument().createElement(
- prefix + ":" + _tagName); //$NON-NLS-1$
+ String nodeName = null;
+ if (ITLDConstants.URI_HTML.equals(_url)) {
+ nodeName = _tagName;
+ } else {
+ String prefix = JSPUtil.getOrCreatePrefix(_parent.getModel(), _url, null);
+ nodeName = prefix + ":" + _tagName; //$NON-NLS-1$
+ }
+
+ _child = (IDOMElement) _parent.getOwnerDocument().createElement(nodeName);
+
+ if (_child == null) {
+ return;
+ }
+
for (Iterator iterator = _attributes.keySet().iterator(); iterator
.hasNext();) {
String key = (String) iterator.next();
String value = (String) _attributes.get(key);
_child.setAttribute(key, value);
}
+
_parent.appendChild(_child);
}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/HeadItemCreationEditPolicy.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/HeadItemCreationEditPolicy.java
new file mode 100644
index 000000000..a7de205e1
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editpolicies/HeadItemCreationEditPolicy.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * Oracle Corporation - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.editpolicies;
+
+import org.eclipse.gef.Request;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.requests.DropRequest;
+import org.eclipse.jst.pagedesigner.IHTMLConstants;
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.jst.pagedesigner.commands.CreateItemCommand;
+import org.eclipse.jst.pagedesigner.dom.DOMPosition;
+import org.eclipse.jst.pagedesigner.dom.DOMPositionHelper;
+import org.eclipse.jst.pagedesigner.dom.DOMRefPosition;
+import org.eclipse.jst.pagedesigner.dom.IDOMPosition;
+import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationEditPolicy;
+import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationRequest;
+import org.eclipse.jst.pagedesigner.parts.ElementEditPart;
+import org.eclipse.jst.pagedesigner.validation.caret.ActionData;
+import org.eclipse.jst.pagedesigner.validation.caret.DnDPositionValidator;
+import org.eclipse.jst.pagedesigner.validation.caret.DropActionData;
+import org.eclipse.jst.pagedesigner.validation.caret.IPositionMediator;
+import org.eclipse.jst.pagedesigner.validation.caret.DropActionData.DropData;
+import org.eclipse.jst.pagedesigner.viewer.DesignPosition;
+import org.w3c.dom.Node;
+
+/**
+ *
+ */
+public class HeadItemCreationEditPolicy extends ItemCreationEditPolicy {
+
+ /**
+ * @param host
+ */
+ public HeadItemCreationEditPolicy(ElementEditPart host) {
+ super();
+ setHost(host);
+ }
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#getCommand(org.eclipse.gef.Request)
+ */
+ @Override
+ public Command getCommand(Request request) {
+ if (request instanceof ItemCreationRequest) {
+ ItemCreationRequest r = (ItemCreationRequest) request;
+ DesignPosition position = findPosition((ItemCreationRequest)request);
+
+ if (position == null) {
+ return null;
+ }
+
+ IDOMPosition domposition = DOMPositionHelper.toDOMPosition(position);
+ if (domposition == null) {
+ return null;
+ }
+
+ // since the head tag is a widget, the offset will need
+ // to be updated in the position so that new node is
+ // appended to the list of children.
+ Node node = domposition.getContainerNode();
+ domposition = new DOMPosition(node, node.getChildNodes().getLength());
+
+ return new CreateItemCommand(
+ PDPlugin
+ .getResourceString("ItemCreationEditPolicy.CommandLabel.CreateItem"),//$NON-NLS-1$
+ getViewer(getHost()).getModel(), domposition, r.getTagCreationProvider());
+ }
+ return null;
+ }
+
+ @Override
+ protected IPositionMediator createDropChildValidator(DropRequest r) {
+ DropData dropData = createDropData(r);
+
+ if (dropData != null) {
+ MyDnDPositionValidator validator = new MyDnDPositionValidator(
+ new DropActionData(ActionData.PALETTE_DND, dropData));
+ return validator;
+ }
+ return null;
+ }
+
+ private static class MyDnDPositionValidator extends DnDPositionValidator {
+
+ public MyDnDPositionValidator(DropActionData dropActionData) {
+ super(dropActionData);
+ }
+
+ @Override
+ public boolean isValidPosition(IDOMPosition position) {
+ // if position is really a IDOMRefPosition, convert it to DOMPosition
+ Node node = null;
+ if (position instanceof DOMRefPosition) {
+ node = ((DOMRefPosition) position).getReferenceNode();
+ if (IHTMLConstants.TAG_HEAD.equalsIgnoreCase(node.getLocalName())) {
+ return true;
+ }
+ } else {
+ node = position.getContainerNode();
+ if (IHTMLConstants.TAG_HEAD.equalsIgnoreCase(node.getLocalName())) {
+ return true;
+ }
+ }
+
+ return super.isValidPosition(position);
+ }
+ }
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HTMLElementEditFactory.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HTMLElementEditFactory.java
index f4804c13d..2ddff0ccc 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HTMLElementEditFactory.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HTMLElementEditFactory.java
@@ -24,6 +24,8 @@ import org.eclipse.jst.pagedesigner.elementedit.IElementEditFactory;
*/
public class HTMLElementEditFactory implements IElementEditFactory
{
+ final static TagIdentifier HTMLHEAD_TAG_IDENTIFIER =
+ TagIdentifierFactory.createJSPTagWrapper(ITLDConstants.URI_HTML, IHTMLConstants.TAG_HEAD);
final static TagIdentifier HTMLTABLE_TAG_IDENTIFIER =
TagIdentifierFactory.createJSPTagWrapper(ITLDConstants.URI_HTML, IHTMLConstants.TAG_TABLE);
@@ -35,6 +37,16 @@ public class HTMLElementEditFactory implements IElementEditFactory
public IElementEdit createElementEdit(TagIdentifier tagIdentifier) {
if (HTMLTABLE_TAG_IDENTIFIER.isSameTagType(tagIdentifier)) {
return new TableElementEdit();
+ } else if (HTMLHEAD_TAG_IDENTIFIER.isSameTagType(tagIdentifier)) {
+ return new HeadElementEdit();
+ } else if (tagIdentifier != null) {
+ // No need to check the URI, it was checked to get this factory.
+ // Just check the tag name, ignoring case in the HTML tag names.
+ // The HTML tag meta data uses upper case and the programming
+ // constants are in lower case.
+ if (IHTMLConstants.TAG_LINK.equalsIgnoreCase(tagIdentifier.getTagName())) {
+ return new StylesheetLinkElementEdit();
+ }
}
return null;
}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HeadElementEdit.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HeadElementEdit.java
new file mode 100644
index 000000000..4840bbb54
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/HeadElementEdit.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * Oracle Corporation - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.elementedit.html;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jst.pagedesigner.editors.PageDesignerActionConstants;
+import org.eclipse.jst.pagedesigner.editpolicies.HeadItemCreationEditPolicy;
+import org.eclipse.jst.pagedesigner.elementedit.AbstractElementEdit;
+import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationRequest;
+import org.eclipse.jst.pagedesigner.parts.ElementEditPart;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.w3c.dom.Element;
+
+/**
+ * Simple ElementEdit implementation to support context menu insert
+ * actions and drag and drop of tags into the HTML head tag.
+ */
+public class HeadElementEdit extends AbstractElementEdit
+{
+ private static final Action EMPTY_ACTION = new Action() {
+ // create a default instance that does nothing.
+ // Action is abstract but has no abstract methods
+ // run() on this object is a NOOP
+ };
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jst.pagedesigner.elementedit.AbstractElementEdit#fillContextMenu(org.eclipse.jface.action.IMenuManager, org.w3c.dom.Element)
+ */
+ @Override
+ public void fillContextMenu(IMenuManager contextMenu, Element ele) {
+ super.fillContextMenu(contextMenu, ele);
+
+ final IDOMElement element = (IDOMElement) ele;
+ IContributionItem item = contextMenu.find(PageDesignerActionConstants.INSERT_SUBMENU_ID);
+ if (item instanceof IMenuManager) {
+ final IMenuManager submenu = (IMenuManager) item;
+ submenu.add(EMPTY_ACTION);
+ submenu.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ submenu.removeAll();
+ addHeadAddItems(submenu, element);
+ }
+ });
+ }
+ }
+
+ private void addHeadAddItems(IMenuManager submenu, IDOMElement element) {
+ submenu.add(new InsertStylesheetLinkAction(element));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jst.pagedesigner.elementedit.IElementEdit#createEditPolicies(org.eclipse.jst.pagedesigner.parts.ElementEditPart)
+ */
+ @Override
+ public void createEditPolicies(ElementEditPart part) {
+ part.installEditPolicy(ItemCreationRequest.REQ_ITEM_CREATION,
+ new HeadItemCreationEditPolicy(part));
+ }
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/InsertStylesheetLinkAction.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/InsertStylesheetLinkAction.java
new file mode 100644
index 000000000..a2c932674
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/InsertStylesheetLinkAction.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * Oracle Corporation - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.elementedit.html;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants;
+import org.eclipse.jst.pagedesigner.IHTMLConstants;
+import org.eclipse.jst.pagedesigner.PDPlugin;
+import org.eclipse.jst.pagedesigner.commands.single.AddSubNodeCommand;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+
+/**
+ */
+public class InsertStylesheetLinkAction extends Action
+{
+ private IDOMElement _parentElement;
+
+ /**
+ * @param parentElement
+ */
+ public InsertStylesheetLinkAction(IDOMElement parentElement) {
+ setText(PDPlugin.getResourceString("HeadElementEdit.Submenu.InsertStylesheetLink"));//$NON-NLS-1$
+ _parentElement = parentElement;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.action.IAction#run()
+ */
+ public void run() {
+ // TODO: figure out how to get the default attributes from
+ // the tag create metadata. Get a tag creation provider?
+ Map attributes = new LinkedHashMap();
+ attributes.put("href", ""); //$NON-NLS-1$//$NON-NLS-2$
+ attributes.put("rel", "Stylesheet"); //$NON-NLS-1$//$NON-NLS-2$
+ attributes.put("type", "text/css"); //$NON-NLS-1$//$NON-NLS-2$
+ Command command = new AddSubNodeCommand(
+ PDPlugin.getResourceString("ItemCreationEditPolicy.CommandLabel.CreateItem"),//$NON-NLS-1$
+ _parentElement, IHTMLConstants.TAG_LINK, ITLDConstants.URI_HTML,
+ attributes);
+ command.execute();
+ }
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/StylesheetLinkElementEdit.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/StylesheetLinkElementEdit.java
new file mode 100644
index 000000000..d3e4ea5a5
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/html/StylesheetLinkElementEdit.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Oracle Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * Oracle Corporation - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.elementedit.html;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
+import org.eclipse.jst.pagedesigner.IHTMLConstants;
+import org.eclipse.jst.pagedesigner.elementedit.AbstractElementEdit;
+import org.eclipse.jst.pagedesigner.validation.caret.IPositionMediator;
+import org.eclipse.jst.pagedesigner.viewer.DefaultDropLocationStrategy;
+import org.eclipse.jst.pagedesigner.viewer.DesignPosition;
+import org.eclipse.jst.pagedesigner.viewer.IDropLocationStrategy;
+import org.w3c.dom.Node;
+
+/**
+ * Simple ElementEdit implementation to support drag and drop
+ * of style sheet link tags into the HTML head tag.
+ */
+public class StylesheetLinkElementEdit extends AbstractElementEdit
+{
+ public IDropLocationStrategy getDropRequestorLocationStrategy(TagIdentifier tag, EditPartViewer viewer) {
+ return new MyDropLocationStrategy(viewer);
+ }
+
+ private static class MyDropLocationStrategy extends DefaultDropLocationStrategy
+ {
+ /**
+ * @param viewer
+ */
+ public MyDropLocationStrategy(EditPartViewer viewer) {
+ super(viewer);
+ }
+
+ public DesignPosition calculateDesignPosition(EditPart host,
+ Point p, IPositionMediator validator) {
+ Node node = (Node) host.getModel();
+ if (host != null && IHTMLConstants.TAG_HEAD.equalsIgnoreCase(node.getLocalName())) {
+ return new DesignPosition(host, 0);
+ }
+ return super.calculateDesignPosition(host, p, validator);
+ }
+ }
+}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java
index c514b42cc..42c365684 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java
@@ -83,9 +83,9 @@ public class ItemCreationEditPolicy extends DropEditPolicy
/**
* @param host
- * @return
+ * @return the graphical viewer
*/
- private IHTMLGraphicalViewer getViewer(EditPart host) {
+ protected IHTMLGraphicalViewer getViewer(EditPart host) {
return (IHTMLGraphicalViewer) ((GraphicalEditPart) host).getViewer();
}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/RootContainerPositionRule.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/RootContainerPositionRule.java
index 2901427aa..b44bdb1fe 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/RootContainerPositionRule.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/validation/caret/RootContainerPositionRule.java
@@ -14,17 +14,18 @@ package org.eclipse.jst.pagedesigner.validation.caret;
import java.util.Arrays;
import org.eclipse.gef.EditPart;
+import org.eclipse.jst.pagedesigner.IHTMLConstants;
import org.eclipse.jst.pagedesigner.dom.EditModelQuery;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
/**
- * This rule deal with containers 'body', 'view', 'subview'.
+ * This rule deal with containers 'body', 'head', 'view', 'subview'.
*
* @author mengbo
*/
public class RootContainerPositionRule extends DefaultPositionRule {
- static final String[] HTML_ROOT_CONTAINERS = { "body" }; //$NON-NLS-1$
+ static final String[] HTML_ROOT_CONTAINERS = { IHTMLConstants.TAG_BODY, IHTMLConstants.TAG_HEAD };
/**
* @param actionData
@@ -47,7 +48,7 @@ public class RootContainerPositionRule extends DefaultPositionRule {
}
Node node = target.getNode();
if (hasBasicContainers(EditModelQuery.getDocumentNode(node))) {
- return true;// isWithinkBasicContainer(node);
+ return true;// isWithinBasicContainer(node);
}
return super.hasEditableArea(target);
}
@@ -60,7 +61,7 @@ public class RootContainerPositionRule extends DefaultPositionRule {
public boolean isEditable(Target target) {
Node node = target.getNode();
if (hasBasicContainers(EditModelQuery.getDocumentNode(node))) {
- boolean result = isWithinkBasicContainer(node);
+ boolean result = isWithinBasicContainer(node);
return result;
}
return super.isEditable(target);
@@ -78,7 +79,7 @@ public class RootContainerPositionRule extends DefaultPositionRule {
}
- private static boolean isWithinkBasicContainer(Node node) {
+ private static boolean isWithinBasicContainer(Node node) {
return EditModelQuery.isChild(HTML_ROOT_CONTAINERS, node, true, false);
}
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java
index 96f275ec5..0f11741f3 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/viewer/EditPartPositionHelper.java
@@ -42,7 +42,7 @@ public class EditPartPositionHelper {
// .getLogger(EditPartPositionHelper.class);
/**
- * Add something to curent
+ * Add something to current
*
* @param lineBox
* @param host
@@ -156,9 +156,9 @@ public class EditPartPositionHelper {
}
/**
- * This function find the position, if there is one which is widget or text
- * and it contains p, or there is not such widget, then boxLine will returns
- * the widget that are in a sameline which contains p;
+ * This function finds the position, if there is one which is widget or text
+ * and it contains p, or there is not such widget, then boxLine will return
+ * the widget that are in a same line which contains p;
* @param rootHost
* @param host
*
@@ -204,7 +204,7 @@ public class EditPartPositionHelper {
}
addToCurrentLine(boxLine, host, p, validator);
} else {
- // root host. we always supporse it has editable area.
+ // root host. we always support it has editable area.
if (host == rootHost) {
if (host.getChildren().size() > 0) {
List children = host.getChildren();
@@ -228,13 +228,13 @@ public class EditPartPositionHelper {
}
// container
else {
- // cann't edit it.
+ // can't edit it.
if (!validator.hasEditableArea(target)) {
if (lPart.contains(p) && //
(validator.isValidPosition(new DesignRefPosition(
target.getPart(), true)) || //
validator.isValidPosition(new DesignRefPosition(
- target.getPart(), true)))) {
+ target.getPart(), false)))) {
return new DesignRefPosition(host, lPart
.isBeforePoint(p)
|| !lPart.atLeftPart(p));
@@ -248,7 +248,7 @@ public class EditPartPositionHelper {
(!validator.isValidPosition(new DesignRefPosition(
target.getPart(), true)) && //
!validator.isValidPosition(new DesignRefPosition(
- target.getPart(), true)))) {
+ target.getPart(), false)))) {
if (host.getChildren().size() > 0) {
List children = host.getChildren();
for (int i = 0, size = children.size(); i < size; i++) {
@@ -280,7 +280,7 @@ public class EditPartPositionHelper {
}
/**
- * similiar to findEditPartPositionConstrained, this method is used to
+ * Similar to findEditPartPositionConstrained, this method is used to
* vertically move caret.
*
* @param host
@@ -314,7 +314,7 @@ public class EditPartPositionHelper {
/**
* This method is used for move up/down, except for using tactics to deal
- * with container, this method is similiar to findEditPartPosition.
+ * with container, this method is similar to findEditPartPosition.
*
* @param rootHost
* @param host
@@ -357,7 +357,7 @@ public class EditPartPositionHelper {
}
addToCurrentLine(boxLine, host, p, validator);
} else {
- // root host. we always supporse it has editable area.
+ // root host. we always support it has editable area.
if (host == rootHost) {
if (host.getChildren().size() > 0) {
List children = host.getChildren();
@@ -380,7 +380,7 @@ public class EditPartPositionHelper {
}
// container
else {
- // cann't edit it.
+ // can't edit it.
if (!validator.hasEditableArea(target)
|| !validator.allowsMoveIn(target)) {
if (validator.canReference(target, true)
@@ -560,8 +560,8 @@ public class EditPartPositionHelper {
}
/*
- * Here we are doing something to avoid reference witespace tag. Since we
- * still need to improve whitespace tags's layout furthure more.
+ * Here we are doing something to avoid reference whitespace tag. Since we
+ * still need to improve whitespace tags's layout further more.
*/
private static EditPart getNextConcretPart(DesignPosition position,
List<Boolean> caretIsAtRightTest) {

Back to the top