Class AbstractMultiPageEditor

  • All Implemented Interfaces:
    org.eclipse.core.runtime.IAdaptable, org.eclipse.core.runtime.IExecutableExtension, org.eclipse.jface.dialogs.IPageChangeProvider, org.eclipse.ui.IEditorPart, org.eclipse.ui.ISaveablePart, org.eclipse.ui.IWorkbenchPart, org.eclipse.ui.IWorkbenchPart2, org.eclipse.ui.IWorkbenchPart3, org.eclipse.ui.part.IWorkbenchPartOrientation
    Direct Known Subclasses:
    AbstractMultiPageEditor

    public abstract class AbstractMultiPageEditor
    extends org.eclipse.ui.forms.editor.FormEditor
    Abstract multipage form-based editor for editors with one source page and several form pages AbstractFormPage.

    Clients should register handle model elements change listener through registerModelChangeListener(IElementChangeListener).

    Clients should use undo context getUndoContext() for all operations for correct undo\redo behavior.

    This editor provides its own selection provider AbstractMultiPageEditor.FormEditorSelectionProvider.

    The editor has correct behavior on deleting of underlying resource.

    See Also:
    FormEditorActionBarContributor, AbstractFormPage
    • Field Summary

      • Fields inherited from class org.eclipse.ui.forms.editor.FormEditor

        pages
      • Fields inherited from class org.eclipse.ui.part.MultiPageEditorPart

        PAGE_CONTAINER_SITE
      • Fields inherited from interface org.eclipse.ui.IEditorPart

        PROP_DIRTY, PROP_INPUT
      • Fields inherited from interface org.eclipse.ui.IWorkbenchPart

        PROP_TITLE
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void activateSourcePage()
      Activates source page.
      void addSelectionChangedListener​(org.eclipse.jface.viewers.ISelectionChangedListener listener)
      Selection change listener registration in editor's selection provider
      protected void afterPageChange​(int oldPageIndex, int newPageIndex)
      Invoked after page will be changed
      protected void beforePageChange​(int oldPageIndex, int newPageIndex)
      Invoked before page will be changed
      protected void createPages()
      Registers listeners for internal use.
      protected abstract org.eclipse.core.commands.operations.IUndoContext createUndoContext()
      Should return new IUndoContext instance
      void dispose()  
      protected void doReloadInput​(org.eclipse.ui.part.FileEditorInput fileEditorInput)
      Reloads editor input.
      Object getSelectedPage()
      Returns selected page or null if no page selected or selected page is not instance of IFormPage or ITextEditor
      org.eclipse.jface.viewers.ISelection getSelection()
      Returns editor's selection.
      abstract org.eclipse.handly.model.ISourceFile getSourceFile()
      Returns ISourceFile for model
      protected int getSourcePageIndex()
      Returns index of source page.
      org.eclipse.core.commands.operations.IUndoContext getUndoContext()
      Returns the editor's undo context.
      protected boolean hasUnrecoverableErrors()
      Returns true if there is no way of building form by model thru error in resource, false other way.
      void init​(org.eclipse.ui.IEditorSite site, org.eclipse.ui.IEditorInput input)
      Initializes editor.
      protected void onSetEditorInput​(org.eclipse.ui.part.FileEditorInput input, boolean inputChanged)
      Executed right after setInput(IEditorInput) if input is instance of FileEditorInput You should execute this method from super if override
      protected void pageChange​(int newPageIndex)  
      protected abstract void reconcile()
      Execute reconciling
      protected void refresh​(AbstractFormPage formPage, boolean hasErrors)
      Refresh form and display validation issues.
      void refreshActiveFormPage​(boolean force)
      This method executes form refresh if form page is active.
      protected abstract void registerModelChangeListener​(org.eclipse.handly.model.IElementChangeListener elementChangeListener)
      Model change listener registration.
      protected abstract void removeModelChangeListener​(org.eclipse.handly.model.IElementChangeListener elementChangeListener)
      Removes model change listener.
      void removeSelectionChangedListener​(org.eclipse.jface.viewers.ISelectionChangedListener listener)
      Remove listener from registered listeners in the editor's selection provider.
      protected void setInput​(org.eclipse.ui.IEditorInput input)
      Sets editor's input.
      void setSelection​(org.eclipse.jface.viewers.ISelection selection)
      Sets selection.
      protected void switchPage​(AbstractFormPage formPage)
      Performs page switch.
      • Methods inherited from class org.eclipse.ui.forms.editor.FormEditor

        addPage, addPage, addPage, addPage, addPage, addPage, addPages, close, commitPages, configurePage, createPageContainer, createToolkit, editorDirtyStateChanged, findPage, getActiveEditor, getActivePageInstance, getCurrentPage, getToolkit, isDirty, removePage, selectReveal, setActivePage, setActivePage, setActivePage, updateActionBarContributor
      • Methods inherited from class org.eclipse.ui.part.MultiPageEditorPart

        activateSite, addPageChangedListener, createContainer, createItem, createPartControl, createSite, deactivateSite, findEditors, getActivePage, getAdapter, getContainer, getControl, getEditor, getPageCount, getPageImage, getPageSite, getPageText, handlePropertyChange, initializePageSwitching, removePageChangedListener, setActiveEditor, setControl, setFocus, setPageImage, setPageText
      • Methods inherited from class org.eclipse.ui.part.EditorPart

        checkSite, doSave, doSaveAs, getEditorInput, getEditorSite, getTitleToolTip, isSaveAsAllowed, isSaveOnCloseNeeded, setContentDescription, setInitializationData, setInputWithNotify, setPartName
      • Methods inherited from class org.eclipse.ui.part.WorkbenchPart

        addPartPropertyListener, addPropertyListener, firePartPropertyChanged, firePropertyChange, getConfigurationElement, getContentDescription, getDefaultImage, getOrientation, getPartName, getPartProperties, getPartProperty, getSite, getTitle, getTitleImage, removePartPropertyListener, removePropertyListener, setPartProperty, setSite, setTitle, setTitleImage, setTitleToolTip, showBusy
      • Methods inherited from class org.eclipse.core.commands.common.EventManager

        addListenerObject, clearListeners, getListeners, isListenerAttached, removeListenerObject
      • Methods inherited from interface org.eclipse.ui.IWorkbenchPart

        addPropertyListener, getSite, getTitle, getTitleImage, removePropertyListener
    • Constructor Detail

      • AbstractMultiPageEditor

        public AbstractMultiPageEditor()
    • Method Detail

      • init

        public void init​(org.eclipse.ui.IEditorSite site,
                         org.eclipse.ui.IEditorInput input)
                  throws org.eclipse.ui.PartInitException
        Initializes editor. Redefines the editor selection provider to AbstractMultiPageEditor.FormEditorSelectionProvider. Registers model change listener through #registerModelChangeListener()
        Specified by:
        init in interface org.eclipse.ui.IEditorPart
        Overrides:
        init in class org.eclipse.ui.forms.editor.FormEditor
        Parameters:
        site - the editor site (not null)
        input - the editor input (not null)
        Throws:
        org.eclipse.ui.PartInitException
      • addSelectionChangedListener

        public final void addSelectionChangedListener​(org.eclipse.jface.viewers.ISelectionChangedListener listener)
        Selection change listener registration in editor's selection provider
        Parameters:
        listener - - selection change listener (not null)
      • dispose

        public void dispose()
        Specified by:
        dispose in interface org.eclipse.ui.IWorkbenchPart
        Overrides:
        dispose in class org.eclipse.ui.forms.editor.FormEditor
      • getSelectedPage

        public Object getSelectedPage()
        Returns selected page or null if no page selected or selected page is not instance of IFormPage or ITextEditor
        Specified by:
        getSelectedPage in interface org.eclipse.jface.dialogs.IPageChangeProvider
        Overrides:
        getSelectedPage in class org.eclipse.ui.forms.editor.FormEditor
      • getSelection

        public final org.eclipse.jface.viewers.ISelection getSelection()
        Returns editor's selection.
        Returns:
        the selection or null if nothing selected.
      • getUndoContext

        public org.eclipse.core.commands.operations.IUndoContext getUndoContext()
        Returns the editor's undo context. If editor's undo context is null, it will be created by createUndoContext()
        Returns:
        IUndoContext instance for this editor (never null).
      • getSourceFile

        public abstract org.eclipse.handly.model.ISourceFile getSourceFile()
        Returns ISourceFile for model
        Returns:
        root element handle (never null)
      • refreshActiveFormPage

        public void refreshActiveFormPage​(boolean force)
        This method executes form refresh if form page is active.
        Parameters:
        force - true if you want full refresh

        This method is not intended to be overrided by clients.

      • removeSelectionChangedListener

        public final void removeSelectionChangedListener​(org.eclipse.jface.viewers.ISelectionChangedListener listener)
        Remove listener from registered listeners in the editor's selection provider.
        Parameters:
        listener - the listener to remove (not null)
      • activateSourcePage

        protected final void activateSourcePage()
        Activates source page.
      • afterPageChange

        protected void afterPageChange​(int oldPageIndex,
                                       int newPageIndex)
        Invoked after page will be changed
        Parameters:
        oldPageIndex - index of active page before change
        newPageIndex - index of changed to page
      • beforePageChange

        protected void beforePageChange​(int oldPageIndex,
                                        int newPageIndex)
        Invoked before page will be changed
        Parameters:
        oldPageIndex - index of active page before page change
        newPageIndex - index of changed to page
      • createPages

        protected void createPages()
        Registers listeners for internal use. Clients must execute this method from super if override.
        Overrides:
        createPages in class org.eclipse.ui.forms.editor.FormEditor
      • createUndoContext

        protected abstract org.eclipse.core.commands.operations.IUndoContext createUndoContext()
        Should return new IUndoContext instance
        Returns:
        new IUndoContext instance (never null)
      • doReloadInput

        protected void doReloadInput​(org.eclipse.ui.part.FileEditorInput fileEditorInput)
        Reloads editor input. Must be envoked if editor's input changed for some reasons (for ex: resource was renamed)
        Parameters:
        fileEditorInput - new editor's input (not null)
      • hasUnrecoverableErrors

        protected boolean hasUnrecoverableErrors()
        Returns true if there is no way of building form by model thru error in resource, false other way.

        This method may be invoked not only from UI thread.

      • getSourcePageIndex

        protected int getSourcePageIndex()
        Returns index of source page.
        Returns:
        source page index. Default is 0.
      • onSetEditorInput

        protected void onSetEditorInput​(org.eclipse.ui.part.FileEditorInput input,
                                        boolean inputChanged)
        Executed right after setInput(IEditorInput) if input is instance of FileEditorInput You should execute this method from super if override
        Parameters:
        input - FileEditorInput
        inputChanged - true if input is changed from last set
      • pageChange

        protected final void pageChange​(int newPageIndex)
        Overrides:
        pageChange in class org.eclipse.ui.forms.editor.FormEditor
      • registerModelChangeListener

        protected abstract void registerModelChangeListener​(org.eclipse.handly.model.IElementChangeListener elementChangeListener)
        Model change listener registration. Editor implementators should implement this method if model has its change notification mechanism.
        Parameters:
        elementChangeListener - the lelement change listener
      • removeModelChangeListener

        protected abstract void removeModelChangeListener​(org.eclipse.handly.model.IElementChangeListener elementChangeListener)
        Removes model change listener. Executed when editor disposes. Editor implementators should implement this method if model has its change notification mechanism.
        Parameters:
        elementChangeListener - the lelement change listener
      • reconcile

        protected abstract void reconcile()
                                   throws org.eclipse.core.runtime.CoreException
        Execute reconciling
        Throws:
        org.eclipse.core.runtime.CoreException - if something goes wrong while reconciling
      • setInput

        protected void setInput​(org.eclipse.ui.IEditorInput input)
        Sets editor's input. If input is instance of FileEditorInput onSetEditorInput(FileEditorInput, boolean) will be invoked.
        Overrides:
        setInput in class org.eclipse.ui.part.EditorPart
        Parameters:
        input - editors input (not null)
      • switchPage

        protected void switchPage​(AbstractFormPage formPage)
        Performs page switch. Before switching reconcile will be executed and form page will be refreshed against fresh model
        Parameters:
        page - page to switch to (not null)