blob: ed2fbb93cbaba181f29e58028cb5f86a17a003ad [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2002, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<LINK REL="STYLESHEET" HREF="../../book.css" TYPE="text/css">
<title>Plugging In Property Pages</title>
</head>
<body bgcolor="#ffffff">
<h1>Plugging In Property Pages</h1>
<p>The <samp><a href="../../../org.eclipse.platform.doc.isv/reference/extension-points/org_eclipse_ui_propertyPages.html">org.eclipse.ui.propertyPages</a></samp> extension point
from the base Eclipse Platform is used to contribute property pages.<BR/>
What is a property page?
It is a page that shows up in the Eclipse <A href="propertypage_figure2.gif">Properties dialog</A> that users
get to by right-clicking on an object within any tree or table view, and selecting
the <A href="propertypage_figure1.gif">Properties action</A>.</p>
<p>Extenders supply one or more <samp>&lt;page&gt;</samp> elements within the beginning and ending <samp>&lt;extension&gt;</samp> element for this.
The attributes of this <samp>&lt;page&gt;</samp> element are:</p>
<ul>
<li><b>id</b>. A unique ID for this extension point. Not actually used, but required by Eclipse.</li>
<li><b>name</b>. 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.</li>
<li><b>icon</b>. An optional icon to show in the Properties dialog for this property page.</li>
<li><b>class</b>. The fully qualified name of the class that implements the Eclipse interface
<samp>org.Eclipse.ui.IWorkbenchPropertyPage</samp>. This is usually done by extending the Eclipse class
<samp>org.Eclipse.ui.dialog.PropertyPage</samp>. 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.</li>
<li><b><i>objectClass</i></b>. Specify the class or interface of the model objects for which
this property page should be registered. Available interfaces are are identical to those in the
<samp><A href="popup.html#objectClass">popupMenus</A></samp> extension point.</li>
<li><b><i>filtering criteria</i></b>. To scope which objects these property pages should show up for,
there are a series of filtering attributes. These attributes are identical to those in the <samp><A href="popup.html#filtering">popupMenus</A></samp>
extension point.
<!--
Supported through the
<samp><a href="../../reference/api/org/eclipse/rse/core/SystemRemoteObjectMatcher.html">SystemRemoteObjectMatcher</a></samp>
class, 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:
<ul>
<li><b>subsystemconfigurationid</b>. Restrict to remote objects originating from subsystems created by this subsystem factory.
<li><b>typecategoryfilter</b>. Restrict to remote objects originating from subsystems created by a subsystem factory that specified this value for their category attribute
<li><b>namefilter</b>. Restrict to remote objects matching this simple generic name
<li><b>typefilter</b>. Restrict to remote objects matching this simple type filter. The "type" of any remote object is subsystem-determined.
<li><b>subtypefilter</b>. Restrict to remote objects matching this simple sub-type filter. The "subtype" of any remote object is subsystem-determined.
<li><b>subsubtypefilter</b>. Restrict to remote objects matching this simple sub-sub-type filter. The "sub-subtype" of any remote object is subsystem-determined.
</ul>
-->
</ul>
<h2>Programming Details</h2>
<p>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 <samp>createContents(Composite)</samp>, which populates the details page on the right side when the node is
selected on the left side. The supplied classes are listed here:
</p>
<TABLE border="1">
<TBODY>
<TR>
<TH>Base Class</TH>
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../reference/api/org/eclipse/rse/ui/propertypages/SystemAbstractPropertyPageExtensionAction.html">SystemAbstractPropertyPageExtensionAction</A></samp>
in <samp>org.eclipse.rse.ui</samp> plugin.</TD>
<TD>Base class offering generic support for any remote object property page.</TD>
</TR>
<TR>
<TD><samp><A href="../../reference/api/org/eclipse/rse/files/ui/propertypages/SystemAbstractRemoteFilePropertyPageExtensionAction.html">SystemAbstractRemoteFilePropertyPageExtensionAction</A></samp>
in <samp>org.eclipse.rse.files.ui</samp> plugin.</TD>
<TD>Specialized base class offering specific support for any remote file object property page.</TD>
</TR>
</TBODY>
</TABLE>
<p>
</p>
<br><hr>
<p>See the <a href="../tutorial/propertypage.html">property page tutorial</a> for a step-by-step example.</p>
<p>See the <a href="../../../org.eclipse.platform.doc.isv/guide/preferences_prop_contribute.htm">Eclipse Platform Programmer's Guide</a>
for more background information.</p>
</body>
</html>