1 19 20 package org.netbeans.modules.javacore.jmiimpl.javamodel; 21 22 import org.netbeans.jmi.javamodel.*; 23 import java.util.*; 24 import org.openide.text.PositionBounds; 25 26 29 public class ElementFinder { 30 31 private Resource resource; 32 33 public ElementFinder(Resource resource) { 34 this.resource = resource; 35 } 36 37 public Element getElementByOffset(int position) { 38 LinkedList queue = new LinkedList(); 39 queue.addFirst(resource); 40 Element last = resource; 41 while (!queue.isEmpty()) { 42 MetadataElement el = (MetadataElement) queue.removeLast(); 43 PositionBounds b = el.getPosition(false); 44 if (b.getBegin().getOffset() <= position && b.getEnd().getOffset() > position) { 45 last = el; 46 Collection children = el.getChildren(); 47 if (children.isEmpty()) { 48 return el; 49 } 50 queue.addAll(children); 51 } 52 } 53 return last; 54 } 55 56 } 57 | Popular Tags |