|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.javacore.jmiimpl.javamodel; import org.netbeans.jmi.javamodel.*; import java.util.*; import org.openide.text.PositionBounds; /** * @author Jan Becicka */ public class ElementFinder { private int position; private Resource resource; public ElementFinder(Resource resource) { this.resource = resource; } public Element getElementByOffset(int position) { LinkedList queue = new LinkedList(); queue.addFirst(resource); Element last = resource; while (!queue.isEmpty()) { MetadataElement el = (MetadataElement) queue.removeLast(); PositionBounds b = el.getPosition(); if (b.getBegin().getOffset() <= position && b.getEnd().getOffset() >= position) { last = el; Collection children = el.getChildren(); if (children.isEmpty()) { return el; } queue.addAll(children); } } return last; } public Element getElementBySelection(int start, int end, boolean fromBeginning) { LinkedList queue = new LinkedList(); queue.addFirst(resource); Element last = null; while (!queue.isEmpty()) { MetadataElement el = (MetadataElement) (fromBeginning?queue.removeFirst():queue.removeLast()); PositionBounds b = el.getPosition(); int from = b.getBegin().getOffset(); int to = b.getEnd().getOffset(); Collection children = el.getChildren(); if (start <= from && end >= to) { last = el; queue.clear(); queue.addAll(children); } else { if (last == null) { queue.addAll(children); } else { break; } } } return last; } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.