# Plugging In Property Pages

The `com.ibm.etools.systems.core.propertyPages` extension point is defined in the plugin `com.ibm.etools.systems.core`, and it is patterned after Eclipse's `org.Eclipse.ui.propertyPages` extension point, but both simplified and extended specifically for remote objects.
What is a property page? It is a page that shows up in the Eclipse Properties dialog that users get to by right-clicking on an object within any tree or table view, and selecting the Properties action.

Extenders supply one or more `<page>` elements within the beginning and ending `<extension>` element for this. The attributes of this `<page>` element are:

- id. A unique ID for this extension point. Not actually used, but required by Eclipse.
- name. A translated node-name to show in the left tree view in the Eclipse-supplied Properties dialog that comes up when the user selects "Properties..." from the pop-up menu.
- icon. An optional icon to show in the Properties dialog for this property page.
- class. The fully qualified name of the class that implements the Eclipse interface `org.Eclipse.ui.IWorkbenchPropertyPage`. This is usually done by extending the Eclipse class `org.Eclipse.ui.dialog.PropertyPage`. Your class will populate the detail page on the right of the Eclipse-supplied Properties dialog when the node-name is selected in the left hand tree view.
- filtering criteria. To scope which remote objects these property pages should show up for, there are a series of filtering attributes. These attributes are identical to those in the `pop-upMenus` extension point. Providers supply as many as needed to uniquely identify their target objects. Every one of these values can be scalar or "simple generic", meaning it can start or end with an asterisk for pattern matching:
  - subsystemfactoryid. Restrict to remote objects originating from subsystems created by this subsystem factory.
  - typecategoryfilter. Restrict to remote objects originating from subsystems created by a subsystem factory that specified this value for their category attribute
  - namefilter. Restrict to remote objects matching this simple generic name
  - typefilter. Restrict to remote objects matching this simple type filter. The "type" of any remote object is subsystem-determined.
  - subtypefilter. Restrict to remote objects matching this simple sub-type filter. The "subtype" of any remote object is subsystem-determined.
  - subsubtypefilter. Restrict to remote objects matching this simple sub-sub-type filter. The "sub-subtype" of any remote object is subsystem-determined.

## Programming Details

To use this extension point your class will typically extend one of the supplied base classes to make it easier to create these property pages for remote objects. The only method you must implement in these classes is `createContents(Composite)`, which populates the details page on the right side when the node is selected on the left side. The supplied classes are listed here:

Base Class | Description
--- | ---
`SystemAbstractPropertyPageExtensionAction` in `com.ibm.etools.systems.core` plugin. | Base class offering generic support for any remote object property page.
`SystemAbstractRemoteFilePropertyPageExtensionAction` in `com.ibm.etools.systems.core` plugin. | Specialized base class offering specific support for any remote file object property page.
`ISeriesAbstractIFSPropertyPageExtensionAction` in `com.ibm.etools.iseries.core` plugin. | Specialized base class offering specific support for iSeries IFS file or folder property pages.
`ISeriesAbstractQSYSPropertyPageExtensionAction` in `com.ibm.etools.iseries.core` plugin. | Specialized base class offering specific support for property pages for iSeries objects in the QSYS file system.

See the property page tutorial for a step-by-step example.