Class AbstractTextEditor

All Implemented Interfaces:
IAdaptable, IExecutableExtension, IEditorPart, INavigationLocationProvider, IPersistable, IPersistableEditor, IReusableEditor, ISaveablePart, ISaveablesSource, IWorkbenchPart, IWorkbenchPart2, IWorkbenchPart3, IWorkbenchPartOrientation, ITextEditor, ITextEditorExtension, ITextEditorExtension2, ITextEditorExtension3, ITextEditorExtension4, ITextEditorExtension5, ITextEditorExtension6
Direct Known Subclasses:
StatusTextEditor

Abstract base implementation of a text editor.

Subclasses are responsible for configuring the editor appropriately. The standard text editor, TextEditor, is one such example.

If a subclass calls setEditorContextMenuId the argument is used as the id under which the editor's context menu is registered for extensions. If no id is set, the context menu is registered under [editor_id].EditorContext whereby [editor_id] is replaced with the editor's part id. If the editor is instructed to run in version 1.0 context menu registration compatibility mode, the latter form of the registration even happens if a context menu id has been set via setEditorContextMenuId. If no id is set while in compatibility mode, the menu is registered under DEFAULT_EDITOR_CONTEXT_MENU_ID.

If a subclass calls setRulerContextMenuId the argument is used as the id under which the ruler's context menu is registered for extensions. If no id is set, the context menu is registered under [editor_id].RulerContext whereby [editor_id] is replaced with the editor's part id. If the editor is instructed to run in version 1.0 context menu registration compatibility mode, the latter form of the registration even happens if a context menu id has been set via setRulerContextMenuId. If no id is set while in compatibility mode, the menu is registered under DEFAULT_RULER_CONTEXT_MENU_ID.

As of 3.5, contributers can contribute editor and ruler context menu actions to all subclasses of this class by using COMMON_EDITOR_CONTEXT_MENU_ID and COMMON_RULER_CONTEXT_MENU_ID.

  • Field Details

  • Constructor Details

    • AbstractTextEditor

      protected AbstractTextEditor()
      Creates a new text editor. If not explicitly set, this editor uses a SourceViewerConfiguration to configure its source viewer. This viewer does not have a range indicator installed, nor any menu id set. By default, the created editor runs in 1.0 context menu registration compatibility mode.
  • Method Details

    • getDocumentProvider

      public IDocumentProvider getDocumentProvider()
      Description copied from interface: ITextEditor
      Returns this text editor's document provider.
      Specified by:
      getDocumentProvider in interface ITextEditor
      Returns:
      the document provider or null if none, e.g. after closing the editor
    • getRangeIndicator

      protected final Annotation getRangeIndicator()
      Returns the editor's range indicator. May return null if no range indicator is installed.
      Returns:
      the editor's range indicator which may be null
    • getSourceViewerConfiguration

      protected final SourceViewerConfiguration getSourceViewerConfiguration()
      Returns the editor's source viewer configuration. May return null before the editor's part has been created and after disposal.
      Returns:
      the editor's source viewer configuration which may be null
    • getSourceViewer

      protected final ISourceViewer getSourceViewer()
      Returns the editor's source viewer. May return null before the editor's part has been created and after disposal.
      Returns:
      the editor's source viewer which may be null
    • getVerticalRuler

      protected final IVerticalRuler getVerticalRuler()
      Returns the editor's vertical ruler. May return null before the editor's part has been created and after disposal.
      Returns:
      the editor's vertical ruler which may be null
    • getEditorContextMenuId

      protected final String getEditorContextMenuId()
      Returns the editor's context menu id. May return null before the editor's part has been created.
      Returns:
      the editor's context menu id which may be null
    • getRulerContextMenuId

      protected final String getRulerContextMenuId()
      Returns the ruler's context menu id. May return null before the editor's part has been created.
      Returns:
      the ruler's context menu id which may be null
    • getHelpContextId

      protected final String getHelpContextId()
      Returns the editor's help context id or null if none has been set.
      Returns:
      the editor's help context id which may be null
    • getPreferenceStore

      protected final IPreferenceStore getPreferenceStore()
      Returns this editor's preference store or null if none has been set.
      Returns:
      this editor's preference store which may be null
    • setDocumentProvider

      protected void setDocumentProvider(IDocumentProvider provider)
      Sets this editor's document provider. This method must be called before the editor's control is created.
      Parameters:
      provider - the document provider
    • setSourceViewerConfiguration

      protected void setSourceViewerConfiguration(SourceViewerConfiguration configuration)
      Sets this editor's source viewer configuration used to configure its internal source viewer. This method must be called before the editor's control is created. If not, this editor uses a SourceViewerConfiguration.
      Parameters:
      configuration - the source viewer configuration object
    • setRangeIndicator

      protected void setRangeIndicator(Annotation rangeIndicator)
      Sets the annotation which this editor uses to represent the highlight range if the editor is configured to show the entire document. If the range indicator is not set, this editor will not show a range indication.
      Parameters:
      rangeIndicator - the annotation
    • setEditorContextMenuId

      protected void setEditorContextMenuId(String contextMenuId)
      Sets this editor's context menu id.
      Parameters:
      contextMenuId - the context menu id
    • setRulerContextMenuId

      protected void setRulerContextMenuId(String contextMenuId)
      Sets the ruler's context menu id.
      Parameters:
      contextMenuId - the context menu id
    • setCompatibilityMode

      protected final void setCompatibilityMode(boolean compatible)
      Sets the context menu registration 1.0 compatibility mode. (See class description for more details.)
      Parameters:
      compatible - true if compatibility mode is enabled
      Since:
      2.0
    • setHelpContextId

      protected void setHelpContextId(String helpContextId)
      Sets the editor's help context id.
      Parameters:
      helpContextId - the help context id
    • setKeyBindingScopes

      protected void setKeyBindingScopes(String[] scopes)
      Sets the key binding scopes for this editor.
      Parameters:
      scopes - a non-empty array of key binding scope identifiers
      Since:
      2.1
    • setPreferenceStore

      protected void setPreferenceStore(IPreferenceStore store)
      Sets this editor's preference store. This method must be called before the editor's control is created.
      Parameters:
      store - the preference store or null to remove the preference store
    • isEditable

      public boolean isEditable()
      Description copied from interface: ITextEditor
      Returns whether the text in this text editor can be changed by the user.
      Specified by:
      isEditable in interface ITextEditor
      Returns:
      true if it can be edited, and false if it is read-only
    • getSelectionProvider

      public ISelectionProvider getSelectionProvider()
      Returns this text editor's selection provider. Repeated calls to this method return the same selection provider.

      Returns null after disposal.

      Specified by:
      getSelectionProvider in interface ITextEditor
      Returns:
      the selection provider or null if the editor has been disposed
    • rememberSelection

      protected void rememberSelection()
      Remembers the current selection of this editor. This method is called when, e.g., the content of the editor is about to be reverted to the saved state. This method remembers the selection in a semantic format, i.e., in a format which allows to restore the selection even if the originally selected text is no longer part of the editor's content.

      Subclasses should implement this method including all necessary state. This default implementation remembers the textual range only and is thus purely syntactic.

      Since:
      2.0
      See Also:
    • doGetSelection

      protected ISelection doGetSelection()
      Returns the current selection.
      Returns:
      ISelection
      Since:
      2.1
    • restoreSelection

      protected void restoreSelection()
      Restores a selection previously remembered by rememberSelection. Subclasses may reimplement this method and thereby semantically adapt the remembered selection. This default implementation just selects the remembered textual range.
      Since:
      2.0
      See Also:
    • doSetSelection

      protected void doSetSelection(ISelection selection)
      Sets the given selection.
      Parameters:
      selection - the selection
      Since:
      2.1
    • createContextMenuListener

      protected IMenuListener createContextMenuListener()
      Creates the listener on this editor's context menus.
      Returns:
      the created menu listener
      Since:
      3.4
    • getContextMenuListener

      protected final IMenuListener getContextMenuListener()
      Creates and returns the listener on this editor's context menus.
      Returns:
      the menu listener
    • getRulerMouseListener

      protected final MouseListener getRulerMouseListener()
      Creates and returns the listener on this editor's vertical ruler.
      Returns:
      the mouse listener
    • getSelectionChangedListener

      protected final ISelectionChangedListener getSelectionChangedListener()
      Returns this editor's selection changed listener to be installed on the editor's source viewer.
      Returns:
      the listener
    • getCursorListener

      protected final org.eclipse.ui.texteditor.AbstractTextEditor.ICursorListener getCursorListener()
      Returns this editor's "cursor" listener to be installed on the editor's source viewer. This listener is listening to key and mouse button events. It triggers the updating of the status line by calling handleCursorPositionChanged().
      Returns:
      the listener
      Since:
      2.0
    • internalInit

      protected final void internalInit(IWorkbenchWindow window, IEditorSite site, IEditorInput input) throws PartInitException
      Implements the init method of IEditorPart. Subclasses replacing init may choose to call this method in their implementation.
      Parameters:
      window - the workbench window
      site - the editor's site
      input - the editor input for the editor being created
      Throws:
      PartInitException - if doSetInput(IEditorInput) fails or gets canceled
      Since:
      2.1
      See Also:
    • init

      public void init(IEditorSite site, IEditorInput input) throws PartInitException
      Description copied from interface: IEditorPart
      Initializes this editor with the given editor site and input.

      This method is automatically called shortly after the part is instantiated. It marks the start of the part's lifecycle. The IWorkbenchPart.dispose method will be called automically at the end of the lifecycle. Clients must not call this method.

      Implementors of this method must examine the editor input object type to determine if it is understood. If not, the implementor must throw a PartInitException

      Specified by:
      init in interface IEditorPart
      Specified by:
      init in class EditorPart
      Parameters:
      site - the editor site
      input - the editor input
      Throws:
      PartInitException - if this editor was not initialized successfully
    • createVerticalRuler

      protected IVerticalRuler createVerticalRuler()
      Creates the vertical ruler to be used by this editor. Subclasses may re-implement this method.
      Returns:
      the vertical ruler
    • updateContributedRulerColumns

      protected void updateContributedRulerColumns(CompositeRuler ruler)
      Adds enabled ruler contributions to the vertical ruler.

      Clients may extend or replace.

      Parameters:
      ruler - the composite ruler to add contributions to
      Since:
      3.3
    • createColumnSupport

      protected IColumnSupport createColumnSupport()
      Creates the column support to be used by this editor to manage the contributed ruler columns. Subclasses may re-implement this method using the AbstractTextEditor.ColumnSupport, e.g. by returning new ColumnSupport(this, RulerColumnRegistry.getDefault());.

      Note: If you override this method to provide column support you will also need to override createVerticalRuler() to return a CompositeRuler.

      Out of the box this class does not install this support and hence this implementation always returns null.

      Returns:
      the column support or null if none
      Since:
      3.3
    • createSourceViewer

      protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles)
      Creates the source viewer to be used by this editor. Subclasses may re-implement this method.
      Parameters:
      parent - the parent control
      ruler - the vertical ruler
      styles - style bits, SWT.WRAP is currently not supported
      Returns:
      the source viewer
    • initializeDragAndDrop

      protected void initializeDragAndDrop(ISourceViewer viewer)
      Initializes the drag and drop support for the given viewer based on provided editor adapter for drop target listeners.
      Parameters:
      viewer - the viewer
      Since:
      3.0
    • createPartControl

      public void createPartControl(Composite parent)
      The AbstractTextEditor implementation of this IWorkbenchPart method creates the vertical ruler and source viewer.

      Subclasses may extend this method. Besides extending this method, the behavior of createPartControl may be customized by calling, extending or replacing the following methods:
      Subclasses may supply customized implementations for some members using the following methods before createPartControl is invoked:


      Subclasses may replace the following methods called from within createPartControl:
      Subclasses may extend the following methods called from within createPartControl:
      Specified by:
      createPartControl in interface IWorkbenchPart
      Specified by:
      createPartControl in class WorkbenchPart
      Parameters:
      parent - the parent composite
    • installTextDragAndDrop

      protected void installTextDragAndDrop(ISourceViewer viewer)
      Installs text drag and drop on the given source viewer.
      Parameters:
      viewer - the viewer
      Since:
      3.3
    • uninstallTextDragAndDrop

      protected void uninstallTextDragAndDrop(ISourceViewer viewer)
      Uninstalls text drag and drop from the given source viewer.
      Parameters:
      viewer - the viewer
      Since:
      3.3
    • isEditorInputIncludedInContextMenu

      protected boolean isEditorInputIncludedInContextMenu()
      Tells whether the editor input should be included when adding object contributions to this editor's context menu.

      This implementation always returns true.

      Returns:
      true if the editor input should be considered
      Since:
      3.2
    • initializeViewerColors

      protected void initializeViewerColors(ISourceViewer viewer)
      Initializes the fore- and background colors of the given viewer for both normal and selected text.
      Parameters:
      viewer - the viewer to be initialized
      Since:
      2.0
    • installCodeMiningProviders

      protected void installCodeMiningProviders()
      Install codemining providers.
      Since:
      3.11
    • setDocumentProvider

      protected void setDocumentProvider(IEditorInput input)
      Hook method for setting the document provider for the given input. This default implementation does nothing. Clients may reimplement.
      Parameters:
      input - the input of this editor.
      Since:
      3.0
    • doSetInput

      protected void doSetInput(IEditorInput input) throws CoreException
      Called directly from setInput and from within a workspace runnable from init, this method does the actual setting of the editor input. Closes the editor if input is null. Disconnects from any previous editor input and its document provider and connects to the new one.

      Subclasses may extend.

      Parameters:
      input - the input to be set
      Throws:
      CoreException - if input cannot be connected to the document provider
    • setInputWithNotify

      protected final void setInputWithNotify(IEditorInput input)
      Description copied from class: EditorPart
      Sets the input to this editor and fires a PROP_INPUT property change if the input has changed. This is the convenience method implementation.

      Note that firing a property change may cause other objects to reach back and invoke methods on the editor. Care should be taken not to call this method until the editor has fully updated its internal state to reflect the new input.

      Overrides:
      setInputWithNotify in class EditorPart
      Parameters:
      input - the editor input
    • setInput

      public final void setInput(IEditorInput input)
      Description copied from class: EditorPart
      Sets the input to this editor. This method simply updates the internal member variable.

      Unlike most of the other set methods on this class, this method does not fire a property change. Clients that call this method from a subclass must ensure that they fire an IWorkbenchPartConstants.PROP_INPUT property change after calling this method but before leaving whatever public method they are in. Clients that expose this method as public API must fire the property change within their implementation of setInput.

      Note that firing a property change may cause listeners to immediately reach back and call methods on this editor. Care should be taken not to fire the property change until the editor has fully updated its internal state to reflect the new input.

      Specified by:
      setInput in interface IReusableEditor
      Overrides:
      setInput in class EditorPart
      Parameters:
      input - the editor input
      See Also:
    • close

      public void close(boolean save)
      Description copied from interface: ITextEditor
      Closes this text editor after optionally saving changes.
      Specified by:
      close in interface ITextEditor
      Parameters:
      save - true if unsaved changed should be saved, and false if unsaved changed should be discarded
    • dispose

      public void dispose()
      The AbstractTextEditor implementation of this IWorkbenchPart method may be extended by subclasses. Subclasses must call super.dispose().

      Note that many methods may return null after the editor is disposed.

      Specified by:
      dispose in interface IWorkbenchPart
      Overrides:
      dispose in class WorkbenchPart
    • disposeDocumentProvider

      protected void disposeDocumentProvider()
      Disposes of the connection with the document provider. Subclasses may extend.
      Since:
      3.0
    • affectsTextPresentation

      protected boolean affectsTextPresentation(PropertyChangeEvent event)
      Determines whether the given preference change affects the editor's presentation. This implementation always returns false. May be reimplemented by subclasses.
      Parameters:
      event - the event which should be investigated
      Returns:
      true if the event describes a preference change affecting the editor's presentation
      Since:
      2.0
    • getFontPropertyPreferenceKey

      protected final String getFontPropertyPreferenceKey()
      Returns the property preference key for the editor font.

      If the editor is defined with a symbolicFontName then this name is returned and the font is looked up in the JFace resource registry. Otherwise, JFaceResources.TEXT_FONT is returned and the font is looked up in this editor's preference store.

      Returns:
      a String with the key
      Since:
      2.1
    • handlePreferenceStoreChanged

      protected void handlePreferenceStoreChanged(PropertyChangeEvent event)
      Handles a property change event describing a change of the editor's preference store and updates the preference related editor properties.

      Subclasses may extend.

      Parameters:
      event - the property change event
    • getProgressMonitor

      protected IProgressMonitor getProgressMonitor()
      Returns the progress monitor related to this editor. It should not be necessary to extend this method.
      Returns:
      the progress monitor related to this editor
      Since:
      2.1
    • handleEditorInputChanged

      protected void handleEditorInputChanged()
      Handles an external change of the editor's input element. Subclasses may extend.
    • doSaveAs

      public void doSaveAs()
      The AbstractTextEditor implementation of this IEditorPart method calls performSaveAs. Subclasses may reimplement.
      Specified by:
      doSaveAs in interface ISaveablePart
      Specified by:
      doSaveAs in class EditorPart
    • performSaveAs

      protected void performSaveAs(IProgressMonitor progressMonitor)
      Performs a save as and reports the result state back to the given progress monitor. This default implementation does nothing. Subclasses may reimplement.
      Parameters:
      progressMonitor - the progress monitor for communicating result state or null
    • doSave

      public void doSave(IProgressMonitor progressMonitor)
      The AbstractTextEditor implementation of this IEditorPart method may be extended by subclasses.
      Specified by:
      doSave in interface ISaveablePart
      Specified by:
      doSave in class EditorPart
      Parameters:
      progressMonitor - the progress monitor for communicating result state or null
    • enableSanityChecking

      protected void enableSanityChecking(boolean enable)
      Enables/disables sanity checking.
      Parameters:
      enable - true if sanity checking should be enabled, false otherwise
      Since:
      2.0
    • safelySanityCheckState

      protected void safelySanityCheckState(IEditorInput input)
      Checks the state of the given editor input if sanity checking is enabled.
      Parameters:
      input - the editor input whose state is to be checked
      Since:
      2.0
    • sanityCheckState

      protected void sanityCheckState(IEditorInput input)
      Checks the state of the given editor input.
      Parameters:
      input - the editor input whose state is to be checked
      Since:
      2.0
    • enableStateValidation

      protected void enableStateValidation(boolean enable)
      Enables/disables state validation.
      Parameters:
      enable - true if state validation should be enabled, false otherwise
      Since:
      2.1
    • validateState

      protected void validateState(IEditorInput input)
      Validates the state of the given editor input. The predominate intent of this method is to take any action probably necessary to ensure that the input can persistently be changed.
      Parameters:
      input - the input to be validated
      Since:
      2.0
    • validateEditorInputState

      public boolean validateEditorInputState()
      Description copied from interface: ITextEditorExtension2
      Validates the state of the given editor input. The predominate intent of this method is to take any action probably necessary to ensure that the input can persistently be changed.
      Specified by:
      validateEditorInputState in interface ITextEditorExtension2
      Returns:
      true if the input was validated, false otherwise
    • updateState

      protected void updateState(IEditorInput input)
      Updates the state of the given editor input such as read-only flag.
      Parameters:
      input - the input to be validated
      Since:
      2.0
    • performSave

      protected void performSave(boolean overwrite, IProgressMonitor progressMonitor)
      Performs the save and handles errors appropriately.
      Parameters:
      overwrite - indicates whether or not overwriting is allowed
      progressMonitor - the monitor in which to run the operation
      Since:
      3.0
    • handleExceptionOnSave

      protected void handleExceptionOnSave(CoreException exception, IProgressMonitor progressMonitor)
      Handles the given exception. If the exception reports an out-of-sync situation, this is reported to the user. Otherwise, the exception is generically reported.
      Parameters:
      exception - the exception to handle
      progressMonitor - the progress monitor
    • openSaveErrorDialog

      protected void openSaveErrorDialog(String title, String message, CoreException exception)
      Presents an error dialog to the user when a problem happens during save.

      Subclasses can decide to override the given title and message.

      Parameters:
      title - the dialog title
      message - the message to display
      exception - the exception to handle
      Since:
      3.3
    • isSaveAsAllowed

      public boolean isSaveAsAllowed()
      The AbstractTextEditor implementation of this IEditorPart method returns false. Subclasses may override.
      Specified by:
      isSaveAsAllowed in interface ISaveablePart
      Specified by:
      isSaveAsAllowed in class EditorPart
      Returns:
      false
    • isDirty

      public boolean isDirty()
      Description copied from interface: ISaveablePart
      Returns whether the contents of this part have changed since the last save operation. If this value changes the part must fire a property listener event with PROP_DIRTY.

      Note: this method is called often on a part open or part activation switch, for example by actions to determine their enabled status.

      Specified by:
      isDirty in interface ISaveablePart
      Specified by:
      isDirty in class EditorPart
      Returns:
      true if the contents have been modified and need saving, and false if they have not changed since the last save
    • doRevertToSaved

      public void doRevertToSaved()
      The AbstractTextEditor implementation of this ITextEditor method may be extended by subclasses.
      Specified by:
      doRevertToSaved in interface ITextEditor
    • performRevert

      protected void performRevert()
      Performs revert and handles errors appropriately.

      Subclasses may extend.

      Since:
      3.0
    • handleElementContentReplaced

      protected void handleElementContentReplaced()
      Performs any additional action necessary to perform after the input document's content has been replaced.

      Clients may extended this method.

      Since:
      3.0
    • setAction

      public void setAction(String actionID, IAction action)
      Description copied from interface: ITextEditor
      Installs the given action under the given action id.
      Specified by:
      setAction in interface ITextEditor
      Parameters:
      actionID - the action id
      action - the action, or null to clear it
      See Also:
    • setActionActivationCode

      public void setActionActivationCode(String actionID, char activationCharacter, int activationKeyCode, int activationStateMask)
      Description copied from interface: ITextEditor
      Sets the given activation code for the specified action. If there is an activation code already registered, it is replaced. The activation code consists of the same information as a KeyEvent. If the activation code is triggered and the associated action is enabled, the action is performed and the triggering KeyEvent is considered consumed. If the action is disabled, the KeyEvent is passed on unmodified. Thus, action activation codes and action accelerators differ in their model of event consumption. The key code parameter can be -1 to indicate a wild card. The state mask parameter can be SWT.DEFAULT to indicate a wild card.
      Specified by:
      setActionActivationCode in interface ITextEditor
      Parameters:
      actionID - the action id
      activationCharacter - the activation code character
      activationKeyCode - the activation code key code or -1 for wild card
      activationStateMask - the activation code state mask or SWT.DEFAULT for wild card
    • removeActionActivationCode

      public void removeActionActivationCode(String actionID)
      Description copied from interface: ITextEditor
      Removes any installed activation code for the specified action. If no activation code is installed, this method does not have any effect.
      Specified by:
      removeActionActivationCode in interface ITextEditor
      Parameters:
      actionID - the action id
    • getAction

      public IAction getAction(String actionID)
      Description copied from interface: ITextEditor
      Returns the action installed under the given action id.
      Specified by:
      getAction in interface ITextEditor
      Parameters:
      actionID - the action id
      Returns:
      the action, or null if none
      See Also:
    • markAsSelectionDependentAction

      public void markAsSelectionDependentAction(String actionId, boolean mark)
      Marks or unmarks the given action to be updated on text selection changes.
      Parameters:
      actionId - the action id
      mark - true if the action is selection dependent
    • markAsContentDependentAction

      public void markAsContentDependentAction(String actionId, boolean mark)
      Marks or unmarks the given action to be updated on content changes.
      Parameters:
      actionId - the action id
      mark - true if the action is content dependent
    • markAsPropertyDependentAction

      public void markAsPropertyDependentAction(String actionId, boolean mark)
      Marks or unmarks the given action to be updated on property changes.
      Parameters:
      actionId - the action id
      mark - true if the action is property dependent
      Since:
      2.0
    • markAsStateDependentAction

      public void markAsStateDependentAction(String actionId, boolean mark)
      Marks or unmarks the given action to be updated on state changes.
      Parameters:
      actionId - the action id
      mark - true if the action is state dependent
      Since:
      2.0
    • updateSelectionDependentActions

      protected void updateSelectionDependentActions()
      Updates all selection dependent actions.
    • updateContentDependentActions

      protected void updateContentDependentActions()
      Updates all content dependent actions.
    • updatePropertyDependentActions

      protected void updatePropertyDependentActions()
      Updates all property dependent actions.
      Since:
      2.0
    • updateStateDependentActions

      protected void updateStateDependentActions()
      Updates all state dependent actions.
      Since:
      2.0
    • createNavigationActions

      protected void createNavigationActions()
      Creates action entries for all SWT StyledText actions as defined in org.eclipse.swt.custom.ST. Overwrites and extends the list of these actions afterwards.

      Subclasses may extend.

      Since:
      2.0
    • createUndoRedoActions

      protected void createUndoRedoActions()
      Creates this editor's undo/redo actions.

      Subclasses may override or extend.

      Since:
      3.1
    • getUndoRedoOperationApprover

      protected IOperationApprover getUndoRedoOperationApprover(IUndoContext undoContext)
      Return an IOperationApprover appropriate for approving the undo and redo of operations that have the specified undo context.

      Subclasses may override.

      Parameters:
      undoContext - the IUndoContext of operations that should be examined by the operation approver
      Returns:
      the IOperationApprover appropriate for approving undo and redo operations inside this editor, or null if no approval is needed
      Since:
      3.1
    • createActions

      protected void createActions()
      Creates this editor's standard actions and connects them with the global workbench actions.

      Subclasses may extend.

    • addAction

      protected final void addAction(IMenuManager menu, String actionId)
      Convenience method to add the action installed under the given action id to the given menu.
      Parameters:
      menu - the menu to add the action to
      actionId - the id of the action to be added
    • addAction

      protected final void addAction(IMenuManager menu, String group, String actionId)
      Convenience method to add the action installed under the given action id to the specified group of the menu.
      Parameters:
      menu - the menu to add the action to
      group - the group in the menu
      actionId - the id of the action to add
    • addGroup

      protected final void addGroup(IMenuManager menu, String existingGroup, String newGroup)
      Convenience method to add a new group after the specified group.
      Parameters:
      menu - the menu to add the new group to
      existingGroup - the group after which to insert the new group
      newGroup - the new group
    • rulerContextMenuAboutToShow

      protected void rulerContextMenuAboutToShow(IMenuManager menu)
      Sets up the ruler context menu before it is made visible.

      Subclasses may extend to add other actions.

      Parameters:
      menu - the menu
    • editorContextMenuAboutToShow

      protected void editorContextMenuAboutToShow(IMenuManager menu)
      Sets up this editor's context menu before it is made visible.

      Subclasses may extend to add other actions.

      Parameters:
      menu - the menu
    • getStatusLineManager

      protected IStatusLineManager getStatusLineManager()
      Returns the status line manager of this editor.
      Returns:
      the status line manager of this editor
      Since:
      2.0, protected since 3.3
    • getAdapter

      public <T> T getAdapter(Class<T> required)
      Description copied from class: WorkbenchPart
      Returns an object which is an instance of the given class associated with this object. Returns null if no such object can be found.

      Clients may implement this method but should generally call Adapters.adapt(Object, Class, boolean) rather than invoking it directly. Subclasses may override this method (however, if they do so, they should invoke the method on their superclass to ensure that the Platform's adapter manager is consulted).

      Specified by:
      getAdapter in interface IAdaptable
      Overrides:
      getAdapter in class WorkbenchPart
      Type Parameters:
      T - the class type
      Parameters:
      required - the adapter class to look up
      Returns:
      a object of the given class, or null if this object does not have an adapter for the given class
    • setFocus

      public void setFocus()
      Description copied from interface: IWorkbenchPart
      Asks this part to take focus within the workbench. Parts must assign focus to one of the controls contained in the part's parent composite.

      Clients should not call this method (the workbench calls this method at appropriate times). To have the workbench activate a part, use IWorkbenchPage.activate(IWorkbenchPart) instead.

      Specified by:
      setFocus in interface IWorkbenchPart
      Specified by:
      setFocus in class WorkbenchPart
    • showsHighlightRangeOnly

      public boolean showsHighlightRangeOnly()
      Description copied from interface: ITextEditor
      Returns whether this text editor is configured to show only the highlighted range of the text.
      Specified by:
      showsHighlightRangeOnly in interface ITextEditor
      Returns:
      true if only the highlighted range is shown, and false if this editor shows the entire text of the document
      See Also:
    • showHighlightRangeOnly

      public void showHighlightRangeOnly(boolean showHighlightRangeOnly)
      Description copied from interface: ITextEditor
      Configures this text editor to show only the highlighted range of the text.
      Specified by:
      showHighlightRangeOnly in interface ITextEditor
      Parameters:
      showHighlightRangeOnly - true if only the highlighted range is shown, and false if this editor shows the entire text of the document
      See Also:
    • setHighlightRange

      public void setHighlightRange(int offset, int length, boolean moveCursor)
      Description copied from interface: ITextEditor
      Sets the highlighted range of this text editor to the specified region.
      Specified by:
      setHighlightRange in interface ITextEditor
      Parameters:
      offset - the offset of the highlighted range
      length - the length of the highlighted range
      moveCursor - true if the cursor should be moved to the start of the highlighted range, and false to leave the cursor unaffected - has no effect if the range to highlight is already the highlighted one
      See Also:
    • getHighlightRange

      public IRegion getHighlightRange()
      Description copied from interface: ITextEditor
      Returns the highlighted range of this text editor.
      Specified by:
      getHighlightRange in interface ITextEditor
      Returns:
      the highlighted range
      See Also:
    • resetHighlightRange

      public void resetHighlightRange()
      Description copied from interface: ITextEditor
      Resets the highlighted range of this text editor.
      Specified by:
      resetHighlightRange in interface ITextEditor
    • adjustHighlightRange

      protected void adjustHighlightRange(int offset, int length)
      Adjusts the highlight range so that at least the specified range is highlighted.

      Subclasses may re-implement this method.

      Parameters:
      offset - the offset of the range which at least should be highlighted
      length - the length of the range which at least should be highlighted
    • selectAndReveal

      public void selectAndReveal(int start, int length)
      Description copied from interface: ITextEditor
      Selects and reveals the specified range in this text editor.
      Specified by:
      selectAndReveal in interface ITextEditor
      Parameters:
      start - the offset of the selection
      length - the length of the selection
    • selectAndReveal

      protected void selectAndReveal(int selectionStart, int selectionLength, int revealStart, int revealLength)
      Selects and reveals the specified ranges in this text editor.
      Parameters:
      selectionStart - the offset of the selection
      selectionLength - the length of the selection
      revealStart - the offset of the revealed range
      revealLength - the length of the revealed range
      Since:
      3.0
    • createEmptyNavigationLocation

      public INavigationLocation createEmptyNavigationLocation()
      Description copied from interface: INavigationLocationProvider
      Creates an empty navigation location. The message restoreState will be sent to the location to restore its state.
      Specified by:
      createEmptyNavigationLocation in interface INavigationLocationProvider
      Returns:
      INavigationLocation
    • createNavigationLocation

      public INavigationLocation createNavigationLocation()
      Description copied from interface: INavigationLocationProvider
      Creates a navigation location describing the current state.
      Specified by:
      createNavigationLocation in interface INavigationLocationProvider
      Returns:
      INavigationLocation
    • markInNavigationHistory

      protected void markInNavigationHistory()
      Writes a check mark of the given situation into the navigation history.
      Since:
      2.1
    • editorSaved

      protected void editorSaved()
      Hook which gets called when the editor has been saved. Subclasses may extend.
      Since:
      2.1
    • firePropertyChange

      protected void firePropertyChange(int property)
      Description copied from class: WorkbenchPart
      Fires a property changed event.
      Overrides:
      firePropertyChange in class WorkbenchPart
      Parameters:
      property - the id of the property that changed
    • setStatusField

      public void setStatusField(IStatusField field, String category)
      Description copied from interface: ITextEditorExtension
      Informs the editor which status field is to be used when posting status information in the given category.
      Specified by:
      setStatusField in interface ITextEditorExtension
      Parameters:
      field - the status field to be used
      category - the status information category
      See Also:
    • getStatusField

      protected IStatusField getStatusField(String category)
      Returns the current status field for the given status category.
      Parameters:
      category - the status category
      Returns:
      the current status field for the given status category
      Since:
      2.0
    • isInInsertMode

      protected boolean isInInsertMode()
      Returns whether this editor is in overwrite or insert mode.
      Returns:
      true if in insert mode, false for overwrite mode
      Since:
      2.0
    • getInsertMode

      public ITextEditorExtension3.InsertMode getInsertMode()
      Description copied from interface: ITextEditorExtension3
      Returns the current input mode of this editor.
      Specified by:
      getInsertMode in interface ITextEditorExtension3
      Returns:
      the current input mode of this editor
    • setInsertMode

      public void setInsertMode(ITextEditorExtension3.InsertMode newMode)
      Description copied from interface: ITextEditorExtension3
      Sets the insert mode of this editor.
      Specified by:
      setInsertMode in interface ITextEditorExtension3
      Parameters:
      newMode - the new insert mode
    • getLegalInsertModes

      protected List<ITextEditorExtension3.InsertMode> getLegalInsertModes()
      Returns the set of legal insert modes. If insert modes are configured all defined insert modes are legal.
      Returns:
      the set of legal insert modes
      Since:
      3.0
    • configureInsertMode

      protected void configureInsertMode(ITextEditorExtension3.InsertMode mode, boolean legal)
      Configures the given insert mode as legal or illegal. This call is ignored if the set of legal input modes would be empty after the call.
      Parameters:
      mode - the insert mode to be configured
      legal - true if the given mode is legal, false otherwise
      Since:
      3.0
    • enableOverwriteMode

      protected void enableOverwriteMode(boolean enable)
      Sets the overwrite mode enablement.
      Parameters:
      enable - true to enable new overwrite mode, false to disable
      Since:
      3.0
    • handleInsertModeChanged

      protected void handleInsertModeChanged()
      Handles a change of the editor's insert mode. Subclasses may extend.
      Since:
      2.0
    • handleCursorPositionChanged

      protected void handleCursorPositionChanged()
      Handles a potential change of the cursor position. Subclasses may extend.
      Since:
      2.0
    • updateStatusField

      protected void updateStatusField(String category)
      Updates the status fields for the given category.
      Parameters:
      category - the category
      Since:
      2.0
    • updateStatusFields

      protected void updateStatusFields()
      Updates all status fields.
      Since:
      2.0
    • getCursorPosition

      protected String getCursorPosition()
      Returns a description of the cursor position.
      Returns:
      a description of the cursor position
      Since:
      2.0
    • isEditorInputReadOnly

      public boolean isEditorInputReadOnly()
      Description copied from interface: ITextEditorExtension
      Returns whether the editor's input is read-only. The semantics of this method is orthogonal to isEditable as it talks about the editor input, i.e. the domain element, and not about the editor document.
      Specified by:
      isEditorInputReadOnly in interface ITextEditorExtension
      Returns:
      true if the editor input is read-only
    • isEditorInputModifiable

      public boolean isEditorInputModifiable()
      Description copied from interface: ITextEditorExtension2
      Returns whether the editor's input can be persistently be modified. This is orthogonal to ITextEditorExtension.isEditorInputReadOnly as read-only elements may be modifiable and writable elements may not be modifiable. If the given element is not connected to this document provider, the result is undefined. Document providers are allowed to use a cache to answer this question, i.e. there can be a difference between the "real" state of the element and the return value.
      Specified by:
      isEditorInputModifiable in interface ITextEditorExtension2
      Returns:
      true if the editor input is modifiable
    • addRulerContextMenuListener

      public void addRulerContextMenuListener(IMenuListener listener)
      Description copied from interface: ITextEditorExtension
      Adds a ruler context menu listener to the editor.
      Specified by:
      addRulerContextMenuListener in interface ITextEditorExtension
      Parameters:
      listener - the listener
    • removeRulerContextMenuListener

      public void removeRulerContextMenuListener(IMenuListener listener)
      Description copied from interface: ITextEditorExtension
      Removes a ruler context menu listener from the editor.
      Specified by:
      removeRulerContextMenuListener in interface ITextEditorExtension
      Parameters:
      listener - the listener
    • canHandleMove

      protected boolean canHandleMove(IEditorInput originalElement, IEditorInput movedElement)
      Returns whether this editor can handle the move of the original element so that it ends up being the moved element. By default this method returns true. Subclasses may reimplement.
      Parameters:
      originalElement - the original element
      movedElement - the moved element
      Returns:
      whether this editor can handle the move of the original element so that it ends up being the moved element
      Since:
      2.0
    • widgetOffset2ModelOffset

      protected static final int widgetOffset2ModelOffset(ISourceViewer viewer, int widgetOffset)
      Returns the offset of the given source viewer's document that corresponds to the given widget offset or -1 if there is no such offset.
      Parameters:
      viewer - the source viewer
      widgetOffset - the widget offset
      Returns:
      the corresponding offset in the source viewer's document or -1
      Since:
      2.1
    • modelOffset2WidgetOffset

      protected static final int modelOffset2WidgetOffset(ISourceViewer viewer, int modelOffset)
      Returns the offset of the given source viewer's text widget that corresponds to the given model offset or -1 if there is no such offset.
      Parameters:
      viewer - the source viewer
      modelOffset - the model offset
      Returns:
      the corresponding offset in the source viewer's text widget or -1
      Since:
      3.0
    • getCoverage

      protected static final IRegion getCoverage(ISourceViewer viewer)
      Returns the minimal region of the given source viewer's document that completely comprises everything that is visible in the viewer's widget.
      Parameters:
      viewer - the viewer go return the coverage for
      Returns:
      the minimal region of the source viewer's document comprising the contents of the viewer's widget
      Since:
      2.1
    • isVisible

      protected static final boolean isVisible(ISourceViewer viewer, int offset, int length)
      Tells whether the given region is visible in the given source viewer.
      Parameters:
      viewer - the source viewer
      offset - the offset of the region
      length - the length of the region
      Returns:
      true if visible
      Since:
      2.1
    • showChangeInformation

      public void showChangeInformation(boolean show)
      Description copied from interface: ITextEditorExtension3
      Sets the display of quick diff information.
      Specified by:
      showChangeInformation in interface ITextEditorExtension3
      Parameters:
      show - true if quick diff information should be shown, false otherwise
    • isChangeInformationShowing

      public boolean isChangeInformationShowing()
      Description copied from interface: ITextEditorExtension3
      Returns the quick diff display state.
      Specified by:
      isChangeInformationShowing in interface ITextEditorExtension3
      Returns:
      true if quick diff info is displayed, false otherwise
    • setStatusLineErrorMessage

      protected void setStatusLineErrorMessage(String message)
      Sets the given message as error message to this editor's status line.
      Parameters:
      message - message to be set
      Since:
      3.2
    • setStatusLineMessage

      protected void setStatusLineMessage(String message)
      Sets the given message as message to this editor's status line.
      Parameters:
      message - message to be set
      Since:
      3.2
    • gotoAnnotation

      public Annotation gotoAnnotation(boolean forward)
      Jumps to the next annotation according to the given direction.
      Specified by:
      gotoAnnotation in interface ITextEditorExtension4
      Parameters:
      forward - true if search direction is forward, false if backward
      Returns:
      the selected annotation or null if none
      Since:
      3.2
      See Also:
    • findAnnotation

      protected Annotation findAnnotation(int offset, int length, boolean forward, Position annotationPosition)
      Returns the annotation closest to the given range respecting the given direction. If an annotation is found, the annotations current position is copied into the provided annotation position.
      Parameters:
      offset - the region offset
      length - the region length
      forward - true for forwards, false for backward
      annotationPosition - the position of the found annotation
      Returns:
      the found annotation
      Since:
      3.2
    • isNavigationTarget

      protected boolean isNavigationTarget(Annotation annotation)
      Returns whether the given annotation is configured as a target for the "Go to Next/Previous Annotation" actions.

      Per default every annotation is a target.

      Parameters:
      annotation - the annotation
      Returns:
      true if this is a target, false otherwise
      Since:
      3.2
    • showRevisionInformation

      public void showRevisionInformation(RevisionInformation info, String quickDiffProviderId)
      Description copied from interface: ITextEditorExtension4
      Shows revision information in this editor.
      Specified by:
      showRevisionInformation in interface ITextEditorExtension4
      Parameters:
      info - the revision information to display
      quickDiffProviderId - the quick diff provider that matches the source of the revision information
    • restoreState

      public void restoreState(IMemento memento)
      Description copied from interface: IPersistableEditor
      Called with a memento for this editor. The editor can parse the data or save the memento. This method may not be called.
      Specified by:
      restoreState in interface IPersistableEditor
      Parameters:
      memento - the saved state for this editor. May be null.
    • saveState

      public void saveState(IMemento memento)
      Description copied from interface: IPersistable
      Saves the state of the object in the given memento.
      Specified by:
      saveState in interface IPersistable
      Parameters:
      memento - the storage area for object's state
    • containsSavedState

      protected boolean containsSavedState(IMemento memento)
      Returns whether the given memento contains saved state

      Subclasses may extend or override this method.

      Parameters:
      memento - the saved state of this editor
      Returns:
      true if the given memento contains saved state
      Since:
      3.3
    • doRestoreState

      protected void doRestoreState(IMemento memento)
      Restores this editor's state using the given memento.

      Subclasses may extend or override this method.

      Parameters:
      memento - the saved state of this editor
      Since:
      3.3
    • getSaveables

      public Saveable[] getSaveables()
      Description copied from interface: ISaveablesSource
      Returns the saveables presented by the workbench part. If the return value of this method changes during the lifetime of this part (i.e. after initialization and control creation but before disposal) the part must notify an implicit listener using ISaveablesLifecycleListener.handleLifecycleEvent(SaveablesLifecycleEvent).

      Additions of saveables to the list of saveables of this part are announced using an event of type SaveablesLifecycleEvent.POST_OPEN. Removals are announced in a two-stage process, first using an event of type SaveablesLifecycleEvent.PRE_CLOSE followed by an event of type SaveablesLifecycleEvent.POST_CLOSE. Since firing the PRE_CLOSE event may trigger prompts to save dirty saveables, the cancellation status of the event must be checked by the part after the notification. When removing only non-dirty saveables, POST_CLOSE notification is sufficient.

      The listener is obtained from the part site by calling partSite.getService(ISaveablesLifecycleListener.class).

      The part must not notify from its initialization methods (e.g. init or createPartControl), or from its dispose method. Parts that implement IReusableEditor must notify when their input is changed through IReusableEditor.setInput(IEditorInput).

      Specified by:
      getSaveables in interface ISaveablesSource
      Returns:
      the saveables presented by the workbench part
      See Also:
    • getActiveSaveables

      public Saveable[] getActiveSaveables()
      Description copied from interface: ISaveablesSource
      Returns the saveables currently active in the workbench part.

      Certain workbench actions, such as Save, target only the active saveables in the active part. For example, the active saveables could be determined based on the current selection in the part.

      Specified by:
      getActiveSaveables in interface ISaveablesSource
      Returns:
      the saveables currently active in the workbench part
    • installTabsToSpacesConverter

      protected void installTabsToSpacesConverter()
      Installs a tabs to spaces converter.

      Subclasses may extend or override this method.

      Since:
      3.3
    • uninstallTabsToSpacesConverter

      protected void uninstallTabsToSpacesConverter()
      Installs a tabs to spaces converter.

      Subclasses may extend or override this method.

      Since:
      3.3
    • isTabsToSpacesConversionEnabled

      protected boolean isTabsToSpacesConversionEnabled()
      Tells whether tabs should be converted to spaces while editing inside this editor.

      Subclasses may override this method.

      Returns:
      true if tabs should be converted to spaces
      Since:
      3.3
    • isSpacesAsTabsDeletionEnabled

      protected boolean isSpacesAsTabsDeletionEnabled()
      Tells whether delete and backspace keys should remove multiple spaces as if they were a tab. Only relevant when isTabsToSpacesConversionEnabled() returns true.

      Subclasses may override this method.

      Returns:
      true if spaces should be removed as tabs
      Since:
      3.14
    • updateIndentPrefixes

      protected final void updateIndentPrefixes()
      Updates the source viewer's indent prefixes with the values provided by the source viewer configuration.
      Since:
      3.3
    • isBlockSelectionModeSupported

      protected boolean isBlockSelectionModeSupported()
      Tells whether selection mode is supported.

      By default block selection mode is supported. Subclasses may override this method to disable it.

      Returns:
      true if block selection mode is supported, false otherwise
      Since:
      3.5
    • isBlockSelectionModeEnabled

      public final boolean isBlockSelectionModeEnabled()
      Description copied from interface: ITextEditorExtension5
      Returns true if the receiver is in block (aka column) selection mode, false otherwise.
      Specified by:
      isBlockSelectionModeEnabled in interface ITextEditorExtension5
      Returns:
      the receiver's block selection state
      Since:
      3.5
      See Also:
    • setBlockSelectionMode

      public void setBlockSelectionMode(boolean enable)
      Description copied from interface: ITextEditorExtension5
      Sets the block selection mode state of the receiver to state. Nothing happens if the receiver already is in the requested state.

      Note: enabling block selection mode disables word wrap ITextEditorExtension6), enabling word wrap will disable block selection mode.

      Specified by:
      setBlockSelectionMode in interface ITextEditorExtension5
      Parameters:
      enable - the new block selection state
      Since:
      3.5
      See Also:
    • isWordWrapSupported

      protected boolean isWordWrapSupported()
      Tells whether word wrap is supported.

      By default word wrap is supported. Subclasses may override this method to disable it.

      Returns:
      true if word wrap is supported, false otherwise
      Since:
      3.10
    • isWordWrapEnabled

      public final boolean isWordWrapEnabled()
      true if word wrap is supported and enabled, false otherwise
      Specified by:
      isWordWrapEnabled in interface ITextEditorExtension6
      Returns:
      the receiver's word wrap state if word wrap is supported
      Since:
      3.10
      See Also:
    • setWordWrap

      public void setWordWrap(boolean enable)
      Description copied from interface: ITextEditorExtension6
      Sets whether the text editor wraps lines. Nothing happens if the receiver already is in the requested state.

      Note: enabling word wrap disables block selection mode (see ITextEditorExtension5), enabling block selection mode will disable word wrap.

      Specified by:
      setWordWrap in interface ITextEditorExtension6
      Parameters:
      enable - true to enable word wrap, false to turn it off.
      Since:
      3.10
      See Also:
    • getInitialWordWrapStatus

      protected boolean getInitialWordWrapStatus()
      Returns the initial word wrap status.
      Returns:
      initial word wrap status
      Since:
      3.10