Java Code Examples for org.eclipse.jface.text.IDocument#getLength()
The following examples show how to use
org.eclipse.jface.text.IDocument#getLength() .
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: PartitionDeletionEditStrategy.java From xtext-eclipse with Eclipse Public License 2.0 | 6 votes |
@Override protected void internalCustomizeDocumentCommand(IDocument document, DocumentCommand command) throws BadLocationException { if (command.text.equals("") && command.length == 1) { if (command.offset + right.length() + left.length() > document.getLength()) return; if (command.offset + command.length - left.length() < 0) return; if (command.length != left.length()) return; String string = document.get(command.offset, left.length() + right.length()); if (string.equals(left + right)) { command.length = left.length() + right.length(); } } }
Example 2
Source File: XdsConsoleViewer.java From xds-ide with Eclipse Public License 1.0 | 6 votes |
@Override public void lineGetStyle(LineStyleEvent event) { // Overrided to don't show hyperlinks as original console do it IDocument document = getDocument(); if (document != null && document.getLength() > 0) { ArrayList<StyleRange> ranges = new ArrayList<StyleRange>(); int offset = event.lineOffset; int length = event.lineText.length(); StyleRange[] partitionerStyles = ((IConsoleDocumentPartitioner) document.getDocumentPartitioner()).getStyleRanges(event.lineOffset, event.lineText.length()); if (partitionerStyles != null) { for (int i = 0; i < partitionerStyles.length; i++) { ranges.add(partitionerStyles[i]); } } else { ranges.add(new StyleRange(offset, length, null, null)); } if (ranges.size() > 0) { event.styles = (StyleRange[]) ranges.toArray(new StyleRange[ranges.size()]); } } }
Example 3
Source File: DocumentUtil.java From xtext-eclipse with Eclipse Public License 2.0 | 6 votes |
/** * searches for the given string within the same partition type * * @return the region of the match or <code>null</code> if no match were found * @since 2.4 */ public IRegion searchInSamePartition(String toFind, String documentText, IDocument document, int startOffset) throws BadLocationException { if (startOffset >= document.getLength()) { return null; } String text = preProcessSearchString(documentText); ITypedRegion partition = document.getPartition(startOffset); int indexOf = text.indexOf(toFind, getOffset(toFind, startOffset)); while (indexOf >= 0 && indexOf < document.getLength()) { ITypedRegion partition2 = document.getPartition(indexOf); if (partition2.getType().equals(partition.getType())) { return new Region(indexOf, toFind.length()); } indexOf = text.indexOf(toFind, partition2.getOffset() + partition2.getLength()); } String trimmed = toFind.trim(); if (trimmed.length() > 0 && trimmed.length() != toFind.length()) { return searchInSamePartition(trimmed, documentText, document, startOffset); } return null; }
Example 4
Source File: N4JSStackTraceConsole.java From n4js with Eclipse Public License 1.0 | 6 votes |
/** * Saves the pasted text into a hidden document so that it will be available the next time the console will be * opened. */ public void saveDocument() { try (FileOutputStream fout = new FileOutputStream(FILE_NAME)) { IDocument document = getDocument(); if (document != null) { if (document.getLength() > 0) { String contents = document.get(); fout.write(contents.getBytes()); } else { File file = new File(FILE_NAME); file.delete(); } } } catch (IOException e) { // just ignore that, not important } }
Example 5
Source File: WhatCursorPosition.java From e4macs with Eclipse Public License 1.0 | 5 votes |
/** * @see com.mulgasoft.emacsplus.commands.EmacsPlusNoEditHandler#transform(org.eclipse.ui.texteditor.ITextEditor, org.eclipse.jface.text.IDocument, org.eclipse.jface.text.ITextSelection, org.eclipse.core.commands.ExecutionEvent) */ @Override protected int transform(ITextEditor editor, IDocument document, ITextSelection currentSelection, ExecutionEvent event) throws BadLocationException { String msg = null; int offset = getCursorOffset(editor,currentSelection); int docLen = document.getLength(); IRegion line = document.getLineInformationOfOffset(offset); if (offset >= docLen) { msg = String.format(EOB_POSITION, offset,docLen); } else { char curChar = document.getChar(offset); String sChar = ""; //$NON-NLS-1$ int percent = new Float(((offset * 100) / docLen) + .5).intValue(); if (offset == line.getOffset() + line.getLength()){ String ld = document.getLineDelimiter(document.getLineOfOffset(offset)); char[] points = ld.toCharArray(); for (int i=0; i<points.length; i++) { sChar += normalizeChar(points[i]); } msg = String.format(EOL_POSITION, sChar,offset,docLen,percent); } else { int curCode = (int) curChar; sChar = (curChar <= ' ' ? normalizeChar(curChar) : String.valueOf(curChar)); msg = String.format(CURSOR_POSITION, sChar, curCode, curCode, curCode, offset, docLen, percent); } } EmacsPlusUtils.showMessage(editor, msg, false); setCmdResult(new Integer(offset)); return super.transform(editor, document, currentSelection, event); }
Example 6
Source File: TddTestWorkbench.java From Pydev with Eclipse Public License 1.0 | 5 votes |
private void checkCreateField() throws CoreException, BadLocationException, MisconfigurationException { String mod1Contents = "" + "class Err(object):\n" + "\n" + " def Foo(self):\n" + " self._suggestion_not_there.get()" + ""; setContentsAndWaitReparseAndError(mod1Contents, false); //no error here TddCodeGenerationQuickFixParticipant quickFix = new TddCodeGenerationQuickFixParticipant(); IDocument doc = editor.getDocument(); int offset = doc.getLength(); PySelection ps = new PySelection(doc, offset); assertTrue(quickFix.isValid(ps, "", editor, offset)); try { waitForQuickFixProps(quickFix, ps, offset, "Create _suggestion_not_there field at Err").apply( editor.getISourceViewer(), '\n', 0, offset); assertContentsEqual("" + "class Err(object):\n" + "\n" + " \n" + " def __init__(self):\n" + " self._suggestion_not_there = None\n" + " \n" + " \n" + "\n" + " def Foo(self):\n" + " self._suggestion_not_there.get()" + "", editor.getDocument().get()); } finally { editor.doRevertToSaved(); } }
Example 7
Source File: PyCreateMethodTest.java From Pydev with Eclipse Public License 1.0 | 5 votes |
public void testPyCreateMethod() { PyCreateMethodOrField pyCreateMethod = new PyCreateMethodOrField(); String source = "" + "class A(object):\n" + "\n" + "\n" + "\n" + " def m1(self):\n" + " self.m2()"; IDocument document = new Document(source); ICoreTextSelection selection = new CoreTextSelection(document, document.getLength() - "2()".length(), 0); RefactoringInfo info = new RefactoringInfo(document, selection, PY_27_ONLY_GRAMMAR_VERSION_PROVIDER); pyCreateMethod.setCreateInClass("A"); pyCreateMethod.setCreateAs(PyCreateMethodOrField.BOUND_METHOD); pyCreateMethod.execute(info, AbstractPyCreateAction.LOCATION_STRATEGY_BEFORE_CURRENT); String expected = "" + "class A(object):\n" + "\n" + "\n" + "\n" + " def m2(self):\n" + " ${pass}${cursor}\n" + " \n" + " \n" + " def m1(self):\n" + " self.m2()"; assertContentsEqual(expected, document.get()); }
Example 8
Source File: JavadocView.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
public ISelection getSelection() { if (fControl instanceof StyledText) { IDocument document= new Document(((StyledText)fControl).getSelectionText()); return new TextSelection(document, 0, document.getLength()); } else { // FIXME: see https://bugs.eclipse.org/bugs/show_bug.cgi?id=63022 return StructuredSelection.EMPTY; } }
Example 9
Source File: KillLineHandler.java From e4macs with Eclipse Public License 1.0 | 5 votes |
/** * When called from a console context, will use ST.CUT * * @see com.mulgasoft.emacsplus.commands.ConsoleCmdHandler#consoleDispatch(TextConsoleViewer, * IConsoleView, ExecutionEvent) */ public Object consoleDispatch(TextConsoleViewer viewer, IConsoleView activePart, ExecutionEvent event) { if (viewer.isEditable()) { IDocument doc = viewer.getDocument(); StyledText st = viewer.getTextWidget(); int offset = st.getCaretOffset(); try { IRegion info = doc.getLineInformationOfOffset(offset); int noffset = info.getOffset() + info.getLength(); if (offset == noffset) { int line = doc.getLineOfOffset(offset); if (++line < doc.getNumberOfLines()) { noffset = doc.getLineOffset(line); if (noffset == doc.getLength()) { noffset = offset; } } } if (offset != noffset) { st.redraw(); st.setSelection(offset, noffset); KillRing.getInstance().setKill(CUT_LINE_TO_END, false); return super.consoleDispatch(viewer, activePart, event); } viewer.refresh(); } catch (BadLocationException e) { } } return null; }
Example 10
Source File: PyCreateClassTest.java From Pydev with Eclipse Public License 1.0 | 5 votes |
public void testPyCreateClassInSameModule5() throws Exception { PyCreateClass pyCreateClass = new PyCreateClass(); String source = "" + "a = 10\n" + "#=============\n" + "#Comment\n" + "#=============\n" + "class Existing(object):\n" + " pass\n" + "\n" + "MyClass()"; IDocument document = new Document(source); ICoreTextSelection selection = new CoreTextSelection(document, document.getLength() - 5, 0); RefactoringInfo info = new RefactoringInfo(document, selection, PY_27_ONLY_GRAMMAR_VERSION_PROVIDER); pyCreateClass.execute(info, PyCreateClass.LOCATION_STRATEGY_BEFORE_CURRENT); assertContentsEqual("" + "a = 10\n" + "#=============\n" + "#Comment\n" + "#=============\n" + "class Existing(object):\n" + " pass\n" + "\n" + "\n" + "class MyClass(${object}):\n" + " ${pass}${cursor}\n" + "\n" + "\n" + "MyClass()" + "", document.get()); }
Example 11
Source File: XMLDoubleClickStrategy.java From http4e with Apache License 2.0 | 5 votes |
protected boolean selectWord(int caretPos) { IDocument doc = fText.getDocument(); int startPos, endPos; try { int pos = caretPos; char c; while (pos >= 0) { c = doc.getChar(pos); if (!Character.isJavaIdentifierPart(c)) break; --pos; } startPos = pos; pos = caretPos; int length = doc.getLength(); while (pos < length) { c = doc.getChar(pos); if (!Character.isJavaIdentifierPart(c)) break; ++pos; } endPos = pos; selectRange(startPos, endPos); return true; } catch (BadLocationException x) { } return false; }
Example 12
Source File: QuickXFind.java From xds-ide with Eclipse Public License 1.0 | 5 votes |
private static SearchRegion getSearchRegion(IDocument document, int offset) { SearchRegion searchRegion = null; if ((offset >= 0) && (offset <= document.getLength())) { int start = offset; int end = offset; try { boolean isCursorOnDelimiter = (offset == document.getLength()) || document.get(offset, 1).matches(WORD_DELIMETERS); if (isCursorOnDelimiter) { start--; } while ((start >= 0) && !document.get(start, 1).matches(WORD_DELIMETERS)) { start--; } if (start != offset) { start++; } while ((end < document.getLength()) && !document.get(end, 1).matches(WORD_DELIMETERS)) { end++; } if (start != end) { int length = end - start; searchRegion = new SearchRegion( document.get(start, length), start, length ); } } catch (BadLocationException e) { } } return searchRegion; }
Example 13
Source File: ScopeSelectionAction.java From Pydev with Eclipse Public License 1.0 | 5 votes |
private static String getCurrentSelectionCacheKey(BaseEditor pyEdit) { IDocument doc = pyEdit.getDocument(); int length = doc.getLength(); String key = Integer.toString(length); if (doc instanceof IDocumentExtension4) { IDocumentExtension4 document = (IDocumentExtension4) doc; long modificationStamp = document.getModificationStamp(); key += " - " + modificationStamp; } return key; }
Example 14
Source File: TransposeLineHandler.java From e4macs with Eclipse Public License 1.0 | 5 votes |
private void swapLines(IDocument document, Lines lines) throws BadLocationException { if (lines.isOk() && (lines.getLine2().getOffset() < document.getLength())) { IRegion line1 = lines.getLine1(); IRegion line2 = lines.getLine2(); String line1Text = document.get(line1.getOffset(), line1.getLength()); String line2Text = document.get(line2.getOffset(), line2.getLength()); // swap the text from bottom up updateText(document, line2.getOffset(), line2.getLength(), line1Text); updateText(document, line1.getOffset(), line1.getLength(), line2Text); } }
Example 15
Source File: TddTestWorkbench.java From Pydev with Eclipse Public License 1.0 | 4 votes |
private void checkCreateFieldAtField() throws CoreException, BadLocationException, MisconfigurationException { String mod1Contents = "" + "class Bar(object):\n" + " pass\n" + "\n" + "class MyTestClass(object):\n" + " \n" + " def __init__(self):\n" + " self.bar = Bar()\n" + " \n" + " def test_1(self):\n" + " self.bar.something" + ""; setContentsAndWaitReparseAndError(mod1Contents, false); //no error here TddCodeGenerationQuickFixParticipant quickFix = new TddCodeGenerationQuickFixParticipant(); IDocument doc = editor.getDocument(); int offset = doc.getLength(); PySelection ps = new PySelection(doc, offset); assertTrue(quickFix.isValid(ps, "", editor, offset)); try { waitForQuickFixProps(quickFix, ps, offset, "Create something field at Bar (pack1.pack2.mod1)").apply( editor.getISourceViewer(), '\n', 0, offset); assertContentsEqual("" + "class Bar(object):\n" + " \n" + " \n" + " def __init__(self):\n" + " self.something = None\n" + " \n" + " \n" + "\n" + "\n" + "class MyTestClass(object):\n" + " \n" + " def __init__(self):\n" + " self.bar = Bar()\n" + " \n" + " def test_1(self):\n" + " self.bar.something" + "", editor.getDocument().get()); } finally { editor.doRevertToSaved(); } }
Example 16
Source File: TextViewerMoveLinesAction.java From xtext-eclipse with Eclipse Public License 2.0 | 4 votes |
@Override public void runWithEvent(Event event) { ITextViewer viewer = getTextViewer(); if (viewer == null) return; if (!canModifyViewer()) return; // get involved objects IDocument document= viewer.getDocument(); if (document == null) return; StyledText widget= viewer.getTextWidget(); if (widget == null) return; // get selection ITextSelection sel= (ITextSelection) viewer.getSelectionProvider().getSelection(); if (sel.isEmpty()) return; ITextSelection skippedLine= getSkippedLine(document, sel); if (skippedLine == null) return; try { ITextSelection movingArea= getMovingSelection(document, sel, viewer); // if either the skipped line or the moving lines are outside the widget's // visible area, bail out if (!containedByVisibleRegion(movingArea, viewer) || !containedByVisibleRegion(skippedLine, viewer)) return; // get the content to be moved around: the moving (selected) area and the skipped line String moving= movingArea.getText(); String skipped= skippedLine.getText(); if (moving == null || skipped == null || document.getLength() == 0) return; String delim; String insertion; int offset, deviation; if (fUpwards) { delim= document.getLineDelimiter(skippedLine.getEndLine()); if (fCopy) { delim= TextUtilities.getDefaultLineDelimiter(document); insertion= moving + delim; offset= movingArea.getOffset(); deviation= 0; } else { Assert.isNotNull(delim); insertion= moving + delim + skipped; offset= skippedLine.getOffset(); deviation= -skippedLine.getLength() - delim.length(); } } else { delim= document.getLineDelimiter(movingArea.getEndLine()); if (fCopy) { if (delim == null) { delim= TextUtilities.getDefaultLineDelimiter(document); insertion= delim + moving; } else { insertion= moving + delim; } offset= skippedLine.getOffset(); deviation= movingArea.getLength() + delim.length(); } else { Assert.isNotNull(delim); insertion= skipped + delim + moving; offset= movingArea.getOffset(); deviation= skipped.length() + delim.length(); } } // modify the document beginCompoundEdit(); if (fCopy) { document.replace(offset, 0, insertion); } else { document.replace(offset, insertion.length(), insertion); } // move the selection along int selOffset= movingArea.getOffset() + deviation; int selLength= movingArea.getLength() + (fAddDelimiter ? delim.length() : 0); if (! (viewer instanceof ITextViewerExtension5)) selLength= Math.min(selLength, viewer.getVisibleRegion().getOffset() + viewer.getVisibleRegion().getLength() - selOffset); else { // TODO need to check what is necessary in the projection case } selectAndReveal(viewer, selOffset, selLength); } catch (BadLocationException x) { // won't happen without concurrent modification - bail out return; } }
Example 17
Source File: TddTestWorkbench.java From Pydev with Eclipse Public License 1.0 | 4 votes |
private void checkCreateMethodAtField() throws CoreException, BadLocationException, MisconfigurationException { String mod1Contents = "" + "class Bar(object):\n" + " pass\n" + "\n" + "class MyTestClass(object):\n" + " \n" + " def __init__(self):\n" + " self.bar = Bar()\n" + " \n" + " def test_1(self):\n" + " self.bar.something()" + ""; setContentsAndWaitReparseAndError(mod1Contents, false); //no error here TddCodeGenerationQuickFixParticipant quickFix = new TddCodeGenerationQuickFixParticipant(); IDocument doc = editor.getDocument(); int offset = doc.getLength(); PySelection ps = new PySelection(doc, offset); assertTrue(quickFix.isValid(ps, "", editor, offset)); try { waitForQuickFixProps(quickFix, ps, offset, "Create something method at Bar (pack1.pack2.mod1)").apply( editor.getISourceViewer(), '\n', 0, offset); assertContentsEqual("" + "class Bar(object):\n" + " \n" + " \n" + " def something(self):\n" + " pass\n" + " \n" + " \n" + "\n" + "\n" + "class MyTestClass(object):\n" + " \n" + " def __init__(self):\n" + " self.bar = Bar()\n" + " \n" + " def test_1(self):\n" + " self.bar.something()" + "", editor.getDocument().get()); } finally { editor.doRevertToSaved(); } }
Example 18
Source File: TypeScriptAutoIndentStrategy.java From typescript.java with MIT License | 4 votes |
private void smartIndentAfterOpeningBracket(IDocument d, DocumentCommand c) { if (c.offset < 1 || d.getLength() == 0) return; JavaHeuristicScanner scanner= new JavaHeuristicScanner(d); int p= (c.offset == d.getLength() ? c.offset - 1 : c.offset); try { // current line int line= d.getLineOfOffset(p); int lineOffset= d.getLineOffset(line); // make sure we don't have any leading comments etc. if (d.get(lineOffset, p - lineOffset).trim().length() != 0) return; // line of last Java code int pos= scanner.findNonWhitespaceBackward(p, JavaHeuristicScanner.UNBOUND); if (pos == -1) return; int lastLine= d.getLineOfOffset(pos); // only shift if the last java line is further up and is a braceless block candidate if (lastLine < line) { TypeScriptIndenter indenter= new TypeScriptIndenter(d, scanner, fProject); StringBuffer indent= indenter.computeIndentation(p, true); String toDelete= d.get(lineOffset, c.offset - lineOffset); if (indent != null && !indent.toString().equals(toDelete)) { c.text= indent.append(c.text).toString(); c.length += c.offset - lineOffset; c.offset= lineOffset; } } } catch (BadLocationException e) { JSDTTypeScriptUIPlugin.log(e); } }
Example 19
Source File: RubyRegexpAutoIndentStrategy.java From APICloud-Studio with GNU General Public License v3.0 | 4 votes |
/** * @param d * the document to work on * @param c * the command to deal with * @return true if the indentation occurred, false otherwise */ protected boolean autoIndent(IDocument d, DocumentCommand c) { if (c.offset <= 0 || d.getLength() == 0 || !shouldAutoIndent()) { return false; } String newline = c.text; try { // Get the line and run a regexp check against it IRegion curLineRegion = d.getLineInformationOfOffset(c.offset); String scope = getScopeAtOffset(d, c.offset); RubyRegexp increaseIndentRegexp = getIncreaseIndentRegexp(scope); String lineContent = d.get(curLineRegion.getOffset(), c.offset - curLineRegion.getOffset()); if (matchesRegexp(increaseIndentRegexp, lineContent)) { String previousLineIndent = getAutoIndentAfterNewLine(d, c); String restOfLine = d.get(c.offset, curLineRegion.getLength() - (c.offset - curLineRegion.getOffset())); String startIndent = newline + previousLineIndent + getIndentString(); if (indentAndPushTrailingContentAfterNewlineAndCursor(lineContent, restOfLine)) { c.text = startIndent + newline + previousLineIndent; } else { c.text = startIndent; } c.shiftsCaret = false; c.caretOffset = c.offset + startIndent.length(); return true; } } catch (BadLocationException e) { IdeLog.logError(CommonEditorPlugin.getDefault(), e); } return false; }
Example 20
Source File: DocumentCharacterIterator.java From Pydev with Eclipse Public License 1.0 | 2 votes |
/** * Creates an iterator, starting at offset <code>first</code>. * * @param document the document backing this iterator * @param first the first character to consider * @throws BadLocationException if the indices are out of bounds */ public DocumentCharacterIterator(IDocument document, int first) throws BadLocationException { this(document, first, document.getLength()); }