[jbosstools-commits] JBoss Tools SVN: r42447 - trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Jul 6 18:09:28 EDT 2012


Author: scabanovich
Date: 2012-07-06 18:09:27 -0400 (Fri, 06 Jul 2012)
New Revision: 42447

Modified:
   trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlink.java
   trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java
Log:
JBIDE-12295
https://issues.jboss.org/browse/JBIDE-12295
Open-on for variable declared by ui:param.

Modified: trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlink.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlink.java	2012-07-06 22:08:39 UTC (rev 42446)
+++ trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlink.java	2012-07-06 22:09:27 UTC (rev 42447)
@@ -34,10 +34,12 @@
 public class ELHyperlink extends AbstractHyperlink{
 	private ELReference reference;
 	private ELSegment segment;
+	IOpenableReference openable;
 	
-	public ELHyperlink(IDocument document, ELReference reference, ELSegment segment) {
+	public ELHyperlink(IDocument document, ELReference reference, ELSegment segment, IOpenableReference openable) {
 		this.reference = reference;
 		this.segment = segment;
+		this.openable = openable;
 		setDocument(document);
 	}
 
@@ -55,10 +57,9 @@
 
 	@Override
 	protected void doHyperlink(IRegion region) {
-		IOpenableReference[] openables = segment.getOpenable();
 		
-		if(openables.length > 0) {
-			if(!openables[0].open()) {
+		if(openable != null) {
+			if(!openable.open()) {
 				openFileFailed();
 			}
 			//If openables.length > 1 - show menu.
@@ -83,9 +84,8 @@
 	
 	@Override
 	public String getHyperlinkText() {
-		IOpenableReference[] openables = segment.getOpenable();
-		if(openables.length > 0) {
-			return openables[0].getLabel();
+		if(openable != null) {
+			return openable.getLabel();
 		}
 		if(segment instanceof JavaMemberELSegment){
 			return "Should not get here."; //$NON-NLS-1$

Modified: trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java	2012-07-06 22:08:39 UTC (rev 42446)
+++ trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java	2012-07-06 22:09:27 UTC (rev 42447)
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.jboss.tools.jst.text.ext.hyperlink;
 
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -30,6 +31,7 @@
 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.el.core.resolver.IOpenableReference;
 import org.jboss.tools.jst.web.kb.PageContextFactory;
 
 public class ELHyperlinkDetector extends AbstractHyperlinkDetector{
@@ -44,7 +46,7 @@
 		ELContext context = PageContextFactory.createPageContext(file);
 		if(context == null)
 			return null;
-		Set<IHyperlink> links = new HashSet<IHyperlink>();
+		List<IHyperlink> links = new ArrayList<IHyperlink>();
 		ELReference reference = context.getELReference(region.getOffset());
 		if(reference != null){
 			ELInvocationExpression expression = findInvocationExpressionByOffset(reference, region.getOffset());
@@ -56,8 +58,15 @@
 						ELSegment segment = resolution.findSegmentByOffset(region.getOffset()-reference.getStartPosition());
 	
 						if(segment != null && segment.isResolved()){
+							IOpenableReference[] openables = segment.getOpenable();
 //							return new IHyperlink[]{new ELHyperlink(textViewer.getDocument(), reference, segment)};
-							links.add(new ELHyperlink(textViewer.getDocument(), reference, segment));
+							if(openables.length == 0) {
+								links.add(new ELHyperlink(textViewer.getDocument(), reference, segment, null));
+							} else {
+								for (IOpenableReference openable: openables) {
+									links.add(new ELHyperlink(textViewer.getDocument(), reference, segment, openable));
+								}
+							}
 						}
 						
 					}
@@ -78,8 +87,7 @@
 	 * @return
 	 */
 	public static ELInvocationExpression findInvocationExpressionByOffset(ELReference reference, int offset){
-		ELExpression[] expressions = reference.getEl();
-		for(ELExpression expression : expressions){
+		for(ELExpression expression : reference.getEl()){
 			if(reference.getStartPosition()+expression.getStartPosition() <= offset && reference.getStartPosition()+expression.getEndPosition() > offset){
 				ELInvocationExpression invocation = findInvocationExpressionByOffset(reference, expression, offset);
 				if(invocation != null)



More information about the jbosstools-commits mailing list