Class HandlyXtextEditorCallback

  • All Implemented Interfaces:
    org.eclipse.xtext.ui.editor.IXtextEditorCallback

    public class HandlyXtextEditorCallback
    extends org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl
    Integrates Xtext editor with Handly working copy management facility.

    Multiple Xtext editor instances may simultaneously be open for a given source file, each with its own underlying document, but only one of them (the most recently used one) is connected to the source file's working copy.

    Note that this class relies on the language-specific implementation of IInputElementProvider being available through injection. Also, HandlyXtextDocument and other classes pertaining to Handly/Xtext integration should be bound if this callback is configured. For example:

     public Class<? extends IInputElementProvider> bindIInputElementProvider() {
         return FooInputElementProvider.class;
     }
    
     public void configureXtextEditorCallback(Binder binder) {
         binder.bind(IXtextEditorCallback.class).annotatedWith(Names.named(
             HandlyXtextEditorCallback.class.getName())).to(
                 HandlyXtextEditorCallback.class);
     }
    
     public Class<? extends XtextDocument> bindXtextDocument() {
         return HandlyXtextDocument.class;
     }
    
     public Class<? extends IReconciler> bindIReconciler() {
         return HandlyXtextReconciler.class;
     }
    
     public Class<? extends DirtyStateEditorSupport> bindDirtyStateEditorSupport() {
         return HandlyDirtyStateEditorSupport.class; // or its subclass
     }
     
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.eclipse.xtext.ui.editor.IXtextEditorCallback

        org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected ISourceFile acquireWorkingCopy​(org.eclipse.xtext.ui.editor.XtextEditor editor)
      Attempts to acquire a working copy for the corresponding source file of the editor.
      void afterCreatePartControl​(org.eclipse.xtext.ui.editor.XtextEditor editor)  
      protected void afterSelectionChange​(org.eclipse.xtext.ui.editor.XtextEditor editor, org.eclipse.jface.viewers.ISelection selection)
      Notifies that the selection has changed in the editor.
      void afterSetInput​(org.eclipse.xtext.ui.editor.XtextEditor editor)  
      void beforeDispose​(org.eclipse.xtext.ui.editor.XtextEditor editor)  
      void beforeSetInput​(org.eclipse.xtext.ui.editor.XtextEditor editor)  
      protected ISourceFile getSourceFile​(org.eclipse.xtext.ui.editor.XtextEditor editor)
      Returns the corresponding source file for the editor.
      protected ISourceFile getWorkingCopy​(org.eclipse.xtext.ui.editor.XtextEditor editor)
      Returns the working copy that the editor is connected to, or null if the editor is not currently connected to a working copy.
      protected void releaseWorkingCopy​(org.eclipse.xtext.ui.editor.XtextEditor editor, ISourceFile workingCopy)
      Releases the given working copy that was acquired via a call to acquireWorkingCopy.
      protected void setHighlightRange​(org.eclipse.xtext.ui.editor.XtextEditor editor, org.eclipse.jface.viewers.ISelection selection)
      Sets the highlighted range of the editor according to the selection.
      void setInputElementProvider​(IInputElementProvider provider)  
      • Methods inherited from class org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl

        afterSave, onValidateEditorInputState
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • HandlyXtextEditorCallback

        public HandlyXtextEditorCallback()
    • Method Detail

      • setInputElementProvider

        @Inject
        public void setInputElementProvider​(IInputElementProvider provider)
      • afterCreatePartControl

        public void afterCreatePartControl​(org.eclipse.xtext.ui.editor.XtextEditor editor)
        Specified by:
        afterCreatePartControl in interface org.eclipse.xtext.ui.editor.IXtextEditorCallback
        Overrides:
        afterCreatePartControl in class org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl
      • beforeDispose

        public void beforeDispose​(org.eclipse.xtext.ui.editor.XtextEditor editor)
        Specified by:
        beforeDispose in interface org.eclipse.xtext.ui.editor.IXtextEditorCallback
        Overrides:
        beforeDispose in class org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl
      • beforeSetInput

        public void beforeSetInput​(org.eclipse.xtext.ui.editor.XtextEditor editor)
        Specified by:
        beforeSetInput in interface org.eclipse.xtext.ui.editor.IXtextEditorCallback
        Overrides:
        beforeSetInput in class org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl
      • afterSetInput

        public void afterSetInput​(org.eclipse.xtext.ui.editor.XtextEditor editor)
        Specified by:
        afterSetInput in interface org.eclipse.xtext.ui.editor.IXtextEditorCallback
        Overrides:
        afterSetInput in class org.eclipse.xtext.ui.editor.IXtextEditorCallback.NullImpl
      • afterSelectionChange

        protected void afterSelectionChange​(org.eclipse.xtext.ui.editor.XtextEditor editor,
                                            org.eclipse.jface.viewers.ISelection selection)
        Notifies that the selection has changed in the editor.

        This implementation invokes setHighlightRange(editor, selection) if the selection is not null.

        Parameters:
        editor - never null
        selection - may be null or empty
      • setHighlightRange

        protected void setHighlightRange​(org.eclipse.xtext.ui.editor.XtextEditor editor,
                                         org.eclipse.jface.viewers.ISelection selection)
        Sets the highlighted range of the editor according to the selection.

        This implementation schedules a background job to set the highlight range asynchronously.

        Parameters:
        editor - never null
        selection - never null
      • getSourceFile

        protected ISourceFile getSourceFile​(org.eclipse.xtext.ui.editor.XtextEditor editor)
        Returns the corresponding source file for the editor.

        This implementation uses the injected IInputElementProvider to obtain an IElement corresponding to the editor input and returns the IElement if it is an ISourceFile.

        Parameters:
        editor - never null
        Returns:
        the corresponding source file, or null if none
      • getWorkingCopy

        protected final ISourceFile getWorkingCopy​(org.eclipse.xtext.ui.editor.XtextEditor editor)
        Returns the working copy that the editor is connected to, or null if the editor is not currently connected to a working copy.

        Note that multiple Xtext editor instances may simultaneously be open for a given source file, each with its own underlying document, but only one of them (the most recently used one) is connected to the source file's working copy.

        Parameters:
        editor - never null
        Returns:
        the working copy that the editor is connected to, or null if the editor is not currently connected to a working copy
      • acquireWorkingCopy

        protected ISourceFile acquireWorkingCopy​(org.eclipse.xtext.ui.editor.XtextEditor editor)
                                          throws org.eclipse.core.runtime.CoreException
        Attempts to acquire a working copy for the corresponding source file of the editor. A working copy acquired by this method must be released eventually via a call to releaseWorkingCopy.

        This implementation obtains the corresponding source file for the editor via getSourceFile(XtextEditor) and, if the source file implements ISourceFileImplExtension, invokes becomeWorkingCopy_ on it providing a working copy buffer backed by the editor and an Xtext-specific working copy callback, and returns the acquired working copy. Otherwise, null is returned.

        Parameters:
        editor - never null
        Returns:
        the acquired working copy, or null if no working copy can be acquired
        Throws:
        org.eclipse.core.runtime.CoreException - if the working copy could not be acquired successfully
      • releaseWorkingCopy

        protected void releaseWorkingCopy​(org.eclipse.xtext.ui.editor.XtextEditor editor,
                                          ISourceFile workingCopy)
        Releases the given working copy that was acquired via a call to acquireWorkingCopy.

        This implementation invokes ((ISourceFileImplExtension)workingCopy).releaseWorkingCopy_().

        Parameters:
        editor - never null
        workingCopy - never null