Class SourceViewer

All Implemented Interfaces:
IEditingSupportRegistry, ITextOperationTarget, ITextOperationTargetExtension, ITextViewer, ITextViewerExtension, ITextViewerExtension2, ITextViewerExtension4, ITextViewerExtension6, ITextViewerExtension7, ITextViewerExtension8, ITextViewerExtension9, IWidgetTokenOwner, IWidgetTokenOwnerExtension, ISourceViewer, ISourceViewerExtension, ISourceViewerExtension2, ISourceViewerExtension3, ISourceViewerExtension4, ISourceViewerExtension5, IInputProvider, IInputSelectionProvider, IPostSelectionProvider, ISelectionProvider
Direct Known Subclasses:
ProjectionViewer, TextConsoleViewer

SWT based implementation of ISourceViewer and its extension interfaces. The same rules apply as for TextViewer. A source viewer uses an IVerticalRuler as its annotation presentation area. The vertical ruler is a small strip shown left of the viewer's text widget. A source viewer uses an IOverviewRuler as its presentation area for the annotation overview. The overview ruler is a small strip shown right of the viewer's text widget.

Clients are supposed to instantiate a source viewer and subsequently to communicate with it exclusively using the ISourceViewer and its extension interfaces.

Clients may subclass this class but should expect some breakage by future releases.

  • Field Details

    • GAP_SIZE

      protected static final int GAP_SIZE
      The size of the gap between the vertical ruler and the text widget (value 2).

      Note: As of 3.2, the text editor framework is no longer using 2 as gap but 1, see {GAP_SIZE_1.

      See Also:
    • GAP_SIZE_1

      protected static final int GAP_SIZE_1
      The size of the gap between the vertical ruler and the text widget (value 1).
      Since:
      3.2
      See Also:
    • _SELECTION_POSITION_CATEGORY

      protected static final String _SELECTION_POSITION_CATEGORY
      Partial name of the position category to manage remembered selections.
      Since:
      3.0
      See Also:
    • MODEL_ANNOTATION_MODEL

      protected static final Object MODEL_ANNOTATION_MODEL
      Key of the model annotation model inside the visual annotation model.
      Since:
      3.0
    • fContentAssistant

      protected IContentAssistant fContentAssistant
      The viewer's content assistant
    • fContentAssistantInstalled

      protected boolean fContentAssistantInstalled
      Flag indicating whether the viewer's content assistant is installed.
      Since:
      2.0
    • fQuickAssistAssistant

      protected IQuickAssistAssistant fQuickAssistAssistant
      This viewer's quick assist assistant.
      Since:
      3.2
    • fQuickAssistAssistantInstalled

      protected boolean fQuickAssistAssistantInstalled
      Flag indicating whether this viewer's quick assist assistant is installed.
      Since:
      3.2
    • fContentFormatter

      protected IContentFormatter fContentFormatter
      The viewer's content formatter
    • fReconciler

      protected IReconciler fReconciler
      The viewer's model reconciler
    • fPresentationReconciler

      protected IPresentationReconciler fPresentationReconciler
      The viewer's presentation reconciler
    • fAnnotationHover

      protected IAnnotationHover fAnnotationHover
      The viewer's annotation hover
    • fSelections

      protected final Stack<Position> fSelections
      Stack of saved selections in the underlying document
      Since:
      3.0
    • fSelectionUpdater

      protected IPositionUpdater fSelectionUpdater
      Position updater for saved selections
      Since:
      3.0
    • fSelectionCategory

      protected String fSelectionCategory
      Position category used by the selection updater
      Since:
      3.0
    • fOverviewRulerAnnotationHover

      protected IAnnotationHover fOverviewRulerAnnotationHover
      The viewer's overview ruler annotation hover
      Since:
      3.0
    • fInformationPresenter

      protected IInformationPresenter fInformationPresenter
      The viewer's information presenter
      Since:
      2.0
  • Constructor Details

    • SourceViewer

      public SourceViewer(Composite parent, IVerticalRuler ruler, int styles)
      Constructs a new source viewer. The vertical ruler is initially visible. The viewer has not yet been initialized with a source viewer configuration.
      Parameters:
      parent - the parent of the viewer's control
      ruler - the vertical ruler used by this source viewer
      styles - the SWT style bits for the viewer's control, if SWT.WRAP is set then a custom document adapter needs to be provided, see TextViewer.createDocumentAdapter()
    • SourceViewer

      public SourceViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler, boolean showAnnotationsOverview, int styles)
      Constructs a new source viewer. The vertical ruler is initially visible. The overview ruler visibility is controlled by the value of showAnnotationsOverview. The viewer has not yet been initialized with a source viewer configuration.
      Parameters:
      parent - the parent of the viewer's control
      verticalRuler - the vertical ruler used by this source viewer
      overviewRuler - the overview ruler
      showAnnotationsOverview - true if the overview ruler should be visible, false otherwise
      styles - the SWT style bits for the viewer's control, if SWT.WRAP is set then a custom document adapter needs to be provided, see TextViewer.createDocumentAdapter()
      Since:
      2.1
  • Method Details

    • createControl

      protected void createControl(Composite parent, int styles)
      Description copied from class: TextViewer
      Creates the viewer's SWT control. The viewer's text widget either is the control or is a child of the control.
      Overrides:
      createControl in class TextViewer
      Parameters:
      parent - the parent of the viewer's control
      styles - the SWT style bits for the viewer's control
    • createLayout

      protected Layout createLayout()
      Creates the layout used for this viewer. Subclasses may override this method.
      Returns:
      the layout used for this viewer
      Since:
      3.0
    • getControl

      public Control getControl()
      Description copied from class: Viewer
      Returns the primary control associated with this viewer.
      Specified by:
      getControl in interface ITextViewerExtension
      Overrides:
      getControl in class TextViewer
      Returns:
      the SWT control which displays this viewer's content
    • setAnnotationHover

      public void setAnnotationHover(IAnnotationHover annotationHover)
      Description copied from interface: ISourceViewer
      Sets the annotation hover of this source viewer. The annotation hover provides the information to be displayed in a hover popup window if requested over the annotation presentation area. The annotation hover is assumed to be line oriented.
      Specified by:
      setAnnotationHover in interface ISourceViewer
      Parameters:
      annotationHover - the hover to be used, null is a valid argument
    • setOverviewRulerAnnotationHover

      public void setOverviewRulerAnnotationHover(IAnnotationHover annotationHover)
      Sets the overview ruler's annotation hover of this source viewer. The annotation hover provides the information to be displayed in a hover popup window if requested over the overview rulers area. The annotation hover is assumed to be line oriented.
      Parameters:
      annotationHover - the hover to be used, null is a valid argument
      Since:
      3.0
    • configure

      public void configure(SourceViewerConfiguration configuration)
      Description copied from interface: ISourceViewer
      Configures the source viewer using the given configuration. Prior to 3.0 this method can only be called once. Since 3.0 this method can be called again after a call to ISourceViewerExtension2.unconfigure().
      Specified by:
      configure in interface ISourceViewer
      Parameters:
      configuration - the source viewer configuration to be used
    • ensureAnnotationHoverManagerInstalled

      protected void ensureAnnotationHoverManagerInstalled()
      After this method has been executed the caller knows that any installed annotation hover has been installed.
    • ensureOverviewHoverManagerInstalled

      protected void ensureOverviewHoverManagerInstalled()
      After this method has been executed the caller knows that any installed overview hover has been installed.
    • setHoverEnrichMode

      public void setHoverEnrichMode(ITextViewerExtension8.EnrichMode mode)
      Description copied from class: TextViewer
      Sets the hover enrich mode. A non-null mode defines when hovers should be enriched once the mouse is moved into them. If mode is null, hovers are automatically closed when the mouse is moved out of the hover region.

      Note that a hover can only be enriched if its IInformationControlExtension5.getInformationPresenterControlCreator() is not null.

      Specified by:
      setHoverEnrichMode in interface ITextViewerExtension8
      Overrides:
      setHoverEnrichMode in class TextViewer
      Parameters:
      mode - the enrich mode, or null
    • activatePlugins

      public void activatePlugins()
      Description copied from interface: ITextViewer
      Activates the installed plug-ins. If the plug-ins are already activated this call has no effect.
      Specified by:
      activatePlugins in interface ITextViewer
      Overrides:
      activatePlugins in class TextViewer
    • setDocument

      public void setDocument(IDocument document)
      Description copied from interface: ITextViewer
      Sets the given document as the text viewer's model and updates the presentation accordingly. An appropriate TextEvent is issued. This text event does not carry a related document event.
      Specified by:
      setDocument in interface ITextViewer
      Overrides:
      setDocument in class TextViewer
      Parameters:
      document - the viewer's new input document null if none
    • setDocument

      public void setDocument(IDocument document, int visibleRegionOffset, int visibleRegionLength)
      Description copied from interface: ITextViewer
      Sets the given document as this viewer's model and exposes the specified region. An appropriate TextEvent is issued. The text event does not carry a related document event. This method is a convenience method for setDocument(document);setVisibleRegion(offset, length).
      Specified by:
      setDocument in interface ITextViewer
      Overrides:
      setDocument in class TextViewer
      Parameters:
      document - the new input document or null if none
      visibleRegionOffset - the offset of the model range
      visibleRegionLength - the length of the model range
    • setDocument

      public void setDocument(IDocument document, IAnnotationModel annotationModel)
      Description copied from interface: ISourceViewer
      Sets the given document as this viewer's text model and the given annotation model as the model for this viewer's visual annotations. The presentation is accordingly updated. An appropriate TextEvent is issued. This text event does not carry a related document event.
      Specified by:
      setDocument in interface ISourceViewer
      Parameters:
      document - the viewer's new input document
      annotationModel - the model for the viewer's visual annotations
      See Also:
    • createVisualAnnotationModel

      protected IAnnotationModel createVisualAnnotationModel(IAnnotationModel annotationModel)
      Creates the visual annotation model on top of the given annotation model.
      Parameters:
      annotationModel - the wrapped annotation model
      Returns:
      the visual annotation model on top of the given annotation model
      Since:
      3.0
    • disposeVisualAnnotationModel

      protected void disposeVisualAnnotationModel()
      Disposes the visual annotation model.
      Since:
      3.1
    • setDocument

      public void setDocument(IDocument document, IAnnotationModel annotationModel, int modelRangeOffset, int modelRangeLength)
      Description copied from interface: ISourceViewer
      Sets the given document as this viewer's text model and the given annotation model as the model for this viewer's visual annotations. The presentation is accordingly updated whereby only the specified region is exposed. An appropriate TextEvent is issued. The text event does not carry a related document event. This method is a convenience method for setDocument(document, annotationModel);setVisibleRegion(offset, length).
      Specified by:
      setDocument in interface ISourceViewer
      Parameters:
      document - the new input document
      annotationModel - the model of the viewer's visual annotations
      modelRangeOffset - the offset of the model range
      modelRangeLength - the length of the model range
      See Also:
    • getAnnotationModel

      public IAnnotationModel getAnnotationModel()
      Description copied from interface: ISourceViewer
      Returns this viewer's annotation model. Use ISourceViewerExtension2.getVisualAnnotationModel()in order to get access to the viewer's visual annotation model.
      Specified by:
      getAnnotationModel in interface ISourceViewer
      Returns:
      this viewer's annotation model, or null if none could be determined
    • getQuickAssistAssistant

      public IQuickAssistAssistant getQuickAssistAssistant()
      Description copied from interface: ISourceViewerExtension3
      Returns this viewers quick assist assistant.
      Specified by:
      getQuickAssistAssistant in interface ISourceViewerExtension3
      Returns:
      the quick assist assistant or null if none is configured
    • getContentAssistantFacade

      public final ContentAssistantFacade getContentAssistantFacade()
      Returns a facade for this viewer's content assistant.
      Specified by:
      getContentAssistantFacade in interface ISourceViewerExtension4
      Returns:
      a content assistant facade or null if none is configured
      Since:
      3.4
    • getQuickAssistInvocationContext

      public IQuickAssistInvocationContext getQuickAssistInvocationContext()
      Description copied from interface: ISourceViewerExtension3
      Returns this viewer's quick assist invocation context.
      Specified by:
      getQuickAssistInvocationContext in interface ISourceViewerExtension3
      Returns:
      the quick assist invocation context or null if none is available
    • getVisualAnnotationModel

      public IAnnotationModel getVisualAnnotationModel()
      Description copied from interface: ISourceViewerExtension2
      Returns the visual annotation model of this viewer.
      Specified by:
      getVisualAnnotationModel in interface ISourceViewerExtension2
      Returns:
      the visual annotation model of this viewer
    • unconfigure

      public void unconfigure()
      Description copied from interface: ISourceViewerExtension2
      Rolls back the configuration process of this source viewer. The source viewer can be configured again after a call to this method. Unlike ISourceViewer.configure(SourceViewerConfiguration) this method can be called more than once without interleaving calls to ISourceViewer.configure(SourceViewerConfiguration).
      Specified by:
      unconfigure in interface ISourceViewerExtension2
    • handleDispose

      protected void handleDispose()
      Description copied from class: TextViewer
      Frees all resources allocated by this viewer. Internally called when the viewer's control has been disposed.
      Overrides:
      handleDispose in class TextViewer
    • canDoOperation

      public boolean canDoOperation(int operation)
      Description copied from interface: ITextOperationTarget
      Returns whether the operation specified by the given operation code can be performed.
      Specified by:
      canDoOperation in interface ITextOperationTarget
      Overrides:
      canDoOperation in class TextViewer
      Parameters:
      operation - the operation code
      Returns:
      true if the specified operation can be performed
    • createFormattingContext

      protected IFormattingContext createFormattingContext()
      Creates a new formatting context for a format operation.

      After the use of the context, clients are required to call its dispose method.

      Returns:
      The new formatting context
      Since:
      3.0
    • createFormattingContext

      protected IFormattingContext createFormattingContext(int selectionOffset, int selectionLength)
      Creates a new formatting context for a format operation. If the returned context has the FormattingContextProperties.CONTEXT_REGION property set to an IRegion, the section of the document defined by that region is formatted, otherwise the whole document is formatted.

      The default implementation calls createFormattingContext() and sets the FormattingContextProperties.CONTEXT_REGION property if the selection is not empty. Overriding methods may implement a different logic, or return null to indicate that the formatting operation should not proceed.

      Returning null may be used, for example, when the user clicks on the Cancel button in a dialog that, in case of an empty selection, asks the user whether formatting should be applied to the whole document or to the current statement. Please notice that returning null from this method cancels the already initiated formatting operation unlike canDoOperation(int), which is used for enabling and disabling formatting actions.

      After the use of the context, clients are required to call its dispose method.

      Parameters:
      selectionOffset - the character offset of the selection in the document
      selectionLength - the length of the selection
      Returns:
      The new formatting context, or null to cancel the formatting
      Since:
      3.10
    • rememberSelection

      protected Point rememberSelection()
      Remembers and returns the current selection. The saved selection can be restored by calling restoreSelection().
      Returns:
      the current selection
      Since:
      3.0
      See Also:
    • restoreSelection

      protected void restoreSelection()
      Restores a previously saved selection in the document.

      If no selection was previously saved, nothing happens.

      Since:
      3.0
    • clearRememberedSelection

      protected void clearRememberedSelection()
    • doOperation

      public void doOperation(int operation)
      Description copied from interface: ITextOperationTarget
      Performs the operation specified by the operation code on the target. doOperation must only be called if canDoOperation returns true.
      Specified by:
      doOperation in interface ITextOperationTarget
      Overrides:
      doOperation in class TextViewer
      Parameters:
      operation - the operation code
    • updateSlaveDocuments

      protected void updateSlaveDocuments(IDocument masterDocument)
      Updates all slave documents of the given document. This default implementation calls updateSlaveDocument for their current visible range. Subclasses may reimplement.
      Parameters:
      masterDocument - the master document
      Since:
      3.0
    • enableOperation

      public void enableOperation(int operation, boolean enable)
      Description copied from interface: ITextOperationTargetExtension
      Enables/disabled the given text operation.
      Specified by:
      enableOperation in interface ITextOperationTargetExtension
      Overrides:
      enableOperation in class TextViewer
      Parameters:
      operation - the operation to enable/disable
      enable - true to enable the operation otherwise false
    • setRangeIndicator

      public void setRangeIndicator(Annotation rangeIndicator)
      Description copied from interface: ISourceViewer
      Sets the annotation used by this viewer as range indicator. The range covered by this annotation is referred to as range indication.
      Specified by:
      setRangeIndicator in interface ISourceViewer
      Parameters:
      rangeIndicator - the annotation to be used as this viewer's range indicator
    • setRangeIndication

      public void setRangeIndication(int start, int length, boolean moveCursor)
      Description copied from interface: ISourceViewer
      Sets the viewers's range indication to the specified range. It is indicated whether the cursor should also be moved to the beginning of the specified range.
      Specified by:
      setRangeIndication in interface ISourceViewer
      Parameters:
      start - the offset of the range
      length - the length of the range
      moveCursor - indicates whether the cursor should be moved to the given offset
    • getRangeIndication

      public IRegion getRangeIndication()
      Description copied from interface: ISourceViewer
      Returns the viewer's range indication.
      Specified by:
      getRangeIndication in interface ISourceViewer
      Returns:
      the viewer's range indication.
    • removeRangeIndication

      public void removeRangeIndication()
      Description copied from interface: ISourceViewer
      Removes the viewer's range indication. There is no visible range indication after this method completed.
      Specified by:
      removeRangeIndication in interface ISourceViewer
    • showAnnotations

      public void showAnnotations(boolean show)
      Description copied from interface: ISourceViewer
      Controls the visibility of annotations and in the case of separate presentation areas of text and annotations, the visibility of the annotation's presentation area.

      By default, annotations and their presentation area are visible.

      Specified by:
      showAnnotations in interface ISourceViewer
      Parameters:
      show - indicates the visibility of annotations
    • getVerticalRuler

      protected final IVerticalRuler getVerticalRuler()
      Returns the vertical ruler of this viewer.
      Returns:
      the vertical ruler of this viewer
      Since:
      3.0
    • addVerticalRulerColumn

      public void addVerticalRulerColumn(IVerticalRulerColumn column)
      Adds the give column as last column to this viewer's vertical ruler.
      Parameters:
      column - the column to be added
      Since:
      3.8
    • removeVerticalRulerColumn

      public void removeVerticalRulerColumn(IVerticalRulerColumn column)
      Removes the give column from this viewer's vertical ruler.
      Parameters:
      column - the column to be removed
      Since:
      3.8
    • showAnnotationsOverview

      public void showAnnotationsOverview(boolean show)
      Description copied from interface: ISourceViewerExtension
      Shows/hides an overview representation of the annotations of the whole document of this viewer.
      Specified by:
      showAnnotationsOverview in interface ISourceViewerExtension
      Parameters:
      show - true if annotation overview should be visible, false otherwise
    • getCurrentAnnotationHover

      public IAnnotationHover getCurrentAnnotationHover()
      Description copied from interface: ISourceViewerExtension3
      Returns the currently displayed annotation hover if any, null otherwise.
      Specified by:
      getCurrentAnnotationHover in interface ISourceViewerExtension3
      Returns:
      the currently displayed annotation hover or null
    • setCodeMiningProviders

      public void setCodeMiningProviders(ICodeMiningProvider[] codeMiningProviders)
      Description copied from interface: ISourceViewerExtension5
      Register the code mining providers.
      Specified by:
      setCodeMiningProviders in interface ISourceViewerExtension5
      Parameters:
      codeMiningProviders - the code mining providers to register.
    • hasCodeMiningProviders

      public boolean hasCodeMiningProviders()
      Description copied from interface: ISourceViewerExtension5
      Returns true if there are code mining providers and false otherwise.
      Specified by:
      hasCodeMiningProviders in interface ISourceViewerExtension5
      Returns:
      true if there are code mining providers and false otherwise.
    • updateCodeMinings

      public void updateCodeMinings()
      Description copied from interface: ISourceViewerExtension5
      Update the code minings. Clients and implementors are responsible of calling this method when needed. A typical use-case can be to run it upon completion of a reconcilier and after a job that would compute all the necessary pre-requisites to insert code mining annotations.
      Specified by:
      updateCodeMinings in interface ISourceViewerExtension5
    • setCodeMiningAnnotationPainter

      public void setCodeMiningAnnotationPainter(AnnotationPainter painter)
      Description copied from interface: ISourceViewerExtension5
      Set the AnnotationPainter to use to draw code minings.
      Specified by:
      setCodeMiningAnnotationPainter in interface ISourceViewerExtension5
      Parameters:
      painter - the AnnotationPainter to use to draw code minings.