Class PreferencePage

java.lang.Object
org.eclipse.jface.dialogs.DialogPage
org.eclipse.jface.preference.PreferencePage
All Implemented Interfaces:
IDialogPage, IMessageProvider, IPreferencePage
Direct Known Subclasses:
ActivitiesPreferencePage, ActivityCategoryPreferencePage, FieldEditorPreferencePage, PropertyPage, RepositoryManipulationPage, RootScopePage, TemplatePreferencePage

public abstract class PreferencePage extends DialogPage implements IPreferencePage
Abstract base implementation for all preference page implementations.

Subclasses must implement the createContents framework method to supply the page's main control.

Subclasses should extend the doComputeSize framework method to compute the size of the page's control.

Subclasses may override the performOk, performApply, performDefaults, performCancel, and performHelp framework methods to react to the standard button events.

Subclasses may call the noDefaultAndApplyButton framework method before the page's control has been created to suppress the standard Apply and Defaults buttons.

  • Constructor Details

    • PreferencePage

      protected PreferencePage()
      Creates a new preference page with an empty title and no image.
    • PreferencePage

      protected PreferencePage(String title)
      Creates a new preference page with the given title and no image.
      Parameters:
      title - the title of this preference page
    • PreferencePage

      protected PreferencePage(String title, ImageDescriptor image)
      Creates a new abstract preference page with the given title and image.
      Parameters:
      title - the title of this preference page
      image - the image for this preference page, or null if none
  • Method Details

    • computeSize

      public Point computeSize()
      Computes the size for this page's UI control.

      The default implementation of this IPreferencePage method returns the size set by setSize; if no size has been set, but the page has a UI control, the framework method doComputeSize is called to compute the size.

      Specified by:
      computeSize in interface IPreferencePage
      Returns:
      the size of the preference page encoded as new Point(width,height), or (0,0) if the page doesn't currently have any UI component
    • contributeButtons

      protected void contributeButtons(Composite parent)
      Contributes additional buttons to the given composite.

      The default implementation of this framework hook method does nothing. Subclasses should override this method to contribute buttons to this page's button bar. For each button a subclass contributes, it must also increase the parent's grid layout number of columns by one; that is,

       ((GridLayout) parent.getLayout()).numColumns++);
       
      Parameters:
      parent - the button bar
    • createContents

      protected abstract Control createContents(Composite parent)
      Creates and returns the SWT control for the customized body of this preference page under the given parent composite.

      This framework method must be implemented by concrete subclasses. Any subclass returning a Composite object whose Layout has default margins (for example, a GridLayout) is expected to set the margins of this Layout to 0 pixels.

      Parameters:
      parent - the parent composite
      Returns:
      the new control
    • createControl

      public void createControl(Composite parent)
      The PreferencePage implementation of this IDialogPage method creates a description label and button bar for the page. It calls createContents to create the custom contents of the page.

      If a subclass that overrides this method creates a Composite that has a layout with default margins (for example, a GridLayout) it is expected to set the margins of this Layout to 0 pixels.

      Specified by:
      createControl in interface IDialogPage
      Parameters:
      parent - the parent composite
      See Also:
    • applyDialogFont

      protected void applyDialogFont(Composite composite)
      Apply the dialog font to the composite and it's children if it is set. Subclasses may override if they wish to set the font themselves.
      Parameters:
      composite - the composite to apply the font to. Font will also be applied to its children. If the control is null nothing happens.
    • createDescriptionLabel

      protected Label createDescriptionLabel(Composite parent)
      Creates and returns an SWT label under the given composite.
      Parameters:
      parent - the parent composite
      Returns:
      the new label
    • doComputeSize

      protected Point doComputeSize()
      Computes the size needed by this page's UI control.

      All pages should override this method and set the appropriate sizes of their widgets, and then call super.doComputeSize.

      Returns:
      the size of the preference page encoded as new Point(width,height)
    • doGetPreferenceStore

      protected IPreferenceStore doGetPreferenceStore()
      Returns the preference store of this preference page.

      This is a framework hook method for subclasses to return a page-specific preference store. The default implementation returns null.

      Returns:
      the preference store, or null if none
    • getContainer

      public IPreferencePageContainer getContainer()
      Returns the container of this page.
      Returns:
      the preference page container, or null if this page has yet to be added to a container
    • getPreferenceStore

      public IPreferenceStore getPreferenceStore()
      Returns the preference store of this preference page.
      Returns:
      the preference store , or null if none
    • isValid

      public boolean isValid()
      The preference page implementation of an IPreferencePage method returns whether this preference page is valid. Preference pages are considered valid by default; call setValid(false) to make a page invalid.
      Specified by:
      isValid in interface IPreferencePage
      Returns:
      true if the page is in a valid state, and false if invalid
      See Also:
    • noDefaultAndApplyButton

      protected void noDefaultAndApplyButton()
      Suppresses creation of the standard Default and Apply buttons for this page.

      Subclasses wishing a preference page without these buttons should call this framework method before the page's control has been created.

    • noDefaultButton

      protected void noDefaultButton()
      Suppress creation of the standard Default button for this page.

      Subclasses wishing a preference page with this button should call this framework method before the page's control has been created.

      Since:
      3.11
    • okToLeave

      public boolean okToLeave()
      The PreferencePage implementation of this IPreferencePage method returns true if the page is valid.
      Specified by:
      okToLeave in interface IPreferencePage
      Returns:
      false to abort page flipping and the have the current page remain visible, and true to allow the page flip
      See Also:
    • performApply

      protected void performApply()
      Performs special processing when this page's Apply button has been pressed.

      This is a framework hook method for subclasses to do special things when the Apply button has been pressed. The default implementation of this framework method simply calls performOk to simulate the pressing of the page's OK button.

      See Also:
    • performCancel

      public boolean performCancel()
      The preference page implementation of an IPreferencePage method performs special processing when this page's Cancel button has been pressed.

      This is a framework hook method for subclasses to do special things when the Cancel button has been pressed. The default implementation of this framework method does nothing and returns true.

      Note that UI guidelines on different platforms disagree on whether Cancel should revert changes that have been applied with the Apply button. Windows wants applied changes to persist on Cancel, whereas Mac and GTK consider Apply a preview that should not be saved on Cancel. Eclipse applications typically adhere to the Windows guidelines and just override performOk() and save preferences there.

      Specified by:
      performCancel in interface IPreferencePage
      Returns:
      false to abort the container's cancel procedure and true to allow the cancel to happen
      See Also:
    • performDefaults

      protected void performDefaults()
      Performs special processing when this page's Defaults button has been pressed.

      This is a framework hook method for subclasses to do special things when the Defaults button has been pressed. Subclasses may override, but should call super.performDefaults.

    • performOk

      public boolean performOk()
      Description copied from interface: IPreferencePage
      Notifies that the OK button of this page's container has been pressed.
      Specified by:
      performOk in interface IPreferencePage
      Returns:
      false to abort the container's OK processing and true to allow the OK to happen
    • setContainer

      public void setContainer(IPreferencePageContainer container)
      Description copied from interface: IPreferencePage
      Sets or clears the container of this page.
      Specified by:
      setContainer in interface IPreferencePage
      Parameters:
      container - the preference page container, or null
    • setPreferenceStore

      public void setPreferenceStore(IPreferenceStore store)
      Sets the preference store for this preference page.

      If preferenceStore is set to null, getPreferenceStore will invoke doGetPreferenceStore the next time it is called.

      Parameters:
      store - the preference store, or null
      See Also:
    • setSize

      public void setSize(Point uiSize)
      Description copied from interface: IPreferencePage
      Sets the size of this page's UI component.
      Specified by:
      setSize in interface IPreferencePage
      Parameters:
      uiSize - the size of the preference page encoded as new Point(width,height)
    • setTitle

      public void setTitle(String title)
      The PreferencePage implementation of this IDialogPage method extends the DialogPage implementation to update the preference page container title. Subclasses may extend.
      Specified by:
      setTitle in interface IDialogPage
      Overrides:
      setTitle in class DialogPage
      Parameters:
      title - the title of this dialog page, or null if none
      See Also:
    • setValid

      public void setValid(boolean b)
      Sets whether this page is valid. The enable state of the container buttons and the apply button is updated when a page's valid state changes.
      Parameters:
      b - the new valid state
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • updateApplyButton

      protected void updateApplyButton()
      Updates the enabled state of the Apply button to reflect whether this page is valid.
    • createNoteComposite

      protected Composite createNoteComposite(Font font, Composite composite, String title, String message)
      Creates a composite with a highlighted Note entry and a message text. This is designed to take up the full width of the page.
      Parameters:
      font - the font to use
      composite - the parent composite
      title - the title of the note
      message - the message for the note
      Returns:
      the composite for the note
    • getApplyButton

      protected Button getApplyButton()
      Returns the Apply button.
      Returns:
      the Apply button
    • getDefaultsButton

      protected Button getDefaultsButton()
      Returns the Restore Defaults button.
      Returns:
      the Restore Defaults button
    • performHelp

      public void performHelp()
      Description copied from class: DialogPage
      This default implementation of an IDialogPage method does nothing. Subclasses should override to take some action in response to a help request.
      Specified by:
      performHelp in interface IDialogPage
      Overrides:
      performHelp in class DialogPage
    • applyData

      public void applyData(Object data)
      Applies the given data to this page.

      It is up to the subclasses to specify the contract and the data format. The contract is not guaranteed if the subclass is in an internal package.

      Note: The implementation must silently ignore all unknown data.

      The default implementation does nothing.

      Parameters:
      data - the data as specified by the subclass
      Since:
      3.1
    • setErrorMessage

      public void setErrorMessage(String newMessage)
      Description copied from class: DialogPage
      Sets or clears the error message for this page.
      Overrides:
      setErrorMessage in class DialogPage
      Parameters:
      newMessage - the message, or null to clear the error message
    • setMessage

      public void setMessage(String newMessage, int newType)
      Description copied from class: DialogPage
      Sets the message for this page with an indication of what type of message it is.

      The valid message types are one of NONE, INFORMATION,WARNING, or ERROR.

      Note that for backward compatibility, a message of type ERROR is different than an error message (set using setErrorMessage). An error message overrides the current message until the error message is cleared. This method replaces the current message and does not affect the error message.

      Overrides:
      setMessage in class DialogPage
      Parameters:
      newMessage - the message, or null to clear the message
      newType - the message type