Search in sources :

Example 91 with Position

use of org.eclipse.jface.text.Position in project eclipse.platform.text by eclipse.

the class SelectMarkerRulerAction method gotoMarker.

private void gotoMarker(IMarker marker) {
    // Use the provided adapter if any
    IGotoMarker gotoMarkerAdapter = fTextEditor.getAdapter(IGotoMarker.class);
    if (gotoMarkerAdapter != null) {
        gotoMarkerAdapter.gotoMarker(marker);
        return;
    }
    int start = MarkerUtilities.getCharStart(marker);
    int end = MarkerUtilities.getCharEnd(marker);
    boolean selectLine = start < 0 || end < 0;
    IDocumentProvider documentProvider = fTextEditor.getDocumentProvider();
    IEditorInput editorInput = fTextEditor.getEditorInput();
    // look up the current range of the marker when the document has been edited
    IAnnotationModel model = documentProvider.getAnnotationModel(editorInput);
    if (model instanceof AbstractMarkerAnnotationModel) {
        AbstractMarkerAnnotationModel markerModel = (AbstractMarkerAnnotationModel) model;
        Position pos = markerModel.getMarkerPosition(marker);
        if (pos != null && !pos.isDeleted()) {
            // use position instead of marker values
            start = pos.getOffset();
            end = pos.getOffset() + pos.getLength();
        }
        if (pos != null && pos.isDeleted()) {
            // do nothing if position has been deleted
            return;
        }
    }
    IDocument document = documentProvider.getDocument(editorInput);
    if (selectLine) {
        int line;
        try {
            if (start >= 0)
                line = document.getLineOfOffset(start);
            else {
                line = MarkerUtilities.getLineNumber(marker);
                // Marker line numbers are 1-based
                --line;
            }
            end = start + document.getLineLength(line) - 1;
        } catch (BadLocationException e) {
            return;
        }
    }
    int length = document.getLength();
    if (end - 1 < length && start < length)
        fTextEditor.selectAndReveal(start, end - start);
}
Also used : Position(org.eclipse.jface.text.Position) IGotoMarker(org.eclipse.ui.ide.IGotoMarker) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) IEditorInput(org.eclipse.ui.IEditorInput) IDocument(org.eclipse.jface.text.IDocument) BadLocationException(org.eclipse.jface.text.BadLocationException)

Example 92 with Position

use of org.eclipse.jface.text.Position in project eclipse.platform.text by eclipse.

the class TextSelectionNavigationLocation method update.

/**
 * Updates the this location.
 */
@Override
public void update() {
    IEditorPart part = getEditorPart();
    if (part instanceof ITextEditor) {
        ITextEditor textEditor = (ITextEditor) getEditorPart();
        if (equalsLocationOf(textEditor))
            return;
        ISelection s = textEditor.getSelectionProvider().getSelection();
        if (s == null || s.isEmpty())
            return;
        ITextSelection selection = (ITextSelection) s;
        if (selection.getOffset() == 0 && selection.getLength() == 0)
            return;
        fPosition.offset = selection.getOffset();
        fPosition.length = selection.getLength();
        fPosition.isDeleted = false;
        if (!part.isDirty())
            fSavedPosition = new Position(fPosition.offset, fPosition.length);
    }
}
Also used : Position(org.eclipse.jface.text.Position) ISelection(org.eclipse.jface.viewers.ISelection) IEditorPart(org.eclipse.ui.IEditorPart) ITextSelection(org.eclipse.jface.text.ITextSelection)

Example 93 with Position

use of org.eclipse.jface.text.Position in project eclipse.platform.text by eclipse.

the class TextSelectionNavigationLocation method restoreState.

/**
 * Restores the object state from the given memento.
 *
 * @param memento the memento
 */
@Override
public void restoreState(IMemento memento) {
    IEditorPart part = getEditorPart();
    if (part instanceof ITextEditor) {
        // restore
        fDocument = getDocument((ITextEditor) part);
        Integer offset = memento.getInteger(TAG_X);
        Integer length = memento.getInteger(TAG_Y);
        String deleted = memento.getString(TAG_INFO);
        if (offset != null && length != null) {
            Position p = new Position(offset.intValue(), length.intValue());
            if (deleted != null)
                p.isDeleted = INFO_DELETED.equals(deleted) ? true : false;
            // activate
            if (installOnDocument(fDocument, p)) {
                fPosition = p;
                if (!part.isDirty())
                    fSavedPosition = new Position(fPosition.offset, fPosition.length);
            }
        }
    }
}
Also used : Position(org.eclipse.jface.text.Position) IEditorPart(org.eclipse.ui.IEditorPart)

Example 94 with Position

use of org.eclipse.jface.text.Position in project eclipse.platform.text by eclipse.

the class SpellingProblem method removeAllInActiveEditor.

/**
 * Removes all spelling problems that are reported
 * for the given <code>word</code> in the active editor.
 * <p>
 * <em>This a workaround to fix bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=134338
 * for 3.2 at the time where spelling still resides in JDT Text.
 * Once we move the spell check engine along with its quick fixes
 * down to Platform Text we need to provide the proposals with
 * a way to access the annotation model.</em>
 * </p>
 *
 * @param editor the text editor, if <code>null</code> this method does nothing
 * @param word the word for which to remove the problems or <code>null</code> to remove all
 * @since 3.3
 * @deprecated As of 3.4, replaced by {@link #removeAll(ISourceViewer, String)}
 */
@Deprecated
public static void removeAllInActiveEditor(ITextEditor editor, String word) {
    if (editor == null)
        return;
    IDocumentProvider documentProvider = editor.getDocumentProvider();
    if (documentProvider == null)
        return;
    IEditorInput editorInput = editor.getEditorInput();
    if (editorInput == null)
        return;
    IAnnotationModel model = documentProvider.getAnnotationModel(editorInput);
    if (model == null)
        return;
    IDocument document = documentProvider.getDocument(editorInput);
    if (document == null)
        return;
    boolean supportsBatchReplace = (model instanceof IAnnotationModelExtension);
    List<Annotation> toBeRemovedAnnotations = new ArrayList<>();
    Iterator<Annotation> iter = model.getAnnotationIterator();
    while (iter.hasNext()) {
        Annotation annotation = iter.next();
        if (SpellingAnnotation.TYPE.equals(annotation.getType())) {
            boolean doRemove = word == null;
            if (word == null)
                doRemove = true;
            else {
                String annotationWord = null;
                Position pos = model.getPosition(annotation);
                try {
                    annotationWord = document.get(pos.getOffset(), pos.getLength());
                } catch (BadLocationException e) {
                    continue;
                }
                doRemove = word.equals(annotationWord);
            }
            if (doRemove) {
                if (supportsBatchReplace)
                    toBeRemovedAnnotations.add(annotation);
                else
                    model.removeAnnotation(annotation);
            }
        }
    }
    if (supportsBatchReplace && !toBeRemovedAnnotations.isEmpty()) {
        Annotation[] annotationArray = toBeRemovedAnnotations.toArray(new Annotation[toBeRemovedAnnotations.size()]);
        ((IAnnotationModelExtension) model).replaceAnnotations(annotationArray, null);
    }
}
Also used : Position(org.eclipse.jface.text.Position) ArrayList(java.util.ArrayList) IAnnotationModelExtension(org.eclipse.jface.text.source.IAnnotationModelExtension) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) Annotation(org.eclipse.jface.text.source.Annotation) IDocumentProvider(org.eclipse.ui.texteditor.IDocumentProvider) IEditorInput(org.eclipse.ui.IEditorInput) IDocument(org.eclipse.jface.text.IDocument) BadLocationException(org.eclipse.jface.text.BadLocationException)

Example 95 with Position

use of org.eclipse.jface.text.Position in project eclipse.platform.text by eclipse.

the class HighlightTest method checkHighlightForCaretOffset.

private void checkHighlightForCaretOffset(int pos, String expectedHighlight, int expectedHighlightCount) throws Exception {
    clearAnnotations();
    editor.selectAndReveal(pos, 0);
    waitForAnnotations(expectedHighlightCount);
    List<Annotation> annotations = getAnnotationsFromAnnotationModel();
    IAnnotationModel annotationModel = getAnnotationModel();
    IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
    for (int i = 0; i < annotations.size(); i++) {
        Annotation annotation = annotations.get(i);
        Position position = annotationModel.getPosition(annotation);
        String highlight = document.get(position.offset, position.length);
        assertEquals("Wrong highlight " + i + " at position " + position.offset, expectedHighlight, highlight);
    }
    Assert.assertEquals("Wrong number of highlights", expectedHighlightCount, annotations.size());
}
Also used : Position(org.eclipse.jface.text.Position) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) Annotation(org.eclipse.jface.text.source.Annotation) IDocument(org.eclipse.jface.text.IDocument)

Aggregations

Position (org.eclipse.jface.text.Position)421 BadLocationException (org.eclipse.jface.text.BadLocationException)145 Annotation (org.eclipse.jface.text.source.Annotation)110 IDocument (org.eclipse.jface.text.IDocument)80 ArrayList (java.util.ArrayList)75 IAnnotationModel (org.eclipse.jface.text.source.IAnnotationModel)57 IRegion (org.eclipse.jface.text.IRegion)55 Test (org.junit.Test)54 HashMap (java.util.HashMap)49 BadPositionCategoryException (org.eclipse.jface.text.BadPositionCategoryException)46 Point (org.eclipse.swt.graphics.Point)40 List (java.util.List)39 Iterator (java.util.Iterator)31 TypedPosition (org.eclipse.jface.text.TypedPosition)31 Region (org.eclipse.jface.text.Region)27 IFile (org.eclipse.core.resources.IFile)22 IAnnotationModelExtension (org.eclipse.jface.text.source.IAnnotationModelExtension)21 ProjectionAnnotation (org.eclipse.jface.text.source.projection.ProjectionAnnotation)21 Map (java.util.Map)15 CoreException (org.eclipse.core.runtime.CoreException)15