Author: scabanovich
Date: 2011-05-03 22:24:51 -0400 (Tue, 03 May 2011)
New Revision: 31058
Added:
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xml/XMLElementAttributeNameHyperlinkPartitioner.java
Modified:
trunk/common/plugins/org.jboss.tools.common.text.ext/plugin.xml
Log:
JBIDE-8845
https://issues.jboss.org/browse/JBIDE-8845
Modified: trunk/common/plugins/org.jboss.tools.common.text.ext/plugin.xml
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.text.ext/plugin.xml 2011-05-04 01:43:10
UTC (rev 31057)
+++ trunk/common/plugins/org.jboss.tools.common.text.ext/plugin.xml 2011-05-04 02:24:51
UTC (rev 31058)
@@ -145,6 +145,32 @@
</hyperlinkPartitioner>
<hyperlinkPartitioner
+ class="org.jboss.tools.common.text.ext.hyperlink.xml.XMLElementAttributeNameHyperlinkPartitioner"
+ id="org.jboss.tools.common.text.ext.hyperlink.xml.XMLElementAttributeNameHyperlinkPartitioner">
+ <contentType id="org.eclipse.jst.jsf.facesconfig.facesConfigFile">
+ <partitionType id="org.jboss.tools.common.text.ext.xml.XML_ELEMENT"
/>
+ </contentType>
+ <contentType id="org.eclipse.jst.jsp.core.tldsource">
+ <partitionType
id="org.jboss.tools.common.text.ext.xml.XML_ELEMENT" />
+ </contentType>
+ <contentType id="org.eclipse.wst.xml.core.xmlsource">
+ <partitionType
id="org.jboss.tools.common.text.ext.xml.XML_ELEMENT" />
+ </contentType>
+ <contentType id="org.eclipse.core.runtime.xml">
+ <partitionType
id="org.jboss.tools.common.text.ext.xml.XML_ELEMENT" />
+ </contentType>
+ <contentType id="org.eclipse.jst.j2ee.webDD">
+ <partitionType
id="org.jboss.tools.common.text.ext.xml.XML_ELEMENT" />
+ </contentType>
+ <contentType id="org.eclipse.jst.jee.ee5webDD">
+ <partitionType
id="org.jboss.tools.common.text.ext.xml.XML_ROOT"/>
+ </contentType>
+ <contentType id="org.jboss.tools.common.model.ui.xml">
+ <partitionType
id="org.jboss.tools.common.text.ext.xml.XML_ELEMENT" />
+ </contentType>
+ </hyperlinkPartitioner>
+
+ <hyperlinkPartitioner
class="org.jboss.tools.common.text.ext.hyperlink.xml.XMLElementAttributeValueHyperlinkPartitioner"
id="org.jboss.tools.common.text.ext.hyperlink.xml.XMLElementAttributeValueHyperlinkPartitioner">
<contentType id="org.eclipse.jst.jsf.facesconfig.facesConfigFile">
Added:
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xml/XMLElementAttributeNameHyperlinkPartitioner.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xml/XMLElementAttributeNameHyperlinkPartitioner.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xml/XMLElementAttributeNameHyperlinkPartitioner.java 2011-05-04
02:24:51 UTC (rev 31058)
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.common.text.ext.hyperlink.xml;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+import org.jboss.tools.common.text.ext.hyperlink.AbstractHyperlinkPartitioner;
+import org.jboss.tools.common.text.ext.hyperlink.HyperlinkRegion;
+import org.jboss.tools.common.text.ext.hyperlink.IExclusiblePartitionerRecognition;
+import org.jboss.tools.common.text.ext.hyperlink.IHyperlinkPartitionRecognizer;
+import org.jboss.tools.common.text.ext.hyperlink.IHyperlinkRegion;
+import org.jboss.tools.common.text.ext.util.StructuredModelWrapper;
+import org.jboss.tools.common.text.ext.util.Utils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+
+/**
+ * @author Jeremy
+ */
+public class XMLElementAttributeNameHyperlinkPartitioner extends
AbstractHyperlinkPartitioner implements IHyperlinkPartitionRecognizer,
IExclusiblePartitionerRecognition {
+ public static final String XML_ATTRIBUTE_NAME_PARTITION =
"org.jboss.tools.common.text.ext.xml.XML_ATTRIBUTE_NAME"; //$NON-NLS-1$
+
+ protected String getPartitionType() {
+ return XML_ATTRIBUTE_NAME_PARTITION;
+ }
+
+ /**
+ * @see
com.ibm.sse.editor.hyperlink.AbstractHyperlinkPartitioner#parse(org.eclipse.jface.text.IDocument,
com.ibm.sse.editor.extensions.hyperlink.IHyperlinkRegion)
+ */
+ protected IHyperlinkRegion parse(IDocument document, IHyperlinkRegion superRegion) {
+ StructuredModelWrapper smw = new StructuredModelWrapper();
+ try {
+ smw.init(document);
+ Document xmlDocument = smw.getDocument();
+ if (xmlDocument == null) return null;
+
+ Node n = Utils.findNodeForOffset(xmlDocument, superRegion.getOffset());
+ if (n == null || !(n instanceof Attr)) return null;
+ int start = (n instanceof IDOMAttr) ? ((IDOMAttr)n).getNameRegionStartOffset() : -1;
+ int end = (n instanceof IDOMAttr) ? ((IDOMAttr)n).getNameRegionEndOffset() : -1;
+
+ String axis = getAxis(document, superRegion);
+ String contentType = superRegion.getContentType();
+ String type = getPartitionType();
+ int length = end - start - (superRegion.getOffset() - start);
+ int offset = superRegion.getOffset();
+
+ IHyperlinkRegion region = new HyperlinkRegion(offset, length, axis, contentType,
type);
+ return region;
+ } finally {
+ smw.dispose();
+ }
+ }
+
+ /**
+ * @see
com.ibm.sse.editor.extensions.hyperlink.IHyperlinkPartitionRecognizer#recognize(org.eclipse.jface.text.IDocument,
com.ibm.sse.editor.extensions.hyperlink.IHyperlinkRegion)
+ */
+ public boolean recognize(IDocument document, IHyperlinkRegion region) {
+ StructuredModelWrapper smw = new StructuredModelWrapper();
+ try {
+ smw.init(document);
+ Document xmlDocument = smw.getDocument();
+ if (xmlDocument == null) return false;
+
+ Node n = Utils.findNodeForOffset(xmlDocument, region.getOffset());
+ if (!(n instanceof Attr)) return false;
+ int start = (n instanceof IDOMAttr) ? ((IDOMAttr)n).getNameRegionStartOffset() : -1;
+ int end = (n instanceof IDOMAttr) ? ((IDOMAttr)n).getNameRegionEndOffset() : -1;
+ if (start < 0 || start > region.getOffset() || end < region.getOffset())
+ return false;
+
+ return true;
+ } finally {
+ smw.dispose();
+ }
+ }
+
+ public boolean excludes(String partitionType, IDocument document, IHyperlinkRegion
superRegion) {
+ return false;
+ }
+
+ public String getExclusionPartitionType() {
+ return getPartitionType();
+ }
+
+
+}
\ No newline at end of file
Property changes on:
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xml/XMLElementAttributeNameHyperlinkPartitioner.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain