[jbosstools-commits] JBoss Tools SVN: r31058 - in trunk/common/plugins/org.jboss.tools.common.text.ext: src/org/jboss/tools/common/text/ext/hyperlink/xml and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue May 3 22:24:51 EDT 2011


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



More information about the jbosstools-commits mailing list