Search in sources :

Example 1 with TemporaryRegion

use of com.liferay.ide.xml.search.ui.editor.TemporaryRegion in project liferay-ide by liferay.

the class XmlSearchTestsUtils method getTextHover.

private static String[] getTextHover(IFile file, int nodeType, String... nodeNames) throws Exception {
    List<String> retval = new ArrayList<String>();
    IDOMModel domModel = null;
    Node targetNode = null;
    final StructuredTextViewer viewer = getEditor(file).getTextViewer();
    if (nodeType == Node.ELEMENT_NODE) {
        String elementName = nodeNames[0];
        domModel = getDOMModel(file, false);
        // the actual node is text node of this.element
        targetNode = domModel.getDocument().getElementsByTagName(elementName).item(0).getFirstChild();
    } else if (nodeType == Node.ATTRIBUTE_NODE) {
        String elementName = nodeNames[0];
        String attrName = nodeNames[1];
        domModel = getDOMModel(file, false);
        NodeList elements = domModel.getDocument().getElementsByTagName(elementName);
        Element element = getElementByAttr(elements, attrName);
        targetNode = element.getAttributes().getNamedItem(attrName);
    } else {
        return null;
    }
    int offset = getRegion(targetNode).getOffset();
    final Method getTextHoverMethod = ReflectionUtil.getDeclaredMethod(viewer.getClass(), "getTextHover", true, int.class, int.class);
    getTextHoverMethod.setAccessible(true);
    final ITextHover hover = (ITextHover) getTextHoverMethod.invoke(viewer, offset, 0);
    final IRegion region = hover.getHoverRegion(viewer, offset);
    if (region instanceof CompoundRegion) {
        List<IRegion> regions = ((CompoundRegion) region).getRegions();
        for (IRegion reg : regions) {
            if (reg instanceof TemporaryRegion) {
                String info = ((TemporaryRegion) reg).getAnnotation().getText();
                retval.add(info);
            }
            if (reg instanceof MarkerRegion) {
                MarkerAnnotation annotation = ((MarkerRegion) reg).getAnnotation();
                String info = (annotation.getMarker().getAttribute(IMarker.MESSAGE)).toString();
                retval.add(info);
            }
            if (reg instanceof InfoRegion) {
                retval.add(((InfoRegion) reg).getInfo());
            }
        }
    }
    domModel.releaseFromRead();
    return retval.toArray(new String[0]);
}
Also used : MarkerRegion(com.liferay.ide.xml.search.ui.editor.MarkerRegion) ITextHover(org.eclipse.jface.text.ITextHover) IDOMModel(org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel) Node(org.w3c.dom.Node) NodeList(org.w3c.dom.NodeList) Element(org.w3c.dom.Element) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) IRegion(org.eclipse.jface.text.IRegion) MarkerAnnotation(org.eclipse.ui.texteditor.MarkerAnnotation) InfoRegion(com.liferay.ide.xml.search.ui.editor.InfoRegion) CompoundRegion(com.liferay.ide.xml.search.ui.editor.CompoundRegion) TemporaryRegion(com.liferay.ide.xml.search.ui.editor.TemporaryRegion) StructuredTextViewer(org.eclipse.wst.sse.ui.internal.StructuredTextViewer)

Aggregations

CompoundRegion (com.liferay.ide.xml.search.ui.editor.CompoundRegion)1 InfoRegion (com.liferay.ide.xml.search.ui.editor.InfoRegion)1 MarkerRegion (com.liferay.ide.xml.search.ui.editor.MarkerRegion)1 TemporaryRegion (com.liferay.ide.xml.search.ui.editor.TemporaryRegion)1 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 IRegion (org.eclipse.jface.text.IRegion)1 ITextHover (org.eclipse.jface.text.ITextHover)1 MarkerAnnotation (org.eclipse.ui.texteditor.MarkerAnnotation)1 StructuredTextViewer (org.eclipse.wst.sse.ui.internal.StructuredTextViewer)1 IDOMModel (org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel)1 Element (org.w3c.dom.Element)1 Node (org.w3c.dom.Node)1 NodeList (org.w3c.dom.NodeList)1