Class FilePropSaveable

All Implemented Interfaces:
IAdaptable, ISaveablesSource

public class FilePropSaveable extends Saveable implements ISaveablesSource
The Saveable implementation for a FilePropCnr.
Author:
Christopher Mindus
  • Field Details

    • EMPTY

      public static final Saveable[] EMPTY
      This saveable in a single array.
  • Method Details

    • show

      public boolean show(IWorkbenchPage page)
      Attempts to show this saveable in the given page and returns true on success.
      Overrides:
      show in class Saveable
      Parameters:
      page - The workbench page in which to show this saveable.
      Returns:
      true if this saveable is now visible to the user.
    • showEditor

      public IEditorPart showEditor(IWorkbenchPage page)
      Attempts to show this saveable in the given page and returns the editor started or shown.
      Parameters:
      page - The workbench page in which to show this saveable.
      Returns:
      The editor part, or null for none.
    • getName

      public String getName()
      Returns the name of this saveable for display purposes.
      Specified by:
      getName in class Saveable
      Returns:
      The model's name; never null.
    • getToolTipText

      public String getToolTipText()
      Returns the tool tip text for this saveable. This text is used to differentiate between two inputs with the same name.
      Specified by:
      getToolTipText in class Saveable
      Returns:
      the tool tip text; never null.
    • getImageDescriptor

      public ImageDescriptor getImageDescriptor()
      Returns the image descriptor for this saveable.
      Specified by:
      getImageDescriptor in class Saveable
      Returns:
      The image descriptor for this model.
    • isSaving

      public boolean isSaving()
      Flag for saving.
    • doSave

      public void doSave(IProgressMonitor monitor) throws CoreException
      Saves the contents of this saveable.

      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 class Saveable
      Parameters:
      monitor - The progress monitor.
      Throws:
      CoreException - If the save fails; it is the caller's responsibility to report the failure to the user.
    • isDirty

      public boolean isDirty()
      Returns whether the contents of this saveable have changed since the last save operation.

      Note: this method is called frequently, for example by actions to determine their enabled status.

      Specified by:
      isDirty in class Saveable
      Returns:
      true if the contents have been modified and need saving, and false if they have not changed since the last save.
    • onDirtyChanged

      public void onDirtyChanged()
      The Editor has had its dirty state changed: verify and inform.
    • equals

      public boolean equals(Object object)
      Clients must implement equals and hashCode as defined in Object.equals(Object) and Object.hashCode(). Two saveables should be equal if their dirty state is shared, and saving one will save the other. If two saveables are equal, their names, tooltips, and images should be the same because only one of them will be shown when prompting the user to save.
      Specified by:
      equals in class Saveable
      Parameters:
      object - The object to verify equality with.
      Returns:
      true if this Saveable is equal to the given object.
    • hashCode

      public int hashCode()
      Clients must implement equals and hashCode as defined in Object.equals(Object) and Object.hashCode(). Two saveables should be equal if their dirty state is shared, and saving one will save the other. If two saveables are equal, their hash codes MUST be the same, and their names, tooltips, and images should be the same because only one of them will be shown when prompting the user to save.

      IMPORTANT: Implementers should ensure that the hashCode returned is sufficiently unique so as not to collide with hashCodes returned by other implementations. It is suggested that the defining plug-in's ID be used as part of the returned hashCode, as in the following example:

           int PRIME = 31;
           int hash = ...; // compute the "normal" hash code, e.g. based on some identifier unique within the defining plug-in
           return hash * PRIME + MY_PLUGIN_ID.hashCode();
       

      Specified by:
      hashCode in class Saveable
      Returns:
      a hash code
    • getAdapter

      public <T> T getAdapter(Class<T> adapter)
      This implementation of IAdaptable.getAdapter(Class) returns null. Subclasses may override. This allows two unrelated subclasses of Saveable to implement equals(Object) and hashCode() based on an underlying implementation class that is shared by both Saveable subclasses.
      Specified by:
      getAdapter in interface IAdaptable
      Overrides:
      getAdapter in class Saveable
      Returns:
      This implementation always returns null.
    • getSaveables

      public Saveable[] getSaveables()
      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

      invalid reference
      IReusableEditor
      must notify when their input is changed through
      invalid reference
      IReusableEditor#setInput(IEditorInput)
      .
      Specified by:
      getSaveables in interface ISaveablesSource
      Returns:
      The saveables presented by the workbench part.
      See Also:
    • getActiveSaveables

      public Saveable[] getActiveSaveables()
      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.