Author: scabanovich
Date: 2012-07-16 17:44:20 -0400 (Mon, 16 Jul 2012)
New Revision: 42601
Modified:
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 of definition of a var, which has unresolved value.
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-16
21:38:33 UTC (rev 42600)
+++
trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java 2012-07-16
21:44:20 UTC (rev 42601)
@@ -31,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.ELSegmentImpl;
import org.jboss.tools.common.el.core.resolver.IOpenableReference;
import org.jboss.tools.jst.web.kb.PageContextFactory;
@@ -52,6 +53,7 @@
ELInvocationExpression expression = findInvocationExpressionByOffset(reference,
region.getOffset());
if(expression != null){
ELResolver[] resolvers = context.getElResolvers();
+ ELSegment unresolved = null;
for(ELResolver resolver : resolvers){
ELResolution resolution = resolver.resolve(context, expression,
region.getOffset());
if(resolution != null){
@@ -67,10 +69,22 @@
links.add(new ELHyperlink(textViewer.getDocument(), reference, segment,
openable));
}
}
+ } else if(segment != null && ((ELSegmentImpl)segment).getVar() != null
&& unresolved == null && segment.getOpenable().length > 0) {
+ unresolved = segment;
}
-
}
}
+ if(links.isEmpty() && unresolved != null) {
+ //This is a case when a reference to var is resolved, but its value is not
resolved.
+ //More than one resolver can see that var, we may use any one of them.
+ //Available openable is to the var definition.
+ IOpenableReference[] openables = unresolved.getOpenable();
+ if(openables.length > 0) {
+ for (IOpenableReference openable: openables) {
+ links.add(new ELHyperlink(textViewer.getDocument(), reference, unresolved,
openable));
+ }
+ }
+ }
}
}