javax.swing.text.StyledDocument#getParagraphElement ( )源码实例Demo

下面列出了javax.swing.text.StyledDocument#getParagraphElement ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: netbeans   文件: PUCompletionProvider.java
static int getRowFirstNonWhite(StyledDocument doc, int offset)
        throws BadLocationException {
    Element lineElement = doc.getParagraphElement(offset);
    int start = lineElement.getStartOffset();
    while (start + 1 < lineElement.getEndOffset()) {
        try {
            if (doc.getText(start, 1).charAt(0) != ' ') {
                break;
            }
        } catch (BadLocationException ex) {
            throw (BadLocationException) new BadLocationException(
                    "calling getText(" + start + ", " + (start + 1)
                    + ") on doc of length: " + doc.getLength(), start).initCause(ex);
        }
        start++;
    }
    return start;
}
 
源代码2 项目: netbeans   文件: GradleCliCompletionProvider.java
static int getRowFirstNonWhite(StyledDocument doc, int offset) throws BadLocationException {
    Element lineElement = doc.getParagraphElement(offset);
    int start = lineElement.getStartOffset();
    while (start + 1 < lineElement.getEndOffset()) {
        try {
            if (doc.getText(start, 1).charAt(0) != ' ') {
                break;
            }
        } catch (BadLocationException ex) {
            throw (BadLocationException) new BadLocationException(
                    "calling getText(" + start + ", " + (start + 1)
                    + ") on doc of length: " + doc.getLength(), start
            ).initCause(ex);
        }
        start++;
    }
    return start;
}
 
源代码3 项目: netbeans   文件: BeansCompletionProvider.java
static int getRowFirstNonWhite(StyledDocument doc, int offset)
        throws BadLocationException {
    Element lineElement = doc.getParagraphElement(offset);
    int start = lineElement.getStartOffset();
    while (start + 1 < lineElement.getEndOffset()) {
        try {
            if (doc.getText(start, 1).charAt(0) != ' ') {
                break;
            }
        } catch (BadLocationException ex) {
            throw (BadLocationException) new BadLocationException(
                    "calling getText(" + start + ", " + (start + 1)
                    + ") on doc of length: " + doc.getLength(), start).initCause(ex);
        }
        start++;
    }
    return start;
}
 
源代码4 项目: netbeans   文件: AnnotationBar.java
/**
 * 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;
}
 
源代码5 项目: netbeans   文件: FormI18nSupport.java
/** Implements superclass abstract method. */
protected void setHardCodedString(HardCodedString hcString, StyledDocument document) {

    getStringText().setText(hcString == null ? "" : hcString.getText()); // NOI18N
    
    int pos;

    String hardLine;
    
    if (hcString.getStartPosition() == null) {
        hardLine = ""; // NOI18N
    } else {
        pos = hcString.getStartPosition().getOffset();

        try {
            Element paragraph = document.getParagraphElement(pos);
            hardLine = document.getText(paragraph.getStartOffset(), paragraph.getEndOffset()-paragraph.getStartOffset()).trim();
        } catch (BadLocationException ble) {
            hardLine = ""; // NOI18N
        }
    }

    getFoundInText().setText(hardLine);

    if(hcString instanceof FormHardCodedString) {
        getComponentText().setText( ((FormHardCodedString)hcString).getValidProperty().getRADComponentName());
        getPropertyText().setText( ((FormHardCodedString)hcString).getNodeProperty().getName());
    } else {            
        remove(getComponentLabel());
        remove(getComponentText());
        remove(getPropertyLabel());
        remove(getPropertyText());
    }
    
}
 
源代码6 项目: netbeans   文件: JavaI18nSupport.java
/** Implements superclass abstract method. */
protected void setHardCodedString(HardCodedString hcString, StyledDocument document) {

    getStringText().setText(hcString == null ? ""               //NOI18N
                                             : hcString.getText());
    
    int pos;

    String hardLine;
    
    if (hcString.getStartPosition() == null) {
        hardLine = "";                                          //NOI18N
    } else {
        pos = hcString.getStartPosition().getOffset();

        try {
            Element paragraph = document.getParagraphElement(pos);
            hardLine = document.getText(paragraph.getStartOffset(),
                                        paragraph.getEndOffset() - paragraph.getStartOffset())
                               .trim();
        } catch (BadLocationException ble) {
            hardLine = ""; // NOI18N
        }
    }

    getFoundInText().setText(hardLine);
    
    remove(getComponentLabel());
    remove(getComponentText());
    remove(getPropertyLabel());
    remove(getPropertyText());
}
 
源代码7 项目: nb-springboot   文件: CfgPropsCompletionQuery.java
@Override
protected void query(CompletionResultSet completionResultSet, Document document, int caretOffset) {
    logger.finer("Starting completion");
    final StyledDocument styDoc = (StyledDocument) document;
    Element lineElement = styDoc.getParagraphElement(caretOffset);
    int lineStartOffset = lineElement.getStartOffset();
    try {
        String lineToCaret = styDoc.getText(lineStartOffset, caretOffset - lineStartOffset);
        if (!lineToCaret.contains("#")) {
            String[] parts = lineToCaret.split("=");
            //property name extraction from part before =
            Matcher matcher = PATTERN_PROP_NAME.matcher(parts[0]);
            String propPrefix = null;
            int propPrefixOffset = 0;
            while (matcher.find()) {
                propPrefix = matcher.group();
                propPrefixOffset = matcher.start();
            }
            // check which kind of completion
            final int equalSignOffset = lineToCaret.indexOf('=');
            if (parts.length > 1) {
                //value completion
                String valPrefix = parts[1].trim();
                completePropValue(completionResultSet, propPrefix, valPrefix, lineStartOffset
                        + lineToCaret.indexOf(valPrefix, equalSignOffset), caretOffset);
            } else if (equalSignOffset >= 0) {
                //value completion with empty filter
                completePropValue(completionResultSet, propPrefix, "", lineStartOffset + equalSignOffset + 1, caretOffset);
            } else {
                // property completion
                completePropName(completionResultSet, propPrefix, lineStartOffset + propPrefixOffset, caretOffset);
            }
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
    completionResultSet.finish();
}
 
@Override
protected void query(CompletionResultSet completionResultSet, Document document, int caretOffset) {
    final StyledDocument styDoc = (StyledDocument) document;
    Element lineElement = styDoc.getParagraphElement(caretOffset);
    int lineStartOffset = lineElement.getStartOffset();
    int lineEndOffset = lineElement.getEndOffset();
    try {
        String line = styDoc.getText(lineStartOffset, lineEndOffset - lineStartOffset);
        if (line.endsWith("\n")) {
            line = line.substring(0, line.length() - 1);
        }
        if (showTooltip) {
            logger.log(FINER, "Tooltip on: {0}", line);
        } else {
            logger.log(FINER, "Documentation on: {0}", line);
        }
        if (!line.contains("#")) {
            //property name extraction from line
            Matcher matcher = PATTERN_PROP_NAME.matcher(line);
            if (matcher.matches()) {
                String propPrefix = matcher.group(1);
                ConfigurationMetadataProperty propMeta = sbs.getPropertyMetadata(propPrefix);
                if (propMeta != null) {
                    if (showTooltip) {
                        final JToolTip toolTip = new JToolTip();
                        toolTip.setTipText(Utils.shortenJavaType(propMeta.getType()));
                        completionResultSet.setToolTip(toolTip);
                    } else {
                        completionResultSet.setDocumentation(new CfgPropCompletionDocumentation(propMeta));
                    }
                }
            }
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
    completionResultSet.finish();
}
 
源代码9 项目: nb-springboot   文件: KeyCompletionItem.java
@Override
public void defaultAction(JTextComponent jtc) {
    logger.log(Level.FINER, "Accepted key value hint: {0}", hint.toString());
    try {
        StyledDocument doc = (StyledDocument) jtc.getDocument();
        // calculate the amount of chars to remove (by default from dot up to caret position)
        int lenToRemove = caretOffset - dotOffset;
        int equalSignIndex = -1;
        int colonIndex = -1;
        if (overwrite) {
            // NOTE: the editor removes by itself the word at caret when ctrl + enter is pressed
            // the document state here is different from when the completion was invoked thus we have to
            // find again the offset of the equal sign in the line
            Element lineElement = doc.getParagraphElement(caretOffset);
            String line = doc.getText(lineElement.getStartOffset(), lineElement.getEndOffset() - lineElement.getStartOffset());
            equalSignIndex = line.indexOf('=');
            colonIndex = line.indexOf(':');
            if (equalSignIndex >= 0) {
                // from dot to equal sign
                lenToRemove = lineElement.getStartOffset() + equalSignIndex - dotOffset;
            } else if (colonIndex >= 0) {
                // from dot to colon
                lenToRemove = lineElement.getStartOffset() + colonIndex - dotOffset;
            }
        }
        // remove characters from dot then insert new text
        doc.remove(dotOffset, lenToRemove);
        if (equalSignIndex < 0 && colonIndex < 0) {
            logger.log(Level.FINER, "Adding equal sign and continuing completion");
            doc.insertString(dotOffset, hint.getValue().toString().concat("="), null);
        } else {
            logger.log(Level.FINER, "Finish completion with no added chars");
            doc.insertString(dotOffset, hint.getValue().toString(), null);
            Completion.get().hideAll();
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}
 
源代码10 项目: trygve   文件: TextEditorGUI.java
public void setBreakpointToEOLAt(int byteOffset, int lineNumber) {
	final StyledDocument doc = (StyledDocument)editPane.getDocument();
	final Element paragraphElement = doc.getParagraphElement(byteOffset);
	if (paragraphElement.getClass() == BranchElement.class) {
		final SimpleAttributeSet sas = new SimpleAttributeSet(); 
		StyleConstants.setBackground(sas, Color.cyan);
		
		// Look for ending delimiter
		int length = 1;
		try {
			for (int i = byteOffset; ; i++) {
				if (i >= doc.getLength()) {
					length = i - byteOffset + 1;
					break;
				} else if (doc.getText(i, 1).equals("\n")) {
					length = i - byteOffset;
					break;
				}
			}
		} catch (BadLocationException ble) {
			length = 0;
		}
		if (0 < length) {
			doc.setCharacterAttributes(byteOffset, length, sas, false);
		}
	}
}
 
源代码11 项目: nb-springboot   文件: CfgPropCompletionItem.java
@Override
public void defaultAction(JTextComponent jtc) {
    logger.log(Level.FINER, "Accepted name completion: {0}", configurationMeta.getId());
    try {
        StyledDocument doc = (StyledDocument) jtc.getDocument();
        // calculate the amount of chars to remove (by default from property start up to caret position)
        int lenToRemove = caretOffset - propStartOffset;
        int equalSignIndex = -1;
        if (overwrite) {
            // NOTE: the editor removes by itself the word at caret when ctrl + enter is pressed
            // the document state here is different from when the completion was invoked thus we have to
            // find again the offset of the equal sign in the line
            Element lineElement = doc.getParagraphElement(caretOffset);
            String line = doc.getText(lineElement.getStartOffset(), lineElement.getEndOffset() - lineElement.getStartOffset());
            equalSignIndex = line.indexOf('=');
            int colonIndex = line.indexOf(':');
            if (equalSignIndex >= 0) {
                // from property start to equal sign
                lenToRemove = lineElement.getStartOffset() + equalSignIndex - propStartOffset;
            } else if (colonIndex >= 0) {
                // from property start to colon
                lenToRemove = lineElement.getStartOffset() + colonIndex - propStartOffset;
            } else {
                // from property start to end of line (except line terminator)
                lenToRemove = lineElement.getEndOffset() - 1 - propStartOffset;
            }
        }
        // remove characters from the property name start offset
        doc.remove(propStartOffset, lenToRemove);
        // add some useful chars depending on data type and presence of successive equal signs
        final String dataType = configurationMeta.getType();
        final boolean isSequence = dataType.contains("List") || dataType.contains("Set") || dataType.contains("[]");
        final boolean preferArray = NbPreferences.forModule(PrefConstants.class)
                .getBoolean(PrefConstants.PREF_ARRAY_NOTATION, false);
        final boolean needEqualSign = !(overwrite && equalSignIndex >= 0);
        StringBuilder sb = new StringBuilder(getText());
        boolean continueCompletion = false;
        int goBack = 0;
        if (dataType.contains("Map")) {
            sb.append(".");
            continueCompletion = canCompleteKey();
        } else if (isSequence) {
            if (preferArray) {
                sb.append("[]");
                goBack = 1;
                if (needEqualSign) {
                    sb.append("=");
                    goBack++;
                }
            } else {
                if (needEqualSign) {
                    sb.append("=");
                    continueCompletion = canCompleteValue();
                }
            }
        } else if (needEqualSign) {
            sb.append("=");
            continueCompletion = canCompleteValue();
        }
        doc.insertString(propStartOffset, sb.toString(), null);
        if (goBack != 0) {
            jtc.setCaretPosition(jtc.getCaretPosition() - goBack);
        }
        // optinally close the code completion box
        if (!continueCompletion) {
            Completion.get().hideAll();
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}
 
源代码12 项目: nb-springboot   文件: ValueCompletionItem.java
@Override
public void defaultAction(JTextComponent jtc) {
    logger.log(Level.FINER, "Accepted value completion: {0}", hint.toString());
    try {
        StyledDocument doc = (StyledDocument) jtc.getDocument();
        // calculate the amount of chars to remove (by default from dot up to caret position)
        int lenToRemove = caretOffset - dotOffset;
        if (overwrite) {
            // NOTE: the editor removes by itself the word at caret when ctrl + enter is pressed
            // the document state here is different from when the completion was invoked thus we have to
            // find again the offset of the equal sign in the line
            Element lineElement = doc.getParagraphElement(caretOffset);
            String line = doc.getText(lineElement.getStartOffset(), lineElement.getEndOffset() - lineElement.getStartOffset());
            int equalSignIndex = line.indexOf('=');
            int colonIndex = line.indexOf(':');
            int commaIndex = line.indexOf(',', dotOffset - lineElement.getStartOffset());
            if (equalSignIndex >= 0 && dotOffset < equalSignIndex) {
                // from dot to equal sign
                lenToRemove = lineElement.getStartOffset() + equalSignIndex - dotOffset;
            } else if (colonIndex >= 0 && dotOffset < colonIndex) {
                // from dot to colon
                lenToRemove = lineElement.getStartOffset() + colonIndex - dotOffset;
            } else if (commaIndex >= 0) {
                // from dot to comma
                lenToRemove = lineElement.getStartOffset() + commaIndex - dotOffset;
            } else {
                // from dot to end of line (except line terminator)
                lenToRemove = lineElement.getEndOffset() - 1 - dotOffset;
            }
        }
        // remove characters from dot then insert new text
        doc.remove(dotOffset, lenToRemove);
        doc.insertString(dotOffset, hint.getValue().toString(), null);
        // close the code completion box
        if (!continueCompletion) {
            Completion.get().hideAll();
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}
 
源代码13 项目: nb-springboot   文件: JavaTypeCompletionItem.java
@Override
public void defaultAction(JTextComponent jtc) {
    logger.log(Level.FINER, "Accepted java type completion: {0} {1}", new Object[]{elementKind.toString(), name});
    try {
        StyledDocument doc = (StyledDocument) jtc.getDocument();
        // calculate the amount of chars to remove (by default from dot up to caret position)
        int lenToRemove = caretOffset - dotOffset;
        if (overwrite) {
            // NOTE: the editor removes by itself the word at caret when ctrl + enter is pressed
            // the document state here is different from when the completion was invoked thus we have to
            // find again the offset of the equal sign in the line
            Element lineElement = doc.getParagraphElement(caretOffset);
            String line = doc.getText(lineElement.getStartOffset(), lineElement.getEndOffset() - lineElement.getStartOffset());
            int equalSignIndex = line.indexOf('=');
            int colonIndex = line.indexOf(':');
            int commaIndex = line.indexOf(',', dotOffset - lineElement.getStartOffset());
            if (equalSignIndex >= 0 && dotOffset < equalSignIndex) {
                // from dot to equal sign
                lenToRemove = lineElement.getStartOffset() + equalSignIndex - dotOffset;
            } else if (colonIndex >= 0 && dotOffset < colonIndex) {
                // from dot to colon
                lenToRemove = lineElement.getStartOffset() + colonIndex - dotOffset;
            } else if (commaIndex >= 0) {
                // from dot to comma
                lenToRemove = lineElement.getStartOffset() + commaIndex - dotOffset;
            } else {
                // from dot to end of line (except line terminator)
                lenToRemove = lineElement.getEndOffset() - 1 - dotOffset;
            }
        }
        // remove characters from dot then insert new text
        doc.remove(dotOffset, lenToRemove);
        if (isKeyCompletion) {
            // insert and continue completion
            doc.insertString(dotOffset, name.concat("="), null);
        } else {
            // insert and close the code completion box
            doc.insertString(dotOffset, name, null);
            Completion.get().hideAll();
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}
 
源代码14 项目: nb-springboot   文件: FileObjectCompletionItem.java
@Override
public void defaultAction(JTextComponent jtc) {
    logger.log(Level.FINER, "Accepted file object completion: {0}", FileUtil.getFileDisplayName(fileObj));
    try {
        StyledDocument doc = (StyledDocument) jtc.getDocument();
        // calculate the amount of chars to remove (by default from dot up to caret position)
        int lenToRemove = caretOffset - dotOffset;
        if (overwrite) {
            // NOTE: the editor removes by itself the word at caret when ctrl + enter is pressed
            // the document state here is different from when the completion was invoked thus we have to
            // find again the offset of the equal sign in the line
            Element lineElement = doc.getParagraphElement(caretOffset);
            String line = doc.getText(lineElement.getStartOffset(), lineElement.getEndOffset() - lineElement.getStartOffset());
            int equalSignIndex = line.indexOf('=');
            int colonIndex = line.indexOf(':');
            int commaIndex = line.indexOf(',', dotOffset - lineElement.getStartOffset());
            if (equalSignIndex >= 0 && dotOffset < equalSignIndex) {
                // from dot to equal sign
                lenToRemove = lineElement.getStartOffset() + equalSignIndex - dotOffset;
            } else if (colonIndex >= 0 && dotOffset < colonIndex) {
                // from dot to colon
                lenToRemove = lineElement.getStartOffset() + colonIndex - dotOffset;
            } else if (commaIndex >= 0) {
                // from dot to comma
                lenToRemove = lineElement.getStartOffset() + commaIndex - dotOffset;
            } else {
                // from dot to end of line (except line terminator)
                lenToRemove = lineElement.getEndOffset() - 1 - dotOffset;
            }
        }
        // remove characters from dot then insert new text
        doc.remove(dotOffset, lenToRemove);
        if (fileObj.isRoot()) {
            logger.log(Level.FINER, "Adding filesystem root and continuing completion");
            doc.insertString(dotOffset, getText(), null);
        } else if (fileObj.isFolder()) {
            logger.log(Level.FINER, "Adding folder and continuing completion");
            doc.insertString(dotOffset, getText().concat("/"), null);
        } else {
            logger.log(Level.FINER, "Adding file and finishing completion");
            doc.insertString(dotOffset, getText(), null);
            Completion.get().hideAll();
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}