当前位置: 首页>>代码示例>>Java>>正文


Java NbDocument.findLineOffset方法代码示例

本文整理汇总了Java中org.openide.text.NbDocument.findLineOffset方法的典型用法代码示例。如果您正苦于以下问题:Java NbDocument.findLineOffset方法的具体用法?Java NbDocument.findLineOffset怎么用?Java NbDocument.findLineOffset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.openide.text.NbDocument的用法示例。


在下文中一共展示了NbDocument.findLineOffset方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: computeLineSpan

import org.openide.text.NbDocument; //导入方法依赖的package包/类
static int[] computeLineSpan(Document doc, int lineNumber) throws BadLocationException {
    lineNumber = Math.min(lineNumber, NbDocument.findLineRootElement((StyledDocument) doc).getElementCount());
    
    int lineStartOffset = NbDocument.findLineOffset((StyledDocument) doc, Math.max(0, lineNumber - 1));
    int lineEndOffset;
    
    if (doc instanceof BaseDocument) {
        lineEndOffset = Utilities.getRowEnd((BaseDocument) doc, lineStartOffset);
    } else {
        //XXX: performance:
        String lineText = doc.getText(lineStartOffset, doc.getLength() - lineStartOffset);
        
        lineText = lineText.indexOf('\n') != (-1) ? lineText.substring(0, lineText.indexOf('\n')) : lineText;
        lineEndOffset = lineStartOffset + lineText.length();
    }
    
    int[] span = new int[] {lineStartOffset, lineEndOffset};
    
    computeLineSpan(doc, span);
    
    return span;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:23,代码来源:HintsControllerImpl.java

示例2: openFileAtOffset

import org.openide.text.NbDocument; //导入方法依赖的package包/类
private static boolean openFileAtOffset(DataObject dataObject, int offset) throws IOException {
    EditorCookie ec = dataObject.getCookie(EditorCookie.class);
    LineCookie lc = dataObject.getCookie(LineCookie.class);
    if (ec != null && lc != null) {
        StyledDocument doc = ec.openDocument();
        if (doc != null) {
            int lineNumber = NbDocument.findLineNumber(doc, offset);
            if (lineNumber != -1) {
                Line line = lc.getLineSet().getCurrent(lineNumber);
                if (line != null) {
                    int lineOffset = NbDocument.findLineOffset(doc, lineNumber);
                    int column = offset - lineOffset;
                    line.show(ShowOpenType.OPEN, ShowVisibilityType.FOCUS, column);
                    return true;
                }
            }
        }
    }
    return false;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:21,代码来源:SpringXMLConfigEditorUtils.java

示例3: toString

import org.openide.text.NbDocument; //导入方法依赖的package包/类
public String toString () {
        int offset = next (1) == null ?
            doc.getLength () : next (1).getOffset ();
        int lineNumber = NbDocument.findLineNumber (doc, offset);
        return (String) doc.getProperty ("title") + ":" + 
            (lineNumber + 1) + "," + 
            (offset - NbDocument.findLineOffset (doc, lineNumber) + 1);
//        StringBuffer sb = new StringBuffer ();
//        TokenItem t = next;
//        int i = 0;
//        while (i < 10) {
//            if (t == null) break;
//            EditorToken et = (EditorToken) t.getTokenID ();
//            sb.append (Token.create (
//                et.getMimeType (),
//                et.getType (),
//                t.getImage (),
//                null
//            ));
//            t = t.getNext ();
//            i++;
//        }
//        return sb.toString ();
    }
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:25,代码来源:EditorTokenInput.java

示例4: isEmpty

import org.openide.text.NbDocument; //导入方法依赖的package包/类
private static boolean isEmpty (
    int                     ln,
    StyledDocument          document,
    Set<Integer>            whitespaces
) throws BadLocationException {
    int start = NbDocument.findLineOffset (document, ln);
    int end = document.getLength ();
    try {
        end = NbDocument.findLineOffset (document, ln + 1) - 1;
    } catch (IndexOutOfBoundsException ex) {
    }
    TokenSequence ts = Utils.getTokenSequence (document, start);
    if (ts.token () == null) return true;
    while (whitespaces.contains (ts.token ().id ().ordinal ())) {
        if (!ts.moveNext ()) return true;
        if (ts.offset () > end) return true;
    }
    return false;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:20,代码来源:IndentFactory.java

示例5: parse

import org.openide.text.NbDocument; //导入方法依赖的package包/类
public static HighlightImpl parse(StyledDocument doc, String line) throws ParseException, BadLocationException {
    MessageFormat f = new MessageFormat("[{0}], {1,number,integer}:{2,number,integer}-{3,number,integer}:{4,number,integer}");
    Object[] args = f.parse(line);
    
    String attributesString = (String) args[0];
    int    lineStart  = ((Long) args[1]).intValue();
    int    columnStart  = ((Long) args[2]).intValue();
    int    lineEnd  = ((Long) args[3]).intValue();
    int    columnEnd  = ((Long) args[4]).intValue();
    
    String[] attrElements = attributesString.split(",");
    List<ColoringAttributes> attributes = new ArrayList<ColoringAttributes>();
    
    for (String a : attrElements) {
        a = a.trim();
        
        attributes.add(ColoringAttributes.valueOf(a));
    }
    
    if (attributes.contains(null))
        throw new NullPointerException();
    
    int offsetStart = NbDocument.findLineOffset(doc, lineStart) + columnStart;
    int offsetEnd = NbDocument.findLineOffset(doc, lineEnd) + columnEnd;
    
    return new HighlightImpl(doc, offsetStart, offsetEnd, attributes);
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:28,代码来源:HighlightImpl.java

示例6: getAnnotateLine

import org.openide.text.NbDocument; //导入方法依赖的package包/类
/**
 * Locates AnnotateLine associated with given line. The
 * line is translated to Element that is used as map lookup key.
 * The map is initially filled up with Elements sampled on
 * annotate() method.
 *
 * <p>Key trick is that Element's identity is maintained
 * until line removal (and is restored on undo).
 *
 * @param line
 * @return found AnnotateLine or <code>null</code>
 */
private VcsAnnotation getAnnotateLine(int line) {
    StyledDocument sd = (StyledDocument) doc;
    int lineOffset = NbDocument.findLineOffset(sd, line);
    Element element = sd.getParagraphElement(lineOffset);
    VcsAnnotation al = elementAnnotations.get(element);

    if (al != null) {
        int startOffset = element.getStartOffset();
        int endOffset = element.getEndOffset();
        try {
            int len = endOffset - startOffset;
            String text = doc.getText(startOffset, len -1);
            String content = al.getDocumentText();
            if (text.equals(content)) {
                return al;
            }
        } catch (BadLocationException e) {
            ErrorManager err = ErrorManager.getDefault();
            err.annotate(e, "CVS.AB: can not locate line annotation."); // NOI18N
            err.notify(ErrorManager.INFORMATIONAL, e);
        }
    }

    return null;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:38,代码来源:AnnotationBar.java

示例7: findLineOffset

import org.openide.text.NbDocument; //导入方法依赖的package包/类
/** return the offset of the first non-whitespace character on the line,
           or -1 when the line does not exist
 */
private static int findLineOffset(StyledDocument doc, int lineNumber) {
    int offset;
    try {
        offset = NbDocument.findLineOffset (doc, lineNumber - 1);
        int offset2 = NbDocument.findLineOffset (doc, lineNumber);
        try {
            String lineStr = doc.getText(offset, offset2 - offset);
            for (int i = 0; i < lineStr.length(); i++) {
                if (!Character.isWhitespace(lineStr.charAt(i))) {
                    offset += i;
                    break;
                }
            }
        } catch (BadLocationException ex) {
            // ignore
        }
    } catch (IndexOutOfBoundsException ioobex) {
        return -1;
    }
    return offset;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:25,代码来源:EditorContextImpl.java

示例8: getAnnotateLine

import org.openide.text.NbDocument; //导入方法依赖的package包/类
/**
 * Locates AnnotateLine associated with given line. The
 * line is translated to Element that is used as map lookup key.
 * The map is initially filled up with Elements sampled on
 * annotate() method.
 *
 * <p>Key trick is that Element's identity is maintained
 * until line removal (and is restored on undo).
 *
 * @param line
 * @return found AnnotateLine or <code>null</code>
 */
private AnnotateLine getAnnotateLine(int line) {
    StyledDocument sd = (StyledDocument) doc;
    int lineOffset = NbDocument.findLineOffset(sd, line);
    Element element = sd.getParagraphElement(lineOffset);
    AnnotateLine al = elementAnnotations.get(element);

    if (al != null) {
        int startOffset = element.getStartOffset();
        int endOffset = element.getEndOffset();
        try {
            int len = endOffset - startOffset;
            String text = doc.getText(startOffset, len -1);
            String content = al.getContent();
            if (text.equals(content)) {
                return al;
            }
        } catch (BadLocationException e) {
            Mercurial.LOG.log(Level.INFO, "HG.AB: can not locate line annotation.");  // NOI18N
        }
    }

    return null;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:36,代码来源:AnnotationBar.java

示例9: openAtLine

import org.openide.text.NbDocument; //导入方法依赖的package包/类
private static boolean openAtLine(CompilationController controller, Document doc, String methodName, int line) {
    try {
        if (line > -1) {
            DataObject od = DataObject.find(controller.getFileObject());
            int offset = NbDocument.findLineOffset((StyledDocument) doc, line);
            ExecutableElement parentMethod = controller.getTreeUtilities().scopeFor(offset).getEnclosingMethod();
            if (parentMethod != null) {
                String offsetMethodName = parentMethod.getSimpleName().toString();
                if (methodName.equals(offsetMethodName)) {
                    LineCookie lc = od.getLookup().lookup(LineCookie.class);
                    if (lc != null) {
                        final Line l = lc.getLineSet().getCurrent(line - 1);

                        if (l != null) {
                            CommonUtils.runInEventDispatchThread(new Runnable() {
                                @Override
                                public void run() {
                                    l.show(Line.ShowOpenType.OPEN, Line.ShowVisibilityType.FOCUS);
                                }
                            });
                            return true;
                        }
                    }
                }
            }
        }
    } catch (DataObjectNotFoundException e) {
        LOG.log(Level.WARNING, "Error accessing dataobject", e);
    }
    return false;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:32,代码来源:GoToJavaSourceProvider.java

示例10: getText

import org.openide.text.NbDocument; //导入方法依赖的package包/类
static String getText (Line l) throws Exception {
    EditorCookie ec = (EditorCookie) l.getDataObject ().
        getCookie (EditorCookie.class);
    StyledDocument doc = ec.openDocument ();
    if (doc == null) return "";
    int off = NbDocument.findLineOffset (doc, l.getLineNumber ());
    int len = NbDocument.findLineOffset (doc, l.getLineNumber () + 1) - 
        off - 1;
    return doc.getText (off, len);
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:11,代码来源:ImportDebugger.java

示例11: getLineOffset

import org.openide.text.NbDocument; //导入方法依赖的package包/类
/** Returns offset of the beginning of a line.
 * @param lineNumber number of line (starts at 1)
 * @return offset offset of line from the beginning of a file
 */
private int getLineOffset(int lineNumber) {
    try {
        StyledDocument doc = (StyledDocument) txtEditorPane().getDocument();
        return NbDocument.findLineOffset(doc, lineNumber - 1);
    } catch (IndexOutOfBoundsException e) {
        throw new JemmyException("Invalid line number " + lineNumber, e);
    }
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:13,代码来源:EditorOperator.java

示例12: reindent

import org.openide.text.NbDocument; //导入方法依赖的package包/类
public void reindent () throws BadLocationException {
    //S ystem.out.println("SCHLIEMAN reformat !\n  " + context.document() + "\n  " + context.isIndent() + "\n  " + context.startOffset () + "\n  " + context.endOffset());
    StyledDocument document = (StyledDocument) context.document ();
    try {
        MimePath mimePath = MimePath.parse (context.mimePath ());
        String mimeType = mimePath.getMimeType (mimePath.size () - 1);
        Language l = LanguagesManager.getDefault ().getLanguage (mimeType);
        Object indentValue = getIndentProperties (l);
        if (indentValue == null) return;
        
        if (indentValue instanceof Feature) {
            Feature m = (Feature) indentValue;
            m.getValue (Context.create (document, context.startOffset ()));
            return;
        }
        Object[] params = (Object[]) indentValue;
        
        TokenHierarchy tokenHierarchy = TokenHierarchy.get (document);
        LanguagePath languagePath = LanguagePath.get (org.netbeans.api.lexer.Language.find (mimePath.getMimeType (0)));
        for (int i = 1; i < mimePath.size(); i++)
            languagePath = languagePath.embedded (org.netbeans.api.lexer.Language.find (mimePath.getMimeType (i)));
        List<TokenSequence> tokenSequences = tokenHierarchy.tokenSequenceList (languagePath, context.startOffset (), context.endOffset ());
        
        Set<Integer> whitespaces = l.getAnalyser().getSkipTokenTypes ();
        
        Iterator<Region> it = context.indentRegions ().iterator ();
        while (it.hasNext ()) {
            Region region = it.next ();
            Map<Position,Integer> indentMap = new HashMap<Position,Integer> ();
            int ln = NbDocument.findLineNumber (document, region.getStartOffset ());
            int endLineNumber = NbDocument.findLineNumber (document, region.getEndOffset ());
            if (!Utils.getTokenSequence (document, context.lineStartOffset (region.getStartOffset ())).language ().mimeType ().equals (mimeType)) 
                ln++;
            int indent = 0;
            if (ln > 0) {
                int offset = NbDocument.findLineOffset (document, ln - 1);
                indent = context.lineIndent (offset);
                if (!Utils.getTokenSequence (document, offset).language ().mimeType ().equals (mimeType))
                    indent += IndentUtils.indentLevelSize (document); 
            }
            while (ln <= endLineNumber) {
                if (ln == endLineNumber && 
                    isEmpty (ln, document, whitespaces) &&
                    !Utils.getTokenSequence (document, region.getEndOffset ()).language ().mimeType ().equals (mimeType)
                ) break;
                indent = indent (context, document, params, ln++, indent, indentMap, whitespaces);
            }

            Iterator<Position> it2 = indentMap.keySet ().iterator ();
            while (it2.hasNext ()) {
                Position position = it2.next ();
                context.modifyIndent (position.getOffset (), indentMap.get (position));
            }
        }
    } catch (LanguageDefinitionNotFoundException ldnfe) {
        //no language found - this might happen when some of the embedded languages are not schliemann based,
        //so just ignore and do nothing - no indent
    } catch (Exception ex) {
        ErrorManager.getDefault ().notify (ex);
    }
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:62,代码来源:IndentFactory.java

示例13: getLine0

import org.openide.text.NbDocument; //导入方法依赖的package包/类
private Position[] getLine0(Error d, final Document doc, int startOffset, int endOffset) {
    StyledDocument sdoc = (StyledDocument) doc;
    int lineNumber = NbDocument.findLineNumber(sdoc, startOffset);
    int lineOffset = NbDocument.findLineOffset(sdoc, lineNumber);
    String text = DataLoadersBridge.getDefault().getLine(doc, lineNumber);
    if (text == null) {
        return new Position[2];
    }
    
    if (d.isLineError()) {
        int column = 0;
        int length = text.length();
        
        while (column < text.length() && Character.isWhitespace(text.charAt(column))) {
            column++;
        }
        
        while (length > 0 && Character.isWhitespace(text.charAt(length - 1))) {
            length--;
        }
        
        startOffset = lineOffset + column;
        endOffset = lineOffset + length;
        if (startOffset > endOffset) {
            // Space only on the line
            startOffset = lineOffset;
        }
    }
    
    if (LOG.isLoggable(Level.FINE)) {
        LOG.log(Level.FINE, "startOffset = " + startOffset );
        LOG.log(Level.FINE, "endOffset = " + endOffset );
    }
    
    final int startOffsetFinal = startOffset;
    final int endOffsetFinal = endOffset;
    final Position[] result = new Position[2];
    
    int len = doc.getLength();

    if (startOffsetFinal > len || endOffsetFinal > len) {
        if (!cancel.isCancelled() && LOG.isLoggable(Level.WARNING)) {
            LOG.log(Level.WARNING, "document changed, but not canceled?" );
            LOG.log(Level.WARNING, "len = " + len );
            LOG.log(Level.WARNING, "startOffset = " + startOffsetFinal );
            LOG.log(Level.WARNING, "endOffset = " + endOffsetFinal );
        }
        cancel();

        return result;
    }

    try {
        result[0] = NbDocument.createPosition(doc, startOffsetFinal, Bias.Forward);
        result[1] = NbDocument.createPosition(doc, endOffsetFinal, Bias.Backward);
    } catch (BadLocationException e) {
        LOG.log(Level.WARNING, null, e);
    }
    
    return result;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:62,代码来源:GsfHintsProvider.java

示例14: getMIMETypesOnLine

import org.openide.text.NbDocument; //导入方法依赖的package包/类
/**
 * Get a list of MIME types of languages found on a line.
 * @param line The line to search for the MIME types.
 * @return A set of MIME types.
 * @since 2.50
 */
public Set<String> getMIMETypesOnLine(Line line) {
    EditorCookie editorCookie = line.getLookup().lookup(EditorCookie.class);
    if (editorCookie == null) {
        DataObject dobj = line.getLookup().lookup(DataObject.class);
        if (dobj != null) {
            editorCookie = dobj.getLookup().lookup(EditorCookie.class);
        }
        if (editorCookie == null) {
            return Collections.emptySet();
        }
    }
    StyledDocument document = editorCookie.getDocument();
    if (document == null) {
        return Collections.emptySet();
    }
    Set<String> mimeTypes = null;
    ((AbstractDocument) document).readLock();
    try {
        TokenHierarchy<Document> th = TokenHierarchy.get((Document) document);
        int ln = line.getLineNumber();
        int offset = NbDocument.findLineOffset(document, ln);
        int maxOffset = document.getLength() - 1;
        int maxLine = NbDocument.findLineNumber(document, maxOffset);
        int offset2;
        if (ln + 1 > maxLine) {
            offset2 = maxOffset;
        } else {
            offset2 = NbDocument.findLineOffset(document, ln+1) - 1;
        }
        // The line has offsets <offset, offset2>
        Set<LanguagePath> languagePaths = th.languagePaths();
        for (LanguagePath lp : languagePaths) {
            List<TokenSequence<?>> tsl = th.tokenSequenceList(lp, offset, offset2);
            for (TokenSequence ts : tsl) {
                if (ts.moveNext()) {
                    //int to = ts.offset();
                    //if (!(offset <= to && to < offset2)) {
                    //    continue;
                    //}
                    String mimeType = ts.language().mimeType();
                    if (mimeType != null) {
                        if (mimeTypes == null) {
                            mimeTypes = Collections.singleton(mimeType);
                        } else {
                            if (mimeTypes.size() == 1) {
                                mimeTypes = new HashSet<String>(mimeTypes);
                            }
                            mimeTypes.add(mimeType);
                        }
                    }
                }
            }
        }
    } finally {
        ((AbstractDocument) document).readUnlock();
    }
    return (mimeTypes != null) ? mimeTypes : Collections.<String>emptySet();
    
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:66,代码来源:EditorContextDispatcher.java

示例15: doOpen

import org.openide.text.NbDocument; //导入方法依赖的package包/类
private static boolean doOpen(FileObject fo, int offset) {
    try {
        DataObject od = DataObject.find(fo);
        EditorCookie ec = od.getLookup().lookup(EditorCookie.class);
        LineCookie lc = od.getLookup().lookup(LineCookie.class);
        
        if (ec != null && lc != null && offset != -1) {
            StyledDocument doc = null;
            try {
                doc = ec.openDocument();
            } catch (UserQuestionException uqe) {
                final Object value = DialogDisplayer.getDefault().notify(
                        new NotifyDescriptor.Confirmation(uqe.getLocalizedMessage(),
                        NbBundle.getMessage(UiUtils.class, "TXT_Question"),
                        NotifyDescriptor.YES_NO_OPTION));
                if (value != NotifyDescriptor.YES_OPTION) {
                    return false;
                }
                uqe.confirmed();
                doc = ec.openDocument();
            }
            if (doc != null) {
                int line = NbDocument.findLineNumber(doc, offset);
                int lineOffset = NbDocument.findLineOffset(doc, line);
                int column = offset - lineOffset;
                
                if (line != -1) {
                    Line l = lc.getLineSet().getCurrent(line);
                    
                    if (l != null) {
                        doShow( l, column);
                        return true;
                    }
                }
            }
        }
        
        OpenCookie oc = od.getLookup().lookup(OpenCookie.class);
        
        if (oc != null) {
            doOpen(oc);
            return true;
        }
    } catch (IOException e) {
        if (log.isLoggable(Level.INFO))
            log.log(Level.INFO, e.getMessage(), e);
    }
    
    return false;
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:51,代码来源:UiUtils.java


注:本文中的org.openide.text.NbDocument.findLineOffset方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。