Search in sources :

Example 21 with IAnnotationModel

use of org.eclipse.jface.text.source.IAnnotationModel in project eclipse.platform.text by eclipse.

the class LineNumberColumn method getAnnotationModelWithDiffer.

/**
 * Returns the annotation model that contains the quick diff annotation model.
 * <p>
 * Extracts the line differ from the displayed document's annotation model. If none can be found,
 * a new differ is created and attached to the annotation model.</p>
 *
 * @return the annotation model that contains the line differ, or <code>null</code> if none could be found or created
 * @see IChangeRulerColumn#QUICK_DIFF_MODEL_ID
 */
private IAnnotationModel getAnnotationModelWithDiffer() {
    ISourceViewer viewer = fViewer;
    if (viewer == null)
        return null;
    IAnnotationModel m = viewer.getAnnotationModel();
    IAnnotationModelExtension model = null;
    if (m instanceof IAnnotationModelExtension)
        model = (IAnnotationModelExtension) m;
    IAnnotationModel differ = getDiffer();
    // create diff model if it doesn't
    if (differ == null) {
        IPreferenceStore store = getPreferenceStore();
        if (store != null) {
            String defaultId = store.getString(AbstractDecoratedTextEditorPreferenceConstants.QUICK_DIFF_DEFAULT_PROVIDER);
            differ = new QuickDiff().createQuickDiffAnnotationModel(getEditor(), defaultId);
            if (differ != null) {
                if (model == null)
                    model = new AnnotationModel();
                model.addAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID, differ);
            }
        }
    } else if (differ instanceof ILineDifferExtension2) {
        if (((ILineDifferExtension2) differ).isSuspended())
            ((ILineDifferExtension) differ).resume();
    } else if (differ instanceof ILineDifferExtension) {
        ((ILineDifferExtension) differ).resume();
    }
    return (IAnnotationModel) model;
}
Also used : QuickDiff(org.eclipse.ui.texteditor.quickdiff.QuickDiff) ILineDifferExtension2(org.eclipse.jface.text.source.ILineDifferExtension2) ILineDifferExtension(org.eclipse.jface.text.source.ILineDifferExtension) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) AnnotationModel(org.eclipse.jface.text.source.AnnotationModel) IAnnotationModelExtension(org.eclipse.jface.text.source.IAnnotationModelExtension) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore)

Example 22 with IAnnotationModel

use of org.eclipse.jface.text.source.IAnnotationModel in project eclipse.platform.text by eclipse.

the class LineNumberColumn method installChangeRulerModel.

/**
 * Installs the differ annotation model with the current quick diff display.
 *
 * @param column the column to install the model on
 */
private void installChangeRulerModel(IVerticalRulerColumn column) {
    if (column instanceof IChangeRulerColumn) {
        IAnnotationModel model = getAnnotationModelWithDiffer();
        ((IChangeRulerColumn) column).setModel(model);
        if (model != null) {
            ISourceViewer viewer = fViewer;
            if (viewer != null && viewer.getAnnotationModel() == null && column.getControl() != null)
                viewer.showAnnotations(true);
        }
    }
}
Also used : IChangeRulerColumn(org.eclipse.jface.text.source.IChangeRulerColumn) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer)

Example 23 with IAnnotationModel

use of org.eclipse.jface.text.source.IAnnotationModel in project eclipse.platform.text by eclipse.

the class LineNumberColumn method getDiffer.

/**
 * Extracts the line differ from the displayed document's annotation model. If none can be found,
 * <code>null</code> is returned.
 *
 * @return the line differ, or <code>null</code> if none could be found
 */
private IAnnotationModel getDiffer() {
    // get annotation model extension
    ISourceViewer viewer = fViewer;
    if (viewer == null)
        return null;
    IAnnotationModel m = viewer.getAnnotationModel();
    if (m == null && fDelegate instanceof IChangeRulerColumn)
        m = ((IChangeRulerColumn) fDelegate).getModel();
    if (!(m instanceof IAnnotationModelExtension))
        return null;
    IAnnotationModelExtension model = (IAnnotationModelExtension) m;
    // get diff model if it exists already
    return model.getAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID);
}
Also used : IChangeRulerColumn(org.eclipse.jface.text.source.IChangeRulerColumn) IAnnotationModelExtension(org.eclipse.jface.text.source.IAnnotationModelExtension) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer)

Example 24 with IAnnotationModel

use of org.eclipse.jface.text.source.IAnnotationModel in project eclipse.platform.text by eclipse.

the class AbstractDecoratedTextEditor method findSelectedOverviewRulerAnnotationLabel.

private String findSelectedOverviewRulerAnnotationLabel() {
    IAnnotationModel model = getSourceViewer().getAnnotationModel();
    if (model == null) {
        return null;
    }
    Point selection = getSourceViewer().getSelectedRange();
    Annotation annotation = null;
    Iterator<Annotation> iter = model.getAnnotationIterator();
    while (iter.hasNext()) {
        annotation = iter.next();
        Position p = model.getPosition(annotation);
        if (p.getOffset() == selection.x && p.getLength() == selection.y)
            break;
    }
    if (annotation != null) {
        AnnotationPreference ap = getAnnotationPreferenceLookup().getAnnotationPreference(annotation);
        if (ap != null)
            return ap.getPreferenceLabel();
    }
    return null;
}
Also used : Position(org.eclipse.jface.text.Position) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel) Point(org.eclipse.swt.graphics.Point) Annotation(org.eclipse.jface.text.source.Annotation)

Example 25 with IAnnotationModel

use of org.eclipse.jface.text.source.IAnnotationModel in project eclipse.platform.text by eclipse.

the class RevisionPainter method setModel.

/**
 * Sets the annotation model.
 *
 * @param model the annotation model, possibly <code>null</code>
 * @see IVerticalRulerColumn#setModel(IAnnotationModel)
 */
public void setModel(IAnnotationModel model) {
    IAnnotationModel diffModel;
    if (model instanceof IAnnotationModelExtension)
        diffModel = ((IAnnotationModelExtension) model).getAnnotationModel(IChangeRulerColumn.QUICK_DIFF_MODEL_ID);
    else
        diffModel = model;
    setDiffer(diffModel);
    setAnnotationModel(model);
}
Also used : IAnnotationModelExtension(org.eclipse.jface.text.source.IAnnotationModelExtension) IAnnotationModel(org.eclipse.jface.text.source.IAnnotationModel)

Aggregations

IAnnotationModel (org.eclipse.jface.text.source.IAnnotationModel)148 Annotation (org.eclipse.jface.text.source.Annotation)71 Position (org.eclipse.jface.text.Position)58 IDocument (org.eclipse.jface.text.IDocument)41 IAnnotationModelExtension (org.eclipse.jface.text.source.IAnnotationModelExtension)26 Iterator (java.util.Iterator)23 ArrayList (java.util.ArrayList)20 ISourceViewer (org.eclipse.jface.text.source.ISourceViewer)20 IDocumentProvider (org.eclipse.ui.texteditor.IDocumentProvider)19 MarkerAnnotation (org.eclipse.ui.texteditor.MarkerAnnotation)19 BadLocationException (org.eclipse.jface.text.BadLocationException)18 IFile (org.eclipse.core.resources.IFile)17 ITextEditor (org.eclipse.ui.texteditor.ITextEditor)16 IEditorInput (org.eclipse.ui.IEditorInput)13 Test (org.junit.Test)13 HashMap (java.util.HashMap)12 List (java.util.List)12 CoreException (org.eclipse.core.runtime.CoreException)11 IMarker (org.eclipse.core.resources.IMarker)10 ICompletionProposal (org.eclipse.jface.text.contentassist.ICompletionProposal)10