Example usage for org.springframework.ide.eclipse.beans.ui.editor.util BeansEditorUtils getNodeByOffset

List of usage examples for org.springframework.ide.eclipse.beans.ui.editor.util BeansEditorUtils getNodeByOffset

Introduction

In this page you can find the example usage for org.springframework.ide.eclipse.beans.ui.editor.util BeansEditorUtils getNodeByOffset.

Prototype

public static final Node getNodeByOffset(IDocument document, int offset) 

Source Link

Document

Returns the node from given document at specified offset.

Usage

From source file:org.dozer.eclipse.plugin.sourcepage.hyperlink.DozerClassHyperlinkDetector.java

@SuppressWarnings("restriction")
public final IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region,
        boolean canShowMultipleHyperlinks) {
    if (region == null || textViewer == null) {
        return null;
    }/*  w  w  w. ja  va 2s .co  m*/

    IDocument document = textViewer.getDocument();

    Node currentNode = BeansEditorUtils.getNodeByOffset(document, region.getOffset());
    if (currentNode != null) {
        switch (currentNode.getNodeType()) {
        case Node.ELEMENT_NODE:
            // at first try to handle selected attribute value
            Attr currentAttr = BeansEditorUtils.getAttrByOffset(currentNode, region.getOffset());
            IDOMAttr attr = (IDOMAttr) currentAttr;
            if (currentAttr != null && region.getOffset() >= attr.getValueRegionStartOffset()) {
                if (isLinkableAttr(currentAttr)) {
                    IRegion hyperlinkRegion = getHyperlinkRegion(currentAttr);
                    IHyperlink hyperLink = createHyperlink(currentAttr.getName(), currentAttr.getNodeValue(),
                            currentNode, currentNode.getParentNode(), document, textViewer, hyperlinkRegion,
                            region);
                    if (hyperLink != null) {
                        return new IHyperlink[] { hyperLink };
                    }
                }
            }
            break;

        case Node.TEXT_NODE:
            IRegion hyperlinkRegion = getHyperlinkRegion(currentNode);
            Node parentNode = currentNode.getParentNode();
            if (parentNode != null) {
                IHyperlink hyperLink = createHyperlink(parentNode.getNodeName(), currentNode.getNodeValue(),
                        currentNode, parentNode, document, textViewer, hyperlinkRegion, region);
                if (hyperLink != null) {
                    return new IHyperlink[] { hyperLink };
                }
            }
            break;
        }
    }
    return null;
}