Java Code Examples for javax.swing.text.Document#getText()

The following examples show how to use javax.swing.text.Document#getText() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FormatterWriterImpl.java    From netbeans with Apache License 2.0 6 votes vote down vote up
@Override
public void close() throws IOException {
    indentImpl.reformatLock();
    try {
        Document doc = indentImpl.document();
        String text = buffer.toString();
        if (text.length() > 0 && offset <= doc.getLength()) {
            try {
                doc.insertString(offset, text, null);
                Position startPos = doc.createPosition(offset);
                Position endPos = doc.createPosition(offset + text.length());
                indentImpl.reformat(startPos.getOffset(), endPos.getOffset(), startPos.getOffset());
                int len = endPos.getOffset() - startPos.getOffset();
                String reformattedText = doc.getText(startPos.getOffset(), len);
                doc.remove(startPos.getOffset(), len);
                writer.write(reformattedText);
            } catch (BadLocationException e) {
                Exceptions.printStackTrace(e);
            }
        }
    } finally {
        indentImpl.reformatUnlock();
    }
}
 
Example 2
Source File: EditHistoryTest.java    From netbeans with Apache License 2.0 6 votes vote down vote up
public void testMultipleInserts1() throws Exception {
    EditHistory history = new EditHistory();
    String original = "   HelloWorld";
    Document doc = getDocument(original);
    //012345678901234567890
    //   HelloWorld
    //   He__lloWorld
    insert(doc, history, 5, "__");
    //012345678901234567890
    //   He__lloWorld
    //   He__llo__World
    insert(doc, history, 10, "__");

    String modified = doc.getText(0, doc.getLength());
    assertEquals("   He__llo__World", modified);
    assertEquals(5, history.getStart());
    assertEquals(8, history.getOriginalEnd());
    assertEquals(12, history.getEditedEnd());
    assertEquals(3, history.getOriginalSize());
    assertEquals(7, history.getEditedSize());
    assertEquals(4, history.getSizeDelta());
    validateHistory(original, modified, history);
}
 
Example 3
Source File: CustomCodeView.java    From netbeans with Apache License 2.0 6 votes vote down vote up
private void retreiveGuardedBlock(CodeCategory category, int index) {
    GuardedBlock gBlock = codeData.getGuardedBlock(category, index);
    if (!gBlock.isCustomizable())
        return;

    if (getGuardInfos(category)[index].customized) {
        Document doc = getDocument(category);
        int[] blockBounds = getGuardBlockBounds(category, index);
        try {
            int startPos = blockBounds[0] + gBlock.getHeaderLength();
            String code = doc.getText(startPos,
                                      blockBounds[1] - gBlock.getFooterLength() - startPos);
            gBlock.setCustomizedCode(code);
        }
        catch (BadLocationException ex) { // should not happen
            ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, ex);
        }
    }
    else { // reset to default code
        gBlock.setCustomizedCode(null);
    }
}
 
Example 4
Source File: EditHistoryTest.java    From netbeans with Apache License 2.0 6 votes vote down vote up
public void testMixed2() throws Exception {
    EditHistory history = new EditHistory();
    String original = "   HelloWorld";
    Document doc = getDocument(original);
    //012345678901234567890
    //   HelloWorld
    //   He__lloWorld
    insert(doc, history, 5, "__");
    //012345678901234567890
    //   He__lloWorld
    //   He__llorld
    remove(doc, history, 10, 2);

    String modified = doc.getText(0, doc.getLength());
    assertEquals("   He__llorld", modified);
    assertEquals(5, history.getStart());
    assertEquals(10, history.getOriginalEnd());
    assertEquals(10, history.getEditedEnd());
    assertEquals(5, history.getOriginalSize());
    assertEquals(5, history.getEditedSize());
    assertEquals(0, history.getSizeDelta());
    validateHistory(original, modified, history);
}
 
Example 5
Source File: SQLEditorSupport.java    From netbeans with Apache License 2.0 6 votes vote down vote up
@Override
public void execute() {
    Document doc = getDocument();
    if (doc == null) {
        return;
    }
    String sql;
    try {
        sql = doc.getText(0, doc.getLength());
    } catch (BadLocationException e) {
        // should not happen
        Logger.getLogger("global").log(Level.INFO, null, e);
        sql = ""; // NOI18N
    }
    execute(sql, 0, sql.length(), null);
}
 
Example 6
Source File: SyntaxView.java    From jpexs-decompiler with GNU General Public License v3.0 6 votes vote down vote up
@Override
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException {
    // line coordinates
    Document doc = getDocument();
    Element map = getElement();
    int lineIndex = map.getElementIndex(pos);
    if (lineIndex < 0) {
        return lineToRect(a, 0);
    }
    Rectangle lineArea = lineToRect(a, lineIndex);

    // determine span from the start of the line
    int tabBase = lineArea.x;
    Element line = map.getElement(lineIndex);
    int p0 = line.getStartOffset();
    Segment s = new Segment();
    doc.getText(p0, pos - p0, s);
    int xOffs = UniTools.getTabbedTextWidth(s, metrics, tabBase, this,p0);

    // fill in the results and return
    lineArea.x += xOffs;
    lineArea.width = 1;
    lineArea.height = metrics.getHeight();
    return lineArea;
}
 
Example 7
Source File: CompletorUtils.java    From netbeans with Apache License 2.0 6 votes vote down vote up
public static boolean canFilter(Document doc, int invocationOffset, int caretOffset, int anchorOffset, Acceptor acceptor) {
    if(anchorOffset == -1 || caretOffset < invocationOffset) {
        return false;
    }
    
    try {
        String prefix = doc.getText(anchorOffset, caretOffset - anchorOffset);
        if(acceptor.accept(prefix)) {
            return true;
        } else {
            return false;
        }
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
        return false;
    }
}
 
Example 8
Source File: EditorSaveTask.java    From minifierbeans with Apache License 2.0 6 votes vote down vote up
@Override
public void performTask() {
    try {      
        
        Document document = context.getDocument();
        String content = document.getText(0, document.getLength());
   
    DataObject dataObject = NbEditorUtilities.getDataObject(context.getDocument());
    if(dataObject.getPrimaryFile().getMIMEType().equals("text/html") && MinifyProperty.getInstance().isAutoMinifyHTML()){
        HTMLMinify.execute(dataObject,content,false);
    } else if(dataObject.getPrimaryFile().getMIMEType().equals("text/javascript") && MinifyProperty.getInstance().isAutoMinifyJS()){
        JSMinify.execute(dataObject,content,false);
    } else if(dataObject.getPrimaryFile().getMIMEType().equals("text/css") && MinifyProperty.getInstance().isAutoMinifyCSS()){
        CSSMinify.execute(dataObject,content,false);
    } else if(dataObject.getPrimaryFile().getMIMEType().equals("text/x-json") && MinifyProperty.getInstance().isAutoMinifyJSON()){
        JSONMinify.execute(dataObject,content,false);
    } else if(dataObject.getPrimaryFile().getMIMEType().equals("text/xml-mime") && MinifyProperty.getInstance().isAutoMinifyXML()){
        XMLMinify.execute(dataObject,content,false);
    } 
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}
 
Example 9
Source File: TextEditorGUI.java    From trygve with GNU General Public License v2.0 6 votes vote down vote up
public int bufferOffsetForLineNumber(int lineNumber) {
	final Document document = editPane.getDocument();
	String documentText;
	try {
		documentText = document.getText(0, document.getLength());
	} catch (BadLocationException e) {
		e.printStackTrace();
		return 1;
	}
	
	int walker = 0;
	
	// It is "-1" because we want the newline that terminates
	// the *preceding* line
	for (int i = 0; i < lineNumber - 1; i++) {
		int nextNewlineIndex = documentText.indexOf("\n", walker);
		if (-1 == nextNewlineIndex) {
			break;
		} else {
			walker = nextNewlineIndex + 1;
		}
	}
	return walker;
}
 
Example 10
Source File: StringUtils.java    From Pydev with Eclipse Public License 1.0 6 votes vote down vote up
/**
 * Given some html, extracts its text.
 */
public static String extractTextFromHTML(String html) {
    try {
        EditorKit kit = new HTMLEditorKit();
        Document doc = kit.createDefaultDocument();

        // The Document class does not yet handle charset's properly.
        doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);

        // Create a reader on the HTML content.
        Reader rd = new StringReader(html);

        // Parse the HTML.
        kit.read(rd, doc, 0);

        //  The HTML text is now stored in the document
        return doc.getText(0, doc.getLength());
    } catch (Exception e) {
    }
    return "";
}
 
Example 11
Source File: HintTestBase.java    From netbeans with Apache License 2.0 5 votes vote down vote up
/**Return code after the fix has been applied.
 *
 * @param fileName file for which the code should be returned
 * @return the code after the fix has been applied
 */
public String getOutput(String fileName) throws Exception {
    FileObject toCheck = sourceRoot.getFileObject(fileName);

    assertNotNull(toCheck);

    DataObject toCheckDO = DataObject.find(toCheck);
    EditorCookie ec = toCheckDO.getLookup().lookup(EditorCookie.class);
    Document toCheckDocument = ec.openDocument();

    return toCheckDocument.getText(0, toCheckDocument.getLength());
}
 
Example 12
Source File: PhpUtil.java    From netbeans with Apache License 2.0 5 votes vote down vote up
public static int findText(Document document, String searchText, boolean firstToLast) throws BadLocationException {
    int len = document.getLength();
    String content = document.getText(0, len);
    if(firstToLast)
        return content.indexOf(searchText);
    else
        return content.lastIndexOf(searchText);
}
 
Example 13
Source File: StoreGroup.java    From netbeans with Apache License 2.0 5 votes vote down vote up
/** Stores all models created in the StoreGroup into given
 * EditableProperties.
 * @param editableProperties The properties where to store the
 *        values.
 */
public void store( EditableProperties editableProperties ) {
    for (Map.Entry<String,Object[]> entry : models.entrySet()) {
        String key = entry.getKey();
        Object[] params = entry.getValue();

        if ( params[0] instanceof ButtonModel ) {
            ButtonModel model = (ButtonModel)params[0];
            boolean value = model.isSelected();
            if ( params[2] == Boolean.TRUE ) {
                value = !value;
            }
            editableProperties.setProperty( key, encodeBoolean( value, (Integer)params[1] ) );
        }
        else if ( params[0] instanceof Document && modifiedDocuments.contains(params[0])) {
            Document doc = (Document)params[0];
            String txt;
            try {
                txt = doc.getText(0, doc.getLength());
            } catch (BadLocationException e) {
                txt = ""; // NOI18N
            }                    
            editableProperties.setProperty( key, txt );
        }

    }

}
 
Example 14
Source File: FileTextFieldImpl.java    From consulo with Apache License 2.0 4 votes vote down vote up
/**
 * Replace the path component under the caret with the file selected from the completion list.
 *
 * @param file     the selected file.
 * @param caretPos
 * @param start    the start offset of the path component under the caret.
 * @param end      the end offset of the path component under the caret.
 * @throws BadLocationException
 */
private void replacePathComponent(LookupFile file, int caretPos, int start, int end) throws BadLocationException {
  final Document doc = myPathTextField.getDocument();

  myPathTextField.setSelectionStart(0);
  myPathTextField.setSelectionEnd(0);

  final String name = file.getName();
  boolean toRemoveExistingName;
  String prefix = "";

  if (caretPos >= start) {
    prefix = doc.getText(start, caretPos - start);
    if (prefix.length() == 0) {
      prefix = doc.getText(start, end - start);
    }
    if (SystemInfo.isFileSystemCaseSensitive) {
      toRemoveExistingName = name.startsWith(prefix) && prefix.length() > 0;
    }
    else {
      toRemoveExistingName = StringUtil.toUpperCase(name).startsWith(StringUtil.toUpperCase(prefix)) && prefix.length() > 0;
    }
  }
  else {
    toRemoveExistingName = true;
  }

  int newPos;
  if (toRemoveExistingName) {
    doc.remove(start, end - start);
    doc.insertString(start, name, doc.getDefaultRootElement().getAttributes());
    newPos = start + name.length();
  }
  else {
    doc.insertString(caretPos, name, doc.getDefaultRootElement().getAttributes());
    newPos = caretPos + name.length();
  }

  if (file.isDirectory()) {
    if (!myFinder.getSeparator().equals(doc.getText(newPos, 1))) {
      doc.insertString(newPos, myFinder.getSeparator(), doc.getDefaultRootElement().getAttributes());
      newPos++;
    }
  }

  if (newPos < doc.getLength()) {
    if (myFinder.getSeparator().equals(doc.getText(newPos, 1))) {
      newPos++;
    }
  }
  myPathTextField.setCaretPosition(newPos);
}
 
Example 15
Source File: GsfCompletionProvider.java    From netbeans with Apache License 2.0 4 votes vote down vote up
@Override
protected boolean canFilter(JTextComponent component) {
    filterPrefix = null;
    if (component.getCaret() == null) {
        return false;
    }
    int newOffset = component.getSelectionStart();
    if ((queryType & COMPLETION_QUERY_TYPE) != 0) {
        if (isTruncated || !isFilterable) {
            return false;
        }
        int offset = Math.min(anchorOffset, caretOffset);
        if (offset > -1) {
            if (newOffset < offset)
                return true;
            if (newOffset >= caretOffset) {
                try {
                    Document doc = component.getDocument();
                    Language language = getCompletableLanguage(doc, caretOffset);
                    String prefix = doc.getText(offset, newOffset - offset);
                    filterPrefix = isJavaIdentifierPart(language, prefix) ? prefix : null;
                    if (filterPrefix != null && filterPrefix.length() == 0)
                        anchorOffset = newOffset;
                } catch (BadLocationException e) {}
                return true;
            }
        }
        return false;
    } else if (queryType == TOOLTIP_QUERY_TYPE) {
        try {
            if (newOffset == caretOffset)
                filterPrefix = "";
            else if (newOffset - caretOffset > 0)
                filterPrefix = component.getDocument().getText(caretOffset, newOffset - caretOffset);
            else if (newOffset - caretOffset < 0)
                //filterPrefix = newOffset > toolTipOffset ? component.getDocument().getText(newOffset, caretOffset - newOffset) : null;
                filterPrefix = component.getDocument().getText(newOffset, caretOffset - newOffset);
        } catch (BadLocationException ex) {}
        return (filterPrefix != null && filterPrefix.indexOf(',') == -1 && filterPrefix.indexOf('(') == -1 && filterPrefix.indexOf(')') == -1); // NOI18N
    }
    return false;            
}
 
Example 16
Source File: MainView.java    From HiJson with Apache License 2.0 4 votes vote down vote up
/**
 * 文本内容查找定位
 * @param key 要查找的字符串
 * @param ignoreCase 是否区分大小写
 * @param down  查找方向(向上false,向下true)
 * @param isFirst 是否从开头开始查找
 * @return
 */
public boolean startSegmentFindOrReplaceOperation(JTextArea textArea, String key, boolean ignoreCase, boolean down,boolean isFirst) {
    int length = key.length();
    Document doc = textArea.getDocument();
    int offset = textArea.getCaretPosition();
    int charsLeft = doc.getLength() - offset;
    if(charsLeft <=0 ){
        offset = 0;
        charsLeft = doc.getLength() - offset;
    }
    if (!down) {
        offset -= length;
        offset--;
        charsLeft = offset;
    }
    if(isFirst){
        offset = 0;
        charsLeft = doc.getLength() - offset;
    }
    Segment text = new Segment();
    text.setPartialReturn(true);
    try {
        while (charsLeft > 0) {
            doc.getText(offset, length, text);
            if ((ignoreCase == true && text.toString().equalsIgnoreCase(key))
                    || (ignoreCase == false && text.toString().equals(key))) {
                textArea.requestFocus();////焦点,才能能看到效果
                textArea.setSelectionStart(offset);
                textArea.setSelectionEnd(offset + length);
                return true;
            }
            charsLeft--;
            if (down) {
                offset++;
            } else {
                offset--;
            }

        }
    } catch (Exception e) {

    }
    return false;
}
 
Example 17
Source File: CustomCodeView.java    From netbeans with Apache License 2.0 4 votes vote down vote up
private void retreiveEditableBlock(CodeCategory category, int index) {
    CodeEntry[] entries = codeData.getEditableBlock(category, index).getEntries();
    for (CodeEntry e : entries) {
        e.setCode(null);
    }

    int[] blockBounds = getEditBlockBounds(category, index);
    Document doc = getDocument(category);

    try {
        String allCode = doc.getText(blockBounds[0], blockBounds[1]-blockBounds[0]);
        if (allCode.trim().equals("")) // NOI18N
            return;

        StringBuilder buf = new StringBuilder();
        int selIndex = -1;
        EditableLine nextLine = null;
        Iterator<EditableLine> it = getEditInfos(category)[index].lines.iterator();
        while (it.hasNext() || nextLine != null) {
            EditableLine l = nextLine != null ? nextLine : it.next();
            int startPos = l.getPosition().getOffset();
            int endPos;
            if (it.hasNext()) {
                nextLine = it.next();
                endPos = nextLine.getPosition().getOffset();
            }
            else {
                nextLine = null;
                endPos = blockBounds[1];
            }
            buf.append(doc.getText(startPos, endPos-startPos));
            if (nextLine == null || nextLine.getSelectedIndex() != l.getSelectedIndex()) {
                String code = buf.toString().trim();
                if (!code.equals("")) // NOI18N
                    entries[l.getSelectedIndex()].setCode(code);
                buf.delete(0, buf.length());
            }
        }
    }
    catch (BadLocationException ex) { // should not happen
        ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, ex);
    }
}
 
Example 18
Source File: DDEditorTest.java    From netbeans with Apache License 2.0 4 votes vote down vote up
public void testAddParamValueInXmlView() throws IOException {
    initDataObject();
    openInXmlView(dObj);
    Helper.waitForDispatchThread();
    XmlMultiViewEditorSupport editor = (XmlMultiViewEditorSupport)dObj.getCookie(EditorCookie.class);
    final Document document = editor.getDocument();
    Helper.waitForDispatchThread();

    // wait to see the changes in XML view
    new StepIterator() {
        private int index;

        public boolean step() throws Exception {
            //test the editor document
            String text = document.getText(0,document.getLength());
            index = text.lastIndexOf("</context-param>");
            return index >= 0;
        }

        @Override
        public void finalCheck() {
            assertEquals("Cannot find new context param element in XML view (editor document)", true, index > 0);
            try {
                document.insertString(index + 16, CONTEXT_PARAM_CYLINDERS, null);
            } catch (BadLocationException ex) {
                throw new AssertionFailedErrorException("Failed to read the document: ", ex);
            }
        }
    };

    openInDesignView(dObj);
    Helper.waitForDispatchThread();

    new StepIterator() {
        private String paramValue;

        public boolean step() throws Exception {
            // get context params table model
            DDBeanTableModel model = getDDBeanModel();
            if (model.getRowCount() == 2) {
                paramValue = (String) model.getValueAt(1, 0);
                return "cylinders".equals(paramValue);
            } else {
                return false;
            }
        }

        @Override
        public void finalCheck() {
            assertEquals("Context Params Table wasn't changed: ", "cylinders", paramValue);
        }
    };

    // check if save cookie was created
    SaveCookie cookie = (SaveCookie) dObj.getCookie(SaveCookie.class);
    assertNotNull("Data Object Not Modified",cookie);
    cookie.save();
}
 
Example 19
Source File: GsfCompletionProvider.java    From netbeans with Apache License 2.0 4 votes vote down vote up
/**
 * 
 * @param upToOffset If set, complete only up to the given caret offset, otherwise complete
 *   the full symbol at the offset
 */
private Env getCompletionEnvironment(ParserResult controller, boolean upToOffset)
    throws IOException {
    // If you invoke code completion while indexing is in progress, the
    // completion job (which stores the caret offset) will be delayed until
    // indexing is complete - potentially minutes later. When the job
    // is finally run we need to make sure the caret position is still valid. (93017)
    Document doc = controller.getSnapshot ().getSource ().getDocument (false);
    int length = doc != null ? doc.getLength() : (int)controller.getSnapshot ().getSource ().getFileObject().getSize();
    if (caretOffset > length) {
        caretOffset = length;
    }
    
    int offset = caretOffset;
    String prefix = null;

    // 
    // TODO - handle the upToOffset parameter
    // Look at the parse tree, and find the corresponding end node
    // offset...
    
    CodeCompletionHandler completer = getCompletable(controller);
    try {
        // TODO: use the completion helper to get the contxt
        if (completer != null && offset != -1) {
            prefix = completer.getPrefix(controller, offset, upToOffset);
        }
        if (prefix == null && doc != null) {
            int[] blk =
                org.netbeans.editor.Utilities.getIdentifierBlock((BaseDocument)doc,
                    offset);

            if (blk != null) {
                int start = blk[0];

                if (start < offset ) {
                    if (upToOffset) {
                        prefix = doc.getText(start, offset - start);
                    } else {
                        prefix = doc.getText(start, blk[1]-start);
                    }
                }
            }
        }
    } catch (BadLocationException ex) {
        ErrorManager.getDefault().notify(ex);
    }
    
    return new Env(offset, prefix, controller, completer);
}
 
Example 20
Source File: TreeRuleTestBase.java    From netbeans with Apache License 2.0 2 votes vote down vote up
protected String performFixTest(String fileName, String code, int pos, String errorDescriptionToString, String fixDebugString, String goldenFileName, String golden) throws Exception {
    prepareTest(fileName, code);
    
    TreePath path = info.getTreeUtilities().pathFor(pos);
    
    List<ErrorDescription> errors = computeErrors(info, path, pos);
    
    ErrorDescription toFix = null;
    
    for (ErrorDescription d : errors) {
        if (errorDescriptionToString.equals(d.toString())) {
            toFix = d;
            break;
        }
    }
    
    assertNotNull("Error: \"" + errorDescriptionToString + "\" not found. All ErrorDescriptions: " + errors.toString(), toFix);
    
    assertTrue("Must be computed", toFix.getFixes().isComputed());
    
    List<Fix> fixes = toFix.getFixes().getFixes();
    List<String> fixNames = new LinkedList<String>();
    Fix toApply = null;
    
    for (Fix f : fixes) {
        if (fixDebugString.equals(toDebugString(info, f))) {
            toApply = f;
        }
        
        fixNames.add(toDebugString(info, f));
    }
    
    assertNotNull("Cannot find fix to invoke: " + fixNames.toString(), toApply);
    
    toApply.implement();
    
    FileObject toCheck = sourceRoot.getFileObject(goldenFileName);
    
    assertNotNull(toCheck);
    
    DataObject toCheckDO = DataObject.find(toCheck);
    EditorCookie ec = toCheckDO.getLookup().lookup(EditorCookie.class);
    Document toCheckDocument = ec.openDocument();
    
    String realCode = toCheckDocument.getText(0, toCheckDocument.getLength());
    
    //ignore whitespaces:
    realCode = realCode.replaceAll("[ \t\n]+", " ");

    if (golden != null) {
        assertEquals("The output code does not match the expected code.", golden, realCode);
    }
    
    LifecycleManager.getDefault().saveAll();

    return realCode;
}