Eclipse Platform
Release 3.6

org.eclipse.ui.part
Class AbstractMultiEditor

java.lang.Object
  extended by org.eclipse.core.commands.common.EventManager
      extended by org.eclipse.ui.part.WorkbenchPart
          extended by org.eclipse.ui.part.EditorPart
              extended by org.eclipse.ui.part.AbstractMultiEditor
All Implemented Interfaces:
IAdaptable, IExecutableExtension, IEditorPart, ISaveablePart, IWorkbenchPart, IWorkbenchPart2, IWorkbenchPart3, IWorkbenchPartOrientation
Direct Known Subclasses:
MultiEditor

public abstract class AbstractMultiEditor
extends EditorPart

A AbstractMultiEditor is a composite of editors. This class is intended to be subclassed.

Since:
3.5

Field Summary
 
Fields inherited from interface org.eclipse.ui.IEditorPart
PROP_DIRTY, PROP_INPUT
 
Fields inherited from interface org.eclipse.ui.IWorkbenchPart
PROP_TITLE
 
Constructor Summary
AbstractMultiEditor()
          Constructs an editor to contain other editors.
 
Method Summary
 void activateEditor(IEditorPart part)
          Activates the given nested editor.
 void dispose()
          Release the added listener.
 void doSave(IProgressMonitor monitor)
          Saves the contents of this part.
 void doSaveAs()
          Saves the contents of this part to another object.
 IEditorPart getActiveEditor()
          Returns the active inner editor.
protected  int getIndex(IEditorPart editor)
          Returns the index of the given nested editor.
abstract  Composite getInnerEditorContainer(IEditorReference innerEditorReference)
          This method is called after createPartControl has been executed and should return the container for the given inner editor.
 IEditorPart[] getInnerEditors()
          Returns an array with all inner editors.
protected  void handlePropertyChange(int propId)
          Handles a property change notification from a nested editor.
 void init(IEditorSite site, IEditorInput input)
          Initializes this editor with the given editor site and input.
 void init(IEditorSite site, MultiEditorInput input)
           
protected abstract  void innerEditorsCreated()
          Called as soon as the inner editors have been created and are available.
 boolean isDirty()
          Returns whether the contents of this part have changed since the last save operation.
 boolean isSaveAsAllowed()
          Returns whether the "Save As" operation is supported by this part.
 void setChildren(IEditorPart[] children)
          Set the inner editors.
 void setFocus()
          Asks this part to take focus within the workbench.
 
Methods inherited from class org.eclipse.ui.part.EditorPart
checkSite, getEditorInput, getEditorSite, getTitleToolTip, isSaveOnCloseNeeded, setContentDescription, setInitializationData, setInput, setInputWithNotify, setPartName
 
Methods inherited from class org.eclipse.ui.part.WorkbenchPart
addPartPropertyListener, addPropertyListener, createPartControl, firePartPropertyChanged, firePropertyChange, getAdapter, 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 class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.eclipse.ui.IWorkbenchPart
addPropertyListener, createPartControl, getSite, getTitle, getTitleImage, removePropertyListener
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 

Constructor Detail

AbstractMultiEditor

public AbstractMultiEditor()
Constructs an editor to contain other editors.

Method Detail

handlePropertyChange

protected void handlePropertyChange(int propId)
Handles a property change notification from a nested editor. The default implementation simply forwards the change to listeners on this multi editor by calling firePropertyChange with the same property id. For example, if the dirty state of a nested editor changes (property id ISaveablePart.PROP_DIRTY), this method handles it by firing a property change event for ISaveablePart.PROP_DIRTY to property listeners on this multi editor.

Subclasses may extend or reimplement this method.

Parameters:
propId - the id of the property that changed
Since:
3.6

doSave

public void doSave(IProgressMonitor monitor)
Description copied from interface: ISaveablePart
Saves the contents of this part.

If the save is successful, the part should fire a property changed event reflecting the new dirty state (PROP_DIRTY property).

If the save is cancelled through user action, or for any other reason, the part should invoke setCancelled on the IProgressMonitor to inform the caller.

This method is long-running; progress and cancellation are provided by the given progress monitor.

Specified by:
doSave in interface ISaveablePart
Specified by:
doSave in class EditorPart
Parameters:
monitor - the progress monitor

doSaveAs

public void doSaveAs()
Description copied from interface: ISaveablePart
Saves the contents of this part to another object.

Implementors are expected to open a "Save As" dialog where the user will be able to select a new name for the contents. After the selection is made, the contents should be saved to that new name. During this operation a IProgressMonitor should be used to indicate progress.

If the save is successful, the part fires a property changed event reflecting the new dirty state (PROP_DIRTY property).

Specified by:
doSaveAs in interface ISaveablePart
Specified by:
doSaveAs in class EditorPart

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

init

public void init(IEditorSite site,
                 MultiEditorInput input)
          throws PartInitException
Parameters:
site -
input -
Throws:
PartInitException
See Also:
IEditorPart.init(IEditorSite, IEditorInput)

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

isSaveAsAllowed

public boolean isSaveAsAllowed()
Description copied from interface: ISaveablePart
Returns whether the "Save As" operation is supported by this part.

Specified by:
isSaveAsAllowed in interface ISaveablePart
Specified by:
isSaveAsAllowed in class EditorPart
Returns:
true if "Save As" is supported, and false if not supported

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

getActiveEditor

public final IEditorPart getActiveEditor()
Returns the active inner editor.

Returns:
the active editor

getInnerEditors

public final IEditorPart[] getInnerEditors()
Returns an array with all inner editors.

Returns:
the inner editors

setChildren

public final void setChildren(IEditorPart[] children)
Set the inner editors. Should not be called by clients.

Parameters:
children - the inner editors of this multi editor
Restriction:
This method is not intended to be referenced by clients.

innerEditorsCreated

protected abstract void innerEditorsCreated()
Called as soon as the inner editors have been created and are available.


activateEditor

public void activateEditor(IEditorPart part)
Activates the given nested editor.

Parameters:
part - the nested editor
Since:
3.0

getIndex

protected int getIndex(IEditorPart editor)
Returns the index of the given nested editor.

Returns:
the index of the nested editor
Since:
3.0

dispose

public void dispose()
Release the added listener.

Specified by:
dispose in interface IWorkbenchPart
Overrides:
dispose in class WorkbenchPart
Since:
3.2

getInnerEditorContainer

public abstract Composite getInnerEditorContainer(IEditorReference innerEditorReference)
This method is called after createPartControl has been executed and should return the container for the given inner editor.

Parameters:
innerEditorReference - a reference to the inner editor that is being created.
Returns:
the container in which the inner editor's pane and part controls are to be created.

Eclipse Platform
Release 3.6

Guidelines for using Eclipse APIs.

Copyright (c) Eclipse contributors and others 2000, 2010. All rights reserved.