Class WorkbenchPartReference

All Implemented Interfaces:
ISizeProvider, IWorkbenchPartReference
Direct Known Subclasses:
EditorReference, ViewReference

public abstract class WorkbenchPartReference extends Object implements IWorkbenchPartReference, ISizeProvider
  • Field Details


      public static final int INTERNAL_PROPERTY_OPENED
      Internal property ID: Indicates that the underlying part was created
      See Also:

      public static final int INTERNAL_PROPERTY_CLOSED
      Internal property ID: Indicates that the underlying part was destroyed
      See Also:

      public static final int INTERNAL_PROPERTY_PINNED
      Internal property ID: Indicates that the result of IEditorReference.isPinned()
      See Also:

      public static final int INTERNAL_PROPERTY_VISIBLE
      Internal property ID: Indicates that the result of getVisible() has changed
      See Also:

      public static final int INTERNAL_PROPERTY_ZOOMED
      Internal property ID: Indicates that the result of isZoomed() has changed
      See Also:

      public static final int INTERNAL_PROPERTY_ACTIVE_CHILD_CHANGED
      Internal property ID: Indicates that the part has an active child and the active child has changed. (fired by PartStack)
      See Also:

      public static final int INTERNAL_PROPERTY_MAXIMIZED
      Internal property ID: Indicates that changed in the min / max state has changed
      See Also:

      public static int STATE_LAZY
      State constant indicating that the part is not created yet

      public static int STATE_CREATION_IN_PROGRESS
      State constant indicating that the part is in the process of being created

      public static int STATE_CREATED
      State constant indicating that the part has been created

      public static int STATE_DISPOSED
      State constant indicating that the reference has been disposed (the reference shouldn't be used anymore)
    • legacyPart

      protected IWorkbenchPart legacyPart
    • propertyCache

      protected Map<String,String> propertyCache
  • Constructor Details

  • Method Details

    • subscribe

      public void subscribe()
    • unsubscribe

      public void unsubscribe()
    • isDisposed

      public boolean isDisposed()
    • checkReference

      protected void checkReference()
    • getModel

      public MPart getModel()
    • partPropertyChanged

      protected void partPropertyChanged(Object source, int propId)
      source - used for IPropertyListener
    • partPropertyChanged

      protected void partPropertyChanged(PropertyChangeEvent event)
    • releaseReferences

      protected void releaseReferences()
      Releases any references maintained by this part reference when its actual part becomes known (not called when it is disposed).
    • fireInternalPropertyChange

      protected void fireInternalPropertyChange(int id)
    • addPropertyListener

      public void addPropertyListener(IPropertyListener listener)
      Specified by:
      addPropertyListener in interface IWorkbenchPartReference
      listener - the property listener
      See Also:
    • removePropertyListener

      public void removePropertyListener(IPropertyListener listener)
      Specified by:
      removePropertyListener in interface IWorkbenchPartReference
      listener - the poperty listener to remove
      See Also:
    • getTitle

      public String getTitle()
      Specified by:
      getTitle in interface IWorkbenchPartReference
      the title of the part
      See Also:
    • getTitleToolTip

      public String getTitleToolTip()
      Specified by:
      getTitleToolTip in interface IWorkbenchPartReference
      the title tooltip
      See Also:
    • getId

      public String getId()
      Specified by:
      getId in interface IWorkbenchPartReference
      the ID of the part
      See Also:
    • computeTitle

      protected String computeTitle()
      Computes a new title for the part. Subclasses may override to change the default behavior.
      the title for the part
    • getRawTitle

      protected final String getRawTitle()
      Returns the unmodified title for the part, or the empty string if none
      the unmodified title, as set by the IWorkbenchPart. Returns the empty string if none.
    • getTitleImage

      public final Image getTitleImage()
      Specified by:
      getTitleImage in interface IWorkbenchPartReference
      the title image of the part
      See Also:
    • firePropertyChange

      protected void firePropertyChange(int id)
    • getSite

      public abstract PartSite getSite()
    • initialize

      public abstract void initialize(IWorkbenchPart part) throws PartInitException
    • getPart

      public final IWorkbenchPart getPart(boolean restore)
      Description copied from interface: IWorkbenchPartReference
      Returns the IWorkbenchPart referenced by this object.
      Specified by:
      getPart in interface IWorkbenchPartReference
      restore - tries to restore the part if true.
      the part, or null if the part was not instantiated or it failed to be restored.
    • createPart

      public abstract IWorkbenchPart createPart() throws PartInitException
    • createErrorPart

      public abstract IWorkbenchPart createErrorPart(IStatus status)
    • doDisposeNestedParts

      protected void doDisposeNestedParts()
    • setPinned

      public void setPinned(boolean newPinned)
    • isPinned

      public boolean isPinned()
    • getPartProperty

      public String getPartProperty(String key)
      Description copied from interface: IWorkbenchPartReference
      Return an arbitrary property from the reference. If the part has been instantiated, it just delegates to the part. If not, then it looks in its own cache of properties. If the property is not available or the part has never been instantiated, it can return null.
      Specified by:
      getPartProperty in interface IWorkbenchPartReference
      key - The property to return. Must not be null.
      The String property, or null.
    • addPartPropertyListener

      public void addPartPropertyListener(IPropertyChangeListener listener)
      Description copied from interface: IWorkbenchPartReference
      Add a listener for changes in the arbitrary properties set.
      Specified by:
      addPartPropertyListener in interface IWorkbenchPartReference
      listener - Must not be null.
    • removePartPropertyListener

      public void removePartPropertyListener(IPropertyChangeListener listener)
      Description copied from interface: IWorkbenchPartReference
      Remove a listener for changes in the arbitrary properties set.
      Specified by:
      removePartPropertyListener in interface IWorkbenchPartReference
      listener - Must not be null.
    • firePartPropertyChange

      protected void firePartPropertyChange(PropertyChangeEvent event)
    • createPartProperties

      protected void createPartProperties(IWorkbenchPart3 workbenchPart)
    • computePreferredSize

      public int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredResult)
      Description copied from interface: ISizeProvider

      Returns the best size for this part, given the available width and height and the workbench's preferred size for the part. Parts can overload this to enforce a minimum size, maximum size, or a quantized set of preferred sizes. If width == true, this method computes a width in pixels. If width == false, this method computes a height. availableParallel and availablePerpendicular contain the space available, and preferredParallel contains the preferred result.

      This method returns an answer that is less than or equal to availableParallel and as close to preferredParallel as possible. Return values larger than availableParallel will be truncated.

      Most presentations will define a minimum size at all times, and a maximum size that only applies when maximized.

      The getSizeFlags method controls how frequently this method will be called and what information will be available when it is. Any subclass that specializes this method should also specialize getSizeFlags. computePreferredSize(width, INFINITE, someSize, 0) returns the minimum size of the control (if any). computePreferredSize(width, INFINITE, someSize, INFINITE) returns the maximum size of the control.


      • To maintain a constant size of 100x300 pixels: {return width ? 100 : 300}, getSizeFlags(boolean) must return SWT.MIN | SWT.MAX
      • To grow without constraints: {return preferredResult;}, getSizeFlags(boolean) must return 0.
      • To enforce a width that is always a multiple of 100 pixels, to a minimum of 100 pixels:
                      if (width && preferredResult != INFINITE) {
                          int result = preferredResult - ((preferredResult + 50) % 100) + 50;
                          result = Math.max(100, Math.min(result, availableParallel - (availableParallel % 100)));
                          return result;
                      return preferredResult;
        In this case, getSizeFlags(boolean width) must return (width ? SWT.FILL | SWT.MIN: 0)
      • To maintain a minimum area of 100000 pixels: {return availablePerpendicular < 100 ? 1000 : 100000 / availablePerpendicular;} getSizeFlags(boolean width) must return SWT.WRAP | SWT.MIN;
      Specified by:
      computePreferredSize in interface ISizeProvider
      width - indicates whether a width (if true) or a height (if false) is being computed
      availableParallel - available space. This is a width (pixels) if width == true, and a height (pixels) if width == false. A return value larger than this will be ignored.
      availablePerpendicular - available space perpendicular to the direction being measured or INFINITE if unbounded (pixels). This is a height if width == true, or a height if width == false. Implementations will generally ignore this argument unless they contain wrapping widgets. Note this argument will only contain meaningful information if the part returns the SWT.WRAP flag from getSizeFlags(width)
      preferredResult - preferred size of the control (pixels, <= availableParallel). Set to INFINITE if unknown or unbounded.
      returns the preferred size of the control (pixels). This is a width if width == true or a height if width == false. Callers are responsible for rounding down the return value if it is larger than availableParallel. If availableParallel is INFINITE, then a return value of INFINITE is permitted, indicating that the preferred size of the control is unbounded.
      See Also:
    • getSizeFlags

      public int getSizeFlags(boolean width)
      Description copied from interface: ISizeProvider
      Returns a bitwise combination of flags indicating how and when computePreferredSize should be used. When called with horizontal=true, this indicates the usage of computePreferredSize(true,...) for computing widths. When called with horizontal=false, this indicates the usage of computeSize(false,...) for computing heights. These flags are used for optimization. Each flag gives the part more control over its preferred size but slows down the layout algorithm. Parts should return the minimum set of flags necessary to specify their constraints.

      If the return value of this function ever changes, the part must call flushLayout before the changes will take effect.

      • SWT.MAX: The part has a maximum size that will be returned by computePreferredSize(horizontal, INFINITE, someWidth, INFINITE)
      • SWT.MIN: The part has a minimum size that will be returned by computePreferredSize(horizontal, INFINITE, someWidth, 0)
      • SWT.WRAP: Indicates that computePreferredSize makes use of the availablePerpendicular argument. If this flag is not specified, then the third argument to computePreferredSize will always be set to INFINITE. The perpendicular size is expensive to compute, and it is usually only used for wrapping parts.
      • SWT.FILL: The part may not return the preferred size verbatim when computePreferredSize is is given a value between the minimum and maximum sizes. This is commonly used if the part wants to use a set of predetermined sizes instead of using the workbench-provided size. For example, computePreferredSize(horizontal, availableSpace, someWidth, preferredSize) may return the nearest predetermined size. Note that this flag should be used sparingly. It can prevent layout caching and cause the workbench layout algorithm to degrade to exponential worst-case runtime. If this flag is omitted, then computePreferredSize may be used to compute the minimum and maximum sizes, but not for anything in between.
      Specified by:
      getSizeFlags in interface ISizeProvider
      width - a value of true or false determines whether the return value applies when computing widths or heights respectively. That is, getSizeFlags(true) will be used when calling computePreferredSize(true,...)
      any bitwise combination of SWT.MAX, SWT.MIN, SWT.WRAP, and SWT.FILL
    • getPage

      public IWorkbenchPage getPage()
      Specified by:
      getPage in interface IWorkbenchPartReference
      the workbench page that contains this part
    • setPage

      public void setPage(IWorkbenchPage newPage)
    • getPartName

      public String getPartName()
      Description copied from interface: IWorkbenchPartReference
      Returns the name of the part, as it should be shown in tabs.
      Specified by:
      getPartName in interface IWorkbenchPartReference
      the part name
    • getContentDescription

      public String getContentDescription()
      Description copied from interface: IWorkbenchPartReference
      Returns the content description for the part (or the empty string if none)
      Specified by:
      getContentDescription in interface IWorkbenchPartReference
      the content description for the part
    • isDirty

      public boolean isDirty()
      Description copied from interface: IWorkbenchPartReference
      Returns whether the part is dirty (i.e. has unsaved changes).
      Specified by:
      isDirty in interface IWorkbenchPartReference
      true if the part is dirty, false otherwise
    • invalidate

      public void invalidate()
    • getPane

      public final PartPane getPane()