Author: dazarov
Date: 2011-05-26 13:13:07 -0400 (Thu, 26 May 2011)
New Revision: 31521
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JsfJSPTagNameHyperlinkDetector.java
Log:
https://issues.jboss.org/browse/JBIDE-9004
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JsfJSPTagNameHyperlinkDetector.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JsfJSPTagNameHyperlinkDetector.java 2011-05-26
16:52:23 UTC (rev 31520)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JsfJSPTagNameHyperlinkDetector.java 2011-05-26
17:13:07 UTC (rev 31521)
@@ -177,32 +177,34 @@
private IRegion getRegion(Node n, int offset) {
if (n == null || !(n instanceof IDOMNode)) return null;
- int start = 0;
- int nameStart;
- int nameEnd;
+ int nameStart, nameEnd;
if(n instanceof IDOMAttr) {
IDOMAttr attr = (IDOMAttr)n;
String attrName = attr.getName();
- start = attr.getStartOffset();
+ int start = attr.getStartOffset();
nameStart = start;
nameEnd = nameStart + attrName.length();
- } else if(n instanceof IDOMElement) {
+ } else if(n instanceof IDOMElement) {
IDOMElement elem = (IDOMElement)n;
- String tagName = elem.getTagName();
- start = elem.getStartOffset();
- nameStart = start + "<".length(); //$NON-NLS-1$
- nameEnd = nameStart + tagName.length();
- if(offset > nameEnd) {
- start = elem.getEndStartOffset();
+ String tagName = elem.getTagName();
+ if(offset >= elem.getStartOffset() && offset <=
elem.getStartEndOffset()){
+ int start = elem.getStartOffset();
+ nameStart = start + "<".length(); //$NON-NLS-1$
+ nameEnd = nameStart + tagName.length();
+ }else if(offset >= elem.getEndStartOffset() && offset <=
(elem.getEndStartOffset() + elem.getLength())) {
+ int start = elem.getEndStartOffset();
nameStart = start + "</".length(); //$NON-NLS-1$
nameEnd = nameStart + tagName.length();
- }
- } else {
+ }else
+ return null;
+ } else
return null;
- }
-
- return new Region(nameStart,nameEnd - nameStart);
+
+ if(offset < nameEnd)
+ return new Region(nameStart, nameEnd - nameStart);
+ else
+ return null;
}
private String getURI(IRegion region, IDocument document) {