Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavid_williams2005-03-15 06:02:57 +0000
committerdavid_williams2005-03-15 06:02:57 +0000
commit63f5c32d828c5bbc22bbf55072d800d48b53114d (patch)
treed0c5b62e261e8ca2ddccf7c49ab6f325384f3298
parent4da6ac01e031d1d515b67eeb1e5049dad0a005f6 (diff)
downloadwebtools.sourceediting-63f5c32d828c5bbc22bbf55072d800d48b53114d.tar.gz
webtools.sourceediting-63f5c32d828c5bbc22bbf55072d800d48b53114d.tar.xz
webtools.sourceediting-63f5c32d828c5bbc22bbf55072d800d48b53114d.zip
refactoring to move more JSP knowledge out of XML level (works not finished, but this is a start).
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java3
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java35
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java33
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java120
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java45
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java69
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java34
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java85
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java (renamed from bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/Logger.java)24
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java4
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/model/parser/XMLJSPRegionContexts.java (renamed from bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/XMLJSPRegionContexts.java)7
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java7
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java142
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java2
-rw-r--r--bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java2
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java82
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java2
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java22
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java37
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java21
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java27
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java86
-rw-r--r--bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs74
-rw-r--r--bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java20
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java2
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java78
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java27
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java3
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java28
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java4
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java49
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java6
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java3
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java16
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java14
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java305
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java164
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java3
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html8
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java3
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java2
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java33
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java121
-rw-r--r--bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java17
64 files changed, 1384 insertions, 525 deletions
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
index 460d0923af..4c0264a630 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
@@ -47,6 +47,7 @@ import org.eclipse.jst.jsp.core.internal.contentmodel.ITaglibRecord;
import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibIndex;
import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.common.contentmodel.CMDocument;
import org.eclipse.wst.common.contentmodel.CMNamedNodeMap;
import org.eclipse.wst.common.uriresolver.URIResolverPlugin;
@@ -60,7 +61,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.sse.core.util.Assert;
import org.eclipse.wst.sse.core.util.Debug;
import org.eclipse.wst.sse.core.util.StringUtils;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.uriresolver.util.URIHelper;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java
index 39c933bdf9..63ee128b2c 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java
@@ -42,7 +42,8 @@ public class PageDirectiveWatcherFactory extends PropagatingAdapterFactoryImpl i
XMLElement xmlElement = (XMLElement) target;
if (xmlElement.getNodeType() == Node.ELEMENT_NODE) {
// if (xmlElement.getNodeName() == JSP12Namespace.ElementName.DIRECTIVE_PAGE) { // not sure why identity to JSP11Namespace.ElementName.DIRECTIVE_PAGE doesn't work
- if (xmlElement.getNodeName().equals("jsp:directive.page")) { //$NON-NLS-1$
+ String nodeName = xmlElement.getNodeName();
+ if (nodeName.equals("jsp:directive.page")) { //$NON-NLS-1$
result = new PageDirectiveWatcherImpl(xmlElement);
}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java
new file mode 100644
index 0000000000..bb2879480d
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
+import org.eclipse.wst.xml.core.internal.document.AttrImpl;
+import org.w3c.dom.Document;
+
+public class AttrImplForJSP extends AttrImpl {
+
+ protected boolean isNestedLanguageOpening(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN;
+ return result;
+ }
+ protected void setOwnerDocument(Document ownerDocument) {
+ super.setOwnerDocument(ownerDocument);
+ }
+ protected void setName(String name) {
+ super.setName(name);
+ }
+ protected void setNamespaceURI(String namespaceURI) {
+ super.setNamespaceURI(namespaceURI);
+ }
+
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java
new file mode 100644
index 0000000000..2dd6446988
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
+import org.eclipse.wst.xml.core.internal.document.CommentImpl;
+import org.w3c.dom.Document;
+
+public class CommentImplForJSP extends CommentImpl {
+ protected boolean isNestedCommentClose(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE;
+ return result;
+ }
+
+ protected boolean isNestedCommentOpenClose(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN || regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE;
+ return result;
+ }
+
+ protected void setOwnerDocument(Document ownerDocument) {
+ super.setOwnerDocument(ownerDocument);
+ }
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java
new file mode 100644
index 0000000000..e32f151bbe
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.wst.html.core.document.DocumentStyleImpl;
+import org.eclipse.wst.xml.core.document.XMLModel;
+import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Comment;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+public class DOMDocumentForJSP extends DocumentStyleImpl {
+
+ /**
+ *
+ */
+ public DOMDocumentForJSP() {
+ super();
+ }
+
+ /**
+ * @param that
+ */
+ protected DOMDocumentForJSP(DocumentImpl that) {
+ super(that);
+ }
+ /**
+ * cloneNode method
+ * @return org.w3c.dom.Node
+ * @param deep boolean
+ */
+ public Node cloneNode(boolean deep) {
+ DOMDocumentForJSP cloned = new DOMDocumentForJSP(this);
+ if (deep)
+ cloned.importChildNodes(this, true);
+ return cloned;
+ }
+ /**
+ * createElement method
+ *
+ * @return org.w3c.dom.Element
+ * @param tagName
+ * java.lang.String
+ */
+ public Element createElement(String tagName) throws DOMException {
+ checkTagNameValidity(tagName);
+
+ ElementImplForJSP element = new ElementImplForJSP();
+ element.setOwnerDocument(this);
+ element.setTagName(tagName);
+ return element;
+ }
+ /**
+ * createComment method
+ *
+ * @return org.w3c.dom.Comment
+ * @param data
+ * java.lang.String
+ */
+ public Comment createComment(String data) {
+ CommentImplForJSP comment = new CommentImplForJSP();
+ comment.setOwnerDocument(this);
+ if (data != null)
+ comment.setData(data);
+ return comment;
+ }
+
+ /**
+ * createAttribute method
+ *
+ * @return org.w3c.dom.Attr
+ * @param name
+ * java.lang.String
+ */
+ public Attr createAttribute(String name) throws DOMException {
+ AttrImplForJSP attr = new AttrImplForJSP();
+ attr.setOwnerDocument(this);
+ attr.setName(name);
+ return attr;
+ }
+
+ /**
+ */
+ public Attr createAttributeNS(String uri, String name) throws DOMException {
+ AttrImplForJSP attr = new AttrImplForJSP();
+ attr.setOwnerDocument(this);
+ attr.setName(name);
+ attr.setNamespaceURI(uri);
+ return attr;
+ }
+ /**
+ * createTextNode method
+ *
+ * @return org.w3c.dom.Text
+ * @param data
+ * java.lang.String
+ */
+ public Text createTextNode(String data) {
+ TextImplForJSP text = new TextImplForJSP();
+ text.setOwnerDocument(this);
+ text.setData(data);
+ return text;
+ }
+ protected void setModel(XMLModel model) {
+ super.setModel(model);
+ }
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java
new file mode 100644
index 0000000000..f6ca49d672
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.wst.html.core.document.XMLStyleModelImpl;
+import org.eclipse.wst.xml.core.internal.document.XMLModelParser;
+import org.eclipse.wst.xml.core.internal.document.XMLModelUpdater;
+import org.w3c.dom.Document;
+
+public class DOMModelForJSP extends XMLStyleModelImpl {
+
+ /**
+ *
+ */
+ public DOMModelForJSP() {
+ super();
+ // remember, the document is created in super constructor,
+ // via internalCreateDocument
+ }
+ /**
+ * createDocument method
+ * @return org.w3c.dom.Document
+ */
+ protected Document internalCreateDocument() {
+ DOMDocumentForJSP document = new DOMDocumentForJSP();
+ document.setModel(this);
+ return document;
+ }
+ protected XMLModelParser createModelParser() {
+ return new NestedDOMModelParser(this);
+ }
+ protected XMLModelUpdater createModelUpdater() {
+ return new NestDOMModelUpdater(this);
+ }
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java
new file mode 100644
index 0000000000..ee70522368
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
+import org.eclipse.wst.html.core.document.ElementStyleImpl;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+public class ElementImplForJSP extends ElementStyleImpl {
+ /**
+ *
+ */
+ public ElementImplForJSP() {
+ super();
+ }
+
+ /**
+ * @param that
+ */
+ public ElementImplForJSP(ElementImpl that) {
+ super(that);
+ }
+
+ protected boolean isNestedEndTag(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME;
+ return result;
+ }
+
+ protected boolean isNestedClosed(String regionType) {
+ boolean result = (regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE);
+ return result;
+ }
+
+ protected boolean isNestedClosedComment(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE;
+ return result;
+ }
+
+ protected boolean isClosedNestedDirective(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE;
+ return result;
+ }
+
+ protected void setOwnerDocument(Document ownerDocument) {
+ super.setOwnerDocument(ownerDocument);
+ }
+
+ protected void setTagName(String tagName) {
+ super.setTagName(tagName);
+ }
+ public Node cloneNode(boolean deep) {
+ ElementImpl cloned = new ElementImplForJSP(this);
+ if (deep)
+ cloneChildNodes(cloned, deep);
+ return cloned;
+ }
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java
new file mode 100644
index 0000000000..ad7852e546
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
+import org.eclipse.wst.xml.core.internal.document.XMLModelImpl;
+import org.eclipse.wst.xml.core.internal.document.XMLModelUpdater;
+
+
+public class NestDOMModelUpdater extends XMLModelUpdater {
+
+ /**
+ * @param model
+ */
+ public NestDOMModelUpdater(XMLModelImpl model) {
+ super(model);
+ }
+
+ protected boolean isNestedTagClose(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE;
+ return result;
+ }
+
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java
new file mode 100644
index 0000000000..2b7673e0ba
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
+import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
+import org.eclipse.wst.sse.core.text.ITextRegion;
+import org.eclipse.wst.xml.core.document.JSPTag;
+import org.eclipse.wst.xml.core.internal.document.XMLModelImpl;
+import org.eclipse.wst.xml.core.internal.document.XMLModelParser;
+
+public class NestedDOMModelParser extends XMLModelParser {
+
+ /**
+ * @param model
+ */
+ public NestedDOMModelParser(XMLModelImpl model) {
+ super(model);
+ }
+
+ protected boolean isNestedCommentOpen(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN;
+ return result;
+ }
+
+ protected boolean isNestedCommentText(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_TEXT;
+ return result;
+ }
+
+ protected boolean isNestedContent(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_CONTENT;
+ return result;
+ }
+
+ protected boolean isNestedTag(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == XMLJSPRegionContexts.JSP_CLOSE;
+ return result;
+ }
+
+ protected boolean isNestedTagName(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME;
+ return result;
+ }
+ protected boolean isNestedTagOpen(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN;
+ return result;
+ }
+ protected String computeNestedTag(String regionType, String tagName, IStructuredDocumentRegion structuredDocumentRegion, ITextRegion region) {
+ String resultTagName = tagName;
+ if (regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
+ resultTagName = JSPTag.JSP_SCRIPTLET;
+ }
+ else if (regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) {
+ resultTagName = JSPTag.JSP_EXPRESSION;
+ }
+ else if (regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN) {
+ resultTagName = JSPTag.JSP_DECLARATION;
+ }
+ else if (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) {
+ resultTagName = JSPTag.JSP_DIRECTIVE;
+ }
+ else if (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) {
+ resultTagName += '.';
+ resultTagName += structuredDocumentRegion.getText(region);
+ }
+ return resultTagName;
+ }
+
+ protected boolean isNestedTagClose(String regionType) {
+ boolean result = regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE;
+ return result;
+ }
+
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/Logger.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java
index 82641dc5bc..b682cacd3c 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/Logger.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java
@@ -9,14 +9,20 @@
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
-package org.eclipse.jst.jsp.core;
-/**
- * @deprecated moved to internal package because only this plugin should be
- * using this Logger class.
- *
- * will be removed in M4
- */
-public class Logger extends org.eclipse.jst.jsp.core.internal.Logger {
- // see org.eclipse.jst.jsp.core.internal.Logger
+package org.eclipse.jst.jsp.core.internal.domdocument;
+
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
+import org.eclipse.wst.xml.core.internal.document.TextImpl;
+import org.w3c.dom.Document;
+
+public class TextImplForJSP extends TextImpl {
+ protected boolean isNotNestedContent(String regionType) {
+ boolean result = regionType != XMLJSPRegionContexts.JSP_CONTENT;
+ return result;
+ }
+ protected void setOwnerDocument(Document ownerDocument) {
+ super.setOwnerDocument(ownerDocument);
+ }
+
}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java
index f5e2241a6b..2e3d932c27 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java
@@ -10,9 +10,9 @@
*******************************************************************************/
package org.eclipse.jst.jsp.core.internal.java;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
index 802845fa28..8bcaa330c9 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
@@ -34,6 +34,7 @@ import org.eclipse.jst.jsp.core.contentmodel.tld.TLDVariable;
import org.eclipse.jst.jsp.core.internal.Logger;
import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.common.contentmodel.CMDocument;
import org.eclipse.wst.common.contentmodel.CMNamedNodeMap;
import org.eclipse.wst.common.contentmodel.CMNode;
@@ -51,7 +52,6 @@ import org.eclipse.wst.sse.core.util.StringUtils;
import org.eclipse.wst.sse.core.util.URIResolver;
import org.eclipse.wst.xml.core.document.XMLModel;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
index 8bd5363468..a0cef1a015 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
@@ -21,6 +21,7 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jst.jsp.core.internal.Logger;
import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.common.contentmodel.CMDocument;
import org.eclipse.wst.common.contentmodel.CMNode;
import org.eclipse.wst.sse.core.parser.BlockMarker;
@@ -29,7 +30,6 @@ import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.util.Debug;
import org.eclipse.wst.sse.core.util.StringUtils;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java
index 74f27c50bc..9cedd84629 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java
@@ -15,6 +15,7 @@ import java.util.Iterator;
import org.eclipse.jst.jsp.core.JSP12Namespace;
import org.eclipse.jst.jsp.core.contentmodel.tld.JSP11TLDNames;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.events.StructuredDocumentEvent;
import org.eclipse.wst.sse.core.exceptions.SourceEditingRuntimeException;
import org.eclipse.wst.sse.core.internal.text.CoreNodeList;
@@ -28,7 +29,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionContainer;
import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.sse.core.util.Debug;
import org.eclipse.wst.xml.core.internal.parser.XMLStructuredDocumentReParser;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
public class JSPReParser extends XMLStructuredDocumentReParser {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
index 883637046a..8011160823 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
@@ -16,6 +16,7 @@ import java.util.List;
import org.eclipse.jst.jsp.core.JSP12Namespace;
import org.eclipse.jst.jsp.core.contentmodel.tld.JSP12TLDNames;
import org.eclipse.jst.jsp.core.internal.parser.internal.JSPTokenizer;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.internal.text.IRegionComparible;
import org.eclipse.wst.sse.core.parser.BlockTokenizer;
import org.eclipse.wst.sse.core.parser.JSPCapableParser;
@@ -32,7 +33,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.sse.core.util.Debug;
import org.eclipse.wst.sse.core.util.StringUtils;
import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
/**
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java
index 14c27911e2..4ce1d19ef3 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java
@@ -11,9 +11,9 @@
package org.eclipse.jst.jsp.core.internal.parser.internal;
import org.eclipse.jst.jsp.core.internal.parser.JSPCodeRegion;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.xml.core.internal.parser.regions.XMLParserRegionFactory;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
/**
*
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
index bed904d50b..6d4376e77b 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
@@ -20,6 +20,7 @@ import java.util.Iterator;
import java.util.List;
import org.eclipse.jst.jsp.core.internal.Logger;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.parser.BlockMarker;
import org.eclipse.wst.sse.core.parser.BlockTokenizer;
import org.eclipse.wst.sse.core.parser.TagMarker;
@@ -29,7 +30,6 @@ import org.eclipse.wst.sse.core.util.Debug;
import org.eclipse.wst.sse.core.util.StringUtils;
import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer;
import org.eclipse.wst.xml.core.internal.parser.IntStack;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
/**
@@ -873,7 +873,7 @@ public class JSPTokenizer implements BlockTokenizer, XMLJSPRegionContexts {
private JSPParserRegionFactory fRegionFactory = new JSPParserRegionFactory();
- private static final String rcsver = "$Id: JSPTokenizer.java,v 1.4 2005/01/27 21:53:57 nitind Exp $";//$NON-NLS-1$
+ private static final String rcsver = "$Id: JSPTokenizer.java,v 1.5 2005/03/15 06:02:54 david_williams Exp $";//$NON-NLS-1$
/**
* user method
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java
index 146e6e54ba..9797cd105c 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java
@@ -10,10 +10,10 @@
*******************************************************************************/
package org.eclipse.jst.jsp.core.internal.tasks;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.xml.core.builder.delegates.XMLTaskTagSeeker;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
public class JSPTaskTagSeeker extends XMLTaskTagSeeker {
protected boolean isCommentRegion(IStructuredDocumentRegion region, ITextRegion textRegion) {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java
index 0d31501315..75ad1010e8 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java
@@ -23,6 +23,7 @@ import org.eclipse.jst.jsp.core.JSP12Namespace;
import org.eclipse.jst.jsp.core.contentmodel.tld.JSP12TLDNames;
import org.eclipse.jst.jsp.core.encoding.JSPDocumentHeadContentDetector;
import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.html.core.internal.text.rules.StructuredTextPartitionerForHTML;
import org.eclipse.wst.sse.core.internal.parser.ForeignRegion;
import org.eclipse.wst.sse.core.parser.StructuredDocumentRegionHandler;
@@ -35,7 +36,6 @@ import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.sse.core.text.rules.StructuredTextPartitioner;
import org.eclipse.wst.sse.core.util.StringUtils;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.core.text.rules.StructuredTextPartitionerForXML;
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/XMLJSPRegionContexts.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/model/parser/XMLJSPRegionContexts.java
index 9a1d66dac3..5e098db378 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/XMLJSPRegionContexts.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/model/parser/XMLJSPRegionContexts.java
@@ -10,16 +10,13 @@
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
-package org.eclipse.wst.xml.core.jsp.model.parser.temp;
+package org.eclipse.jst.jsp.core.model.parser;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
/**
- * //TODO
- *
- * @deprecated - marked as deprecated to warn of pending changes. See the
- * package.html file for full explanation.
+ *
*/
public interface XMLJSPRegionContexts extends XMLRegionContext {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java
index 0b30a09810..7180278a8b 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java
@@ -23,12 +23,12 @@ import org.eclipse.jst.jsp.core.encoding.JSPDocumentHeadContentDetector;
import org.eclipse.jst.jsp.core.encoding.JSPDocumentLoader;
import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory;
import org.eclipse.jst.jsp.core.internal.document.PageDirectiveWatcherFactory;
+import org.eclipse.jst.jsp.core.internal.domdocument.DOMModelForJSP;
import org.eclipse.jst.jsp.core.internal.parser.JSPReParser;
import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP;
import org.eclipse.jst.jsp.core.modelquery.ModelQueryAdapterFactoryForJSP;
import org.eclipse.wst.html.core.contenttype.ContentTypeIdForHTML;
-import org.eclipse.wst.html.core.document.XMLStyleModelImpl;
import org.eclipse.wst.html.core.internal.text.rules.StructuredTextPartitionerForHTML;
import org.eclipse.wst.sse.core.AbstractModelLoader;
import org.eclipse.wst.sse.core.AdapterFactory;
@@ -85,10 +85,7 @@ public class JSPModelLoader extends AbstractModelLoader {
}
public IStructuredModel newModel() {
- // future_TODO: this is similar to "hard coding"
- // that HTML will be in JSP file ... should make more
- // flexible in future.
- XMLStyleModelImpl model = new XMLStyleModelImpl();
+ DOMModelForJSP model = new DOMModelForJSP();
return model;
}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java
index 5511d05ad5..436ca01573 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java
@@ -16,12 +16,12 @@ import org.eclipse.jst.jsp.core.encoding.JSPDocumentLoader;
import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
import org.eclipse.jst.jsp.core.internal.document.DocumentLoaderForJSP;
import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.ModelLoader;
import org.eclipse.wst.sse.core.document.IDocumentCharsetDetector;
import org.eclipse.wst.sse.core.document.IDocumentLoader;
import org.eclipse.wst.sse.core.modelhandler.AbstractModelHandler;
import org.eclipse.wst.sse.core.parser.BlockMarker;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
public class ModelHandlerForJSP extends AbstractModelHandler {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java
index 82ddc2406f..adb4d244ef 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.jst.jsp.ui;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.xml.ui.XMLSpellCheckTarget;
/**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java
index c53da7f7a1..5abe8c97e8 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java
@@ -16,6 +16,7 @@ import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jst.jsp.core.JSP12Namespace;
import org.eclipse.jst.jsp.core.contentmodel.tld.TLDElementDeclaration;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.ui.IEditorInput;
import org.eclipse.wst.common.contentmodel.CMElementDeclaration;
import org.eclipse.wst.common.contentmodel.CMNode;
@@ -30,7 +31,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionCollection;
import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.sse.ui.extensions.breakpoint.IBreakpointProvider;
import org.eclipse.wst.xml.core.document.XMLDocument;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Document;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java
index 79c410b286..22b75080fe 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java
@@ -27,6 +27,7 @@ import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.jst.jsp.ui.internal.Logger;
import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
@@ -37,7 +38,6 @@ import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
import org.eclipse.wst.xml.core.document.XMLDocument;
import org.eclipse.wst.xml.core.document.XMLModel;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleException;
@@ -48,12 +48,12 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
// for debugging
private static final boolean DEBUG;
static {
- String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$
- DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
+ String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$
+ DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
}
-
+
private static final String JDT_CORE_PLUGIN_ID = "org.eclipse.jdt.core"; //$NON-NLS-1$
-
+
protected int fJspSourcePosition, fJavaPosition;
protected IResource fResource;
protected JSPCompletionRequestor fCollector;
@@ -66,43 +66,48 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
}
/**
- * Returns a list of completion proposals based on the
- * specified location within the document that corresponds
- * to the current cursor position within the text viewer.
- *
- * @param viewer the viewer whose document is used to compute the proposals
- * @param documentPosition an offset within the document for which completions should be computed
- * @return an array of completion proposals or <code>null</code> if no proposals are possible
+ * Returns a list of completion proposals based on the specified location
+ * within the document that corresponds to the current cursor position
+ * within the text viewer.
+ *
+ * @param viewer
+ * the viewer whose document is used to compute the proposals
+ * @param documentPosition
+ * an offset within the document for which completions should
+ * be computed
+ * @return an array of completion proposals or <code>null</code> if no
+ * proposals are possible
*/
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int pos) {
initialize(pos);
+ XMLModel xmlModel = null;
try {
if (viewer instanceof StructuredTextViewer)
fViewer = (StructuredTextViewer) viewer;
- XMLModel xmlModel = (XMLModel) StructuredModelManager.getModelManager().getExistingModelForRead(fViewer.getDocument());
+ xmlModel = (XMLModel) StructuredModelManager.getModelManager().getExistingModelForRead(fViewer.getDocument());
+
XMLDocument xmlDoc = xmlModel.getDocument();
- xmlModel.releaseFromRead();
if (fTranslationAdapter == null)
fTranslationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
if (fTranslationAdapter != null) {
-
+
JSPTranslation translation = fTranslationAdapter.getJSPTranslation();
fJavaPosition = translation.getJavaOffset(getDocumentPosition());
-
- fCollector.setCodeAssistOffset(fJavaPosition);
- fCollector.setJavaToJSPOffset(fJspSourcePosition - fJavaPosition);
- fCollector.setCursorInExpression(cursorInExpression());
-
+
+ fCollector.setCodeAssistOffset(fJavaPosition);
+ fCollector.setJavaToJSPOffset(fJspSourcePosition - fJavaPosition);
+ fCollector.setCursorInExpression(cursorInExpression());
+
if (DEBUG)
System.out.println(debug(translation));
try {
-
+
ICompilationUnit cu = translation.getCompilationUnit();
fCollector.setCompilationUnit(cu);
-
+
// can't get java proposals w/out a compilation unit
if (cu == null)
return new ICompletionProposal[0];
@@ -112,7 +117,8 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
}
}
catch (CoreException coreEx) {
- // a possible Java Model Exception due to not being a Web (Java) Project
+ // a possible Java Model Exception due to not being a Web
+ // (Java) Project
coreEx.printStackTrace();
}
}
@@ -121,7 +127,11 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
exc.printStackTrace();
// throw out exceptions on code assist.
}
-
+ finally {
+ if (xmlModel != null) {
+ xmlModel.releaseFromRead();
+ }
+ }
ICompletionProposal[] results = fCollector.getResults();
if (results == null || results.length < 1)
fErrorMessage = SSEUIPlugin.getResourceString("%Java_Content_Assist_is_not_UI_"); //$NON-NLS-1$ = "Java Content Assist is not available for the current cursor location"
@@ -131,6 +141,7 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
/**
* For debugging translation mapping only.
+ *
* @param translation
*/
private String debug(JSPTranslation translation) {
@@ -166,33 +177,38 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
XMLNode xmlNode = null;
xmlModel.releaseFromRead();
xmlNode = (XMLNode) xmlModel.getIndexedRegion(fJspSourcePosition);
- if(xmlNode != null) {
- XMLNode parent = (XMLNode)xmlNode.getParentNode();
- if(parent != null) {
- sdRegion = parent.getFirstStructuredDocumentRegion();
- inExpression = sdRegion != null && (sdRegion.getType() == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || sdRegion.getType() == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN);
- }
- }
+ if (xmlNode != null) {
+ XMLNode parent = (XMLNode) xmlNode.getParentNode();
+ if (parent != null) {
+ sdRegion = parent.getFirstStructuredDocumentRegion();
+ inExpression = sdRegion != null && (sdRegion.getType() == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || sdRegion.getType() == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN);
+ }
+ }
return inExpression;
}
/**
- * Returns information about possible contexts based on the
- * specified location within the document that corresponds
- * to the current cursor position within the text viewer.
- *
- * @param viewer the viewer whose document is used to compute the possible contexts
- * @param documentPosition an offset within the document for which context information should be computed
- * @return an array of context information objects or <code>null</code> if no context could be found
+ * Returns information about possible contexts based on the specified
+ * location within the document that corresponds to the current cursor
+ * position within the text viewer.
+ *
+ * @param viewer
+ * the viewer whose document is used to compute the possible
+ * contexts
+ * @param documentPosition
+ * an offset within the document for which context information
+ * should be computed
+ * @return an array of context information objects or <code>null</code>
+ * if no context could be found
*/
public org.eclipse.jface.text.contentassist.IContextInformation[] computeContextInformation(org.eclipse.jface.text.ITextViewer viewer, int documentOffset) {
return null;
}
/**
- * Returns a string of characters which when pressed should
- * automatically display content-assist proposals.
- *
+ * Returns a string of characters which when pressed should automatically
+ * display content-assist proposals.
+ *
* @return string of characters
*/
public java.lang.String getAutoProposalInvocationCharacters() {
@@ -200,9 +216,9 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
}
/**
- * Returns a string of characters which when pressed should
- * automatically display a content-assist tip.
- *
+ * Returns a string of characters which when pressed should automatically
+ * display a content-assist tip.
+ *
* @return string of characters
*/
public java.lang.String getAutoTipInvocationCharacters() {
@@ -212,9 +228,9 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
/**
* Returns the characters which when entered by the user should
* automatically trigger the presentation of possible completions.
- *
- * @return the auto activation characters for completion proposal or <code>null</code>
- * if no auto activation is desired
+ *
+ * @return the auto activation characters for completion proposal or
+ * <code>null</code> if no auto activation is desired
*/
public char[] getCompletionProposalAutoActivationCharacters() {
return null;
@@ -223,21 +239,22 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
/**
* Returns the characters which when entered by the user should
* automatically trigger the presentation of context information.
- *
- * @return the auto activation characters for presenting context information
- * or <code>null</code> if no auto activation is desired
+ *
+ * @return the auto activation characters for presenting context
+ * information or <code>null</code> if no auto activation is
+ * desired
*/
public char[] getContextInformationAutoActivationCharacters() {
return null;
}
/**
- * Returns a validator used to determine when displayed context information
- * should be dismissed. May only return <code>null</code> if the processor is
- * incapable of computing context information.
- *
- * @return a context information validator, or <code>null</code> if the processor
- * is incapable of computing context information
+ * Returns a validator used to determine when displayed context
+ * information should be dismissed. May only return <code>null</code> if
+ * the processor is incapable of computing context information.
+ *
+ * @return a context information validator, or <code>null</code> if the
+ * processor is incapable of computing context information
*/
public org.eclipse.jface.text.contentassist.IContextInformationValidator getContextInformationValidator() {
return null;
@@ -248,9 +265,10 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
}
public String getErrorMessage() {
- // TODO:
-// if (fCollector.getErrorMessage() != null && fCollector.getErrorMessage().length() > 0)
-// return fCollector.getErrorMessage();
+ // TODO:
+ // if (fCollector.getErrorMessage() != null &&
+ // fCollector.getErrorMessage().length() > 0)
+ // return fCollector.getErrorMessage();
return fErrorMessage;
}
@@ -272,7 +290,7 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
initializeJavaPlugins();
// fCollector = new JSPResultCollector();
- fCollector = new JSPCompletionRequestor();
+ fCollector = new JSPCompletionRequestor();
fJspSourcePosition = pos;
fErrorMessage = null;
}
@@ -290,7 +308,9 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see com.ibm.sse.editor.IReleasable#release()
*/
public void release() {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java
index c7231fb627..bece5cbf1a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java
@@ -36,6 +36,7 @@ import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory;
import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
import org.eclipse.jst.jsp.ui.internal.Logger;
import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames;
@@ -82,7 +83,6 @@ import org.eclipse.wst.sse.ui.registry.AdapterFactoryRegistry;
import org.eclipse.wst.xml.core.document.XMLModel;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.core.text.rules.StructuredTextPartitionerForXML;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java
index 228c937498..36626e2c61 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java
@@ -21,6 +21,7 @@ import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.IndexedRegion;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
@@ -33,7 +34,6 @@ import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils;
import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.ui.contentassist.XMLRelevanceConstants;
import org.eclipse.wst.xml.ui.util.SharedXMLEditorPluginImageHelper;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java
index 7d5db175a9..178993dfbd 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java
@@ -22,6 +22,7 @@ import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jst.jsp.core.JSP11Namespace;
import org.eclipse.jst.jsp.core.JSP12Namespace;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.swt.graphics.Image;
import org.eclipse.wst.sse.core.text.IStructuredDocument;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
@@ -30,7 +31,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.sse.core.util.StringUtils;
import org.eclipse.wst.sse.ui.contentassist.IRelevanceCompletionProposal;
import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
/**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java
index e43b47f98e..3e3bf10174 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java
@@ -14,12 +14,12 @@ import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jst.jsp.core.JSP11Namespace;
import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.html.core.internal.text.rules.StructuredTextPartitionerForHTML;
import org.eclipse.wst.html.ui.internal.contentassist.NoRegionContentAssistProcessorForHTML;
import org.eclipse.wst.sse.core.text.IStructuredDocument;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.rules.StructuredTextPartitioner;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.text.rules.StructuredTextPartitionerForXML;
/**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java
index c24bc2d48b..a0283832e2 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java
@@ -19,6 +19,7 @@ import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.search.ui.ISearchQuery;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.texteditor.ITextEditor;
@@ -27,7 +28,6 @@ import org.eclipse.wst.sse.ui.StructuredTextEditor;
import org.eclipse.wst.sse.ui.internal.search.BasicFindOccurrencesAction;
import org.eclipse.wst.xml.core.document.XMLDocument;
import org.eclipse.wst.xml.core.document.XMLModel;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
/**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java
index 00c0cb015e..9f7fe48295 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java
@@ -23,6 +23,7 @@ import org.eclipse.jface.text.reconciler.IReconcileStep;
import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.core.IStructuredModel;
import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.core.text.IStructuredDocument;
@@ -35,7 +36,6 @@ import org.eclipse.wst.sse.ui.internal.reconcile.StructuredReconcileStep;
import org.eclipse.wst.sse.ui.internal.reconcile.TemporaryAnnotation;
import org.eclipse.wst.xml.core.document.XMLDocument;
import org.eclipse.wst.xml.core.document.XMLModel;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
/**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java
index b7a90eec23..803ee62af1 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java
@@ -17,6 +17,7 @@ import java.util.Iterator;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jst.jsp.core.contenttype.ContentTypeIdForJSP;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds;
import org.eclipse.swt.widgets.Composite;
@@ -28,7 +29,6 @@ import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore;
import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey;
import org.eclipse.wst.sse.ui.preferences.ui.StyledTextColorPicker;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.ui.preferences.XMLColorPage;
import org.eclipse.wst.xml.ui.style.IStyleConstantsXML;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java
index 51016182cb..94e02232d1 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java
@@ -13,12 +13,12 @@ package org.eclipse.jst.jsp.ui.style;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
import org.eclipse.wst.html.ui.style.IStyleConstantsHTML;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.ui.style.AbstractLineStyleProvider;
import org.eclipse.wst.sse.ui.style.LineStyleProvider;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.ui.style.IStyleConstantsXML;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java
index 40a96a5696..dc8689ba98 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java
@@ -12,12 +12,12 @@ package org.eclipse.jst.jsp.ui.taginfo;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.html.ui.taginfo.HTMLTagInfoHoverProcessor;
import org.eclipse.wst.sse.core.IndexedRegion;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
/**
* Provides hover help documentation for JSP tags
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java
index 5d4d384181..dab2eaa71c 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java
@@ -11,8 +11,8 @@
package org.eclipse.jst.jsp.ui.text;
import org.eclipse.jdt.internal.ui.text.JavaPairMatcher;
+import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts;
import org.eclipse.wst.sse.ui.text.DocumentRegionEdgeMatcher;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
public class JSPDocumentRegionEdgeMatcher extends DocumentRegionEdgeMatcher {
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java
index 0935e7dd96..c1d0eb9505 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java
@@ -16,7 +16,6 @@ import org.eclipse.wst.sse.core.cleanup.IStructuredCleanupHandler;
import org.eclipse.wst.sse.core.cleanup.IStructuredCleanupPreferences;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Node;
@@ -24,6 +23,8 @@ import org.w3c.dom.Node;
class HTMLCleanupHandlerFactory {
+
+
private static HTMLCleanupHandlerFactory fInstance = null;
static synchronized HTMLCleanupHandlerFactory getInstance() {
@@ -41,26 +42,23 @@ class HTMLCleanupHandlerFactory {
short nodeType = node.getNodeType();
IStructuredCleanupHandler handler = null;
switch (nodeType) {
- case Node.ELEMENT_NODE :
- {
- if (isJSPTag(node))
- handler = new JSPElementNodeCleanupHandler();
- else
- handler = new ElementNodeCleanupHandler();
- break;
- }
- case Node.TEXT_NODE :
- {
- if (isParentStyleTag(node))
- handler = new CSSTextNodeCleanupHandler();
- else
- handler = new NodeCleanupHandler();
- break;
- }
- default :
- {
+ case Node.ELEMENT_NODE : {
+ if (isJSPTag(node))
+ handler = new JSPElementNodeCleanupHandler();
+ else
+ handler = new ElementNodeCleanupHandler();
+ break;
+ }
+ case Node.TEXT_NODE : {
+ if (isParentStyleTag(node))
+ handler = new CSSTextNodeCleanupHandler();
+ else
handler = new NodeCleanupHandler();
- }
+ break;
+ }
+ default : {
+ handler = new NodeCleanupHandler();
+ }
}
handler.setCleanupPreferences(cleanupPreferences);
@@ -68,20 +66,50 @@ class HTMLCleanupHandlerFactory {
return handler;
}
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on "nestedContext".
+ */
+
private boolean isJSPTag(Node node) {
+
+ final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$
+ // final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$
+
+ // final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$
+ // final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$
+
+ final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$
+ final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$
+ final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$
+ final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$
+
+ final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$
+ final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$
+
+ // final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$
+
+ final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$
+
boolean result = false;
if (node instanceof XMLNode) {
IStructuredDocumentRegion flatNode = ((XMLNode) node).getFirstStructuredDocumentRegion();
- // in some cases, the nodes exists, but hasn't been associated with
- // a flatnode yet (the screen updates can be initiated on a different thread,
- // so the request for a flatnode can come in before the node is fully formed.
- // if the flatnode is null, we'll just allow the defaults to apply.
- // (html adapter in this case).
+ // in some cases, the nodes exists, but hasn't been associated
+ // with
+ // a flatnode yet (the screen updates can be initiated on a
+ // different thread,
+ // so the request for a flatnode can come in before the node is
+ // fully formed.
+ // if the flatnode is null, we'll just allow the defaults to
+ // apply.
if (flatNode != null) {
String flatNodeType = flatNode.getType();
- if ((flatNodeType == XMLJSPRegionContexts.JSP_CONTENT) || (flatNodeType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_CLOSE)) {
- result = true;
+ // should not be null, but just to be sure
+ if (flatNodeType != null) {
+ if ((flatNodeType.equals(JSP_CONTENT)) || (flatNodeType.equals(JSP_EXPRESSION_OPEN)) || (flatNodeType.equals(JSP_SCRIPTLET_OPEN)) || (flatNodeType.equals(JSP_DECLARATION_OPEN)) || (flatNodeType.equals(JSP_DIRECTIVE_CLOSE)) || (flatNodeType.equals(JSP_DIRECTIVE_NAME)) || (flatNodeType.equals(JSP_DIRECTIVE_OPEN)) || (flatNodeType.equals(JSP_CLOSE))) {
+ result = true;
+ }
}
}
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java
index 77b9001c58..def25572b1 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java
@@ -39,7 +39,7 @@ public class DocumentStyleImpl extends DocumentImpl implements XMLDocument, Docu
super();
}
- public DocumentStyleImpl(DocumentImpl that) {
+ protected DocumentStyleImpl(DocumentImpl that) {
super(that);
}
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java
index a509467ea3..4ef5276e38 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java
@@ -22,7 +22,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.xml.core.document.TagAdapter;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLModel;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
/**
@@ -66,7 +65,7 @@ public class MetaDataAdapter implements TagAdapter, MetaData {
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == XMLJSPRegionContexts.JSP_COMMENT_TEXT) {
+ if (isCommentText(regionType)) {
data = flatNode.getText(region);
break;
}
@@ -91,8 +90,27 @@ public class MetaDataAdapter implements TagAdapter, MetaData {
return data.substring(offset);
}
+ private boolean isCommentText(String regionType) {
+ boolean result = false;
+ result = isDOMComment(regionType) || isNestedContentComment(regionType);
+ return result;
+ }
+
/**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
*/
+
+ private boolean isNestedContentComment(String regionType) {
+ final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$
+ return regionType.equals(JSP_COMMENT_TEXT);
+ }
+
+ private boolean isDOMComment(String regionType) {
+ return regionType == XMLRegionContext.XML_COMMENT_TEXT;
+ }
+
public String getData() {
if (this.element == null)
return null;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java
index 983ba21ad2..f219d94021 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java
@@ -25,14 +25,13 @@ import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.eclipse.wst.xml.core.format.IStructuredFormatPreferencesXML;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Attr;
import org.w3c.dom.NamedNodeMap;
// nakamori_TODO: check and remove CSS formatting
-public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionContext, XMLJSPRegionContexts {
+public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionContext {
/**
*/
@@ -79,19 +78,19 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont
if (region == null)
continue;
String regionType = region.getType();
- if (regionType == XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) {
+ if (regionType == XML_TAG_NAME || isNestedTag(regionType)) {
if (prevRegion != null && prevRegion.getType() == XML_END_TAG_OPEN) {
removeTailingSpaces(endStructuredDocumentRegion, prevRegion);
}
}
else if (regionType == XML_TAG_CLOSE) {
- if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || prevRegion.getType() == JSP_ROOT_TAG_NAME)) {
+ if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || isNestedRootTag(prevRegion.getType()))) {
removeTailingSpaces(endStructuredDocumentRegion, prevRegion);
}
}
prevRegion = region;
}
- if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || prevRegion.getType() == JSP_ROOT_TAG_NAME)) {
+ if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || isNestedRootTag(prevRegion.getType()))) {
removeTailingSpaces(endStructuredDocumentRegion, prevRegion);
}
@@ -123,7 +122,7 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont
return;
// We should format attributes in JSPTag?
- //if (element.isJSPTag() || element.isCommentTag()) {
+ // if (element.isJSPTag() || element.isCommentTag()) {
if (element.isCommentTag()) {
String startTag = startStructuredDocumentRegion.getText();
if (startTag != null && startTag.length() > 0) {
@@ -164,7 +163,7 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont
ITextRegion breakRegion = null;
String regionType = region.getType();
- if (regionType == XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) {
+ if (regionType == XML_TAG_NAME || isNestedTag(regionType)) {
if (prevRegion != null && prevRegion.getType() == XML_TAG_OPEN) {
removeTailingSpaces(startStructuredDocumentRegion, prevRegion);
}
@@ -256,6 +255,30 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont
}
/**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
+ */
+ private boolean isNestedTag(String regionType) {
+ final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$
+ final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$
+ boolean result = regionType.equals(JSP_ROOT_TAG_NAME) || regionType.equals(JSP_DIRECTIVE_NAME);
+ return result;
+ }
+
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
+ */
+ private boolean isNestedRootTag(String regionType) {
+ final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$
+ boolean result = regionType.equals(JSP_ROOT_TAG_NAME);
+ return result;
+ }
+
+
+ /**
*/
private void formatStyleAttr(Attr attr) {
if (attr == null)
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java
index dd0650abfb..167fcf3c9b 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java
@@ -19,7 +19,6 @@ import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.eclipse.wst.xml.core.document.XMLText;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -45,7 +44,7 @@ public class HTMLTextFormatter extends HTMLFormatter {
IStructuredDocumentRegion flatNode = text.getFirstStructuredDocumentRegion();
if (flatNode != null) {
String type = flatNode.getType();
- if (type == XMLJSPRegionContexts.JSP_CONTENT || type == XMLRegionContext.BLOCK_TEXT)
+ if (isUnparsedRegion(type))
return false;
}
@@ -59,6 +58,24 @@ public class HTMLTextFormatter extends HTMLFormatter {
return canFormatChild(parent);
}
+ private boolean isUnparsedRegion(String type) {
+ boolean result = isNestedScannedRegion(type) || isBlockScannedRegion(type);
+ return result;
+ }
+
+ private boolean isBlockScannedRegion(String type) {
+ return type == XMLRegionContext.BLOCK_TEXT;
+ }
+
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on "nestedContext".
+ */
+ private boolean isNestedScannedRegion(String type) {
+ final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$
+ return type.equals(JSP_CONTENT);
+ }
+
/**
*/
private boolean canRemoveHeadingSpaces(XMLNode node) {
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java
index da4f240415..3eeacbd57e 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java
@@ -12,15 +12,8 @@ package org.eclipse.wst.html.core.validate;
-import java.util.Iterator;
-
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.text.ITextRegion;
-import org.eclipse.wst.sse.core.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
-import org.eclipse.wst.xml.core.parser.XMLRegionContext;
final class FMUtil {
@@ -81,23 +74,5 @@ final class FMUtil {
return seg;
}
- /**
- */
- public final static boolean hasJSPRegion(ITextRegion container) {
- if (!(container instanceof ITextRegionContainer))
- return false;
- ITextRegionList regions = ((ITextRegionContainer) container).getRegions();
- if (regions == null)
- return false;
- Iterator e = regions.iterator();
- while (e.hasNext()) {
- ITextRegion region = (ITextRegion) e.next();
- if (region == null)
- continue;
- String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_TAG_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN)
- return true;
- }
- return false;
- }
+
} \ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java
index a57a30720d..e392193d3f 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java
@@ -12,15 +12,20 @@ package org.eclipse.wst.html.core.validate;
+import java.util.Iterator;
+
import org.eclipse.wst.common.contentmodel.CMAttributeDeclaration;
import org.eclipse.wst.common.contentmodel.CMDataType;
import org.eclipse.wst.common.contentmodel.CMElementDeclaration;
import org.eclipse.wst.common.contentmodel.CMNamedNodeMap;
import org.eclipse.wst.sse.core.IndexedRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
+import org.eclipse.wst.sse.core.text.ITextRegionContainer;
+import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.xml.core.document.XMLAttr;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLNode;
+import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -29,11 +34,11 @@ public class HTMLAttributeValidator extends PrimeValidator {
private static final int REGION_NAME = 1;
private static final int REGION_VALUE = 2;
- //<<D210422
+ // <<D210422
private static final char SINGLE_QUOTE = '\'';
private static final char DOUBLE_QUOTE = '\"';
- //D210422
+ // D210422
/**
* HTMLAttributeValidator constructor comment.
*/
@@ -70,8 +75,8 @@ public class HTMLAttributeValidator extends PrimeValidator {
}
/**
- * Allowing the INodeAdapter to compare itself against the type
- * allows it to return true in more than one case.
+ * Allowing the INodeAdapter to compare itself against the type allows it
+ * to return true in more than one case.
*/
public boolean isAdapterForType(Object type) {
return ((type == HTMLAttributeValidator.class) || super.isAdapterForType(type));
@@ -93,8 +98,10 @@ public class HTMLAttributeValidator extends PrimeValidator {
int rgnType = REGION_NAME;
int state = ErrorState.NONE_ERROR;
Attr a = (Attr) attrs.item(i);
- // D203637; If the target attr has prefix, the validator should not
- // warn about it. That is, just ignore. It is able to check whether
+ // D203637; If the target attr has prefix, the validator should
+ // not
+ // warn about it. That is, just ignore. It is able to check
+ // whether
// an attr has prefix or not by calling XMLAttr#isGlobalAttr().
// When a attr has prefix (not global), it returns false.
boolean isXMLAttr = a instanceof XMLAttr;
@@ -106,9 +113,10 @@ public class HTMLAttributeValidator extends PrimeValidator {
CMAttributeDeclaration adec = (CMAttributeDeclaration) declarations.getNamedItem(a.getName());
if (adec == null) {
- // No attr declaration was found. That is, the attr name is undefined.
+ // No attr declaration was found. That is, the attr name is
+ // undefined.
// but not regard it as undefined name if it includes JSP
- if (!FMUtil.hasJSPRegion(((XMLNode) a).getNameRegion())) {
+ if (hasJSPRegion(((XMLNode) a).getNameRegion())) {
rgnType = REGION_NAME;
state = ErrorState.UNDEFINED_NAME_ERROR;
}
@@ -117,13 +125,17 @@ public class HTMLAttributeValidator extends PrimeValidator {
// The attr declaration was found.
// At 1st, the name should be checked.
if (CMUtil.isHTML(edec) && (!CMUtil.isXHTML(edec))) {
- // If the target element is pure HTML (not XHTML), some attributes
- // might be written in boolean format. It should be check specifically.
+ // If the target element is pure HTML (not XHTML), some
+ // attributes
+ // might be written in boolean format. It should be check
+ // specifically.
if (CMUtil.isBooleanAttr(adec) && ((XMLAttr) a).hasNameOnly())
- continue; // OK, keep going. No more check is needed against this attr.
+ continue; // OK, keep going. No more check is needed
+ // against this attr.
}
else {
- // If the target is other than pure HTML (JSP or XHTML), the name
+ // If the target is other than pure HTML (JSP or XHTML),
+ // the name
// must be checked exactly (ie in case sensitive way).
String actual = a.getName();
String desired = adec.getAttrName();
@@ -163,9 +175,11 @@ public class HTMLAttributeValidator extends PrimeValidator {
}
}
if (!found) {
- // No candidate was found. That is, actualValue is invalid.
- // but not regard it as undefined value if it includes JSP.
- if (!FMUtil.hasJSPRegion(((XMLNode) a).getValueRegion())) {
+ // No candidate was found. That is,
+ // actualValue is invalid.
+ // but not regard it as undefined value if it
+ // includes JSP.
+ if (hasJSPRegion(((XMLNode) a).getValueRegion())) {
rgnType = REGION_VALUE;
state = ErrorState.UNDEFINED_VALUE_ERROR;
}
@@ -173,7 +187,7 @@ public class HTMLAttributeValidator extends PrimeValidator {
}
}
}
- //<<D210422
+ // <<D210422
if (state == ErrorState.NONE_ERROR) { // Need more check.
if (isXMLAttr) {
String source = ((XMLAttr) a).getValueRegionText();
@@ -189,7 +203,7 @@ public class HTMLAttributeValidator extends PrimeValidator {
}
}
}
- //D210422
+ // D210422
}
if (state != ErrorState.NONE_ERROR) {
Segment seg = getErrorSegment((XMLNode) a, rgnType);
@@ -199,9 +213,43 @@ public class HTMLAttributeValidator extends PrimeValidator {
}
}
- //<<D214022
+ /**
+ */
+ private boolean hasJSPRegion(ITextRegion container) {
+ if (!(container instanceof ITextRegionContainer))
+ return false;
+ ITextRegionList regions = ((ITextRegionContainer) container).getRegions();
+ if (regions == null)
+ return false;
+ Iterator e = regions.iterator();
+ while (e.hasNext()) {
+ ITextRegion region = (ITextRegion) e.next();
+ if (region == null)
+ continue;
+ String regionType = region.getType();
+ if (regionType == XMLRegionContext.XML_TAG_OPEN || (isNextedTagName(regionType)))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on "nestedContext".
+ */
+ private boolean isNextedTagName(String regionType) {
+ final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$
+ final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$
+ final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$
+ final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$
+
+ boolean result = regionType.equals(JSP_SCRIPTLET_OPEN) || regionType.equals(JSP_EXPRESSION_OPEN) || regionType.equals(JSP_DECLARATION_OPEN) || regionType.equals(JSP_DIRECTIVE_OPEN);
+ return result;
+ }
+
+ // <<D214022
private boolean isQuote(char c) {
return (c == SINGLE_QUOTE) || (c == DOUBLE_QUOTE);
}
- //D210422
+ // D210422
} \ No newline at end of file
diff --git a/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs
index bf65247070..036ecb464e 100644
--- a/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,48 +1,50 @@
-#Wed Jan 12 13:47:41 EST 2005
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+#Sun Mar 13 23:58:13 EST 2005
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
org.eclipse.jdt.core.builder.invalidClasspath=abort
org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.compiler.problem.unusedLocal=error
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-eclipse.preferences.version=1
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java
index 756030e14a..5f39ed0d0f 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java
@@ -27,9 +27,7 @@ import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore;
import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey;
import org.eclipse.wst.sse.ui.preferences.ui.StyledTextColorPicker;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.ui.preferences.XMLColorPage;
-import org.eclipse.wst.xml.ui.style.IStyleConstantsXML;
public class HTMLColorPage extends XMLColorPage {
@@ -60,18 +58,12 @@ public class HTMLColorPage extends XMLColorPage {
initCommonContextStyleMap(contextStyleMap);
initDocTypeContextStyleMap(contextStyleMap);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_CONTENT, HTMLColorManager.SCRIPT_AREA);
- // contextStyleMap.put(XMLJSPRegionContexts.BLOCK_TEXT, HTMLColorManager.SCRIPT_AREA);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_DECLARATION_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE, HTMLColorManager.SCRIPT_AREA_BORDER);
- // contextStyleMap.put(XMLJSPRegionContexts.JSP_CLOSE, HTMLColorManager.SCRIPT_AREA_BORDER);
- contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_NAME, IStyleConstantsXML.TAG_NAME);
- contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_OPEN, IStyleConstantsXML.COMMENT_BORDER);
- contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_TEXT, IStyleConstantsXML.COMMENT_TEXT);
- contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_CLOSE, IStyleConstantsXML.COMMENT_BORDER);
+ // FIXME: these were "brute forced" commented out when moving XMLJSPRegionContexts
+ // effect is unknown, but thought just to effect preference page
+ //contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_NAME, IStyleConstantsXML.TAG_NAME);
+ //contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_OPEN, IStyleConstantsXML.COMMENT_BORDER);
+ //contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_TEXT, IStyleConstantsXML.COMMENT_TEXT);
+ //contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_CLOSE, IStyleConstantsXML.COMMENT_BORDER);
}
protected void initDescriptions(Dictionary descriptions) {
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java
index 60b804141b..29229147e4 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java
@@ -47,7 +47,7 @@ public interface XMLAttr extends XMLNode, Attr {
/**
* Check if Attr has JSP in value
*/
- boolean hasJSPValue();
+ boolean hasNestedValue();
/**
* Check if Attr has only name but not equal sign nor value
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java
index 73d7afcf91..79c2c2b333 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java
@@ -32,8 +32,9 @@ import org.eclipse.wst.xml.core.document.XMLModel;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
import org.eclipse.wst.xml.core.internal.document.CDATASectionImpl;
+import org.eclipse.wst.xml.core.internal.document.CharacterDataImpl;
+import org.eclipse.wst.xml.core.internal.document.CommentImpl;
import org.eclipse.wst.xml.core.internal.parser.regions.TagNameRegion;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Node;
@@ -538,8 +539,8 @@ public class NodeFormatter implements IStructuredFormatter {
protected String getNodeText(XMLNode node) {
String text = null;
- if ((node instanceof org.eclipse.wst.xml.core.internal.document.CharacterDataImpl) && !(node instanceof org.eclipse.wst.xml.core.internal.document.CommentImpl) && !(node instanceof org.eclipse.wst.xml.core.internal.document.CDATASectionImpl) && !isJSPTag(node))
- text = ((org.eclipse.wst.xml.core.internal.document.CharacterDataImpl) node).getSource();
+ if ((node instanceof CharacterDataImpl) && !(node instanceof CommentImpl) && !(node instanceof CDATASectionImpl) && !isJSPTag(node))
+ text = ((CharacterDataImpl) node).getSource();
else
text = node.getFirstStructuredDocumentRegion().getText();
@@ -675,27 +676,6 @@ public class NodeFormatter implements IStructuredFormatter {
return result;
}
- protected boolean isJSPTag(XMLNode node) {
- boolean result = false;
-
- IStructuredDocumentRegion flatNode = node.getFirstStructuredDocumentRegion();
- // in some cases, the nodes exists, but hasn't been associated with
- // a flatnode yet (the screen updates can be initiated on a different
- // thread,
- // so the request for a flatnode can come in before the node is fully
- // formed.
- // if the flatnode is null, we'll just allow the defaults to apply.
- // (html adapter in this case).
- if (flatNode != null) {
- String flatNodeType = flatNode.getType();
- if ((flatNodeType == XMLJSPRegionContexts.JSP_CONTENT) || (flatNodeType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_CLOSE)) {
- result = true;
- }
- }
-
- return result;
- }
-
protected boolean nodeHasSiblings(XMLNode node) {
return (node.getPreviousSibling() != null) || (node.getNextSibling() != null);
}
@@ -762,4 +742,54 @@ public class NodeFormatter implements IStructuredFormatter {
public void setProgressMonitor(IProgressMonitor monitor) {
fProgressMonitor = monitor;
}
+
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on "nestedContext".
+ */
+ private boolean isJSPTag(Node node) {
+
+ final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$
+ // final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$
+
+ // final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$
+ // final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$
+
+ final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$
+ final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$
+ final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$
+ final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$
+
+ final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$
+ final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$
+
+ // final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$
+
+ final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$
+
+ boolean result = false;
+
+ if (node instanceof XMLNode) {
+ IStructuredDocumentRegion flatNode = ((XMLNode) node).getFirstStructuredDocumentRegion();
+ // in some cases, the nodes exists, but hasn't been associated
+ // with
+ // a flatnode yet (the screen updates can be initiated on a
+ // different thread,
+ // so the request for a flatnode can come in before the node is
+ // fully formed.
+ // if the flatnode is null, we'll just allow the defaults to
+ // apply.
+ if (flatNode != null) {
+ String flatNodeType = flatNode.getType();
+ // should not be null, but just to be sure
+ if (flatNodeType != null) {
+ if ((flatNodeType.equals(JSP_CONTENT)) || (flatNodeType.equals(JSP_EXPRESSION_OPEN)) || (flatNodeType.equals(JSP_SCRIPTLET_OPEN)) || (flatNodeType.equals(JSP_DECLARATION_OPEN)) || (flatNodeType.equals(JSP_DIRECTIVE_CLOSE)) || (flatNodeType.equals(JSP_DIRECTIVE_NAME)) || (flatNodeType.equals(JSP_DIRECTIVE_OPEN)) || (flatNodeType.equals(JSP_CLOSE))) {
+ result = true;
+ }
+ }
+ }
+ }
+
+ return result;
+ }
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java
index 959f512544..25a01fb223 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java
@@ -26,7 +26,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.xml.core.document.XMLAttr;
import org.eclipse.wst.xml.core.document.XMLCharEntity;
import org.eclipse.wst.xml.core.document.XMLNamespace;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
@@ -210,7 +209,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
return XMLNamespace.XMLNS_URI;
}
nsAttrName = XMLNamespace.XMLNS_PREFIX + prefix;
- } else {
+ }
+ else {
String name = getName();
if (name != null && name.equals(XMLNamespace.XMLNS)) {
// fixed URI
@@ -463,7 +463,7 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
/**
* Check if Attr has JSP in value
*/
- public boolean hasJSPValue() {
+public boolean hasNestedValue() {
if (this.valueRegion == null)
return false;
if (!(this.valueRegion instanceof ITextRegionContainer))
@@ -477,7 +477,7 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
if (region == null)
continue;
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_TAG_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN)
+ if (regionType == XMLRegionContext.XML_TAG_OPEN || isNestedLanguageOpening(regionType))
return true;
}
return false;
@@ -510,7 +510,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
if (this.ownerElement.ignoreCase()) {
return !hasPrefix();
}
- } else {
+ }
+ else {
DocumentImpl document = (DocumentImpl) getOwnerDocument();
if (document != null && document.ignoreCase()) {
// even in case insensitive document, if having prefix, it's
@@ -538,7 +539,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
if (!this.ownerElement.isXMLTag()) {
return hasPrefix();
}
- } else {
+ }
+ else {
DocumentImpl document = (DocumentImpl) getOwnerDocument();
if (document != null && !document.isXMLType()) {
// even in non-XML document, if having prefix, it's XML tag
@@ -726,7 +728,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
try {
getModel().aboutToChangeModel();
setValueSource(getValueSource(value));
- } finally {
+ }
+ finally {
getModel().changedModel();
}
}
@@ -753,4 +756,14 @@ public class AttrImpl extends NodeImpl implements XMLAttr {
notifyValueChanged();
}
+
+ /**
+ * Subclasses must override
+ * @param regionType
+ * @return
+ */
+ protected boolean isNestedLanguageOpening(String regionType) {
+ boolean result = false;
+ return result;
+ }
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java
index 4c4a2dbc72..935a7e7b31 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java
@@ -15,7 +15,6 @@ package org.eclipse.wst.xml.core.internal.document;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.w3c.dom.CharacterData;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
@@ -24,7 +23,7 @@ import org.w3c.dom.Node;
/**
* CharacterDataImpl class
*/
-public abstract class CharacterDataImpl extends NodeImpl implements XMLJSPRegionContexts, CharacterData {
+public abstract class CharacterDataImpl extends NodeImpl implements CharacterData {
private String data = null;
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java
index 2d8d257072..81779defb3 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java
@@ -19,7 +19,6 @@ import java.util.Iterator;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.text.ITextRegionList;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Comment;
import org.w3c.dom.DOMException;
@@ -96,12 +95,13 @@ public class CommentImpl extends CharacterDataImpl implements Comment {
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == JSP_COMMENT_OPEN || regionType == XMLRegionContext.XML_COMMENT_CLOSE || regionType == JSP_COMMENT_CLOSE) {
+ if (regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_COMMENT_CLOSE || isNestedCommentOpenClose(regionType)) {
continue;
}
if (contentRegion == null) { // first content
contentRegion = region;
- } else { // multiple contents
+ }
+ else { // multiple contents
if (buffer == null) {
buffer = new StringBuffer(flatNode.getText(contentRegion));
}
@@ -141,14 +141,28 @@ public class CommentImpl extends CharacterDataImpl implements Comment {
if (flatNode == null)
return true; // will be generated
String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode);
- return (regionType == XMLRegionContext.XML_COMMENT_CLOSE || regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE);
+ return (regionType == XMLRegionContext.XML_COMMENT_CLOSE || isNestedCommentClose(regionType));
}
/**
- * isJSP method
- *
- * @return boolean
+ * Subclasses must override
+ * @param regionType
+ * @return
+ */
+ protected boolean isNestedCommentClose(String regionType) {
+ boolean result = false;
+ return result;
+ }
+ /**
+ * Subclasses must override
+ * @param regionType
+ * @return
*/
+ protected boolean isNestedCommentOpenClose(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
public boolean isJSPTag() {
return this.isJSPTag;
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java
index 4ef5fbc202..231e607d40 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java
@@ -370,9 +370,7 @@ public class DocumentImpl extends NodeContainer implements XMLDocument {
throw new DOMException(DOMException.INVALID_CHARACTER_ERR, new String());
}
- ElementImpl element = new ElementImpl();
- element.setOwnerDocument(this);
- element.setTagName(tagName);
+ ElementImpl element = (ElementImpl) createElement(tagName);
element.setNamespaceURI(uri);
return element;
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java
index fd8d27a8ce..8f98536fcd 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java
@@ -30,7 +30,6 @@ import org.eclipse.wst.xml.core.document.XMLModel;
import org.eclipse.wst.xml.core.document.XMLNamespace;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Attr;
@@ -275,7 +274,8 @@ public class ElementImpl extends NodeContainer implements XMLElement {
if (uri == null) {
if (nsURI != null)
continue;
- } else {
+ }
+ else {
if (nsURI == null || !nsURI.equals(uri))
continue;
}
@@ -439,7 +439,7 @@ public class ElementImpl extends NodeContainer implements XMLElement {
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) {
+ if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedEndTag(regionType)) {
return this.endStructuredDocumentRegion.getText(region);
}
}
@@ -447,6 +447,11 @@ public class ElementImpl extends NodeContainer implements XMLElement {
return null;
}
+ protected boolean isNestedEndTag(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
/**
* getFirstStructuredDocumentRegion method
*
@@ -488,7 +493,8 @@ public class ElementImpl extends NodeContainer implements XMLElement {
String prefix = getPrefix();
if (prefix != null && prefix.length() > 0) {
nsAttrName = XMLNamespace.XMLNS_PREFIX + prefix;
- } else {
+ }
+ else {
nsAttrName = XMLNamespace.XMLNS;
}
@@ -676,7 +682,8 @@ public class ElementImpl extends NodeContainer implements XMLElement {
throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, new String());
}
if (newChild.getNodeType() != TEXT_NODE) {
- if (isJSPContainer() || isCDATAContainer()) { // accepts only Text
+ if (isJSPContainer() || isCDATAContainer()) { // accepts only
+ // Text
// child
throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, new String());
}
@@ -721,21 +728,32 @@ public class ElementImpl extends NodeContainer implements XMLElement {
flatNode = getStructuredDocumentRegion();
if (flatNode == null)
return true; // will be generated
- } else {
+ }
+ else {
flatNode = getEndStructuredDocumentRegion();
if (flatNode == null)
return false; // must be generated
}
String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode);
if (isCommentTag()) {
- return (regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE || regionType == XMLRegionContext.XML_COMMENT_CLOSE);
+ return (isNestedClosedComment(regionType) || regionType == XMLRegionContext.XML_COMMENT_CLOSE);
}
if (isJSPTag()) {
- return (regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE);
+ return isNestedClosed(regionType);
}
return (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == XMLRegionContext.XML_DECLARATION_CLOSE);
}
+ protected boolean isNestedClosed(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+ protected boolean isNestedClosedComment(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
/**
*/
public final boolean isCommentTag() {
@@ -828,16 +846,21 @@ public class ElementImpl extends NodeContainer implements XMLElement {
return true; // will be generated
String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode);
if (isCommentTag()) {
- return (regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE || regionType == XMLRegionContext.XML_COMMENT_CLOSE);
+ return (isNestedClosedComment(regionType) || regionType == XMLRegionContext.XML_COMMENT_CLOSE);
}
if (isJSPTag()) {
if (isContainer())
return true; // start tag always has a single region
- return (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE);
+ return isClosedNestedDirective(regionType);
}
return (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == XMLRegionContext.XML_DECLARATION_CLOSE);
}
+ protected boolean isClosedNestedDirective(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
/**
*/
public final boolean isXMLTag() {
@@ -1049,7 +1072,8 @@ public class ElementImpl extends NodeContainer implements XMLElement {
if (uri == null) {
if (nsURI != null)
continue;
- } else {
+ }
+ else {
if (nsURI == null || !nsURI.equals(uri))
continue;
}
@@ -1351,7 +1375,8 @@ public class ElementImpl extends NodeContainer implements XMLElement {
return;
}
setTagName(localName);
- } else {
+ }
+ else {
int localLength = (localName != null ? localName.length() : 0);
StringBuffer buffer = new StringBuffer(prefixLength + 1 + localLength);
buffer.append(prefix);
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java
index de9a4fe014..9378ca6b6b 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java
@@ -19,7 +19,6 @@ import java.util.Iterator;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.text.ITextRegionList;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
@@ -29,7 +28,7 @@ import org.w3c.dom.ProcessingInstruction;
/**
* ProcessingInstructionImpl class
*/
-public class ProcessingInstructionImpl extends NodeImpl implements XMLJSPRegionContexts, ProcessingInstruction {
+public class ProcessingInstructionImpl extends NodeImpl implements ProcessingInstruction {
private String data = null;
private String target = null;
@@ -95,7 +94,8 @@ public class ProcessingInstructionImpl extends NodeImpl implements XMLJSPRegionC
continue;
if (regionType == XMLRegionContext.XML_PI_CLOSE) {
closeRegion = region;
- } else {
+ }
+ else {
if (targetRegion == null)
targetRegion = region;
else if (dataRegion == null)
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java
index 82c848d940..81d2a63fbc 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java
@@ -17,7 +17,6 @@ package org.eclipse.wst.xml.core.internal.document;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.text.ITextRegionList;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
@@ -25,7 +24,7 @@ import org.eclipse.wst.xml.core.parser.XMLRegionContext;
* Provides convenient functions to handle IStructuredDocumentRegion and
* ITextRegion.
*/
-class StructuredDocumentRegionUtil implements XMLJSPRegionContexts {
+class StructuredDocumentRegionUtil {
/**
* Extracts contents enclosed with quotes. Quotes may be double or single.
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java
index 826fe54b3b..0eb7f4acd4 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java
@@ -114,7 +114,8 @@ public class TextImpl extends CharacterDataImpl implements XMLText {
if (flatNode instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode;
container.appendStructuredDocumentRegion(newStructuredDocumentRegion);
- } else {
+ }
+ else {
StructuredDocumentRegionContainer container = new StructuredDocumentRegionContainer();
container.appendStructuredDocumentRegion(flatNode);
container.appendStructuredDocumentRegion(newStructuredDocumentRegion);
@@ -582,13 +583,18 @@ public class TextImpl extends CharacterDataImpl implements XMLText {
}
String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode);
- if (regionType != XMLRegionContext.XML_CONTENT && regionType != JSP_CONTENT && regionType != XMLRegionContext.XML_ENTITY_REFERENCE && regionType != XMLRegionContext.XML_CHAR_REFERENCE && regionType != XMLRegionContext.BLOCK_TEXT && regionType != XMLRegionContext.WHITE_SPACE) {
+ if (regionType != XMLRegionContext.XML_CONTENT && isNotNestedContent(regionType) && regionType != XMLRegionContext.XML_ENTITY_REFERENCE && regionType != XMLRegionContext.XML_CHAR_REFERENCE && regionType != XMLRegionContext.BLOCK_TEXT && regionType != XMLRegionContext.WHITE_SPACE) {
return true;
}
return false;
}
+ protected boolean isNotNestedContent(String regionType) {
+ boolean result = true;
+ return result;
+ }
+
/**
*/
boolean isSharingStructuredDocumentRegion(IStructuredDocumentRegion sharedStructuredDocumentRegion) {
@@ -772,7 +778,8 @@ public class TextImpl extends CharacterDataImpl implements XMLText {
if (newStructuredDocumentRegion instanceof StructuredDocumentRegionProxy) {
// proxy must not be nested
setStructuredDocumentRegion(newStructuredDocumentRegion);
- } else {
+ }
+ else {
proxy.setStructuredDocumentRegion(newStructuredDocumentRegion);
}
return oldStructuredDocumentRegion;
@@ -798,7 +805,8 @@ public class TextImpl extends CharacterDataImpl implements XMLText {
if (newStructuredDocumentRegion instanceof StructuredDocumentRegionProxy) {
// proxy must not be nested
container.replaceStructuredDocumentRegion(newStructuredDocumentRegion, i);
- } else {
+ }
+ else {
proxy.setStructuredDocumentRegion(newStructuredDocumentRegion);
}
return oldStructuredDocumentRegion;
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java
index 4a41ef88e5..b4a864ee7f 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java
@@ -46,7 +46,7 @@ import org.w3c.dom.Node;
public class XMLModelImpl extends AbstractStructuredModel implements IStructuredDocumentListener, XMLModel, DOMImplementation {
private static String TRACE_PARSER_MANAGEMENT_EXCEPTION = "parserManagement"; //$NON-NLS-1$
private Object active = null;
- protected DocumentImpl document = null;
+ private DocumentImpl document = null;
private XMLGenerator generator = null;
private XMLModelNotifier notifier = null;
private XMLModelParser parser = null;
@@ -417,20 +417,28 @@ public class XMLModelImpl extends AbstractStructuredModel implements IStructured
*/
private XMLModelParser getModelParser() {
if (this.parser == null) {
- this.parser = new XMLModelParser(this);
+ this.parser = createModelParser();
}
return this.parser;
}
+ protected XMLModelParser createModelParser() {
+ return new XMLModelParser(this);
+ }
+
/**
*/
private XMLModelUpdater getModelUpdater() {
if (this.updater == null) {
- this.updater = new XMLModelUpdater(this);
+ this.updater = createModelUpdater();
}
return this.updater;
}
+ protected XMLModelUpdater createModelUpdater() {
+ return new XMLModelUpdater(this);
+ }
+
/**
*/
private void handleRefresh() {
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java
index 7d64743d9a..39911e408d 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java
@@ -24,7 +24,6 @@ import org.eclipse.wst.sse.core.text.ITextRegion;
import org.eclipse.wst.sse.core.text.ITextRegionList;
import org.eclipse.wst.xml.core.commentelement.impl.CommentElementConfiguration;
import org.eclipse.wst.xml.core.commentelement.impl.CommentElementRegistry;
-import org.eclipse.wst.xml.core.document.JSPTag;
import org.eclipse.wst.xml.core.document.XMLDocument;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLModel;
@@ -40,7 +39,7 @@ import org.w3c.dom.Text;
/**
* XMLModelParser
*/
-public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts {
+public class XMLModelParser {
private ModelParserAdapter adapter = null;
private XMLModelContext context = null;
private DocumentImpl document = null;
@@ -327,21 +326,28 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
// optimize typical cases
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_CONTENT || regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == XMLRegionContext.XML_CDATA_TEXT || regionType == XMLRegionContext.BLOCK_TEXT || regionType == JSP_CONTENT) {
+ if (regionType == XMLRegionContext.XML_CONTENT || regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == XMLRegionContext.XML_CDATA_TEXT || regionType == XMLRegionContext.BLOCK_TEXT || isNestedContent(regionType)) {
changeData(flatNode, region);
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) {
changeAttrName(flatNode, region);
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
changeAttrValue(flatNode, region);
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
changeAttrEqual(flatNode, region);
- } else if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) {
changeTagName(flatNode, region);
- } else {
+ }
+ else {
changeStructuredDocumentRegion(flatNode);
}
}
+
+
/**
*/
private void changeStartTag(IStructuredDocumentRegion flatNode, ITextRegionList newRegions, ITextRegionList oldRegions) {
@@ -374,7 +380,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
// change from empty tag may have impact on structure
if (!element.isEmptyTag())
continue;
- } else if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) {
String oldTagName = element.getTagName();
String newTagName = flatNode.getText(region);
if (oldTagName != null && newTagName != null && oldTagName.equals(newTagName)) {
@@ -400,7 +407,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
// change from empty tag may have impact on structure
if (!element.isEmptyTag())
continue;
- } else if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) {
// if new tag name is unchanged, it's OK
if (tagNameUnchanged)
continue;
@@ -446,7 +454,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
}
if (found) {
attrIndex++;
- } else {
+ }
+ else {
element.removeAttributeNode(attr);
}
}
@@ -464,7 +473,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
// insert deferred new attribute
element.insertAttributeNode(newAttr, attrIndex++);
newAttr = null;
- } else if (attr != null && oldValueRegion != null) {
+ }
+ else if (attr != null && oldValueRegion != null) {
// notify existing attribute value removal
attr.notifyValueChanged();
}
@@ -478,7 +488,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
oldValueRegion = attr.getValueRegion();
attr.setEqualRegion(null);
attr.setValueRegion(null);
- } else {
+ }
+ else {
String name = flatNode.getText(region);
attr = (AttrImpl) this.document.createAttribute(name);
if (attr != null)
@@ -486,11 +497,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
// defer insertion of new attribute
newAttr = attr;
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
if (attr != null) {
attr.setEqualRegion(region);
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
if (attr != null) {
attr.setValueRegion(region);
if (attr != newAttr && oldValueRegion != region) {
@@ -506,7 +519,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (newAttr != null) {
// insert deferred new attribute
element.appendAttributeNode(newAttr);
- } else if (attr != null && oldValueRegion != null) {
+ }
+ else if (attr != null && oldValueRegion != null) {
// notify existing attribute value removal
attr.notifyValueChanged();
}
@@ -609,7 +623,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
parent = next;
next = first;
this.context.setNextNode(next);
- } else {
+ }
+ else {
next = next.getNextSibling();
this.context.setNextNode(next);
}
@@ -634,7 +649,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
parent = parent.getParentNode();
if (next != null) {
this.context.setNextNode(next);
- } else {
+ }
+ else {
this.context.setParentNode(parent);
}
}
@@ -686,9 +702,11 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
newParent.insertBefore(childText, newNext);
if (childText == next) {
this.context.setNextNode(childText);
- } else if (newNext != null) {
+ }
+ else if (newNext != null) {
this.context.setNextNode(newNext);
- } else {
+ }
+ else {
this.context.setParentNode(newParent);
}
// try again
@@ -785,7 +803,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
newElement = (ElementImpl) p;
done = true;
}
- } else {
+ }
+ else {
// remove implicit element
next = nextElement.getNextSibling();
oldParent.removeChild(nextElement);
@@ -876,7 +895,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
CDATASectionImpl cdata = null;
try {
cdata = (CDATASectionImpl) this.document.createCDATASection(null);
- } catch (DOMException ex) {
+ }
+ catch (DOMException ex) {
}
if (cdata == null) { // CDATA section might not be supported
insertInvalidDecl(flatNode); // regard as invalid decl
@@ -904,9 +924,10 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
String regionType = region.getType();
- if (regionType == JSP_COMMENT_OPEN) {
+ if (isNestedCommentOpen(regionType)) {
isJSPTag = true;
- } else if (regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == JSP_COMMENT_TEXT) {
+ }
+ else if (regionType == XMLRegionContext.XML_COMMENT_TEXT || isNestedCommentText(regionType)) {
if (data == null) {
data = flatNode.getText(region);
}
@@ -970,13 +991,16 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
String regionType = region.getType();
if (regionType == XMLRegionContext.XML_DOCTYPE_DECLARATION) {
isDocType = true;
- } else if (regionType == XMLRegionContext.XML_DOCTYPE_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_DOCTYPE_NAME) {
if (name == null)
name = flatNode.getText(region);
- } else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_PUBREF) {
+ }
+ else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_PUBREF) {
if (publicId == null)
publicId = StructuredDocumentRegionUtil.getAttrValue(flatNode, region);
- } else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_SYSREF) {
+ }
+ else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_SYSREF) {
if (systemId == null)
systemId = StructuredDocumentRegionUtil.getAttrValue(flatNode, region);
}
@@ -1000,12 +1024,12 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
}
/**
- * insertEndTag method
+ * insertEndTag method can be used by subclasses, but not overrided.
*
* @param element
* org.w3c.dom.Element
*/
- private void insertEndTag(Element element) {
+ protected void insertEndTag(Element element) {
if (element == null)
return;
@@ -1055,7 +1079,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
Iterator e = regions.iterator();
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
- if (region.getType() == XMLRegionContext.XML_TAG_NAME || region.getType() == JSP_ROOT_TAG_NAME || region.getType() == JSP_DIRECTIVE_NAME) {
+ String regionType = region.getType();
+ if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) {
if (tagName == null)
tagName = flatNode.getText(region);
}
@@ -1078,7 +1103,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
ElementImpl end = null;
try {
end = (ElementImpl) this.document.createElement(tagName);
- } catch (DOMException ex) {
+ }
+ catch (DOMException ex) {
}
if (end == null) { // invalid end tag
insertText(flatNode); // regard as invalid text
@@ -1139,7 +1165,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
EntityReferenceImpl ref = null;
try {
ref = (EntityReferenceImpl) this.document.createEntityReference(name);
- } catch (DOMException ex) {
+ }
+ catch (DOMException ex) {
}
if (ref == null) { // entity reference might not be supported
insertText(flatNode); // regard as invalid text
@@ -1164,7 +1191,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
ElementImpl element = null;
try {
element = (ElementImpl) this.document.createElement("!");//$NON-NLS-1$
- } catch (DOMException ex) {
+ }
+ catch (DOMException ex) {
}
if (element == null) { // invalid tag
insertText(flatNode); // regard as invalid text
@@ -1181,7 +1209,7 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
* @param flatNode
* com.ibm.sed.structuredDocument.IStructuredDocumentRegion
*/
- private void insertJSPTag(IStructuredDocumentRegion flatNode) {
+ private void insertNestedTag(IStructuredDocumentRegion flatNode) {
ITextRegionList regions = flatNode.getRegions();
if (regions == null)
return;
@@ -1194,20 +1222,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
String regionType = region.getType();
- if (regionType == JSP_SCRIPTLET_OPEN) {
- tagName = JSPTag.JSP_SCRIPTLET;
- } else if (regionType == JSP_EXPRESSION_OPEN) {
- tagName = JSPTag.JSP_EXPRESSION;
- } else if (regionType == JSP_DECLARATION_OPEN) {
- tagName = JSPTag.JSP_DECLARATION;
- } else if (regionType == JSP_DIRECTIVE_OPEN) {
- tagName = JSPTag.JSP_DIRECTIVE;
- } else if (regionType == JSP_DIRECTIVE_NAME) {
- tagName += '.';
- tagName += flatNode.getText(region);
- } else if (regionType == JSP_CLOSE) {
+ if (isNestedTagOpen(regionType) || isNestedTagName(regionType)) {
+ tagName = computeNestedTag(regionType, tagName, flatNode, region);
+ }
+ else if (isNestedTagClose(regionType)) {
isCloseTag = true;
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) {
String name = flatNode.getText(region);
attr = (AttrImpl) this.document.createAttribute(name);
if (attr != null) {
@@ -1216,11 +1237,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
attrNodes = new Vector();
attrNodes.addElement(attr);
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
if (attr != null) {
attr.setEqualRegion(region);
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
if (attr != null) {
attr.setValueRegion(region);
attr = null;
@@ -1249,7 +1272,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
ElementImpl element = null;
try {
element = (ElementImpl) this.document.createElement(tagName);
- } catch (DOMException ex) {
+ }
+ catch (DOMException ex) {
}
if (element == null) { // invalid tag
insertText(flatNode); // regard as invalid text
@@ -1269,6 +1293,20 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
insertStartTag(element);
}
+ protected boolean isNestedTagClose(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+ protected boolean isNestedTagOpen(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+ protected String computeNestedTag(String regionType, String tagName, IStructuredDocumentRegion structuredDocumentRegion, ITextRegion region) {
+ return tagName;
+ }
+
/**
* insertNode method
*
@@ -1395,12 +1433,12 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
}
/**
- * insertStartTag method
+ * insertStartTag method can be used by subclasses, but not overridden.
*
* @param element
* org.w3c.dom.Element
*/
- private void insertStartTag(Element element) {
+ protected void insertStartTag(Element element) {
if (element == null)
return;
if (this.context == null)
@@ -1446,12 +1484,14 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
while (e.hasNext()) {
ITextRegion region = (ITextRegion) e.next();
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) {
+ if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) {
if (tagName == null)
tagName = flatNode.getText(region);
- } else if (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) {
+ }
+ else if (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) {
isEmptyTag = true;
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) {
String name = flatNode.getText(region);
attr = (AttrImpl) this.document.createAttribute(name);
if (attr != null) {
@@ -1460,11 +1500,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
attrNodes = new Vector();
attrNodes.addElement(attr);
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
if (attr != null) {
attr.setEqualRegion(region);
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
if (attr != null) {
attr.setValueRegion(region);
attr = null;
@@ -1480,7 +1522,9 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
ElementImpl element = null;
try {
element = (ElementImpl) this.document.createElement(tagName);
- } catch (DOMException ex) {
+ }
+ catch (DOMException ex) {
+ // typically invalid name
}
if (element == null) { // invalid tag
insertText(flatNode); // regard as invalid text
@@ -1507,36 +1551,71 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
* @param flatNode
* com.ibm.sed.structuredDocument.IStructuredDocumentRegion
*/
- private void insertStructuredDocumentRegion(IStructuredDocumentRegion flatNode) {
+ protected void insertStructuredDocumentRegion(IStructuredDocumentRegion flatNode) {
String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode);
if (regionType == XMLRegionContext.XML_TAG_OPEN) {
insertStartTag(flatNode);
- } else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) {
+ }
+ else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) {
insertEndTag(flatNode);
- } else if (regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == JSP_COMMENT_OPEN) {
+ }
+ else if (regionType == XMLRegionContext.XML_COMMENT_OPEN || isNestedCommentOpen(regionType)) {
insertComment(flatNode);
- } else if (regionType == XMLRegionContext.XML_ENTITY_REFERENCE || regionType == XMLRegionContext.XML_CHAR_REFERENCE) {
+ }
+ else if (regionType == XMLRegionContext.XML_ENTITY_REFERENCE || regionType == XMLRegionContext.XML_CHAR_REFERENCE) {
insertEntityRef(flatNode);
- } else if (regionType == XMLRegionContext.XML_DECLARATION_OPEN) {
+ }
+ else if (regionType == XMLRegionContext.XML_DECLARATION_OPEN) {
insertDecl(flatNode);
- } else if (regionType == XMLRegionContext.XML_PI_OPEN) {
+ }
+ else if (regionType == XMLRegionContext.XML_PI_OPEN) {
insertPI(flatNode);
- } else if (regionType == XMLRegionContext.XML_CDATA_OPEN) {
+ }
+ else if (regionType == XMLRegionContext.XML_CDATA_OPEN) {
insertCDATASection(flatNode);
- } else if (regionType == JSP_SCRIPTLET_OPEN || regionType == JSP_EXPRESSION_OPEN || regionType == JSP_DECLARATION_OPEN || regionType == JSP_DIRECTIVE_OPEN || regionType == JSP_CLOSE) {
- insertJSPTag(flatNode);
- } else {
+ }
+ else if (isNestedTag(regionType)) {
+ insertNestedTag(flatNode);
+ }
+ else {
insertText(flatNode);
}
}
+ protected boolean isNestedTag(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+ protected boolean isNestedCommentText(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+
+ protected boolean isNestedCommentOpen(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+ protected boolean isNestedTagName(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
+ protected boolean isNestedContent(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
/**
- * insertText method
+ * insertText method Can be called from subclasses, not to be overrided or
+ * re-implemented.
*
* @param flatNode
* com.ibm.sed.structuredDocument.IStructuredDocumentRegion
*/
- private void insertText(IStructuredDocumentRegion flatNode) {
+ protected void insertText(IStructuredDocumentRegion flatNode) {
TextImpl text = (TextImpl) this.context.findPreviousText();
if (text != null) { // existing text found
text.appendStructuredDocumentRegion(flatNode);
@@ -1590,7 +1669,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (nextElement.matchEndTag(newElement)) {
endTag = true;
}
- } else {
+ }
+ else {
// remove implicit element
next = nextElement.getNextSibling();
oldParent.removeChild(nextElement);
@@ -1610,7 +1690,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
newNext = newElement.getNextSibling();
if (newParent.getNodeType() == Node.ELEMENT_NODE) {
newElement = (ElementImpl) newParent;
- } else {
+ }
+ else {
newElement = null;
}
continue;
@@ -1642,7 +1723,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (!oldElement.hasChildNodes() && !oldElement.hasStartTag()) {
oldParent.removeChild(oldElement);
end = oldElement;
- } else {
+ }
+ else {
end = oldElement.removeEndTag();
}
if (end != null) {
@@ -1744,20 +1826,25 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
Node oldNext = this.context.getNextNode();
if (oldNext != null) {
this.context.setNextNode(oldNext);
- } else {
+ }
+ else {
if (elementNext != null) {
this.context.setNextNode(elementNext);
- } else {
+ }
+ else {
this.context.setParentNode(elementParent);
}
}
- } else if (this.context.getNextNode() == element) {
+ }
+ else if (this.context.getNextNode() == element) {
if (firstChild != null) {
this.context.setNextNode(firstChild);
- } else {
+ }
+ else {
if (elementNext != null) {
this.context.setNextNode(elementNext);
- } else {
+ }
+ else {
this.context.setParentNode(elementParent);
}
}
@@ -1792,7 +1879,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
this.context.setNextNode(next);
else
this.context.setParentNode(parent);
- } else {
+ }
+ else {
Node oldNext = this.context.getNextNode();
if (node == oldNext) {
this.context.setNextNode(next);
@@ -1868,7 +1956,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
Node child = oldElement.getFirstChild();
if (child != null) {
this.context.setNextNode(child);
- } else if (oldElement.hasEndTag()) {
+ }
+ else if (oldElement.hasEndTag()) {
this.context.setParentNode(oldElement);
}
return;
@@ -1884,7 +1973,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (parent == null)
return;
Node first = element.getFirstChild();
- Node firstElement = null; // for the case first is removed as end tag
+ Node firstElement = null; // for the case first is removed as end
+ // tag
if (first != null) {
// find new parent for children
ElementImpl newElement = null;
@@ -1984,7 +2074,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (parent.getNodeType() == Node.ELEMENT_NODE) {
newElement = (ElementImpl) parent;
- } else {
+ }
+ else {
newElement = null;
}
}
@@ -2059,7 +2150,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
}
newElement.appendChild(child);
}
- } else {
+ }
+ else {
if (!oldElement.isCommentTag()) {
// clone (re-create) end tag
Element end = oldElement.removeEndTag();
@@ -2070,7 +2162,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
}
}
}
- } else {
+ }
+ else {
newNext = oldElement.getNextSibling();
parent.removeChild(oldElement);
}
@@ -2081,19 +2174,25 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (element == oldParent) {
if (oldNext != null) {
this.context.setNextNode(oldNext); // reset for new parent
- } else if (newNext != null) {
+ }
+ else if (newNext != null) {
this.context.setNextNode(newNext);
- } else {
+ }
+ else {
this.context.setParentNode(parent);
}
- } else if (element == oldNext) {
+ }
+ else if (element == oldNext) {
if (firstElement != null) {
this.context.setParentNode(firstElement);
- } else if (first != null) {
+ }
+ else if (first != null) {
this.context.setNextNode(first);
- } else if (startElement != null) {
+ }
+ else if (startElement != null) {
this.context.setParentNode(startElement);
- } else {
+ }
+ else {
this.context.setNextNode(newNext);
}
}
@@ -2144,7 +2243,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
// this is the case partial IStructuredDocumentRegion is
// removed
removeNode(text);
- } else {
+ }
+ else {
// notify the change
text.notifyValueChanged();
}
@@ -2164,10 +2264,12 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (element.hasEndTag() || element.hasChildNodes()) {
element.setStartStructuredDocumentRegion(null);
removeStartTag(element);
- } else {
+ }
+ else {
removeNode(element);
}
- } else {
+ }
+ else {
Node child = element.getFirstChild();
if (child != null) {
this.context.setNextNode(child);
@@ -2205,7 +2307,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
if (!end.hasStartTag() && !end.hasChildNodes()) {
this.context.setNextNode(end);
removeNode(end);
- } else {
+ }
+ else {
end.setEndStructuredDocumentRegion(null);
removeEndTag(end);
}
@@ -2248,9 +2351,11 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode);
if (regionType == XMLRegionContext.XML_TAG_OPEN) {
changeStartTag(flatNode, newRegions, oldRegions);
- } else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) {
+ }
+ else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) {
changeEndTag(flatNode, newRegions, oldRegions);
- } else {
+ }
+ else {
changeStructuredDocumentRegion(flatNode);
}
}
@@ -2282,7 +2387,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
continue;
removeStructuredDocumentRegion(flatNode);
}
- } else {
+ }
+ else {
if (newCount == 0)
return;
setupContext(newStructuredDocumentRegions.item(0));
@@ -2362,4 +2468,9 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser
this.context.setParentNode(node);
this.context.setLast();
}
+
+ protected XMLModelContext getContext() {
+ return context;
+ }
+
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java
index c9cab984c8..7a37516a08 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java
@@ -26,7 +26,6 @@ import org.eclipse.wst.xml.core.document.JSPTag;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLGenerator;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
@@ -38,7 +37,7 @@ import org.w3c.dom.Text;
/**
* XMLModelUpdater class
*/
-public class XMLModelUpdater implements XMLJSPRegionContexts {
+public class XMLModelUpdater {
private int diff = 0;
private int gapLength = 0;
private int gapOffset = 0;
@@ -153,7 +152,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
// use getTextEnd() because getEnd() may include the tailing
// spaces
end += valueRegion.getTextEnd();
- } else {
+ }
+ else {
ITextRegion equalRegion = attr.getEqualRegion();
value = this.generator.generateAttrValue(attr);
@@ -164,12 +164,14 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
// remove equal
start += equalRegion.getStart();
end += equalRegion.getTextEnd();
- } else {
+ }
+ else {
if (equalRegion != null) {
// use getTextEnd() because getEnd() may include the
// tailing spaces
start += equalRegion.getTextEnd();
- } else {
+ }
+ else {
ITextRegion nameRegion = attr.getNameRegion();
if (nameRegion == null)
return; // must never happen
@@ -367,11 +369,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
ElementImpl element = (ElementImpl) ownerNode;
if (isEndTag) {
element.setEndStructuredDocumentRegion(oldStructuredDocumentRegion);
- } else {
+ }
+ else {
element.setStartStructuredDocumentRegion(oldStructuredDocumentRegion);
updateAttrRegions(element, oldStructuredDocumentRegion);
}
- } else if (nodeType == Node.TEXT_NODE) {
+ }
+ else if (nodeType == Node.TEXT_NODE) {
TextImpl text = (TextImpl) ownerNode;
IStructuredDocumentRegion flatNode = text.getStructuredDocumentRegion();
@@ -380,7 +384,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
int newEnd = oldEnd;
if (oldOffset == this.gapOffset) {
newOffset += this.diff;
- } else {
+ }
+ else {
newEnd = this.gapOffset;
}
int newLength = newEnd - newOffset;
@@ -401,7 +406,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
if (proxy.getStructuredDocumentRegion() == null) {
if (offset == oldOffset && end == oldEnd) {
text.setStructuredDocumentRegion(oldStructuredDocumentRegion);
- } else {
+ }
+ else {
if (end > oldEnd) {
StructuredDocumentRegionContainer container = new StructuredDocumentRegionContainer();
container.appendStructuredDocumentRegion(oldStructuredDocumentRegion);
@@ -409,7 +415,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
proxy.setLength(end - oldEnd);
container.appendStructuredDocumentRegion(proxy);
text.setStructuredDocumentRegion(container);
- } else {
+ }
+ else {
proxy.setStructuredDocumentRegion(oldStructuredDocumentRegion);
if (end < oldEnd) { // to be shared
@@ -430,7 +437,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
changeStructuredDocumentRegion(oldStructuredDocumentRegion);
return;
}
- } else if (flatNode instanceof StructuredDocumentRegionContainer) {
+ }
+ else if (flatNode instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode;
int count = container.getStructuredDocumentRegionCount();
for (int i = 0; i < count; i++) {
@@ -442,7 +450,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
int newEnd = oldEnd;
if (oldOffset == this.gapOffset) {
newOffset += this.diff;
- } else {
+ }
+ else {
newEnd = this.gapOffset;
}
int newLength = newEnd - newOffset;
@@ -465,12 +474,14 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
if (proxy.getStructuredDocumentRegion() == null) {
if (offset == oldOffset && end == oldEnd) {
container.replaceStructuredDocumentRegion(oldStructuredDocumentRegion, i);
- } else {
+ }
+ else {
if (end > oldEnd) {
container.insertStructuredDocumentRegion(oldStructuredDocumentRegion, i);
proxy.setOffset(oldEnd);
proxy.setLength(end - oldEnd);
- } else {
+ }
+ else {
proxy.setStructuredDocumentRegion(oldStructuredDocumentRegion);
if (end < oldEnd) { // to be shared
@@ -493,10 +504,12 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
}
}
}
- } else {
+ }
+ else {
throw new StructuredDocumentRegionManagementException();
}
- } else {
+ }
+ else {
ownerNode.setStructuredDocumentRegion(oldStructuredDocumentRegion);
}
}
@@ -525,7 +538,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
offset += preTag.length();
source = preTag + source;
}
- } else {
+ }
+ else {
Node parent = text.getParentNode();
if (parent != null && parent.getNodeType() == Node.ELEMENT_NODE) {
ElementImpl element = (ElementImpl) parent;
@@ -692,7 +706,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
}
}
}
- } else {
+ }
+ else {
String closeTag = getCloseTag(lastChild);
if (closeTag != null) {
int length = closeTag.length();
@@ -758,7 +773,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion();
if (flatNode != null)
insertStructuredDocumentRegion(flatNode);
- } else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) {
+ }
+ else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) this.gapStructuredDocumentRegion;
int count = container.getStructuredDocumentRegionCount();
for (int i = 0; i < count; i++) {
@@ -772,11 +788,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion();
if (flatNode != null)
insertStructuredDocumentRegion(flatNode);
- } else {
+ }
+ else {
insertStructuredDocumentRegion(content);
}
}
- } else {
+ }
+ else {
insertStructuredDocumentRegion(this.gapStructuredDocumentRegion);
}
}
@@ -790,7 +808,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion();
if (flatNode != null)
insertStructuredDocumentRegion(flatNode);
- } else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) {
+ }
+ else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) this.gapStructuredDocumentRegion;
int count = container.getStructuredDocumentRegionCount();
for (int i = 0; i < count; i++) {
@@ -804,11 +823,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion();
if (flatNode != null)
insertStructuredDocumentRegion(flatNode);
- } else {
+ }
+ else {
insertStructuredDocumentRegion(content);
}
}
- } else {
+ }
+ else {
insertStructuredDocumentRegion(this.gapStructuredDocumentRegion);
}
}
@@ -887,11 +908,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
ElementImpl element = (ElementImpl) ownerNode;
if (isEndTag) {
element.setEndStructuredDocumentRegion(newStructuredDocumentRegion);
- } else {
+ }
+ else {
element.setStartStructuredDocumentRegion(newStructuredDocumentRegion);
updateAttrRegions(element, newStructuredDocumentRegion);
}
- } else if (nodeType == Node.TEXT_NODE) {
+ }
+ else if (nodeType == Node.TEXT_NODE) {
TextImpl text = (TextImpl) ownerNode;
IStructuredDocumentRegion oldStructuredDocumentRegion = text.getStructuredDocumentRegion();
if (oldStructuredDocumentRegion == null) {
@@ -910,7 +933,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
StructuredDocumentRegionContainer container = new StructuredDocumentRegionContainer();
if (oldOffset == newOffset) {
container.appendStructuredDocumentRegion(newStructuredDocumentRegion);
- } else {
+ }
+ else {
StructuredDocumentRegionProxy newProxy = new StructuredDocumentRegionProxy();
newProxy.setOffset(oldOffset);
newProxy.setLength(newEnd - oldOffset);
@@ -921,7 +945,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
proxy.setLength(oldEnd - newEnd);
container.appendStructuredDocumentRegion(proxy);
text.setStructuredDocumentRegion(container);
- } else {
+ }
+ else {
proxy.setStructuredDocumentRegion(newStructuredDocumentRegion);
if (oldEnd < newEnd) { // to be shared
@@ -953,7 +978,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
if (end > newEnd) {
if (offset == newOffset) {
container.insertStructuredDocumentRegion(newStructuredDocumentRegion, i);
- } else {
+ }
+ else {
StructuredDocumentRegionProxy newProxy = new StructuredDocumentRegionProxy();
newProxy.setOffset(offset);
newProxy.setLength(newEnd - offset);
@@ -963,7 +989,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
proxy.setOffset(newEnd);
proxy.setLength(end - newEnd);
return;
- } else {
+ }
+ else {
proxy.setStructuredDocumentRegion(newStructuredDocumentRegion);
if (end == newEnd)
return;
@@ -976,10 +1003,12 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
insertStructuredDocumentRegion(newStructuredDocumentRegion);
}
return;
- } else {
+ }
+ else {
throw new StructuredDocumentRegionManagementException();
}
- } else {
+ }
+ else {
ownerNode.setStructuredDocumentRegion(newStructuredDocumentRegion);
}
}
@@ -998,7 +1027,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion();
if (flatNode == oldStructuredDocumentRegion)
this.gapStructuredDocumentRegion = null;
- } else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) {
+ }
+ else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) this.gapStructuredDocumentRegion;
int count = container.getStructuredDocumentRegionCount();
for (int i = 0; i < count; i++) {
@@ -1117,7 +1147,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
removeStructuredDocumentRegion(oldStructuredDocumentRegion);
return;
}
- } else if (flatNode instanceof StructuredDocumentRegionContainer) {
+ }
+ else if (flatNode instanceof StructuredDocumentRegionContainer) {
StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode;
int count = container.getStructuredDocumentRegionCount();
for (int i = 0; i < count; i++) {
@@ -1147,14 +1178,17 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
}
}
}
- } else {
+ }
+ else {
throw new StructuredDocumentRegionManagementException();
}
- } else {
+ }
+ else {
IStructuredDocumentRegion newStructuredDocumentRegion = new StructuredDocumentRegionProxy(oldOffset, oldLength);
if (ownerEndTag != null) {
ownerEndTag.setEndStructuredDocumentRegion(newStructuredDocumentRegion);
- } else {
+ }
+ else {
ownerNode.setStructuredDocumentRegion(newStructuredDocumentRegion);
}
}
@@ -1200,11 +1234,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
ITextRegion lastRegion = impl.getValueRegion();
if (lastRegion != null) {
end += lastRegion.getEnd();
- } else {
+ }
+ else {
lastRegion = impl.getEqualRegion();
if (lastRegion != null) {
end += lastRegion.getEnd();
- } else {
+ }
+ else {
end += nameRegion.getEnd();
lastRegion = nameRegion;
}
@@ -1235,19 +1271,21 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
boolean isLastAttr = false;
if (nextRegion != null) {
String regionType = nextRegion.getType();
- if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == JSP_CLOSE || regionType == JSP_DIRECTIVE_CLOSE) {
+ if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || isNestedTagClose(regionType)) {
isLastAttr = true;
}
}
if (isLastAttr && prevRegion != null) {
start += prevRegion.getTextEnd();
- } else {
+ }
+ else {
start += nameRegion.getStart();
}
- // impl.resetRegions(ownerElement);
+ // impl.resetRegions(ownerElement);
impl.resetRegions(element);
- } else { // append attribute
+ }
+ else { // append attribute
IStructuredDocumentRegion flatNode = element.getStartStructuredDocumentRegion();
if (flatNode == null)
return; // must never happen
@@ -1257,7 +1295,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
insertSpace = true;
start = flatNode.getEndOffset();
end = start;
- } else {
+ }
+ else {
ITextRegionList regions = flatNode.getRegions();
if (regions == null)
return; // must never happen
@@ -1265,7 +1304,7 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
for (int i = regions.size() - 1; i >= 0; i--) {
ITextRegion region = regions.get(i);
String regionType = region.getType();
- if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == JSP_CLOSE || regionType == JSP_DIRECTIVE_CLOSE)
+ if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || isNestedTagClose(regionType))
continue;
int regionEnd = region.getEnd();
if (regionEnd == region.getTextEnd())
@@ -1307,6 +1346,11 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
replaceSource(source, start, end);
}
+ protected boolean isNestedTagClose(String regionType) {
+ boolean result = false;
+ return result;
+ }
+
/**
* replaceChild method
*
@@ -1339,13 +1383,15 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
}
node.resetStructuredDocumentRegions(); // reset values from
// IStructuredDocumentRegion
- } else {
+ }
+ else {
NodeImpl prev = (NodeImpl) newChild.getPreviousSibling();
if (prev != null) {
start = prev.getEndOffset();
end = start;
preTag = getCloseTag(prev);
- } else {
+ }
+ else {
// first child
NodeImpl next = (NodeImpl) newChild.getNextSibling();
if (next != null) {
@@ -1354,7 +1400,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
if (parentNode.getNodeType() == Node.ELEMENT_NODE) {
preTag = getStartCloseTag((XMLElement) parentNode);
}
- } else {
+ }
+ else {
// newly having a child
if (parentNode.getNodeType() == Node.ELEMENT_NODE) {
ElementImpl element = (ElementImpl) parentNode;
@@ -1366,7 +1413,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
preTag = this.generator.generateCloseTag(element);
postTag = this.generator.generateEndTag(element);
postElement = element;
- } else if (!element.hasStartTag()) {
+ }
+ else if (!element.hasStartTag()) {
start = element.getStartOffset();
end = start;
// invalid end tag or implicit tag
@@ -1385,7 +1433,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
postTag = this.generator.generateEndTag(element);
postElement = element;
}
- } else {
+ }
+ else {
start = element.getStartEndOffset();
end = start;
preTag = getStartCloseTag(element);
@@ -1432,7 +1481,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
}
}
element.setStartStructuredDocumentRegion(flatNode);
- } else {
+ }
+ else {
String content = this.generator.generateSource(node);
if (content == null)
content = new String();
@@ -1593,12 +1643,14 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
}
if (lastStructuredDocumentRegion != null) {
insertGapStructuredDocumentRegionAfter(lastStructuredDocumentRegion.getEnd());
- } else {
+ }
+ else {
insertGapStructuredDocumentRegionBefore(this.gapOffset);
// make sure to restore all backuped StructuredDocumentRegions
insertGapStructuredDocumentRegionAfter(this.gapOffset);
}
- } else {
+ }
+ else {
this.parentNode = root;
this.nextNode = (NodeImpl) root.getFirstChild();
@@ -1633,10 +1685,12 @@ public class XMLModelUpdater implements XMLJSPRegionContexts {
attr.setEqualRegion(null);
attr.setValueRegion(null);
}
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
if (attr != null)
attr.setEqualRegion(region);
- } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
+ }
+ else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
if (attr != null) {
attr.setValueRegion(region);
attr = null;
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java
index 518d4f63c6..8442a89ede 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java
@@ -15,7 +15,6 @@ package org.eclipse.wst.xml.core.internal.parser;
import org.eclipse.wst.sse.core.internal.text.StructuredDocumentReParser;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.text.IStructuredTextReParser;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
@@ -114,7 +113,7 @@ public class XMLStructuredDocumentReParser extends StructuredDocumentReParser {
protected boolean isPartOfBlockRegion(IStructuredDocumentRegion flatNode) {
boolean result = false;
String type = flatNode.getType();
- result = (type == XMLRegionContext.BLOCK_TEXT || type == XMLJSPRegionContexts.JSP_CONTENT);
+ result = (type == XMLRegionContext.BLOCK_TEXT);
return result;
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html
deleted file mode 100644
index 8e9ef20b30..0000000000
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<HTML>
-This package is located here in the XML project
-temporarily. Once the DOM Parser is cleaningly split
-to XML and JSP components, this package will move
-back to JSP project. (If its not here temporarily,
-its easy to get circluar references in plugin.xml
-dependancies.
-</HTML> \ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java
index d39d2a7a44..d7db2635f7 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java
@@ -56,7 +56,8 @@ public class AddBlockCommentActionXML extends CommentActionXML {
fDocument.replace(fOpenCommentOffset, 0, OPEN_COMMENT);
fDocument.replace(fCloseCommentOffset, 0, CLOSE_COMMENT);
removeOpenCloseComments(fOpenCommentOffset + OPEN_COMMENT.length(), fCloseCommentOffset - fOpenCommentOffset - CLOSE_COMMENT.length());
- } catch (BadLocationException e) {
+ }
+ catch (BadLocationException e) {
throw new SourceEditingRuntimeException();
}
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java
index 1030cdcf0e..ee765c3f70 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java
@@ -15,11 +15,11 @@ package org.eclipse.wst.xml.ui.actions;
import java.util.ResourceBundle;
import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.wst.xml.core.internal.document.CommentImpl;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.wst.sse.core.exceptions.SourceEditingRuntimeException;
import org.eclipse.wst.sse.ui.edit.util.StructuredTextEditorActionConstants;
import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
-import org.eclipse.wst.xml.core.internal.document.CommentImpl;
public class RemoveBlockCommentActionXML extends AddBlockCommentActionXML {
public RemoveBlockCommentActionXML(ResourceBundle bundle, String prefix, ITextEditor editor) {
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java
index d5449422da..ee5f316a6a 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java
@@ -59,7 +59,6 @@ import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLModel;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.eclipse.wst.xml.core.internal.document.AttrImpl;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.ui.internal.Logger;
@@ -76,6 +75,28 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
abstract public class AbstractContentAssistProcessor implements IContentAssistProcessor, IReleasable {
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on "nestedContext".
+ */
+ private class XMLJSPRegionContexts {
+ private static final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$
+ private static final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$
+
+ private static final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$
+ private static final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$
+ private static final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$
+ private static final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$
+
+ private static final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$
+ private static final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$
+
+ private static final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$
+
+ private static final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$
+
+ }
+
protected static final String INTERNALERROR = SSEUIPlugin.getResourceString("%SEVERE_internal_error_occu_UI_"); //$NON-NLS-1$ = "SEVERE internal error occurred "
protected static final String UNKNOWN_ATTR = SSEUIPlugin.getResourceString("%No_known_attribute__UI_"); //$NON-NLS-1$ = "No known attribute "
protected static final String UNKNOWN_CONTEXT = SSEUIPlugin.getResourceString("%Content_Assist_not_availab_UI_"); //$NON-NLS-1$ = "Content Assist not available at the current location "
@@ -1100,7 +1121,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr
addTagCloseProposals(contentAssistRequest);
} else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
contentAssistRequest = computeAttributeValueProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode);
- } else if ((regionType == XMLRegionContext.XML_TAG_CLOSE) || (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE)) {
+ } else if ((regionType == XMLRegionContext.XML_TAG_CLOSE) || (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (regionType.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE))) {
contentAssistRequest = computeTagCloseProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode);
} else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) {
contentAssistRequest = computeEndTagOpenProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode);
@@ -1111,7 +1132,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr
// These ITextRegion types begin DOM Elements as well and although
// internally harder to assist,
// text insertions directly before them can be made
- else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) {
+ else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType.equals(XMLJSPRegionContexts.JSP_COMMENT_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) {
contentAssistRequest = newContentAssistRequest(treeNode, xmlnode.getParentNode(), sdRegion, completionRegion, documentPosition, 0, matchString);
addTagInsertionProposals(contentAssistRequest, getElementPositionForModelQuery(treeNode));
addStartDocumentProposals(contentAssistRequest);
@@ -1123,7 +1144,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr
addStartDocumentProposals(contentAssistRequest);
if (documentPosition >= sdRegion.getTextEndOffset(completionRegion))
addTagInsertionProposals(contentAssistRequest, getElementPositionForModelQuery(treeNode) + 1);
- } else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) {
+ } else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType.equals(XMLJSPRegionContexts.JSP_COMMENT_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) {
contentAssistRequest = newContentAssistRequest(treeNode, xmlnode.getParentNode(), sdRegion, completionRegion, documentPosition, 0, matchString);
addTagInsertionProposals(contentAssistRequest, getElementPositionForModelQuery(treeNode));
addStartDocumentProposals(contentAssistRequest);
@@ -1993,7 +2014,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr
protected boolean isCloseRegion(ITextRegion region) {
String type = region.getType();
- return ((type == XMLRegionContext.XML_PI_CLOSE) || (type == XMLRegionContext.XML_TAG_CLOSE) || (type == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (type == XMLRegionContext.XML_CDATA_CLOSE) || (type == XMLRegionContext.XML_COMMENT_CLOSE) || (type == XMLRegionContext.XML_ATTLIST_DECL_CLOSE) || (type == XMLRegionContext.XML_ELEMENT_DECL_CLOSE) || (type == XMLRegionContext.XML_DOCTYPE_DECLARATION_CLOSE) || (type == XMLJSPRegionContexts.JSP_CLOSE) || (type == XMLJSPRegionContexts.JSP_COMMENT_CLOSE) || (type == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (type == XMLRegionContext.XML_DECLARATION_CLOSE));
+ return ((type == XMLRegionContext.XML_PI_CLOSE) || (type == XMLRegionContext.XML_TAG_CLOSE) || (type == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (type == XMLRegionContext.XML_CDATA_CLOSE) || (type == XMLRegionContext.XML_COMMENT_CLOSE) || (type == XMLRegionContext.XML_ATTLIST_DECL_CLOSE) || (type == XMLRegionContext.XML_ELEMENT_DECL_CLOSE) || (type == XMLRegionContext.XML_DOCTYPE_DECLARATION_CLOSE) || (type == XMLJSPRegionContexts.JSP_CLOSE) || (type == XMLJSPRegionContexts.JSP_COMMENT_CLOSE) || (type.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE)) || (type == XMLRegionContext.XML_DECLARATION_CLOSE));
}
/*
@@ -2063,7 +2084,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr
protected boolean isNameRegion(ITextRegion region) {
String type = region.getType();
- return ((type == XMLRegionContext.XML_TAG_NAME) || (type == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (type == XMLRegionContext.XML_ELEMENT_DECL_NAME) || (type == XMLRegionContext.XML_DOCTYPE_NAME) || (type == XMLRegionContext.XML_ATTLIST_DECL_NAME) || (type == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME) || type == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME);
+ return ((type == XMLRegionContext.XML_TAG_NAME) || (type == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (type == XMLRegionContext.XML_ELEMENT_DECL_NAME) || (type == XMLRegionContext.XML_DOCTYPE_NAME) || (type == XMLRegionContext.XML_ATTLIST_DECL_NAME) || (type == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME) || type.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_NAME));
}
protected boolean isQuote(String string) {
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java
index 3bac2eda6f..a31ce51c85 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java
@@ -27,7 +27,6 @@ import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils;
import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
import org.eclipse.wst.xml.core.document.XMLElement;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.eclipse.wst.xml.core.parser.XMLRegionContext;
import org.eclipse.wst.xml.ui.internal.editor.XMLEditorPluginImageHelper;
import org.w3c.dom.Document;
@@ -38,6 +37,20 @@ import org.w3c.dom.Node;
* @author pavery
*/
public class XMLContentAssistUtilities extends ContentAssistUtils {
+
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on "nestedContext".
+ */
+ private class XMLJSPRegionContexts {
+ private static final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$
+ private static final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$
+ private static final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$
+ private static final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$
+
+ }
+
+
public static final String CONTENT = "Content"; //$NON-NLS-1$
public static final String CONTENT_SCRIPT_TYPE = "Content-Script-Type"; //$NON-NLS-1$
public static final String HEAD = "HEAD"; //$NON-NLS-1$
@@ -112,10 +125,12 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
documentPosition, 0, proposedText.length() + 1, XMLEditorPluginImageHelper.getInstance().getImage(imagePath), //$NON-NLS-1$
SSEUIPlugin.getResourceString("%15concat", (new Object[]{proposedText})), //$NON-NLS-1$ = "End with '{0}>'"
null, null, XMLRelevanceConstants.R_END_TAG);
- } else if (!hasEndTag && isJSPTag) {
+ }
+ else if (!hasEndTag && isJSPTag) {
// create appropriate close tag text
- String proposedText = proposedText = "%"; // ResourceHandler wants
+ String proposedText = proposedText = "%"; // ResourceHandler
+ // wants
// text w/out ending '>'
// //$NON-NLS-1$
String viewerText = viewer.getTextWidget().getText();
@@ -221,12 +236,12 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
Node html = null;
Node head = null;
Node child = null;
- //----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
// (pa) 20021217
// cmvc defect 235554
// performance enhancement: using child.getNextSibling() rather than
// nodeList(item) for O(n) vs. O(n*n)
- //----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
for (child = doc.getFirstChild(); child != null; child = child.getNextSibling()) {
if (child.getNodeType() != Node.ELEMENT_NODE)
@@ -236,16 +251,16 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
else if (child.getNodeName().equalsIgnoreCase(HTML))
html = child;
}
- // NodeList children = doc.getChildNodes();
- // for(int i = 0; i < children.getLength(); i++) {
- // child = children.item(i);
- // if(child.getNodeType() != Node.ELEMENT_NODE)
- // continue;
- // if(child.getNodeName().equalsIgnoreCase(META))
- // metas.add(child);
- // else if(child.getNodeName().equalsIgnoreCase(HTML))
- // html = child;
- // }
+ // NodeList children = doc.getChildNodes();
+ // for(int i = 0; i < children.getLength(); i++) {
+ // child = children.item(i);
+ // if(child.getNodeType() != Node.ELEMENT_NODE)
+ // continue;
+ // if(child.getNodeName().equalsIgnoreCase(META))
+ // metas.add(child);
+ // else if(child.getNodeName().equalsIgnoreCase(HTML))
+ // html = child;
+ // }
// check for META tags under HEAD
if (html != null) {
@@ -255,14 +270,14 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
if (child.getNodeName().equalsIgnoreCase(HEAD))
head = child;
}
- // children = html.getChildNodes();
- // for(int i = 0; i < children.getLength() && head == null; i++) {
- // child = children.item(i);
- // if(child.getNodeType() != Node.ELEMENT_NODE)
- // continue;
- // if(child.getNodeName().equalsIgnoreCase(HEAD))
- // head = child;
- // }
+ // children = html.getChildNodes();
+ // for(int i = 0; i < children.getLength() && head == null; i++) {
+ // child = children.item(i);
+ // if(child.getNodeType() != Node.ELEMENT_NODE)
+ // continue;
+ // if(child.getNodeName().equalsIgnoreCase(HEAD))
+ // head = child;
+ // }
}
if (head != null) {
@@ -272,14 +287,14 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
if (child.getNodeName().equalsIgnoreCase(META))
metas.add(child);
}
- // children = head.getChildNodes();
- // for(int i = 0 ; i < children.getLength(); i++) {
- // child = children.item(i);
- // if(child.getNodeType() != Node.ELEMENT_NODE)
- // continue;
- // if(child.getNodeName().equalsIgnoreCase(META))
- // metas.add(child);
- // }
+ // children = head.getChildNodes();
+ // for(int i = 0 ; i < children.getLength(); i++) {
+ // child = children.item(i);
+ // if(child.getNodeType() != Node.ELEMENT_NODE)
+ // continue;
+ // if(child.getNodeName().equalsIgnoreCase(META))
+ // metas.add(child);
+ // }
}
return getMetaScriptType(metas);
@@ -299,7 +314,8 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
for (int j = 0; j < attributes.getLength(); j++) {
if (attributes.item(j).getNodeName().equalsIgnoreCase(HTTP_EQUIV)) {
httpEquiv = attributes.item(j).getNodeValue().equalsIgnoreCase(CONTENT_SCRIPT_TYPE);
- } else if (attributes.item(j).getNodeName().equalsIgnoreCase(CONTENT)) {
+ }
+ else if (attributes.item(j).getNodeName().equalsIgnoreCase(CONTENT)) {
contentScriptType = attributes.item(j).getNodeValue();
}
}
@@ -356,8 +372,9 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
/**
* Tells you if the flatnode is the %> delimiter
*
- * @param fn
- * @return boolean
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
*/
public static boolean isJSPCloseDelimiter(IStructuredDocumentRegion fn) {
if (fn == null)
@@ -365,17 +382,23 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
return isJSPCloseDelimiter(fn.getType());
}
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
+ */
public static boolean isJSPCloseDelimiter(String type) {
if (type == null)
return false;
- return (type == XMLJSPRegionContexts.JSP_CLOSE || type == XMLRegionContext.XML_TAG_CLOSE);
+ return (type.equals(XMLJSPRegionContexts.JSP_CLOSE) || type.equals(XMLRegionContext.XML_TAG_CLOSE));
}
/**
* Tells you if the flatnode is the JSP region <%%>, <%=%>, <%!%>
*
- * @param fn
- * @return boolean
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
*/
public static boolean isJSPDelimiter(IStructuredDocumentRegion fn) {
boolean isDelimiter = false;
@@ -386,6 +409,11 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
return isDelimiter;
}
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
+ */
public static boolean isJSPDelimiter(String type) {
if (type == null)
return false;
@@ -393,10 +421,9 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
}
/**
- * Tells you if the flatnode is <%, <%=, or <%!
- *
- * @param fn
- * @return boolean
+ * Tells you if the flatnode is <%, <%=, or <%! ISSUE: this is a bit of
+ * hidden JSP knowledge that was implemented this way for expedency.
+ * Should be evolved in future to depend on "nestedContext".
*/
public static boolean isJSPOpenDelimiter(IStructuredDocumentRegion fn) {
if (fn == null)
@@ -404,18 +431,24 @@ public class XMLContentAssistUtilities extends ContentAssistUtils {
return isJSPOpenDelimiter(fn.getType());
}
+ /**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
+ */
public static boolean isJSPOpenDelimiter(String type) {
if (type == null)
return false;
- return (type == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || type == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || type == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN);
+ return (type.equals(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || type.equals(XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || type.equals(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN));
}
/**
* Tells you if the flatnode is the <jsp:scriptlet>, <jsp:expression>, or
* <jsp:declaration>tag
*
- * @param fn
- * @return boolean
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
*/
public static boolean isXMLJSPDelimiter(IStructuredDocumentRegion fn) {
boolean isDelimiter = false;
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java
index 22cdb40a40..45314c443b 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java
@@ -19,13 +19,21 @@ import org.eclipse.wst.common.contentmodel.CMDataType;
import org.eclipse.wst.common.contentmodel.CMElementDeclaration;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.xml.core.document.XMLNode;
-import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts;
import org.w3c.dom.Node;
public class XMLContentModelGenerator extends AbstractContentModelGenerator {
/**
+ * ISSUE: this is a bit of hidden JSP knowledge that was implemented this
+ * way for expedency. Should be evolved in future to depend on
+ * "nestedContext".
+ */
+ private class XMLJSPRegionContexts {
+ private static final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$
+ }
+
+ /**
* XMLContentModelGenerator constructor comment.
*/
public XMLContentModelGenerator() {
@@ -38,7 +46,7 @@ public class XMLContentModelGenerator extends AbstractContentModelGenerator {
int usage = attrDecl.getUsage();
if (usage == CMAttributeDeclaration.REQUIRED) {
buffer.append(" "); //$NON-NLS-1$
- generateRequiredAttribute(null, attrDecl, buffer); //todo pass
+ generateRequiredAttribute(null, attrDecl, buffer); // todo pass
// ownerNode as
// 1st param
}
@@ -94,7 +102,8 @@ public class XMLContentModelGenerator extends AbstractContentModelGenerator {
return getRequiredName(node, elementDecl).length() + 2; // < +
// name +
// space
- } else {
+ }
+ else {
return 1 + getRequiredName(node, elementDecl).length() + getStartTagClose(node, elementDecl).length(); // < +
// name
// +
@@ -106,7 +115,7 @@ public class XMLContentModelGenerator extends AbstractContentModelGenerator {
protected String getOtherClose(Node notATagNode) {
if (notATagNode instanceof XMLNode) {
IStructuredDocumentRegion node = ((XMLNode) notATagNode).getStartStructuredDocumentRegion();
- if (node != null && node.getNumberOfRegions() > 1 && node.getRegions().get(0).getType() == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) {
+ if (node != null && node.getNumberOfRegions() > 1 && node.getRegions().get(0).getType().equals(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN)) {
return "%>"; //$NON-NLS-1$
}
}

Back to the top