blob: 943f5c294d8665d17c5d293cda6b440e3ab2d5b2 [file] [log] [blame]
package org.eclipse.jface.text.source;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.jface.text.ITextViewer;
/**
* This interface defines a visual component which may serve
* text viewers as a line oriented annotation presentation
* area. This interfaces comprises three contracts:
* <ul>
* <li> The vertical ruler retrieves the annotations it
* presents from an annotation model.
* <li> The ruler is a visual component which must be integrated in
* a hierarchy of SWT controls.
* <li> The ruler provides interested clients with mapping and
* interaction information. This covers the mapping between
* coordinates of the ruler's control and line numbers based
* on the connected text viewer's document.
* </ul>
* Clients may implement this interface or use the default implementation provided
* by <code>VerticalRuler</code>.
*
* @see ITextViewer
* @see IVerticalRulerInfo
*/
public interface IVerticalRuler extends IVerticalRulerInfo {
/**
* Associates an annotation model with this ruler.
* If the ruler is visible it must display those annotions
* of the annotation model whose visual representation overlaps
* with the viewport of the rulers source viewer.
* A value <code>null</code> is acceptable and clears the ruler.
*
* @param model the new annotation model, may be <code>null</code>
*/
void setModel(IAnnotationModel model);
/**
* Returns the current annotation model of this ruler or <code>null</code>
* if the ruler has no model.
*
* @return this ruler's annotation model or <code>null</code> if there is no model
*/
IAnnotationModel getModel();
/**
* Forces the vertical ruler to synchronize itself with its
* annotation model and its viewer's viewport.
*/
void update();
/**
* Creates the ruler's SWT control.
*
* @param parent the parent control of the ruler's control
* @param textViewer the text viewer to which this ruler belongs
* @return the ruler's SWT control
*/
Control createControl(Composite parent, ITextViewer textViewer);
}