Author: vrubezhny
Date: 2011-03-29 10:33:13 -0400 (Tue, 29 Mar 2011)
New Revision: 30103
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlink.java
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlinkPartitioner.java
Modified:
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xpl/AbstractBaseHyperlink.java
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/plugin.xml
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.java
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.properties
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java
Log:
JBIDE-7461
OpenOns for #{cc.attrs.*}
Issue is fixed
Modified:
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xpl/AbstractBaseHyperlink.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xpl/AbstractBaseHyperlink.java 2011-03-29
13:50:38 UTC (rev 30102)
+++
trunk/common/plugins/org.jboss.tools.common.text.ext/src/org/jboss/tools/common/text/ext/hyperlink/xpl/AbstractBaseHyperlink.java 2011-03-29
14:33:13 UTC (rev 30103)
@@ -22,7 +22,6 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.Region;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorInput;
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java 2011-03-29
13:50:38 UTC (rev 30102)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/JSF2CCAttrsELCompletionEngine.java 2011-03-29
14:33:13 UTC (rev 30103)
@@ -35,6 +35,7 @@
import org.jboss.tools.common.el.core.parser.ELParser;
import org.jboss.tools.common.el.core.parser.ELParserFactory;
import org.jboss.tools.common.el.core.parser.ELParserUtil;
+import org.jboss.tools.common.el.core.parser.LexicalToken;
import org.jboss.tools.common.el.core.resolver.ELContext;
import org.jboss.tools.common.el.core.resolver.ELResolution;
import org.jboss.tools.common.el.core.resolver.ELResolutionImpl;
@@ -192,7 +193,16 @@
resolution.setLastResolvedToken(left);
ELSegmentImpl segment = new ELSegmentImpl();
- segment.setToken(left.getFirstToken());
+ // Combine left's tokens into a single token
+ LexicalToken token = left.getFirstToken();
+ String singleText = left.getText();
+ int start = token.getStart();
+ int type = token.getType();
+ int length = singleText.length();
+
+ LexicalToken singleToken = new LexicalToken(start, length, singleText, type);
+
+ segment.setToken(singleToken);
segment.setResolved(true);
resolution.addSegment(segment);
Modified: trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/plugin.xml
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/plugin.xml 2011-03-29 13:50:38 UTC (rev
30102)
+++ trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/plugin.xml 2011-03-29 14:33:13 UTC (rev
30103)
@@ -907,6 +907,27 @@
</hyperlinkPartitioner -->
<hyperlinkPartitioner
+
id="org.jboss.tools.jsf.text.ext.hyperlink.JSF2CCAttrsOpenOnPartitioner"
+
class="org.jboss.tools.jsf.text.ext.hyperlink.JSF2CCAttrsHyperlinkPartitioner">
+ <contentType id="org.eclipse.jst.jsp.core.jspsource">
+ <partitionType
id="org.jboss.tools.common.text.ext.jsp.JSP_EXPRESSION" />
+ </contentType>
+ <!-- these CTs were copied from the JsfJSPBundleHyperlinkPartitioner -->
+ <contentType id="org.eclipse.wst.html.core.htmlsource">
+ <partitionType
id="org.jboss.tools.common.text.ext.jsp.JSP_EXPRESSION" />
+ </contentType>
+ <contentType id="jsf.facelet">
+ <partitionType
id="org.jboss.tools.common.text.ext.jsp.JSP_EXPRESSION" />
+ </contentType>
+ <contentType id="jsf.facelet.composite">
+ <partitionType
id="org.jboss.tools.common.text.ext.jsp.JSP_EXPRESSION" />
+ </contentType>
+ <contentType id="org.jboss.tools.jst.jsp.jspincludesource">
+ <partitionType
id="org.jboss.tools.common.text.ext.jsp.JSP_EXPRESSION" />
+ </contentType>
+ </hyperlinkPartitioner>
+
+ <hyperlinkPartitioner
id="org.jboss.tools.common.text.ext.jsf.hyperlink.JSPClassHyperlinkPartitioner"
class="org.jboss.tools.jst.text.ext.hyperlink.jsp.JSPClassHyperlinkPartitioner">
<contentType id="org.eclipse.jst.jsp.core.jspsource">
@@ -1210,6 +1231,26 @@
</contenttypeidentifier>
</hyperlink>
+ <hyperlink
+ class="org.jboss.tools.jsf.text.ext.hyperlink.JSF2CCAttrsHyperlink"
+ id="org.jboss.tools.jsf.text.ext.hyperlink.JSF2CCAttrsHyperlink">
+ <contenttypeidentifier id="org.eclipse.jst.jsp.core.jspsource">
+ <partitiontype
id="org.jboss.tools.common.text.ext.jsp.JSF2_CC_ATTRIBUTE" />
+ </contenttypeidentifier>
+ <contenttypeidentifier id="org.eclipse.wst.html.core.htmlsource">
+ <partitiontype
id="org.jboss.tools.common.text.ext.jsp.JSF2_CC_ATTRIBUTE" />
+ </contenttypeidentifier>
+ <contenttypeidentifier id="jsf.facelet">
+ <partitiontype
id="org.jboss.tools.common.text.ext.jsp.JSF2_CC_ATTRIBUTE" />
+ </contenttypeidentifier>
+ <contenttypeidentifier id="jsf.facelet.composite">
+ <partitiontype
id="org.jboss.tools.common.text.ext.jsp.JSF2_CC_ATTRIBUTE" />
+ </contenttypeidentifier>
+ <contenttypeidentifier id="org.jboss.tools.jst.jsp.jspincludesource">
+ <partitiontype
id="org.jboss.tools.common.text.ext.jsp.JSF2_CC_ATTRIBUTE" />
+ </contenttypeidentifier>
+ </hyperlink>
+
<!-- hyperlink
class="org.jboss.tools.jsf.text.ext.hyperlink.JsfBundleHyperlink"
id="org.jboss.tools.common.text.ext.jsf.hyperlink.JsfBundleHyperlink">
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.java 2011-03-29
13:50:38 UTC (rev 30102)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.java 2011-03-29
14:33:13 UTC (rev 30103)
@@ -1,12 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Copyright (c) 2011 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
+ * Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jsf.text.ext;
@@ -41,4 +41,5 @@
public static String Validator;
public static String OpenValidatorForId;
public static String OpenJavaElement;
+ public static String OpenJsf2CCAttribute;
}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.properties
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.properties 2011-03-29
13:50:38 UTC (rev 30102)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/JSFTextExtMessages.properties 2011-03-29
14:33:13 UTC (rev 30103)
@@ -1,12 +1,12 @@
# ******************************************************************************
-# Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+# Copyright (c) 2011 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
+# Red Hat, Inc. - initial API and implementation
# ******************************************************************************
Converter=Converter
@@ -24,3 +24,5 @@
Validator=validator
OpenValidatorForId=Open a validator for ID ''{1}''
OpenJavaElement=Open Java Element
+OpenJsf2CCAttribute=Open a Custom Component Attribute definition
+
\ No newline at end of file
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlink.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlink.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlink.java 2011-03-29
14:33:13 UTC (rev 30103)
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.jsf.text.ext.hyperlink;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Region;
+import org.jboss.tools.common.el.core.model.ELInvocationExpression;
+import org.jboss.tools.common.el.core.resolver.ELContext;
+import org.jboss.tools.common.el.core.resolver.ELResolution;
+import org.jboss.tools.common.el.core.resolver.ELSegment;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.PositionHolder;
+import org.jboss.tools.common.text.ext.hyperlink.AbstractHyperlink;
+import org.jboss.tools.common.text.ext.util.StructuredSelectionHelper;
+import org.jboss.tools.jsf.text.ext.JSFTextExtMessages;
+import
org.jboss.tools.jsf.text.ext.hyperlink.JSPExprHyperlinkPartitioner.ExpressionStructure;
+
+/**
+ *
+ * @author Victor V. Rubezhny
+ *
+ */
+public class JSF2CCAttrsHyperlink extends AbstractHyperlink {
+ IRegion fLastRegion = null;
+
+ @Override
+ protected IRegion doGetHyperlinkRegion(int offset) {
+ fLastRegion = JSF2CCAttrsHyperlinkPartitioner.getRegion(getDocument(), offset);
+ return fLastRegion;
+ }
+
+ @Override
+ protected void doHyperlink(IRegion region) {
+ XModelObject attrObject = null;
+ IRegion attrRegion = null;
+
+ ELContext context = JSPExprHyperlinkPartitioner.getELContext(getDocument());
+ if(context != null){
+ ExpressionStructure eStructure = JSPExprHyperlinkPartitioner.getExpression(context,
getOffset());
+ if(eStructure != null){
+ ELInvocationExpression invocationExpression =
JSPExprHyperlinkPartitioner.getInvocationExpression(eStructure.reference,
eStructure.expression, getOffset());
+ if(invocationExpression != null){
+
+ ELResolution resolution = JSF2CCAttrsHyperlinkPartitioner.getResolution(context,
invocationExpression, getOffset()-eStructure.reference.getStartPosition(), getOffset());
+ if (resolution == null)
+ return;
+
+ ELSegment segment =
resolution.findSegmentByOffset(getOffset()-eStructure.reference.getStartPosition());
+ if(segment != null && segment.isResolved()){
+ // Find text for the part of operand
+ StringBuffer sbBuffer = new StringBuffer();
+ for (ELSegment s : resolution.getSegments()) {
+ sbBuffer.append(s.getToken().getText());
+ if (s == segment) {
+ break;
+ }
+ sbBuffer.append('.'); // Use default separator for ELs here
+ }
+
+ String text = sbBuffer.toString();
+
+ attrObject = JSF2CCAttrsHyperlinkPartitioner.findJSF2CCAttributeXModelObject(text,
getFile());
+ if (attrObject != null) {
+ PositionHolder h = PositionHolder.getPosition(attrObject, null);
+ h.update();
+ attrRegion = new Region(h.getStart(), h.getEnd() - h.getStart());
+ }
+ }
+ }
+ }
+ }
+ if (attrObject != null && attrRegion != null) {
+ IFile file = (IFile)attrObject.getAdapter(IFile.class);
+ if (file != null) {
+ if (openFileInEditor(file) != null) {
+ StructuredSelectionHelper.setSelectionAndRevealInActiveEditor(attrRegion);
+ return;
+ }
+ }
+ }
+
+ openFileFailed();
+ }
+
+ @Override
+ public String getHyperlinkText() {
+ return JSFTextExtMessages.OpenJsf2CCAttribute;
+ }
+
+}
Property changes on:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlink.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlinkPartitioner.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlinkPartitioner.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlinkPartitioner.java 2011-03-29
14:33:13 UTC (rev 30103)
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.jsf.text.ext.hyperlink;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jface.text.IDocument;
+import org.jboss.tools.common.el.core.model.ELExpression;
+import org.jboss.tools.common.el.core.model.ELInvocationExpression;
+import org.jboss.tools.common.el.core.resolver.ELContext;
+import org.jboss.tools.common.el.core.resolver.ELResolution;
+import org.jboss.tools.common.el.core.resolver.ELResolver;
+import org.jboss.tools.common.el.core.resolver.ELSegment;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+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.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.jboss.tools.jsf.text.ext.hyperlink.JSPExprHyperlinkPartitioner.ExpressionStructure;
+import org.jboss.tools.jst.text.ext.hyperlink.jsp.JSPRootHyperlinkPartitioner;
+import org.w3c.dom.Document;
+
+/**
+ *
+ * @author Victor V. Rubezhny
+ *
+ */
+public class JSF2CCAttrsHyperlinkPartitioner extends AbstractHyperlinkPartitioner
implements IHyperlinkPartitionRecognizer {
+ public static final String JSF2_CC_ATTRIBUTE_PARTITION =
"org.jboss.tools.common.text.ext.jsp.JSF2_CC_ATTRIBUTE"; //$NON-NLS-1$
+
+ protected String getPartitionType() {
+ return JSF2_CC_ATTRIBUTE_PARTITION;
+ }
+
+ @Override
+ public boolean recognize(IDocument document, IHyperlinkRegion region) {
+ StructuredModelWrapper smw = new StructuredModelWrapper();
+ smw.init(document);
+ try {
+ Document xmlDocument = smw.getDocument();
+ if (xmlDocument == null) return false;
+
+ Utils.findNodeForOffset(xmlDocument, region.getOffset());
+
+ return (getRegion(document, region.getOffset()) != null);
+ } finally {
+ smw.dispose();
+ }
+ }
+
+ @Override
+ protected IHyperlinkRegion parse(IDocument document, IHyperlinkRegion superRegion) {
+ StructuredModelWrapper smw = new StructuredModelWrapper();
+ smw.init(document);
+ try {
+ Document xmlDocument = smw.getDocument();
+ if (xmlDocument == null) return null;
+
+ Utils.findNodeForOffset(xmlDocument, superRegion.getOffset());
+ if (!recognize(document, superRegion)) return null;
+ IHyperlinkRegion r = getRegion(document, superRegion.getOffset());
+ if (r == null) return null;
+
+ String axis = getAxis(document, superRegion);
+ String contentType = superRegion.getContentType();
+ String type = getPartitionType();
+ int length = r.getLength() - (superRegion.getOffset() - r.getOffset());
+ int offset = superRegion.getOffset();
+
+ IHyperlinkRegion region = new HyperlinkRegion(offset, length, axis, contentType,
type);
+ return region;
+ } finally {
+ smw.dispose();
+ }
+ }
+
+ protected String getAxis(IDocument document, IHyperlinkRegion superRegion) {
+ if (superRegion.getAxis() == null || superRegion.getAxis().length() == 0) {
+ return JSPRootHyperlinkPartitioner.computeAxis(document, superRegion.getOffset()) +
"/"; //$NON-NLS-1$
+ }
+ return superRegion.getAxis();
+ }
+
+ public static IHyperlinkRegion getRegion(IDocument document, final int offset) {
+ ELContext context = JSPExprHyperlinkPartitioner.getELContext(document);
+ if(context != null){
+ ExpressionStructure eStructure = JSPExprHyperlinkPartitioner.getExpression(context,
offset);
+ if(eStructure != null){
+ ELInvocationExpression invocationExpression =
JSPExprHyperlinkPartitioner.getInvocationExpression(eStructure.reference,
eStructure.expression, offset);
+ if(invocationExpression != null){
+ ELSegment segment = decide(context, eStructure.expression, invocationExpression,
offset-eStructure.reference.getStartPosition(), offset, getFile(document));
+ if (segment != null) {
+ IHyperlinkRegion region = new
HyperlinkRegion(eStructure.reference.getStartPosition() +
segment.getSourceReference().getStartPosition(), segment.getSourceReference().getLength(),
null, null, null);
+ return region;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ static String[] vs = {"cc.attrs", "compositeComponent.attrs"};
+
+ public static XModelObject findJSF2CCAttributeXModelObject(String varName, IFile file)
{
+ XModelObject xModelObject = EclipseResourceUtil.createObjectForResource(file);
+ if(xModelObject == null) return null;
+ if(!"FileJSF2Component".equals(xModelObject.getModelEntity().getName()))
return null;
+
+ IJavaProject javaProject = EclipseResourceUtil.getJavaProject(file.getProject());
+ XModelObject is = xModelObject.getChildByPath("Interface");
+ if(is != null && javaProject != null) {
+ for (int i = 0; i < vs.length; i++) {
+ if (vs[i].equals(varName)) return is;
+ }
+ XModelObject[] cs = is.getChildren("JSF2ComponentAttribute");
+
+ for (int i = 0; i < cs.length; i++) {
+ String name = cs[i].getAttributeValue("name");
+ String[] names = {vs[0] + "." + name, vs[1] + "." + name};
+ for (String n: names) {
+ if (n.equals(varName)) return cs[i];
+ }
+ }
+ }
+ return null;
+ }
+
+ private static IFile getFile(IDocument document) {
+ StructuredModelWrapper smw = new StructuredModelWrapper();
+ try {
+ smw.init(document);
+ return smw.getFile();
+ } finally {
+ smw.dispose();
+ }
+ }
+
+ private static ELSegment decide(ELContext context, ELExpression expression,
ELInvocationExpression invocationExpression, int offset, int globalOffset, IFile file){
+ ELResolution resolution = getResolution(context, invocationExpression, offset,
globalOffset);
+ if (resolution == null)
+ return null;
+
+ ELSegment segment = resolution.findSegmentByOffset(offset);
+ if(segment != null && segment.isResolved()){
+ // Find text for the part of operand
+ StringBuffer sbBuffer = new StringBuffer();
+ for (ELSegment s : resolution.getSegments()) {
+ sbBuffer.append(s.getToken().getText());
+ if (s == segment) {
+ break;
+ }
+ sbBuffer.append('.'); // Use default separator for ELs here
+ }
+
+ String text = sbBuffer.toString();
+ if (findJSF2CCAttributeXModelObject(text, file) != null) {
+ return segment;
+ }
+ }
+ return null;
+ }
+
+ static ELResolution getResolution(ELContext context, ELInvocationExpression
invocationExpression, int offset, int globalOffset) {
+ for(ELResolver resolver : context.getElResolvers()){
+ ELResolution resolution = resolver.resolve(context, invocationExpression,
globalOffset);
+ if(resolution==null) {
+ continue;
+ }
+ ELSegment segment = resolution.findSegmentByOffset(offset);
+ if(segment != null && segment.isResolved()){
+ return resolution;
+ }
+ }
+ return null;
+
+ }
+
+}
Property changes on:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSF2CCAttrsHyperlinkPartitioner.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain