Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.eclipse.ui.forms.editor
Class FormEditor

    java.lang.Object
      org.eclipse.ui.part.WorkbenchPart
          org.eclipse.ui.part.EditorPart
              org.eclipse.ui.part.MultiPageEditorPart
                  org.eclipse.ui.forms.editor.FormEditor

All Implemented Interfaces:
  IAdaptable, IEditorPart, IExecutableExtension, ISaveablePart, IWorkbenchPart, IWorkbenchPart2

public abstract class FormEditor
extends MultiPageEditorPart

This class forms a base of multi-page form editors that typically use one or more pages with forms and one page for raw source of the editor input.

Pages are added 'lazily' i.e. adding a page reserves a tab for it but does not cause the page control to be created. Page control is created when an attempt is made to select the page in question. This allows editors with several tabs and complex pages to open quickly.

Subclasses should extend this class and implement `addPages` method. One of the two `addPage` methods should be called to contribute pages to the editor. One adds complete (standalone) editors as nested tabs. These editors will be created right away and will be hooked so that key bindings, selection service etc. is compatible with the one for the standalone case. The other method adds classes that implement `IFormPage` interface. These pages will be created lazily and they will share the common key binding and selection service.

Since:
  3.0

Field Summary
`protected Vector` | `pages`

Fields inherited from interface org.eclipse.ui.IEditorPart
`PROP_DIRTY, PROP_INPUT`

Fields inherited from interface org.eclipse.ui.IWorkbenchPart
`PROP_TITLE`

Constructor Summary
`FormEditor()` The constructor.

Method Summary
`int` | `addPage(Control control)` Adds a simple SWT control as a page.
`int` | `addPage(IEditorPart editor, IEditorInput input)` Adds the complete editor part to the multi-page editor.
`int` | `addPage(IFormPage page)` Adds the form page to this editor.
`protected abstract void` | `addPages()` Subclass should implement this method to add pages to the editor using 'addPage(IFormPage)' method.
`void` | `close(boolean save)` Closes the editor programmatically.
`protected void` | `configurePage(int index, IFormPage page)` Configures the form page.
`protected void` | `createPages()` Creates the common toolkit for this editor and adds pages to the editor.
`protected FormToolkit` | `createToolkit(Display display)` Creates the form toolkit.
`void` | `dispose()` Disposes the pages and the toolkit after disposing the editor itself.
`void` | `editorDirtyStateChanged()` Called to indicate that the editor has been made dirty or the changes have been saved.
`IFormPage` | `findPage(String pageId)` Finds the page instance that has the provided id.
`IEditorPart` | `getActiveEditor()` Widens the visibility of the method in the superclass.
`IFormPage` | `getActivePageInstance()` Returns active page instance if the currently selected page index is not -1, or `null` if it is.
`protected int` | `getCurrentPage()` Returns the current page index.
`FormToolkit` | `getToolkit()` Returns the toolkit owned by this editor.
`void` | `init(IEditorSite site, IEditorInput input)` Overrides super to plug in a different selection provider.
`protected void` | `pageChange(int newPageIndex)` Notifies this multi-page editor that the page with the given id has been activated.
`void` | `removePage(int pageIndex)` Overrides the superclass to remove the page from the page table.
`IFormPage` | `selectReveal(Object pageInput)` Iterates through the pages calling similar method until a page is found that contains the desired page input.
`protected void` | `setActivePage(int pageIndex)` Sets the currently active page.
`IFormPage` | `setActivePage(String pageId)` Sets the active page using the unique page identifier.
`IFormPage` | `setActivePage(String pageId, Object pageInput)` Sets the active page using the unique page identifier and sets its input to the provided object.
`protected void` | `updateActionBarContributor(int pageIndex)` Notifies action bar contributor about page change.

Methods inherited from class org.eclipse.ui.part.MultiPageEditorPart
`createPartControl, createSite, getActivePage, getContainer, getControl, getEditor, getPageCount, getPageImage, getPageText, handlePropertyChange, isDirty, setControl, setFocus, setPageImage, setPageText`

Methods inherited from class org.eclipse.ui.part.EditorPart
`doSave, doSaveAs, getEditorInput, getEditorSite, getTitleToolTip, isSaveAsAllowed, isSaveOnCloseNeeded, setContentDescription, setInitializationData, setInput, setPartName`

Methods inherited from class org.eclipse.ui.part.WorkbenchPart
`addPropertyListener, firePropertyChange, getAdapter, getConfigurationElement, getContentDescription, getDefaultImage, getPartName, getSite, getTitle, getTitleImage, removePropertyListener, setSite, setTitle, setTitleImage, setTitleToolTip, showBusy`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.eclipse.ui.IWorkbenchPart
`addPropertyListener, getSite, getTitle, getTitleImage, removePropertyListener`

Methods inherited from interface org.eclipse.core.runtime.IAdaptable
`getAdapter`

Field Detail

### pages

    protected Vector pages

Constructor Detail

### FormEditor

    public FormEditor()

  The constructor.

Method Detail

### init

    public void init(IEditorSite site,
                     IEditorInput input)
              throws PartInitException

  Overrides super to plug in a different selection provider.

  Specified by:
    `init` in interface `IEditorPart`
  Overrides:
    `init` in class `MultiPageEditorPart`
  Parameters:
    `site` - The site for which this part is being created; must not be `null`.
    `input` - The input on which this editor should be created; must not be `null`.
  Throws:
    `PartInitException` - If the initialization of the part fails -- currently never.

### createPages

    protected void createPages()

  Creates the common toolkit for this editor and adds pages to the editor.

  Specified by:
    `createPages` in class `MultiPageEditorPart`
  See Also:
    `addPages()`

### createToolkit

    protected FormToolkit createToolkit(Display display)

  Creates the form toolkit. The method can be implemented to substitute a subclass of the toolkit that should be used for this editor. A typical use of this method would be to create the form toolkit using one shared `FormColors` object to share resources across the multiple editor instances.

  Parameters:
    `display` - the display to use when creating the toolkit
  Returns:
    the newly created toolkit instance

### addPages

    protected abstract void addPages()

  Subclass should implement this method to add pages to the editor using 'addPage(IFormPage)' method.

### addPage

    public int addPage(IFormPage page)
                throws PartInitException

  Adds the form page to this editor. Form page will be loaded lazily. Its part control will not be created until it is activated for the first time.

  Parameters:
    `page` - the form page to add
  Throws:
    `PartInitException`

### addPage

    public int addPage(Control control)

  Adds a simple SWT control as a page. Overrides superclass implementation to keep track of pages.

  Overrides:
    `addPage` in class `MultiPageEditorPart`
  Parameters:
    `control` - the page control to add
  Returns:
    the 0-based index of the newly added page
  See Also:
    `MultiPageEditorPart.setControl(int, Control)`

### addPage

    public int addPage(IEditorPart editor,
                       IEditorInput input)
                throws PartInitException

  Adds the complete editor part to the multi-page editor.

  Overrides:
    `addPage` in class `MultiPageEditorPart`
  Parameters:
    `editor` - the nested editor
    `input` - the input for the nested editor
  Returns:
    the index of the new page
  Throws:
    `PartInitException` - if a new page could not be created
  See Also:
    `the handler for property change events from the nested editor`

### configurePage

    protected void configurePage(int index,
                                 IFormPage page)
                          throws PartInitException

  Configures the form page.

  Parameters:
    `index` - the page index
    `page` - the page to configure
  Throws:
    `PartInitException` - if there are problems in configuring the page

### removePage

    public void removePage(int pageIndex)

  Overrides the superclass to remove the page from the page table.

  Overrides:
    `removePage` in class `MultiPageEditorPart`
  Parameters:
    `pageIndex` - the 0-based index of the page in the editor
  See Also:
    `MultiPageEditorPart.addPage(Control)`, `MultiPageEditorPart.addPage(IEditorPart, IEditorInput)`

### editorDirtyStateChanged

    public void editorDirtyStateChanged()

  Called to indicate that the editor has been made dirty or the changes have been saved.

### dispose

    public void dispose()

  Disposes the pages and the toolkit after disposing the editor itself. Subclasses must call 'super' when reimplementing the method.

  Specified by:
    `dispose` in interface `IWorkbenchPart`
  Overrides:
    `dispose` in class `MultiPageEditorPart`

### getToolkit

    public FormToolkit getToolkit()

  Returns the toolkit owned by this editor.

  Returns:
    the toolkit object

### getActiveEditor

    public IEditorPart getActiveEditor()

  Widens the visibility of the method in the superclass.

  Overrides:
    `getActiveEditor` in class `MultiPageEditorPart`
  Returns:
    the active nested editor

### getCurrentPage

    protected int getCurrentPage()

  Returns the current page index. The value is identical to the value of 'getActivePage()' except during the page switch, when this method still has the old active page index.

  Another important difference is during the editor closing. When the tab folder is disposed, 'getActivePage()' will return -1, while this method will still return the last active page.

  Returns:
    the currently selected page or -1 if no page is currently selected
  See Also:
    `MultiPageEditorPart.getActivePage()`

### pageChange

    protected void pageChange(int newPageIndex)

  Description copied from class: `MultiPageEditorPart`
  Notifies this multi-page editor that the page with the given id has been activated. This method is called when the user selects a different tab.

  The `MultiPageEditorPart` implementation of this method sets focus to the new page, and notifies the action bar contributor (if there is one). This checks whether the action bar contributor is an instance of `MultiPageEditorActionBarContributor`, and, if so, calls `setActivePage` with the active nested editor. This also fires a selection change event if required.

  Subclasses may extend this method.

  Overrides:
    `pageChange` in class `MultiPageEditorPart`
  Parameters:
    `newPageIndex` - the index of the activated page
  See Also:
    `MultiPageEditorPart.pageChange(int)`

### setActivePage

    public IFormPage setActivePage(String pageId)

  Sets the active page using the unique page identifier.

  Parameters:
    `pageId` - the id of the page to switch to
  Returns:
    page that was set active or `null` if not found.

### findPage

    public IFormPage findPage(String pageId)

  Finds the page instance that has the provided id.

  Parameters:
    `pageId` - the id of the page to find
  Returns:
    page with the matching id or `null` if not found.

### setActivePage

    public IFormPage setActivePage(String pageId,
                                   Object pageInput)

  Sets the active page using the unique page identifier and sets its input to the provided object.

  Parameters:
    `pageId` - the id of the page to switch to
    `pageInput` - the page input
  Returns:
    page that was set active or `null` if not found.

### selectReveal

    public IFormPage selectReveal(Object pageInput)

  Iterates through the pages calling similar method until a page is found that contains the desired page input.

  Parameters:
    `pageInput` - the object to select and reveal
  Returns:
    the page that accepted the request or `null` if no page has the desired object.
  See Also:
    `setActivePage(java.lang.String)`

### getActivePageInstance

    public IFormPage getActivePageInstance()

  Returns active page instance if the currently selected page index is not -1, or `null` if it is.

  Returns:
    active page instance if selected, or `null` if no page is currently active.

### setActivePage

    protected void setActivePage(int pageIndex)

  Description copied from class: `MultiPageEditorPart`
  Sets the currently active page.

  Overrides:
    `setActivePage` in class `MultiPageEditorPart`
  Parameters:
    `pageIndex` - the index of the page to be activated; the index must be valid
  See Also:
    `MultiPageEditorPart.setActivePage(int)`

### updateActionBarContributor

    protected void updateActionBarContributor(int pageIndex)

  Notifies action bar contributor about page change.

  Parameters:
    `pageIndex` - the index of the new page

### close

    public void close(boolean save)

  Closes the editor programmatically.

  Parameters:
    `save` - if `true`, the content should be saved before closing.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.