1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-02 22:55:26 +02:00

Fix links into ../reference/api/org/eclipse/..

This commit is contained in:
Martin Oberhuber 2006-07-20 13:15:28 +00:00
parent 05f9283098
commit 98dcb78de0
21 changed files with 596 additions and 596 deletions

View file

@ -120,13 +120,13 @@ subsystems share. System objects are described next.</p>
<h2><A name="systems">Systems and System Managers</A></h2>
<p>While not seen by the user, subsystem objects are required to return a <b>connectorservice</b> object via the
<A href="../org/eclipse/rse/core/subsystems/ISubSystem.html#getConnectorService()">getConnectorService()</A> method.
A connectorService object is an object implementing the <A href="../org/eclipse/rse/core/subsystems/IConnectorService.html">IConnectorService</A> interface.
<A href="../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html#getConnectorService()">getConnectorService()</A> method.
A connectorService object is an object implementing the <A href="../reference/api/org/eclipse/rse/core/subsystems/IConnectorService.html">IConnectorService</A> interface.
A connectorService object manages the live host to the remote system, and supports
lifecycle methods for that host such as
<A href="../org/eclipse/rse/core/subsystems/IConnectorService.html#connect(org.eclipse.core.runtime.IProgressMonitor)">connect</A>,
<A href="../org/eclipse/rse/core/subsystems/IConnectorService.html#disconnect()">disconnect</A>, and
<A href="../org/eclipse/rse/core/subsystems/IConnectorService.html#isConnected()">isConnected</A>.
<A href="../reference/api/org/eclipse/rse/core/subsystems/IConnectorService.html#connect(org.eclipse.core.runtime.IProgressMonitor)">connect</A>,
<A href="../reference/api/org/eclipse/rse/core/subsystems/IConnectorService.html#disconnect()">disconnect</A>, and
<A href="../reference/api/org/eclipse/rse/core/subsystems/IConnectorService.html#isConnected()">isConnected</A>.
The communication layer for that host is entirely the programmer's responsibility, and might use sockets, JDBC, HTTP or
SOAP. It is up the provider of the subsystem factory to author their own communication layer; the framework
only dictates the handful of methods in IConnectorService, that the RSE UI depends upon. The framework supplies a base
@ -134,7 +134,7 @@ system class that is easily extended.
</p>
<p>It may be the case that multiple subsystems, each from a different subsystem configuration, share the same live
host for a given host object. To enable this, the framework supplies a base
<b>connector service manager</b> <A href="../org/eclipse/rse/core/subsystems/impl/AbstractConnectorServiceManager.html">class</A>
<b>connector service manager</b> <A href="../reference/api/org/eclipse/rse/core/subsystems/impl/AbstractConnectorServiceManager.html">class</A>
that can be used to manage a single shared connector service object across multiple subsystems. It uses a hashtable to store and
return the connector service objects, keyed by a subsystem interface that all subsystems sharing the same connector service object
are to implement. The subclass of the base connector service manager class supplies that interface. Further, the subclass
@ -147,8 +147,8 @@ the RSE-supplied subsystems. You might do this if the subsystem configuration us
accessing remote objects, in which case there is no need for a unique communication layer. By sharing the
same connector service object, it prevents the user from being prompted to signon multiple times. To do this, simply access
any RSE-supplied subsystem for a given host, and ask for its
<A href="../org/eclipse/rse/core/subsystems/ISubSystem.html#getConnectorServiceManager()">connector service manager</A>
in your own subsystem's <A href="../org/eclipse/rse/core/subsystems/AbstractConnectorService.html#getConnectorServiceManager()">getConnectorServiceManager</A> method.
<A href="../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html#getConnectorServiceManager()">connector service manager</A>
in your own subsystem's <A href="../reference/api/org/eclipse/rse/core/subsystems/AbstractConnectorService.html#getConnectorServiceManager()">getConnectorServiceManager</A> method.
</p>
<h2><A name="filters">Filters</A></h2>
@ -156,7 +156,7 @@ in your own subsystem's <A href="../org/eclipse/rse/core/subsystems/AbstractConn
When a subsystem is expanded, users usually see <b>filters</b>. Since subsystems typically list remote artifacts,
it is typical that a mechanism is needed to allow users to define which artifacts they wish to see, with some
form of filtering criteria. Filters are this mechanism. The filter support is fully supplied by the RSE framework.
A filter is simply a <A href="../org/eclipse/rse/filters/ISystemFilter.html">ISystemFilter</A>
A filter is simply a <A href="../reference/api/org/eclipse/rse/filters/ISystemFilter.html">ISystemFilter</A>
object containing a name and a collection of <b>filter strings</b>. Filter strings are just strings, which
the subsystem is required to interpret. When a user expands a filter, the owning subsystem is asked to resolve
the filter strings within the filter. The subsystem typically interprets each filter string as some form of
@ -175,12 +175,12 @@ It is possible to author a subsystem that does not support filters, if this is d
Subsystems do not actually "own" filters. Since each host has unique subsystems, if each subsystem owned its
own filters then filters could not be shared across Hosts, which is sometimes desirable. Instead, filters are
actually contained within <b>filter pools</b>. Filter pools are simply
<A href="../org/eclipse/rse/filters/ISystemFilterPool.html">ISystemFilterPool</A>
<A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPool.html">ISystemFilterPool</A>
objects which have a name and a collection of filters.
Filter pools are owned by subsystem configurations, per profile. That is, each subsystem configuration will contain filter pools
scoped by profile. Each such configuration plus profile grouping is known internally as a
<A href="../org/eclipse/rse/filters/ISystemFilterPoolManager.html">filter pool manager</A>.
Subsystems contain <A href="../org/eclipse/rse/filters/ISystemFilterPoolReference.html">references</A>
<A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPoolManager.html">filter pool manager</A>.
Subsystems contain <A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPoolReference.html">references</A>
to filter pools. By default, each subsystem configuration automatically creates one filter pool
for each profile, named the "xxx Filter Pool", where "xxx" is the name of the profile. Subsystems contain references to
filter pools, so that as the filters in the pool are created, changed, deleted or re-ordered, those changes are automatically
@ -209,7 +209,7 @@ reference it.
<h2><A name="useractions">User Actions and Named Types</A></h2>
<p>
If the subsystem configuration returns true to the
<A href="../org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html#supportsUserDefinedActions()">supportsUserDefinedActions</A>
<A href="../reference/api/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html#supportsUserDefinedActions()">supportsUserDefinedActions</A>
method, users can create their own <b>actions</b>
that appear in the pop-up menu for remote objects, using the Work With User Actions <A href="useractions_ww_action.gif">action</A> and
<A href="useractions_ww_dialog.gif">dialog</A>. User actions use substitution variables that are resolved at
@ -228,7 +228,7 @@ This is done using the Work With Named Types <A href="namedtypes_ww_action.gif">
<A href="namedtypes_ww_dialog.gif">dialog</A>.</p>
<p>
User actions are contained by each subsystem factory, scoped by profile. You can programmatically access them by calling
<A href="../org/eclipse/rse/core/subsystems/util/ISubsystemConfigurationAdapter.html#getSubSystemActions(org.eclipse.rse.subsystems.ISubSystem)">getSubSystemActions</A>
<A href="../reference/api/org/eclipse/rse/core/subsystems/util/ISubsystemConfigurationAdapter.html#getSubSystemActions(org.eclipse.rse.subsystems.ISubSystem)">getSubSystemActions</A>
in a subsystem configuration object. They are scoped to the configuration, not the subsystem,
so the same list of actions is available for every host. The <A href="useractions_menu.gif">User Actions cascading menu </A>
for remote objects lists <i>all</i> the actions defined for <i>all active profiles</i>, whose file type scoping criteria matches the
@ -247,7 +247,7 @@ It is assumed there will be fewer of these, and they are not likely to be differ
<h2><A name="compilecmds">Compile Commands</A></h2>
<p>
If the subsystem configuration returns true to the
<A href="../org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html#supportsCompileActions()">supportsCompileActions</A>
<A href="../reference/api/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html#supportsCompileActions()">supportsCompileActions</A>
method, users will see a <b>Compile</b> <A href="compile_action.gif">action</A> in
the pop-up menu for compilable source files. Clearly, this support usually only makes sense for subsystems that
list remote source files. Whether a selected file is compilable or not is decided by the subsystem factory. It
@ -257,7 +257,7 @@ class for this. The compile manager is also responsible for pre-supplying defaul
<p>
The framework also supplies a Work With Compile Commands <A href="compile_ww_action.gif">action</A> and <A href="compile_ww_dialog.gif">dialog</A>,
by which users can create their own compile commands,
per source type. Compile commands internally are <A href="../org/eclipse/rse/ui/compile/SystemCompileCommand.html">SystemCompileCommand</A> objects.
per source type. Compile commands internally are <A href="../reference/api/org/eclipse/rse/ui/compile/SystemCompileCommand.html">SystemCompileCommand</A> objects.
These compile commands are stored per subsystem configuration, such that they are usable across all Hosts.
They are also scoped by profile, and the cascading compile action will list all compile commands from all active profiles,
for the selected file's source type. This scoping by profile, as with user actions, enables team support such that
@ -277,11 +277,11 @@ be exported and imported.
<h2><A name="Registry">System Registry</A></h2>
<p>The programmatic front door to all the artifacts in the RSE is the
<b>System Registry</b>, which is an object implementing
<A href="../org/eclipse/rse/model/ISystemRegistry.html">ISystemRegistry</A>.
<A href="../reference/api/org/eclipse/rse/model/ISystemRegistry.html">ISystemRegistry</A>.
This is a singleton object that you
can access by calling the static method
<A href="../org/eclipse/rse/model/SystemStartHere.html#getSystemRegistry()">getSystemRegistry()</A> in the
<A href="../org/eclipse/rse/model/SystemStartHere.html">SystemStartHere</A>
<A href="../reference/api/org/eclipse/rse/model/SystemStartHere.html#getSystemRegistry()">getSystemRegistry()</A> in the
<A href="../reference/api/org/eclipse/rse/model/SystemStartHere.html">SystemStartHere</A>
class in the <samp>org.eclipse.rse.ui</samp> plugin.
</p>
</body>

View file

@ -14,39 +14,39 @@
<p>The underlying containment model for the RSE artifacts is shown here.
</p>
<ul>
<li><A href="../org/eclipse/rse/model/ISystemProfile.html">Profiles</A> are managed
by a <A href="../org/eclipse/rse/model/ISystemProfileManager.html">profile manager</A>, and contain:</li>
<li><A href="../reference/api/org/eclipse/rse/model/ISystemProfile.html">Profiles</A> are managed
by a <A href="../reference/api/org/eclipse/rse/model/ISystemProfileManager.html">profile manager</A>, and contain:</li>
<ul>
<li><A href="../org/eclipse/rse/model/ISystemHostPool.html">Host Pools</A>, one per profile, which contain</li>
<li><A href="../reference/api/org/eclipse/rse/model/ISystemHostPool.html">Host Pools</A>, one per profile, which contain</li>
<ul>
<li><A href="../org/eclipse/rse/model/IHost.html">Hosts</A></li>
<li><A href="../reference/api/org/eclipse/rse/model/IHost.html">Hosts</A></li>
</ul>
<li><A href="../org/eclipse/rse/filters/ISystemFilterPool.html">Filter pools</A>,
<li><A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPool.html">Filter pools</A>,
keyed by Subsystem Factory,
and managed by a <A href="../org/eclipse/rse/filters/ISystemFilterPoolManager.html">filter pool manager</A>
and managed by a <A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPoolManager.html">filter pool manager</A>
which contain</li>
<ul>
<li><A href="../org/eclipse/rse/filters/ISystemFilter.html">Filters</A>, which contain</li>
<li><A href="../reference/api/org/eclipse/rse/filters/ISystemFilter.html">Filters</A>, which contain</li>
<ul>
<li><A href="../org/eclipse/rse/filters/ISystemFilterString.html">Filter strings</A></li>
<li><A href="../reference/api/org/eclipse/rse/filters/ISystemFilterString.html">Filter strings</A></li>
</ul>
</ul>
<li><A href="../org/eclipse/rse/ui/uda/ISystemUDActionElement.html">User actions</A>, keyed by Subsystem Configuration, which contain</li>
<li><A href="../reference/api/org/eclipse/rse/ui/uda/ISystemUDActionElement.html">User actions</A>, keyed by Subsystem Configuration, which contain</li>
<ul>
<li><i>References</i> to <A href="../org/eclipse/rse/ui/uda/ISystemUDTypeElement.html">named types</A></li>
<li><i>References</i> to <A href="../reference/api/org/eclipse/rse/ui/uda/ISystemUDTypeElement.html">named types</A></li>
</ul>
<li><A href="../org/eclipse/rse/ui/compile/SystemCompileCommand.html">Compile commands</A></li>
<li><A href="../reference/api/org/eclipse/rse/ui/compile/SystemCompileCommand.html">Compile commands</A></li>
</ul>
<li><A href="../org/eclipse/rse/core/subsystems/SubSystemConfiguration.html">Subsystem Configurations</A> contain:</li>
<li><A href="../reference/api/org/eclipse/rse/core/subsystems/SubSystemConfiguration.html">Subsystem Configurations</A> contain:</li>
<ul>
<li><A href="../org/eclipse/rse/core/subsystems/SubSystem.html">Subsystems</A>, keyed by host,
<li><A href="../reference/api/org/eclipse/rse/core/subsystems/SubSystem.html">Subsystems</A>, keyed by host,
which contain</li>
<ul>
<li><i><A href="../org/eclipse/rse/filters/ISystemFilterPoolReference.html">References</A></i>
to <A href="../org/eclipse/rse/filters/ISystemFilterPool.html">filter pools</A>, which are managed by <A href="../org/eclipse/rse/filters/ISystemFilterPoolManager.html">filter pool managers</A></li>
<li><i><A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPoolReference.html">References</A></i>
to <A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPool.html">filter pools</A>, which are managed by <A href="../reference/api/org/eclipse/rse/filters/ISystemFilterPoolManager.html">filter pool managers</A></li>
</ul>
<li><A href="../org/eclipse/rse/ui/uda/SystemUDTypeElement.html">Named types</A></li>
<li><A href="../reference/api/org/eclipse/rse/ui/uda/SystemUDTypeElement.html">Named types</A></li>
</ul>
</ul>
</body>

View file

@ -31,7 +31,7 @@ help simplify the creation of action classes, especially when used together with
<h2>RSE-Supplied Base Classes for Actions</h2>
<p>Here are the primary base classes the RSE supplies for actions, all of which are found in the
package <samp><A href="../../../org/eclipse/rse/ui/actions/package-summary.html"org.eclipse.rse.ui.actions</A></samp>
package <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/package-summary.html"org.eclipse.rse.ui.actions</A></samp>
in the plugin <samp>org.eclipse.rse.ui</samp>:</p>
<TABLE border="1">
<TBODY>
@ -40,36 +40,36 @@ in the plugin <samp>org.eclipse.rse.ui</samp>:</p>
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp></TD>
<TD>This is the base action class for the other classes, and is only used directly for actions that do not
result in a dialog or wizard being presented to the user. It extends the JFace <samp>Action</samp> class,
adding to it support for properties such as the current shell and viewer and selection, as well as
overridable methods for easily enabling/disabling the action based on the selection, and a method for
setting the context help for the action. There are many other useful methods, such
as <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseAction.html#allowOnMultipleSelection(boolean)">allowOnMultipleSelection(boolean)</A></samp>
and <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseAction.html#setContextMenuGroup(java.lang.String)">setContextMenuGroup(String)</A></samp>, to
as <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseAction.html#allowOnMultipleSelection(boolean)">allowOnMultipleSelection(boolean)</A></samp>
and <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseAction.html#setContextMenuGroup(java.lang.String)">setContextMenuGroup(String)</A></samp>, to
simplify when the action is enabled and where it appears in a popup menu.
</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseSubMenuAction.html">SystemBaseSubMenuAction</A></samp></TD>
<TD>This base action class extends <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp>, and is used as the parent class when
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseSubMenuAction.html">SystemBaseSubMenuAction</A></samp></TD>
<TD>This base action class extends <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp>, and is used as the parent class when
for popup menu actions that are to cascade. A cascading menu is itself another menu, really, containing actions just like the primary
menu does. So, to create a cascading menu action, you simply subclass this class and override the method
<samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseSubMenuAction.html#populateSubMenu(org.eclipse.jface.action.IMenuManager)">populateSubMenu</A></samp>, where
<samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseSubMenuAction.html#populateSubMenu(org.eclipse.jface.action.IMenuManager)">populateSubMenu</A></samp>, where
you add all the actions to show in this cascading menu. And yes, one or more of those can themselves be cascading. The RSE views will
automatically call the method <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseSubMenuAction.html#getSubMenu()">getSubMenu</A></samp> when populating the initial popup menu, but your own views will need to do this.</TD>
automatically call the method <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseSubMenuAction.html#getSubMenu()">getSubMenu</A></samp> when populating the initial popup menu, but your own views will need to do this.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseDialogAction.html">SystemBaseDialogAction</A></samp></TD>
<TD>This base action class extends <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp>, and is used when the action presents the
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseDialogAction.html">SystemBaseDialogAction</A></samp></TD>
<TD>This base action class extends <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp>, and is used when the action presents the
user with a dialog, preferably a dialog that extends the RSE
<samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</A></samp> class. To use this class, subclass it and override the methods </TD>
<samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</A></samp> class. To use this class, subclass it and override the methods </TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseWizardAction.html">SystemBaseWizardAction</A></samp></TD>
<TD>This base action class extends <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp>, and is used when the action presents the
user with a wizard, preferably a wizard that extends the RSE <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp> class.</TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseWizardAction.html">SystemBaseWizardAction</A></samp></TD>
<TD>This base action class extends <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseAction.html">SystemBaseAction</A></samp>, and is used when the action presents the
user with a wizard, preferably a wizard that extends the RSE <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp> class.</TD>
</TR>
</TBODY>
@ -79,9 +79,9 @@ in the plugin <samp>org.eclipse.rse.ui</samp>:</p>
<p>You may find some of the actions supplied by the RSE to be immediately re-usable in your own code, saving some
development and test effort.
All these actions can be found in package
<samp><A href="../../../org/eclipse/rse/ui/actions/package-summary.html">org.eclipse.rse.ui.actions</A></samp>.
<samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/package-summary.html">org.eclipse.rse.ui.actions</A></samp>.
Further, you can find many useful actions related to the selection of remote files or folders, in package
<samp><A href="../../../org/eclipse/rse/files/ui/actions/package-summary.html">org.eclipse.rse.files.ui.actions</A></samp>.
<samp><A href="../../../reference/api/org/eclipse/rse/files/ui/actions/package-summary.html">org.eclipse.rse.files.ui.actions</A></samp>.
</p>
<P><BR></P>

View file

@ -22,9 +22,9 @@
<i>modal</i>, meaning the rest of the application (in this case eclipse) is disabled while the dialog is showing.
Eclipse supplies a raw dialog class in SWT, as well as more robust dialog class in JFace. The RSE supplies its own
class,
<samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</A></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</A></samp>
in package
<samp><A href="../../../org/eclipse/rse/ui/dialogs/package-summary.html">org.eclipse.rse.ui.dialogs</A></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/package-summary.html">org.eclipse.rse.ui.dialogs</A></samp>
, that extends
the JFace dialog class and adds to it the following capabilities inherited by all classes which extend it:
</p>
@ -40,39 +40,39 @@ effort if your user interface is translated as the assignment of unique mnemonic
<li>Built-in support for a number of typical push buttons at the bottom of the dialog: OK, Cancel, Browse, Test, Add and
Details. You control via setters which buttons to show, and you can affect their label and tooltip text, although the
default labels and tips are already translated for you. To program what happens when pressed, override the appropriate
<samp>processXXX()</samp> method, such as <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#processOK()">processOK()</A></samp>. By default, you get OK and Cancel buttons.
<samp>processXXX()</samp> method, such as <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#processOK()">processOK()</A></samp>. By default, you get OK and Cancel buttons.
<li>Support for an optional built-in progress monitor at the bottom of the dialog, just like what eclipse offers for wizards.
<li>Support of a simple <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#wasCancelled()">wasCancelled()</A></samp> method to easily test if the dialog was cancelled or not.
<li>Support of a simple <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#wasCancelled()">wasCancelled()</A></samp> method to easily test if the dialog was cancelled or not.
<li>Support for methods to set an input object, and retrieving an output object, making it easy to pass in data and
get back data. Your calling code sets the input object, your subclass code sets the output object (typically in
its <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#processOK()">processOK()</A></samp> method) and your calling code gets the output object,
if <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#wasCancelled()">wasCancelled()</A></samp> returns false.
<li>Support of a <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setPageComplete(boolean)">setPageComplete(boolean)</A></samp> method, consistent with wizard pages, to enable/disable the OK button.
its <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#processOK()">processOK()</A></samp> method) and your calling code gets the output object,
if <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#wasCancelled()">wasCancelled()</A></samp> returns false.
<li>Support of a <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setPageComplete(boolean)">setPageComplete(boolean)</A></samp> method, consistent with wizard pages, to enable/disable the OK button.
This is typically called by your keystroke and button validators. That is, if an error is detected as input is entered, a message
is issued to the message line and the OK button is disabled.
<li>Support of a simple <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setHelp(java.lang.String)">setHelp(String helpId)</A></samp> method to set the dialog's popup help.
<li>Support of a simple <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setHelp(java.lang.String)">setHelp(String helpId)</A></samp> method to set the dialog's popup help.
<li>A simple way to toggle the cursor between busy and normal, using
<samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setBusyCursor(boolean)">setBusyCursor(boolean)</A></samp>
<li>Helper methods for adding <A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#addFillerLine(org.eclipse.swt.widgets.Composite, int)">filler lines</A>
and <A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#addSeparatorLine(org.eclipse.swt.widgets.Composite, int)">separator lines</A>.
<samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setBusyCursor(boolean)">setBusyCursor(boolean)</A></samp>
<li>Helper methods for adding <A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#addFillerLine(org.eclipse.swt.widgets.Composite, int)">filler lines</A>
and <A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#addSeparatorLine(org.eclipse.swt.widgets.Composite, int)">separator lines</A>.
</ul>
<p>To create your own dialog:</p>
<ol>
<li>Subclass <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</A></samp>, picking the appropriate constructor, the simplest
<li>Subclass <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</A></samp>, picking the appropriate constructor, the simplest
of which simply requires the shell of the parent window and the title string for this dialog.
<li>If buttons beyond OK and Cancel are desired, in your own constructor call the appropriate <samp>setShowXXXButton(true)</samp> methods to enable
these buttons, and override the appropriate <samp>processXXX()</samp> methods to process these buttons when pressed by the user.
<li>If a progress monitor is desired, in your own constructor call <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setNeedsProgressMonitor(boolean)">setNeedsProgressMonitor(true)</A></samp>. Later, to run
a long-running operation that displays the progress monitor, use <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#getProgressMonitor()">getProgressMonitor()</A></samp>.
<li>Override the <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#createInner(org.eclipse.swt.widgets.Composite)">createInner(Composite)</A></samp> method to populate the client area of the dialog with SWT widgets. Typically
<li>If a progress monitor is desired, in your own constructor call <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setNeedsProgressMonitor(boolean)">setNeedsProgressMonitor(true)</A></samp>. Later, to run
a long-running operation that displays the progress monitor, use <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#getProgressMonitor()">getProgressMonitor()</A></samp>.
<li>Override the <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#createInner(org.eclipse.swt.widgets.Composite)">createInner(Composite)</A></samp> method to populate the client area of the dialog with SWT widgets. Typically
you create your composite with a GridLayout layout, populate it, and return it. To ease this programming burden, use the many
static helper methods in <samp><A href="../../../org/eclipse/rse/ui/SystemWidgetHelpers.html">SystemWidgetHelpers</A></samp>.
<li>Override the <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#getInitialFocusControl()">getInitialFocusControl()</A></samp> method to supply the control to get initial focus when the dialog is displayed.
<li>Override the <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#processOK()">processOK()</A></samp> method to supply the processing for when OK is pressed. You typically first validate
static helper methods in <samp><A href="../../../reference/api/org/eclipse/rse/ui/SystemWidgetHelpers.html">SystemWidgetHelpers</A></samp>.
<li>Override the <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#getInitialFocusControl()">getInitialFocusControl()</A></samp> method to supply the control to get initial focus when the dialog is displayed.
<li>Override the <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#processOK()">processOK()</A></samp> method to supply the processing for when OK is pressed. You typically first validate
the user input, and then return true if there are no errors found.
<li>To allow the caller to get user-entered information out of the dialog, either supply getter methods,
or call <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setOutputObject(java.lang.Object)">setOuputObject(Object)</A></samp>
in your processOK logic so that your caller can code <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#getOutputObject()">getOutputObject()</A></samp>.
or call <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#setOutputObject(java.lang.Object)">setOuputObject(Object)</A></samp>
in your processOK logic so that your caller can code <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html#getOutputObject()">getOutputObject()</A></samp>.
</ol>
<P>One of the more difficult efforts in building a dialog with multiple entry fields, is the code to do the validation of those entry fields. A common strategy is to add modify listeners to the entry fields, and for each one validate the data as it typed. If the validation fails, a message is issued. If the validation succeeds, then the other fields on the dialog are validated. At the end of the validation, the OK button is enabled or disabled depending on the error message status, and whether the required information has been supplied. The RSE can help with this effort, somewhat, through the use of re-usable <A
href="../validators/uiValidatorsAPI.html">validators</A> for various types of input.<BR>
@ -81,11 +81,11 @@ Follow this <A href="dialogSample.html">link</A> for an example of a fully-forme
error checking.</P>
<p>Typically, after creating your dialog, you will create an action to invoke it. The RSE can help with this too, via the
supplied <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseDialogAction.html">SystemBaseDialogAction</A></samp> base class.
supplied <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseDialogAction.html">SystemBaseDialogAction</A></samp> base class.
<h2>Dialogs Pre-Supplied by RSE</h2>
<p>You may find some of the dialogs supplied by the RSE to be immediately re-usable in your own code, saving some
development and test effort. All these dialogs are in package <samp><A href="../../../org/eclipse/rse/ui/dialogs/package-summary.html">org.eclipse.rse.ui.dialogs</A></samp>:
development and test effort. All these dialogs are in package <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/package-summary.html">org.eclipse.rse.ui.dialogs</A></samp>:
</p>
@ -98,51 +98,51 @@ development and test effort. All these dialogs are in package <samp><A href="../
<TH>Action</TH>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemRenameDialog.html">SystemRenameDialog</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemRenameDialog.html">SystemRenameDialog</A></samp></TD>
<TD>Rename multiple items. Provides a table listing the old names and new names, which are editable. If your input objects
do not adapt to <samp><A href="../../../org/eclipse/rse/ui/view/ISystemViewElementAdapter.html">ISystemViewElementAdapter</A></samp>
or <samp><A href="../../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>,
you should call <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemRenameDialog.html#setNameValidator(org.eclipse.rse.ui.validators.ISystemValidator)">setNameValidator</A></samp> to specify a validator that ensures the new name is correct, and your
do not adapt to <samp><A href="../../../reference/api/org/eclipse/rse/ui/view/ISystemViewElementAdapter.html">ISystemViewElementAdapter</A></samp>
or <samp><A href="../../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>,
you should call <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemRenameDialog.html#setNameValidator(org.eclipse.rse.ui.validators.ISystemValidator)">setNameValidator</A></samp> to specify a validator that ensures the new name is correct, and your
input objects should also either be IResource objects or implement
<samp><A href="../../../org/eclipse/rse/ui/dialogs/ISystemTypedObject.html">ISystemTypedObject</A></samp>.
<samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/ISystemTypedObject.html">ISystemTypedObject</A></samp>.
</TD>
<TD align="center"><A href="renameManyDialog.gif">Sample image</A></TD>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemCommonRenameAction.html">SystemCommonRenameAction</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemCommonRenameAction.html">SystemCommonRenameAction</A></samp></TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemRenameSingleDialog.html">SystemRenameSingleDialog</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemRenameSingleDialog.html">SystemRenameSingleDialog</A></samp></TD>
<TD>Rename a single item. Provides a simple entry field for the new name. If your input object
does not adapt to <samp><A href="../../../org/eclipse/rse/ui/view/ISystemViewElementAdapter.html">ISystemViewElementAdapter</A></samp> or
<samp><A href="../../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>,
you should call <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemRenameSingleDialog.html#setNameValidator(org.eclipse.rse.ui.validators.ISystemValidator)">setNameValidator</A></samp> to specify a validator that ensures the new name is correct, and your
input object should also either be an IResource object or implement <samp><A href="../../../org/eclipse/rse/ui/dialogs/ISystemTypedObject.html">ISystemTypedObject</A></samp>.
does not adapt to <samp><A href="../../../reference/api/org/eclipse/rse/ui/view/ISystemViewElementAdapter.html">ISystemViewElementAdapter</A></samp> or
<samp><A href="../../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>,
you should call <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemRenameSingleDialog.html#setNameValidator(org.eclipse.rse.ui.validators.ISystemValidator)">setNameValidator</A></samp> to specify a validator that ensures the new name is correct, and your
input object should also either be an IResource object or implement <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/ISystemTypedObject.html">ISystemTypedObject</A></samp>.
</TD>
<TD align="center"><A href="renameOneDialog.gif">Sample image</A></TD>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemCommonRenameAction.html">SystemCommonRenameAction</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemCommonRenameAction.html">SystemCommonRenameAction</A></samp></TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemDeleteDialog.html">SystemDeleteDialog</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemDeleteDialog.html">SystemDeleteDialog</A></samp></TD>
<TD>Confirm delete of one or more items. Provides a table listing the names of input objects. If your input objects
do not adapt to <samp><A href="../../../org/eclipse/rse/ui/view/ISystemViewElementAdapter.html">ISystemViewElementAdapter</A></samp> or
<samp><A href="../../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>,
your input objects should either be IResource objects or implement <samp><A href="../../../org/eclipse/rse/ui/dialogs/ISystemTypedObject.html">ISystemTypedObject</A></samp>.
do not adapt to <samp><A href="../../../reference/api/org/eclipse/rse/ui/view/ISystemViewElementAdapter.html">ISystemViewElementAdapter</A></samp> or
<samp><A href="../../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>,
your input objects should either be IResource objects or implement <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/ISystemTypedObject.html">ISystemTypedObject</A></samp>.
</TD>
<TD align="center"><A href="deleteDialog.gif">Sample image</A></TD>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemCommonDeleteAction.html">SystemCommonDeleteAction</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemCommonDeleteAction.html">SystemCommonDeleteAction</A></samp></TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemSelectFileTypesDialog.html">SystemSelectFileTypesDialog</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemSelectFileTypesDialog.html">SystemSelectFileTypesDialog</A></samp></TD>
<TD>Presents a dialog listing all the file types defined in the eclipse File Associations preferences page, and
allows the user to select one or more of these types, or enter additional types not defined in eclipse.</TD>
<TD align="center"><A href="selectTypesDialog.gif">Sample image</A></TD>
<TD><samp><A href="../../../org/eclipse/rse/ui/actions/SystemSelectFileTypesAction.html">SystemSelectFileTypesAction</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemSelectFileTypesAction.html">SystemSelectFileTypesAction</A></samp></TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemSimpleSelectDialog.html">SystemSimpleSelectDialog</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemSimpleSelectDialog.html">SystemSimpleSelectDialog</A></samp></TD>
<TD>Eclipse has a CheckboxTreeViewer that is designed to allow the user to select multiple items from a hierarchical model.
This is a nice viewer, but very difficult to program to, as you have to handle reflecting the state of the selected children
for each parent node yourself. This dialog makes that trivial. The trick is to create wrappers of your model objects using
<samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemSimpleContentElement.html">SystemSimpleContentElement</A></samp>, maintaining the parent/child hierarchy, and pass the root element to the dialog. The rest is
<samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemSimpleContentElement.html">SystemSimpleContentElement</A></samp>, maintaining the parent/child hierarchy, and pass the root element to the dialog. The rest is
done for you, and the result is the selected state set for those elements selected by the user. Note this can also be used
as a simple flat list checkbox selection dialog, just by passing a non-visible root with a flat list of children.</TD>
<TD align="center"><A href="simpleSelectDialog.gif">Sample image</A></TD>
@ -152,11 +152,11 @@ development and test effort. All these dialogs are in package <samp><A href="../
</TBODY>
</TABLE>
<P><BR>While the dialogs can be instantiated directly, it is perhaps best to use them by instantiating their action class, and calling the run method on it.
The action classes are all in <samp><A href="../../../org/eclipse/rse/ui/actions/package-summary.html">org.eclipse.rse.ui.actions</A></samp> package.
The action classes are all in <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/package-summary.html">org.eclipse.rse.ui.actions</A></samp> package.
</P>
<P>In addition to these universal dialogs, there are dialogs specific to the Files subsystem supplied by IBM. These enable selection
of remote files or folders. They can be found in the <A href="../../../org/eclipse/rse/files/ui/dialogss/package-summary.html">
of remote files or folders. They can be found in the <A href="../../../reference/api/org/eclipse/rse/files/ui/dialogss/package-summary.html">
org.eclipse.rse.files.ui.dialogs</A> package.
</p>
<TABLE border="1">
@ -168,14 +168,14 @@ org.eclipse.rse.files.ui.dialogs</A> package.
<TH>Action</TH>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/files/ui/dialogs/SystemSelectRemoteFileOrFolderDialog.html">SystemSelectRemoteFileOrFolderDialog</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/files/ui/dialogs/SystemSelectRemoteFileOrFolderDialog.html">SystemSelectRemoteFileOrFolderDialog</A></samp></TD>
<TD>Allows users to select a remote file, or folder (configurable) using a dialog similar to what is used in Eclipse for local file or
folder selection. Can be configured to allow user to select from any existing connection, or to be scoped to a particular connection,
or even a particular folder in a particular connection.
</TD>
<TD align="center"><A href="browseFolderDialog.gif">Sample image</A></TD>
<TD><samp><A href="../../../org/eclipse/rse/files/ui/actions/SystemSelectRemoteFileAction.html">SystemSelectRemoteFileAction</A></samp> or
<samp><A href="../../../org/eclipse/rse/files/ui/actions/SystemSelectRemoteFolderAction.html">SystemSelectRemoteFolderAction</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/files/ui/actions/SystemSelectRemoteFileAction.html">SystemSelectRemoteFileAction</A></samp> or
<samp><A href="../../../reference/api/org/eclipse/rse/files/ui/actions/SystemSelectRemoteFolderAction.html">SystemSelectRemoteFolderAction</A></samp></TD>
</TR>
</TBODY>
</TABLE>

View file

@ -17,7 +17,7 @@ or want to use the common RSE log file.
<h2>Using Your Own Log File</h2>
<p>
The log file support is encapsulated in a separate plugin, <b><samp>org.eclipse.rse.logging</samp></b>, which
defines the primary <samp><A href="../../../org/eclipse/rse/logging/Logger.html">org.eclipse.rse.logging.Logger</a></samp> class that manages the log file.
defines the primary <samp><A href="../../../reference/api/org/eclipse/rse/logging/Logger.html">org.eclipse.rse.logging.Logger</a></samp> class that manages the log file.
This log file support offers the ability to log the following types of log messages:</p>
<ul>
<li><b>Error</b>. These are serious errors detected by your programming logic.

View file

@ -16,17 +16,17 @@ and encapsulates this concept into massagers which can be re-used. A few are pre
</p>
<h2>RSE Massager Interfaces</h2>
<p>The <samp><A href="../../../org/eclipse/rse/ui/ISystemMassager.html">ISystemMassager</A></samp> interface is in package
<samp><A href="../../../org/eclipse/rse/ui/package-summary.html">org.eclipse.rse.ui</A></samp>.
<p>The <samp><A href="../../../reference/api/org/eclipse/rse/ui/ISystemMassager.html">ISystemMassager</A></samp> interface is in package
<samp><A href="../../../reference/api/org/eclipse/rse/ui/package-summary.html">org.eclipse.rse.ui</A></samp>.
It is a very simple interface with one method:
<samp><A href="../../../org/eclipse/rse/ui/ISystemMassager.html#massage(java.lang.String)">public String massage(String text)</A></samp>.
<samp><A href="../../../reference/api/org/eclipse/rse/ui/ISystemMassager.html#massage(java.lang.String)">public String massage(String text)</A></samp>.
Given input text, return the massaged text. While simple, by encapsulating this operation into an interface,
you will be able to write re-usable dialogs that take a massager as input. Further, tricky massaging can be
built as a re-usable object.
</p>
<h2>RSE-Supplied Massagers</h2>
<p>The RSE supplies the following massagers in package <samp><A href="../../../org/eclipse/rse/ui/package-summary.html">org.eclipse.rse.ui</A></samp>:
<p>The RSE supplies the following massagers in package <samp><A href="../../../reference/api/org/eclipse/rse/ui/package-summary.html">org.eclipse.rse.ui</A></samp>:
</p>
<BR>
<TABLE border="1">
@ -36,15 +36,15 @@ built as a re-usable object.
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/MassagerFoldCase.html">MassagerFoldCase</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/MassagerFoldCase.html">MassagerFoldCase</A></samp></TD>
<TD>Simply folds the text to uppercase or lowercase</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/MassagerFoldCaseOutsideQuotes.html">MassagerFoldCaseOutsideQuotes</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/MassagerFoldCaseOutsideQuotes.html">MassagerFoldCaseOutsideQuotes</A></samp></TD>
<TD>Folds the text to uppercase or lowercase, except parts of the text that are surrounded by quotes or any given delimiter characters</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/MassagerFoldCaseUnlessQuoted.html">MassagerFoldCaseUnlessQuoted</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/MassagerFoldCaseUnlessQuoted.html">MassagerFoldCaseUnlessQuoted</A></samp></TD>
<TD>Folds the text to uppercase or lowercase, unless the whole text is surrounded by quotes or any given delimiter character</TD>
</TR>
</TBODY>

View file

@ -15,78 +15,78 @@ you use:
</p>
<ul>
<li>Static methods in the
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html"org.eclipse.rse.core.SystemBasePlugin</A></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html"org.eclipse.rse.core.SystemBasePlugin</A></samp>
class to load the message file and extract messages from it.
<li>Classes in the
<samp><A href="../../../org/eclipse/rse/ui/messages/package-summary.html">org.eclipse.rse.ui.messages</A></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/package-summary.html">org.eclipse.rse.ui.messages</A></samp>
package to do variable substitution, and display the messages to the user.
</ul>
<h2>Methods for Parsing the Message File</h2>
<p>Once you have defined your message file, you must update your plugin class to load it at startup time.
To do this, simply call the static method
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile</a></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile</a></samp>
in the RSE-supplied <samp><a href="../plugin/uiPluginAPI.html">SystemBasePlugin</a></samp> class.
<BR>
<BR>
After the message file is loaded into memory, you can extract messages from it by calling the static method
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.ui.messages.SystemMessageFile, java.lang.String)">getMessage</a></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.ui.messages.SystemMessageFile, java.lang.String)">getMessage</a></samp>
from the same <samp><a href="../plugin/uiPluginAPI.html">SystemBasePlugin</a></samp> class.
</p>
<h2>Classes for Displaying Messages</h2>
<p>The following classes are all defined in the <samp><A href="../../../org/eclipse/rse/ui/messages/package-summary.html">org.eclipse.rse.ui.messages</a></samp> package. </p>
<p>The following classes are all defined in the <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/package-summary.html">org.eclipse.rse.ui.messages</a></samp> package. </p>
<h3><A name="SystemMessageFile"></A>The <samp>SystemMessageFile</samp> Class</h3>
<p>The <samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile</a></samp> method in <samp>SystemBasePlugin</samp>, returns an instance of
<samp><A href="../../../org/eclipse/rse/ui/messages/SystemMessageFile.html">SystemMessageFile</a></samp>,
<p>The <samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile</a></samp> method in <samp>SystemBasePlugin</samp>, returns an instance of
<samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessageFile.html">SystemMessageFile</a></samp>,
representing the parsed message file. It is methods in this which return individual messages.
<h3><A name="SystemMessage"></A>The <samp>SystemMessage</samp> Class</h3>
The <samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.ui.messages.SystemMessageFile, java.lang.String)">getMessage</a></samp> method in <samp>SystemBasePlugin</samp> returns an instance of
<samp><A href="../../../org/eclipse/rse/ui/messages/SystemMessage.html">SystemMessage</a></samp>,
The <samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.ui.messages.SystemMessageFile, java.lang.String)">getMessage</a></samp> method in <samp>SystemBasePlugin</samp> returns an instance of
<samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessage.html">SystemMessage</a></samp>,
representing an individual message from the message file.
</p>
<p>To do message <i>variable substitution</i>, call the appropriate overload of the <samp>makeSubstitution</samp> method in
the <A href="../../../org/eclipse/rse/ui/messages/SystemMessage.html">message</A> object, passing as many parameters as there are unique substitution variables in the message.
the <A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessage.html">message</A> object, passing as many parameters as there are unique substitution variables in the message.
</p>
<p>To get the first level message text, call <samp><A href="../../../org/eclipse/rse/ui/messages/SystemMessage.html#getLevelOneText()">getLevelOneText</a></samp> on the message object. To get
the second level help, call <samp><A href="../../../org/eclipse/rse/ui/messages/SystemMessage.html#getLevelTwoText()">getLevelTwoText</a></samp>.
<p>To get the first level message text, call <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessage.html#getLevelOneText()">getLevelOneText</a></samp> on the message object. To get
the second level help, call <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessage.html#getLevelTwoText()">getLevelTwoText</a></samp>.
</p>
<h3><A name="SystemMessageDialog"></A>The <samp>SystemMessageDialog</samp> Class</h3>
<p>To display a message in a dialog, instantiate <samp><A href="../../../org/eclipse/rse/ui/messages/SystemMessageDialog.html">SystemMessageDialog</a></samp>, passing
in a parent shell and the message object, and then call the appropriate <samp><A href="../../../org/eclipse/rse/ui/messages/SystemMessageDialog.html#open()">open</a></samp> method in the dialog object. Here is what the message
<p>To display a message in a dialog, instantiate <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessageDialog.html">SystemMessageDialog</a></samp>, passing
in a parent shell and the message object, and then call the appropriate <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/SystemMessageDialog.html#open()">open</a></samp> method in the dialog object. Here is what the message
dialog looks like, for a message of type Error (the type dictates the error icon):
</p>
<P><IMG border="0" src="msgDialog.gif" width="457" height="190"></P>
<h3><A name="ISystemMessageLine"></A>The <samp>ISystemMessageLine</samp> Interface</h3>
<p>If you are extending the RSE class <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</a></samp> for dialogs,
or <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</a></samp> for wizard pages
or <samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemBasePropertyPage.html">SystemBasePropertyPage</a></samp> for property pages, you can display the message to the
user by calling the <samp><A href="../../../org/eclipse/rse/ui/messages/ISystemMessageLine.html#setErrorMessage(org.eclipse.rse.ui.messages.SystemMessage)">setErrorMessage</a></samp> method all these classes support. These classes all implement
the interface <b><samp><A href="../../../org/eclipse/rse/ui/messages/ISystemMessageLine.html">ISystemMessageLine</a></samp></b>, which also includes the method <samp>clearErrorMessage</samp>. For non-error
messages, use <samp><A href="../../../org/eclipse/rse/ui/messages/ISystemMessageLine.html#setMessage(org.eclipse.rse.ui.messages.SystemMessage)">setMessage</a></samp>
and <samp><A href="../../../org/eclipse/rse/ui/messages/ISystemMessageLine.html#clearMessage()">clearMessage</a></samp>.</p>
<p>If you are extending the RSE class <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</a></samp> for dialogs,
or <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</a></samp> for wizard pages
or <samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemBasePropertyPage.html">SystemBasePropertyPage</a></samp> for property pages, you can display the message to the
user by calling the <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/ISystemMessageLine.html#setErrorMessage(org.eclipse.rse.ui.messages.SystemMessage)">setErrorMessage</a></samp> method all these classes support. These classes all implement
the interface <b><samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/ISystemMessageLine.html">ISystemMessageLine</a></samp></b>, which also includes the method <samp>clearErrorMessage</samp>. For non-error
messages, use <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/ISystemMessageLine.html#setMessage(org.eclipse.rse.ui.messages.SystemMessage)">setMessage</a></samp>
and <samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/ISystemMessageLine.html#clearMessage()">clearMessage</a></samp>.</p>
<p>
Here is what a system message issued in a <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</a></samp> dialog looks like:</p>
Here is what a system message issued in a <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemPromptDialog.html">SystemPromptDialog</a></samp> dialog looks like:</p>
<P><IMG border="0" src="msgLine_dialog.gif" width="264" height="125"></P>
<p>The user can select the question mark icon on the right to see the full message dialog, and hence access the second level help for the message.
<p>Here is what a system message issued in an <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</a></samp> looks like:</p>
<p>Here is what a system message issued in an <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</a></samp> looks like:</p>
<P><IMG border="0" src="msgLine_wizard.gif" width="439" height="98"></P>
<p>If the user clicks the mouse on the message or icon, they will see the full message dialog for the message.</p>
<p>Here is what a system message issued in a <samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemBasePropertyPage.html">SystemBasePropertyPage</a></samp> looks like:</p>
<p>Here is what a system message issued in a <samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemBasePropertyPage.html">SystemBasePropertyPage</a></samp> looks like:</p>
<P><IMG border="0" src="msgLine_properties.gif" width="491" height="75"></P>
<p>Again, if the user clicks the mouse on the message or icon, they will see the full message dialog for the message.</p>
<h2>Classes for Displaying Message Exceptions</h2>
<p>The following class is defined in the <samp><A href="../../../org/eclipse/rse/services/clientserver/messages/package-summary.html">org.eclipse.rse.services.clientserver.messages</a></samp> package.
<p>The following class is defined in the <samp><A href="../../../reference/api/org/eclipse/rse/services/clientserver/messages/package-summary.html">org.eclipse.rse.services.clientserver.messages</a></samp> package.
<h3>The <samp>SystemMessageDialog</samp> Class</h3>
<p>Many of the RSE APIs throw <samp><A href="../../../org/eclipse/rse/services/clientserver/messages/SystemMessageException.html">org.eclipse.rse.services.clientserver.messages.SystemMessageException</a></samp>, which
encapsulates a system message object. To get the encapsulated message, call <samp><A href="../../../org/eclipse/rse/services/clientserver/messages/SystemMessageException.html#getSystemMessage()">getSystemMessage()</a></samp>.
To display the message in an RSE message dialog box, simply call <samp><A href="../../../org/eclipse/rse/services/clientserver/messages/SystemMessageException.html#displayMessage()">displayMessage()</a></samp> on the exception object.
<p>Many of the RSE APIs throw <samp><A href="../../../reference/api/org/eclipse/rse/services/clientserver/messages/SystemMessageException.html">org.eclipse.rse.services.clientserver.messages.SystemMessageException</a></samp>, which
encapsulates a system message object. To get the encapsulated message, call <samp><A href="../../../reference/api/org/eclipse/rse/services/clientserver/messages/SystemMessageException.html#getSystemMessage()">getSystemMessage()</a></samp>.
To display the message in an RSE message dialog box, simply call <samp><A href="../../../reference/api/org/eclipse/rse/services/clientserver/messages/SystemMessageException.html#displayMessage()">displayMessage()</a></samp> on the exception object.
To get the first-level text, call <samp>getMessage()</samp>, or <samp>getSystemMessage().getLevelOneText()</samp>
</p>

View file

@ -11,13 +11,13 @@
<body bgcolor="#ffffff">
<h1>RSE Model API</h1>
<p>The front door to accessing the elements of the RSE model is the
<A href="../../org/eclipse/rse/model/SystemRegistry.html">SystemRegistry</A>, which is a
singleton object accessible via <A href="../../org/eclipse/rse/model/SystemStartHere.html#getSystemRegistry()">SystemStartHere.getSystemRegistry()</A>.
<A href="../../reference/api/org/eclipse/rse/model/SystemRegistry.html">SystemRegistry</A>, which is a
singleton object accessible via <A href="../../reference/api/org/eclipse/rse/model/SystemStartHere.html#getSystemRegistry()">SystemStartHere.getSystemRegistry()</A>.
</p>
<p>The system registry will get you access to profiles, connections and subsystem factories.
From a <A href="../../org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html">subsystem configuration</A> you can access subsystems, filter pools,
From a <A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html">subsystem configuration</A> you can access subsystems, filter pools,
user actions and compile commands.
From <A href="../../org/eclipse/rse/core/subsystems/ISubSystem.html">ISubSystem</A> you can access remote resources, as well
From <A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html">ISubSystem</A> you can access remote resources, as well
as filter pools referenced by the subsystem.
</p>
</body>

View file

@ -16,26 +16,26 @@ of using this as your base class is the inherited methods you can access.
</p>
<h2>Methods required in your plugin subclass</h2>
<p>To use the RSE base plugin class
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html">org.eclipse.rse.core.SystemBasePlugin</A></samp>,
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html">org.eclipse.rse.core.SystemBasePlugin</A></samp>,
you subclass it for your own plugin class, and supply some key static methods of your own:
</p>
<ul>
<li><samp>getDefault()</samp>. Return a singleton instance of your plugin.
<li><samp>getResourceBundle()</samp>. Return the resource bundle for your plugin. This is stored in
a static field, initialized in your constructor by calling the <samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadResourceBundle(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadResourceBundle(...)</A></samp> inherited method.
a static field, initialized in your constructor by calling the <samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadResourceBundle(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadResourceBundle(...)</A></samp> inherited method.
<li><samp>getString(String key)</samp>. Return a translated string by calling the inherited method
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getString(java.util.ResourceBundle, java.lang.String)">getString(ResourceBundle rb, String key)</A></samp>, passing in the static resource bundle field.
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getString(java.util.ResourceBundle, java.lang.String)">getString(ResourceBundle rb, String key)</A></samp>, passing in the static resource bundle field.
<li><samp>getPluginMessageFile()</samp>. Return your RSE message file instance, initialized in your
constructor by calling <samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile(...)</A></samp>.
constructor by calling <samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile(...)</A></samp>.
<li><samp>getPluginMessage(String msgID)</samp>. Return the
<samp><A href="../../../org/eclipse/rse/services/clientserver/messages/SystemMessage.html">SystemMessage</A></samp> for the given ID, by
<samp><A href="../../../reference/api/org/eclipse/rse/services/clientserver/messages/SystemMessage.html">SystemMessage</A></samp> for the given ID, by
calling the inherited method
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.services.clientserver.messages.SystemMessageFile, java.lang.String)">getMessage(getPluginMessageFile(), msgId)</a></samp>. You will call this method often to get message objects.
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.services.clientserver.messages.SystemMessageFile, java.lang.String)">getMessage(getPluginMessageFile(), msgId)</a></samp>. You will call this method often to get message objects.
</ul>
<p>You may also override some RSE-supplied instance methods:
<ul>
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#initializeImageRegistry()">initializeImageRegistry()</A></samp>. Call
<samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#putImageInRegistry(java.lang.String, java.lang.String)">putImageInRegistry(String id, String imageFileName)</A></samp>
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#initializeImageRegistry()">initializeImageRegistry()</A></samp>. Call
<samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#putImageInRegistry(java.lang.String, java.lang.String)">putImageInRegistry(String id, String imageFileName)</A></samp>
to load each of your images.
</ul>
</p>
@ -50,31 +50,31 @@ to load each of your images.
<h2>Methods inherited from the RSE base class</h2>
<p>The methods you get access to by using the RSE-supplied base plugin class include:</p>
<ul>
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getPluginId()">getPluginId()</A></samp>. Return this plugin's ID.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getActiveWorkbenchShell()">getActiveWorkbenchShell()</A></samp>. Return the shell of the active workbench window.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getActiveWorkbenchWindow()">getActiveWorkbenchWindow()</A></samp>. Return the active workbench window.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getWorkspaceRoot()">getWorkspaceRoot()</A></samp>. Return the root of the workspace.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getWorkspace()">getWorkspace()</A></samp>. Return the workspace root.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getInstallLocation()">getInstallLocation()</A></samp>. Return the install directory for this plugin.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getIconPath()">getIconPath()</A></samp>. Return the typical path for icons, relative to the plugin's folder: "icons"
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#putImageInRegistry(java.lang.String, java.lang.String)">putImageInRegistry(String id, String fileName)</A></samp>. Load an image in the image registry, given the ID to retrieve it with, and its filename and path relative to this plugin's folder
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getImage(java.lang.String)">getImage(String id)</A></samp>. Return an Image given the ID with which it was registered in putImageInRegistry.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getImageDescriptor(java.lang.String)">getImageDescriptor(String id)</A></samp>. Return an ImageDescriptor given the ID with which it was registered in putImageInRegistry.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadResourceBundle(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadResourceBundle(IPluginDescriptor descriptor, String fileName)</A></samp>. Load a resource bundle, given its file name, relative to the given plugin's installation folder.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadResourceBundle(java.lang.String)">loadResourceBundle(String fileName)</A></samp>. Load a resource bundle, given its file name, relative to this plugin's installation folder.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getString(java.util.ResourceBundle, java.lang.String)">getString(ResourceBundle rb, String id)</A></samp>. Return a translated string from a resource bundle, given its key ID.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getString(java.util.ResourceBundle, java.lang.String, java.lang.String)">getString(ResourceBundle rb, String id, String default)</A></samp>. Return a translated string from a resource bundle, given its key ID. If key not found in the resource bundle, returns the given default string.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile(IPluginDescriptor descriptor,String fileName)</A></samp>. Parse an RSE-style message file into memory, given the plugin and message file name.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.services.clientserver.messages.SystemMessageFile, java.lang.String)">getMessage(SystemMessageFile msgFile, String msgId)</A></samp>. Retrieve a SystemMessage object, given the message file that contains it, and its message ID including component and subcomponent abbreviations.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#scanForDuplicateMessages(org.eclipse.rse.services.clientserver.messages.SystemMessageFile)">scanForDuplicateMessages(SystemMessageFile msgFile)</A></samp>. Scan given message file for duplicate IDs. Typically only called during the development cycle.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#printMessages(org.eclipse.rse.services.clientserver.messages.SystemMessageFile, java.lang.String)">printMessages(SystemMessageFile msgFile, String fullyQualifiedTargetFile)</A></samp>. Generate an HTML file documenting the messages in the given message file, given the fully qualified name of the target HTML file.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#showProgrammerErrorMessage(java.lang.String)">showProgrammerErrorMessage(String msg)</A></samp>. Show a message to the user, when the message file support is not available.
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#logInfo(java.lang.String)">logInfo(String message)</A></samp>. Log an informational message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#logWarning(java.lang.String)">logWarning(String message)</A></samp>. Log a warning message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#logError(java.lang.String)">logError(String message)</A></samp>. Log an error message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#logError(java.lang.String, java.lang.Throwable)">logError(String message, Throwable exception)</A></samp>. Log an error message resulting from an exception to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#logDebugMessage(java.lang.String, java.lang.String)">logDebugMessage(String prefix, String message)</A></samp>. Log a debug (trace) message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../org/eclipse/rse/core/SystemBasePlugin.html#getLogger()">getLogger()</A></samp>.Return the Logger instance for the RSE default logging file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getPluginId()">getPluginId()</A></samp>. Return this plugin's ID.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getActiveWorkbenchShell()">getActiveWorkbenchShell()</A></samp>. Return the shell of the active workbench window.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getActiveWorkbenchWindow()">getActiveWorkbenchWindow()</A></samp>. Return the active workbench window.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getWorkspaceRoot()">getWorkspaceRoot()</A></samp>. Return the root of the workspace.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getWorkspace()">getWorkspace()</A></samp>. Return the workspace root.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getInstallLocation()">getInstallLocation()</A></samp>. Return the install directory for this plugin.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getIconPath()">getIconPath()</A></samp>. Return the typical path for icons, relative to the plugin's folder: "icons"
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#putImageInRegistry(java.lang.String, java.lang.String)">putImageInRegistry(String id, String fileName)</A></samp>. Load an image in the image registry, given the ID to retrieve it with, and its filename and path relative to this plugin's folder
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getImage(java.lang.String)">getImage(String id)</A></samp>. Return an Image given the ID with which it was registered in putImageInRegistry.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getImageDescriptor(java.lang.String)">getImageDescriptor(String id)</A></samp>. Return an ImageDescriptor given the ID with which it was registered in putImageInRegistry.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadResourceBundle(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadResourceBundle(IPluginDescriptor descriptor, String fileName)</A></samp>. Load a resource bundle, given its file name, relative to the given plugin's installation folder.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadResourceBundle(java.lang.String)">loadResourceBundle(String fileName)</A></samp>. Load a resource bundle, given its file name, relative to this plugin's installation folder.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getString(java.util.ResourceBundle, java.lang.String)">getString(ResourceBundle rb, String id)</A></samp>. Return a translated string from a resource bundle, given its key ID.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getString(java.util.ResourceBundle, java.lang.String, java.lang.String)">getString(ResourceBundle rb, String id, String default)</A></samp>. Return a translated string from a resource bundle, given its key ID. If key not found in the resource bundle, returns the given default string.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#loadMessageFile(org.eclipse.core.runtime.IPluginDescriptor, java.lang.String)">loadMessageFile(IPluginDescriptor descriptor,String fileName)</A></samp>. Parse an RSE-style message file into memory, given the plugin and message file name.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getMessage(org.eclipse.rse.services.clientserver.messages.SystemMessageFile, java.lang.String)">getMessage(SystemMessageFile msgFile, String msgId)</A></samp>. Retrieve a SystemMessage object, given the message file that contains it, and its message ID including component and subcomponent abbreviations.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#scanForDuplicateMessages(org.eclipse.rse.services.clientserver.messages.SystemMessageFile)">scanForDuplicateMessages(SystemMessageFile msgFile)</A></samp>. Scan given message file for duplicate IDs. Typically only called during the development cycle.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#printMessages(org.eclipse.rse.services.clientserver.messages.SystemMessageFile, java.lang.String)">printMessages(SystemMessageFile msgFile, String fullyQualifiedTargetFile)</A></samp>. Generate an HTML file documenting the messages in the given message file, given the fully qualified name of the target HTML file.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#showProgrammerErrorMessage(java.lang.String)">showProgrammerErrorMessage(String msg)</A></samp>. Show a message to the user, when the message file support is not available.
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#logInfo(java.lang.String)">logInfo(String message)</A></samp>. Log an informational message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#logWarning(java.lang.String)">logWarning(String message)</A></samp>. Log a warning message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#logError(java.lang.String)">logError(String message)</A></samp>. Log an error message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#logError(java.lang.String, java.lang.Throwable)">logError(String message, Throwable exception)</A></samp>. Log an error message resulting from an exception to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#logDebugMessage(java.lang.String, java.lang.String)">logDebugMessage(String prefix, String message)</A></samp>. Log a debug (trace) message to the RSE's core log file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
<li><samp><A href="../../../reference/api/org/eclipse/rse/core/SystemBasePlugin.html#getLogger()">getLogger()</A></samp>.Return the Logger instance for the RSE default logging file (<samp>.....\.metadata\.plugins\org.eclipse.rse.core\.log</samp>).
</ul>
</body>
</html>

View file

@ -36,16 +36,16 @@ the getters and setters in <samp>org.eclipse.rse.core.SystemPreferencesManager</
</p>
<p>The RSE supplies a few field editors, complementing what JFace supplies
in <samp>org.eclipse.jface.preference</samp>. The RSE-supplied field editors, and the
RSE-supplied preferences pages, are all found in package <samp><A href="../../../org/eclipse/rse/ui/propertypages/package-summary.html">org.eclipse.rse.ui.propertypages</A></samp>:
RSE-supplied preferences pages, are all found in package <samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/package-summary.html">org.eclipse.rse.ui.propertypages</A></samp>:
</p>
<ul>
<li><b><samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemBooleanFieldEditor.html">SystemBooleanFieldEditor</A></samp></b>. Extends <samp>BooleanFieldEditor</samp> to add support for tooltip text.
<li><b><samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemBooleanFieldEditor.html">SystemBooleanFieldEditor</A></samp></b>. Extends <samp>BooleanFieldEditor</samp> to add support for tooltip text.
<p><IMG border="0" src="fldEditor_checkBox.gif"></p>
<li><b><samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemComboBoxFieldEditor.html">SystemComboBoxFieldEditor</A></samp></b>. Shows a combo box allowing the user to choose from a finite list of discrete possibilities.
<li><b><samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemComboBoxFieldEditor.html">SystemComboBoxFieldEditor</A></samp></b>. Shows a combo box allowing the user to choose from a finite list of discrete possibilities.
<p><IMG border="0" src="fldEditor_comboBox.gif"></p>
<li><b><samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemKeyValueFieldEditor.html">SystemKeyValueFieldEditor</A></samp></b>. Shows a list of hard-coded keys, each of which supports a user-specifiable value.
<li><b><samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemKeyValueFieldEditor.html">SystemKeyValueFieldEditor</A></samp></b>. Shows a list of hard-coded keys, each of which supports a user-specifiable value.
<p><IMG border="0" src="fldEditor_keyValue.gif"></p>
<li><b><samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemStringFieldEditor.html">SystemStringFieldEditor</A></samp></b>. For simple string preferences. Unlike the JFace string editor, this supports tooltip text and RSE validators and massagers on the typed text.
<li><b><samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemStringFieldEditor.html">SystemStringFieldEditor</A></samp></b>. For simple string preferences. Unlike the JFace string editor, this supports tooltip text and RSE validators and massagers on the typed text.
<p><IMG border="0" src="fldEditor_string.gif"></p>
</ul>
<P><BR></P>

View file

@ -16,7 +16,7 @@ of value.
<h2>RSE-Supplied Base Class for Property Pages</h2>
<p>The RSE supplies a base class for property pages,
<samp><A href="../../../org/eclipse/rse/ui/propertypages/SystemBasePropertyPage.html">org.eclipse.rse.ui.propertypages.SystemBasePropertyPage</A></samp>,
<samp><A href="../../../reference/api/org/eclipse/rse/ui/propertypages/SystemBasePropertyPage.html">org.eclipse.rse.ui.propertypages.SystemBasePropertyPage</A></samp>,
that extends the base eclipse property page <samp>org.eclipse.ui.dialogs.PropertyPage</samp>. The advantages
of using this RSE-supplied class are:
</p>
@ -42,23 +42,23 @@ point, you need to know the class or, preferably, interface that the objects imp
</TR>
<TR>
<TD>Profile</TD>
<TD><samp><A href="../../../org/eclipse/rse/model/ISystemProfile.html">org.eclipse.rse.model.ISystemProfile</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/model/ISystemProfile.html">org.eclipse.rse.model.ISystemProfile</A></samp></TD>
</TR>
<TR>
<TD>Host</TD>
<TD><samp><A href="../../../org/eclipse/rse/model/IHost.html">org.eclipse.rse.model.IHost</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/model/IHost.html">org.eclipse.rse.model.IHost</A></samp></TD>
</TR>
<TR>
<TD>Subsystem</TD>
<TD><samp><A href="../../../org/eclipse/rse/core/subsystems/ISubSystem.html">org.eclipse.rse.core.subsystems.ISubSystem</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html">org.eclipse.rse.core.subsystems.ISubSystem</A></samp></TD>
</TR>
<TR>
<TD>Filter pool reference</TD>
<TD><samp><A href="../../../org/eclipse/rse/filters/ISystemFilterPoolReference.html">org.eclipse.rse.filters.ISystemFilterPoolReference</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/filters/ISystemFilterPoolReference.html">org.eclipse.rse.filters.ISystemFilterPoolReference</A></samp></TD>
</TR>
<TR>
<TD>Filter reference</TD>
<TD><samp><A href="../../../org/eclipse/rse/filters/ISystemFilterReference.html">org.eclipse.rse.filters.ISystemFilterReference</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/filters/ISystemFilterReference.html">org.eclipse.rse.filters.ISystemFilterReference</A></samp></TD>
</TR>
</TBODY>
</TABLE>

View file

@ -16,16 +16,16 @@ all system types ("universally").
<p>
To programmatically access the files in a remote system
identified by a particular system connection, use the
<A href="../../org/eclipse/rse/model/ISystemRegistry.html">system registry</A> to get to the
<A href="../../org/eclipse/rse/model/ISystemRegistry.html#getSubSystemsBySubSystemConfigurationCategory(String, org.eclipse.rse.model.IHost)">file subsystem</A>
for that connection, by passing in the file category as a String. This <A href="../../org/eclipse/rse/subsystems/files/core/subsystems/IRemoteFileSubSystem.html">file subsystem</A> offers methods for accessing the remote files.
<A href="../../reference/api/org/eclipse/rse/model/ISystemRegistry.html">system registry</A> to get to the
<A href="../../reference/api/org/eclipse/rse/model/ISystemRegistry.html#getSubSystemsBySubSystemConfigurationCategory(String, org.eclipse.rse.model.IHost)">file subsystem</A>
for that connection, by passing in the file category as a String. This <A href="../../reference/api/org/eclipse/rse/subsystems/files/core/subsystems/IRemoteFileSubSystem.html">file subsystem</A> offers methods for accessing the remote files.
</p>
<p>
Similarly, to programmatically run commands in a remote system
identified by a particular system connection, use the
<A href="../../org/eclipse/rse/model/ISystemRegistry.html">system registry</A> to get to the
<A href="../../org/eclipse/rse/model/ISystemRegistry.html#getSubSystemsBySubSystemConfigurationCategory(String, org.eclipse.rse.model.IHost)">command subsystem</A>
for that connection, by passing in the command category as a String. This <A href="../../org/eclipse/rse/subsystems/shells/core/subsystems/IRemoteCmdSubSystem.html">command subsystem</A> offers methods for running remote commands,
<A href="../../reference/api/org/eclipse/rse/model/ISystemRegistry.html">system registry</A> to get to the
<A href="../../reference/api/org/eclipse/rse/model/ISystemRegistry.html#getSubSystemsBySubSystemConfigurationCategory(String, org.eclipse.rse.model.IHost)">command subsystem</A>
for that connection, by passing in the command category as a String. This <A href="../../reference/api/org/eclipse/rse/subsystems/shells/core/subsystems/IRemoteCmdSubSystem.html">command subsystem</A> offers methods for running remote commands,
either in a new command shell or an existing command shell. You can also set environment variables
using this subsytem object.
</p>

View file

@ -117,9 +117,9 @@ together with the RSE dialog and wizard support.
<p>Often we want to refresh the contents of the Remote Systems view or Table view from within our actions, to visualize
changes to the selected resources. To do this, use the
<samp><A href="../../org/eclipse/rse/model/ISystemRegistry.html#fireRemoteResourceChangeEvent(int, java.lang.Object, java.lang.Object, org.eclipse.rse.core.subsystems.ISubSystem, java.lang.String, org.eclipse.jface.viewers.Viewer)">method</a></samp>.
<samp><A href="../../reference/api/org/eclipse/rse/model/ISystemRegistry.html#fireRemoteResourceChangeEvent(int, java.lang.Object, java.lang.Object, org.eclipse.rse.core.subsystems.ISubSystem, java.lang.String, org.eclipse.jface.viewers.Viewer)">method</a></samp>.
To get the system registry, use the
<samp><A href="../../org/eclipse/rse/model/SystemStartHere.html#getSystemRegistry()">method</a></samp>.
<samp><A href="../../reference/api/org/eclipse/rse/model/SystemStartHere.html#getSystemRegistry()">method</a></samp>.
</body>
</html>

View file

@ -20,10 +20,10 @@ supplied to enhance re-use, such as the maximum length, which can be used to set
</p>
<h2>RSE Validator Interfaces</h2>
<p>All RSE validator interfaces and classes are in package <samp><A href="../../../org/eclipse/rse/ui/validators/package-summary.html">org.eclipse.rse.ui.validators</A></samp>.
<p>All RSE validator interfaces and classes are in package <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/package-summary.html">org.eclipse.rse.ui.validators</A></samp>.
<h3>ISystemValidator Interface</h3>
<p>The primary validator interface is <samp><A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html">ISystemValidator</A></samp>, which is extends <samp>org.eclipse.jface.dialogs.IInputValidator</samp>
<p>The primary validator interface is <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html">ISystemValidator</A></samp>, which is extends <samp>org.eclipse.jface.dialogs.IInputValidator</samp>
and <samp>org.eclipse.jface.viewers.ICellEditorValidator</samp>. Both parent interfaces define an <samp>isValid</samp> method,
but the former takes a String while the latter takes an Object. They both return a String which is the error message if an
error was detected, or null if no error detected. The <samp>ISystemValidator</samp> interface adds the following additional methods:
@ -36,17 +36,17 @@ error was detected, or null if no error detected. The <samp>ISystemValidator</sa
<TH>Description</TH>
</TR>
<TR>
<TD><samp>public int <A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html#getMaximumNameLength()">getMaximumNameLength()</A></samp></TD>
<TD><samp>public int <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html#getMaximumNameLength()">getMaximumNameLength()</A></samp></TD>
<TD>Returns the maximum length allowed for this text. Can be used to set text limit of text widgets.</TD>
</TR>
<TR>
<TD><samp>public SystemMessage <A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html#getSystemMessage()">getSystemMessage()</A></samp></TD>
<TD><samp>public SystemMessage <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html#getSystemMessage()">getSystemMessage()</A></samp></TD>
<TD>If <samp>isValid</samp> returns false, this returns a <samp>SystemMessage</samp> object that offers richer message support than just a string.
Return null if you don't support <samp><A href="../messages/uiMessageAPI.html">SystemMessages</A></samp>.
Callers don't need to use this if they use <samp><A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html#validate(java.lang.String)">validate(String)</A></samp> instead of <samp>isValid(String)</samp>.</TD>
Callers don't need to use this if they use <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html#validate(java.lang.String)">validate(String)</A></samp> instead of <samp>isValid(String)</samp>.</TD>
</TR>
<TR>
<TD><samp>public SystemMessage <A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html#validate(java.lang.String)">validate(String text)</A></samp></TD>
<TD><samp>public SystemMessage <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html#validate(java.lang.String)">validate(String text)</A></samp></TD>
<TD>An alternative to <samp>isValid</samp> if your validator does support <samp>SystemMessage</samp> objects versus simple strings for error messages.</TD>
</TR>
</TBODY>
@ -54,7 +54,7 @@ error was detected, or null if no error detected. The <samp>ISystemValidator</sa
<h3>ISystemValidatorUniqueString Interface</h3>
<p>Often our validation requires checking that the given text is unique, in some given list of existing things, like names say. To facilitate
this, there is an interface <samp><A href="../../../org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html">ISystemValidatorUniqueString</A></samp>, which extends <samp>ISystemValidator</samp> and adds some additional
this, there is an interface <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html">ISystemValidatorUniqueString</A></samp>, which extends <samp>ISystemValidator</samp> and adds some additional
methods required for uniqueness validation:
</p>
@ -65,31 +65,31 @@ methods required for uniqueness validation:
<TH>Description</TH>
</TR>
<TR>
<TD><samp>public void <A href="../../../org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#setCaseSensitive(boolean)">setCaseSensitive(boolean caseSensitive)</A></samp></TD>
<TD><samp>public void <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#setCaseSensitive(boolean)">setCaseSensitive(boolean caseSensitive)</A></samp></TD>
<TD>Specifies whether the test for an existing string should consider case or not.</TD>
</TR>
<TR>
<TD><samp>public void <A href="../../../org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#setExistingNamesList(java.lang.String[])">setExistingNamesList(String[] existingList)</A></samp></TD>
<TD><samp>public void <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#setExistingNamesList(java.lang.String[])">setExistingNamesList(String[] existingList)</A></samp></TD>
<TD>Sets the existing list to test against, as an array.</TD>
</TR>
<TR>
<TD><samp>public void <A href="../../../org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#setExistingNamesList(java.util.Vector)">setExistingNamesList(Vector existingList)</A></samp></TD>
<TD><samp>public void <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#setExistingNamesList(java.util.Vector)">setExistingNamesList(Vector existingList)</A></samp></TD>
<TD>Sets the existing list to test against, as a vector of Strings.</TD>
</TR>
<TR>
<TD><samp>public String[] <A href="../../../org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#getExistingNamesList()">getExistingNamesList()</A></samp></TD>
<TD><samp>public String[] <A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidatorUniqueString.html#getExistingNamesList()">getExistingNamesList()</A></samp></TD>
<TD>Returns the existing list that is used to test against.</TD>
</TR>
</TBODY>
</TABLE>
<p>If you desire to create a unique string validator, you probably will start by subclassing <samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUniqueString.html">ValidatorUniqueString</A></samp>.
<p>If you desire to create a unique string validator, you probably will start by subclassing <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUniqueString.html">ValidatorUniqueString</A></samp>.
</p>
<h3>IValidatorRemoteSelection Interface</h3>
<p>The third validator interface is <samp><A href="../../../org/eclipse/rse/ui/validators/IValidatorRemoteSelection.html">IValidatorRemoteSelection</A></samp>, which is specifically intended to be used
<p>The third validator interface is <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/IValidatorRemoteSelection.html">IValidatorRemoteSelection</A></samp>, which is specifically intended to be used
in the remote resource selection dialogs supplied by the RSE. It allows you to decide when to enable the OK button, based on what
is selected. It contains only the following method:</p>
<samp>public SystemMessage <A href="../../../org/eclipse/rse/ui/validators/IValidatorRemoteSelection.html#isValid(org.eclipse.rse.model.IHost, java.lang.Object[], org.eclipse.rse.ui.view.ISystemRemoteElementAdapter[])">isValid(SystemConnection selectedConnection, Object[] selectedObjects, ISystemRemoteElementAdapter[] remoteAdaptersForSelectedObject)</A>;</samp>
<samp>public SystemMessage <A href="../../../reference/api/org/eclipse/rse/ui/validators/IValidatorRemoteSelection.html#isValid(org.eclipse.rse.model.IHost, java.lang.Object[], org.eclipse.rse.ui.view.ISystemRemoteElementAdapter[])">isValid(SystemConnection selectedConnection, Object[] selectedObjects, ISystemRemoteElementAdapter[] remoteAdaptersForSelectedObject)</A>;</samp>
<p>You typically won't implement this interface directly, but rather sublcass <samp>ValidatorRemoteSelection</samp>.</p>
<h3>Validator Samples</h3>
@ -106,9 +106,9 @@ appropriate to simply subclass one of these RSE-supplied validators. All of them
via setter calls, or subclassed, whichever is most convenient.</p>
<p>All of these validators support rich <samp><A href="../messages/uiMessageAPI.html">SystemMessage</A></samp> objects, versus just simple strings for the error message. When used with the
RSE dialog, property page or wizard page classes, you should call
<samp><A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html#validate(java.lang.String)">validate(String)</A></samp> and call
<samp><A href="../../../org/eclipse/rse/ui/messages/ISystemMessageLine.html#setErrorMessage(org.eclipse.rse.ui.messages.SystemMessage)">setErrorMessage</A></samp> with the result. When used
in other places you should use <samp><A href="../../../org/eclipse/rse/ui/validators/ISystemValidator.html#isValid(java.lang.String)">isValid(String)</A></samp> as it returns just the first-level text of the system message.</p>
<samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html#validate(java.lang.String)">validate(String)</A></samp> and call
<samp><A href="../../../reference/api/org/eclipse/rse/ui/messages/ISystemMessageLine.html#setErrorMessage(org.eclipse.rse.ui.messages.SystemMessage)">setErrorMessage</A></samp> with the result. When used
in other places you should use <samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ISystemValidator.html#isValid(java.lang.String)">isValid(String)</A></samp> as it returns just the first-level text of the system message.</p>
<TABLE border="1">
<TBODY>
<TR>
@ -116,104 +116,104 @@ in other places you should use <samp><A href="../../../org/eclipse/rse/ui/valida
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorCompileCommandLabel.html">ValidatorCompileCommandLabel</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorCompileCommandLabel.html">ValidatorCompileCommandLabel</A></samp></TD>
<TD>Validates the label for a compile command in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorConnectionName.html">ValidatorConnectionName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorConnectionName.html">ValidatorConnectionName</A></samp></TD>
<TD>Validates the name of a connection in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorFileName.html">ValidatorFileName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorFileName.html">ValidatorFileName</A></samp></TD>
<TD>Validates the name of a file in eclipse.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorFilterName.html">ValidatorFilterName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorFilterName.html">ValidatorFilterName</A></samp></TD>
<TD>Validates the name of a filter in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorFilterPoolName.html">ValidatorFilterPoolName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorFilterPoolName.html">ValidatorFilterPoolName</A></samp></TD>
<TD>Validates the name of a filter pool in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorFilterString.html">ValidatorFilterString</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorFilterString.html">ValidatorFilterString</A></samp></TD>
<TD>Validates the contents of a filter string in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorFolderName.html">ValidatorFolderName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorFolderName.html">ValidatorFolderName</A></samp></TD>
<TD>Validates the name of a folder in eclipse.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorIntegerInput.html">ValidatorIntegerInput</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorIntegerInput.html">ValidatorIntegerInput</A></samp></TD>
<TD>Validates the given string is a valid integer.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorIntegerRangeInput.html">ValidatorIntegerRangeInput</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorIntegerRangeInput.html">ValidatorIntegerRangeInput</A></samp></TD>
<TD>Validates the given string is a valid integer within a given range.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorLongInput.html">ValidatorLongInput</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorLongInput.html">ValidatorLongInput</A></samp></TD>
<TD>Validates the given string is a valid long integer.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorLongRangeInput.html">ValidatorLongRangeInput</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorLongRangeInput.html">ValidatorLongRangeInput</A></samp></TD>
<TD>Validates the given string is a valid long integer within a given range.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorPathName.html">ValidatorPathName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorPathName.html">ValidatorPathName</A></samp></TD>
<TD>Validates the given string is a valid folder path in eclipse.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorPortInput.html">ValidatorPortInput</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorPortInput.html">ValidatorPortInput</A></samp></TD>
<TD>Validates the given string is a valid TCP/IP port number.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorProfileName.html">ValidatorProfileName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorProfileName.html">ValidatorProfileName</A></samp></TD>
<TD>Validates the name of a system profile in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorRemoteSelection.html">ValidatorRemoteSelection</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorRemoteSelection.html">ValidatorRemoteSelection</A></samp></TD>
<TD>This is a very special case abstract base class, for validators that decide the enablement of the OK button
in the RSE-supplied remote resource selection dialogs.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorSourceType.html">ValidatorSourceType</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorSourceType.html">ValidatorSourceType</A></samp></TD>
<TD>A validator for source types, such as a file type or "*.java". It is intended to be subclassed.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorSpecialChar.html">ValidatorSpecialChar</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorSpecialChar.html">ValidatorSpecialChar</A></samp></TD>
<TD>A base class for validators that need to ensure the given string doesn't contain certain characters.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorSystemName.html">ValidatorSystemName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorSystemName.html">ValidatorSystemName</A></samp></TD>
<TD>A name validator, to be used when the name being prompted for must follow Java identifier rules.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUniqueString.html">ValidatorUniqueString</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUniqueString.html">ValidatorUniqueString</A></samp></TD>
<TD>A base class, or configurable class, to be used for any validation that requires the string to be unique within a given list.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUserActionCommand.html">ValidatorUserActionCommand</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUserActionCommand.html">ValidatorUserActionCommand</A></samp></TD>
<TD>Validates the command of a user defined action in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUserActionComment.html">ValidatorUserActionComment</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUserActionComment.html">ValidatorUserActionComment</A></samp></TD>
<TD>Validates the comment of a user defined action in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUserActionName.html">ValidatorUserActionName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUserActionName.html">ValidatorUserActionName</A></samp></TD>
<TD>Validates the name of a user defined action in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUserId.html">ValidatorUserId</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUserId.html">ValidatorUserId</A></samp></TD>
<TD>Validates a user ID. Does only basic checking, intended to be subclassed.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUserTypeName.html">ValidatorUserTypeName</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUserTypeName.html">ValidatorUserTypeName</A></samp></TD>
<TD>Validates the name of a named type in the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/validators/ValidatorUserTypeTypes.html">ValidatorUserTypeTypes</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/validators/ValidatorUserTypeTypes.html">ValidatorUserTypeTypes</A></samp></TD>
<TD>Validates the type list of a named type in the RSE.</TD>
</TR>
</TBODY>

View file

@ -15,14 +15,14 @@
and process the widgets in the client area. The RSE offers some help in this area in two ways:
</p>
<ol>
<li>A <samp><A href="../../../org/eclipse/rse/ui/SystemWidgetHelpers.html">SystemWidgetHelpers</A></samp>
<li>A <samp><A href="../../../reference/api/org/eclipse/rse/ui/SystemWidgetHelpers.html">SystemWidgetHelpers</A></samp>
class full of static methods to make it easier to create SWT widgets.
<li>A few re-usable widgets that extend SWT.
</ol>
<h2>SystemWidgetHelpers Class</h2>
<p>The <samp><A href="../../../org/eclipse/rse/ui/SystemWidgetHelpers.html">SystemWidgetHelpers</A></samp>
class in <samp><A href="../../../org/eclipse/rse/ui/package-summary.html">org.eclipse.rse.ui</A></samp>
<p>The <samp><A href="../../../reference/api/org/eclipse/rse/ui/SystemWidgetHelpers.html">SystemWidgetHelpers</A></samp>
class in <samp><A href="../../../reference/api/org/eclipse/rse/ui/package-summary.html">org.eclipse.rse.ui</A></samp>
is chock full of static methods to simplify the work in populating a GridLayout composite with widgets. The GridLayout composite is the most
flexible and useful of the layouts, yet the most work to code to. These methods will help with that. The methods include:
</p>
@ -38,7 +38,7 @@ flexible and useful of the layouts, yet the most work to code to. These methods
</ul>
<h2>RSE-Supplied Widgets</h2>
<p>The <samp><A href="../../../org/eclipse/rse/ui/widgets/package-summary.html">org.eclipse.rse.ui.widgets</A></samp>
<p>The <samp><A href="../../../reference/api/org/eclipse/rse/ui/widgets/package-summary.html">org.eclipse.rse.ui.widgets</A></samp>
package contains some specialized widgets you may find a use for:
</p>
<TABLE border="1">
@ -48,25 +48,25 @@ package contains some specialized widgets you may find a use for:
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/widgets/SystemHistoryCombo.html">SystemHistoryCombo</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/widgets/SystemHistoryCombo.html">SystemHistoryCombo</A></samp></TD>
<TD>A entry field that remembers its previous values and shows them in a dropdown so the user can easily re-select a previously typed value. The history is maintained for you, and is indexed by a key. This allows the combos to share history across numerous dialogs, property pages or wizard pages. The history can be bounded and pre-filled, and the user can clear the history at any time. This handy widget is used extensively within the RSE.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/widgets/InheritableEntryField.html">InheritableEntryField</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/widgets/InheritableEntryField.html">InheritableEntryField</A></samp></TD>
<TD>An entry field with an left-right arrow beside it. When toggled left, the entry field is not editable and displays a supplied value. When toggled right, the entry field is editable. Useful in cases where the user can choose between an inherited or default value, or enter their own value.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/widgets/SystemPortPrompt.html">SystemPortPrompt</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/widgets/SystemPortPrompt.html">SystemPortPrompt</A></samp></TD>
<TD>Uses the InheritableEntryField to prompt for a TCP/IP port, where toggling to the left means port 0, or let the &quot;first available port&quot;.</TD>
</TR>
<TR>
<TD><samp><A href="../../../org/eclipse/rse/ui/widgets/SystemConnectionCombo.html">SystemConnectionCombo</A></samp></TD>
<TD><samp><A href="../../../reference/api/org/eclipse/rse/ui/widgets/SystemConnectionCombo.html">SystemConnectionCombo</A></samp></TD>
<TD>This is a combo box that displays the currently defined RSE system connections. The list can be subset by system type or types. Further, you can optionally display a New button beside the combo that allows the user to create a new connection.</TD>
</TR>
</TBODY>
</TABLE>
<p>There are also many useful widgets related to the selection of remote files or folders, in package
<samp><A href="../../../org/eclipse/rse/files/ui/widgets/package-summary.html">org.eclipse.rse.files.ui.widgets</A></samp>
<samp><A href="../../../reference/api/org/eclipse/rse/files/ui/widgets/package-summary.html">org.eclipse.rse.files.ui.widgets</A></samp>
<P><BR></P>
</body>

View file

@ -18,19 +18,19 @@ can offer help in creating wizards, just as it does in creating dialogs.
<h2>RSE-Supplied Base Classes for Wizards</h2>
<p>The RSE offers the following classes, in package
<samp><A href="../../../org/eclipse/rse/ui/wizards/package-summary.html">org.eclipse.rse.ui.wizards</A></samp> to simplify the creation of wizards.</p>
<samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/package-summary.html">org.eclipse.rse.ui.wizards</A></samp> to simplify the creation of wizards.</p>
<h3>The <samp>AbstractSystemWizardPage</samp> class</h3>
<p>The <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</A></samp> abstract base class extends the
<p>The <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</A></samp> abstract base class extends the
JFace <samp>WizardPage</samp> class to offer the following benefits to subclasses:</p>
<ol>
<li>Designed to work in conjunction with <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp>,
<li>Designed to work in conjunction with <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp>,
propogating settings from the wizard to the individual wizard pages.
<li>Supports using the overall wizard page title as set
by <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setWizardPageTitle(java.lang.String)">setWizardPageTitle(String)</A></samp>
in <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp>,
by <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setWizardPageTitle(java.lang.String)">setWizardPageTitle(String)</A></samp>
in <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp>,
if no title specified in the constructor.
<li>Supports a <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#setHelp(java.lang.String)">setHelp(String)</A></samp> method to set the wizard page's overall contextual help
<li>Supports a <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#setHelp(java.lang.String)">setHelp(String)</A></samp> method to set the wizard page's overall contextual help
<li>Implements <samp><A
href="../messages/uiMessageAPI.html#ISystemMessageLine">ISystemMessageLine</A></samp> so supports setting error messages as
either strings or, preferably, <samp><A
@ -38,34 +38,34 @@ JFace <samp>WizardPage</samp> class to offer the following benefits to subclasse
<li>Supports automatic assignment of unique mnemonics for all input-capable controls on the page, to aid in accessibility.
<li>Supports setting a default-focus control, which gets initial focus when the page is shown.
<li>Supports helper methods to aid in population of the client area:
<samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#addSeparatorLine(org.eclipse.swt.widgets.Composite, int)">addSeparatorLine(Composite,int)</A></samp>,
<samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#addFillerLine(org.eclipse.swt.widgets.Composite, int)">addFillerLine(Composite,int)</A></samp> and
<samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#addGrowableFillerLine(org.eclipse.swt.widgets.Composite, int)">addGrowableFillerLine(Composite,int)</A></samp>.
<samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#addSeparatorLine(org.eclipse.swt.widgets.Composite, int)">addSeparatorLine(Composite,int)</A></samp>,
<samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#addFillerLine(org.eclipse.swt.widgets.Composite, int)">addFillerLine(Composite,int)</A></samp> and
<samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html#addGrowableFillerLine(org.eclipse.swt.widgets.Composite, int)">addGrowableFillerLine(Composite,int)</A></samp>.
</ol>
<h3><A name="AbstractSystemWizard"></A>The <samp>AbstractSystemWizard</samp> class</h3>
<p>The <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp> abstract base class extends the JFace <samp>Wizard</samp>
<p>The <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html">AbstractSystemWizard</A></samp> abstract base class extends the JFace <samp>Wizard</samp>
class to offer the following benefits to subclasses:</p>
<ol>
<li>Designed to work in conjunction with the <samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseWizardAction.html">SystemBaseWizardAction</A></samp>,
and <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemWizardDialog.html">SystemWizardDialog</A></samp> classes, propogating settings
<li>Designed to work in conjunction with the <samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseWizardAction.html">SystemBaseWizardAction</A></samp>,
and <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemWizardDialog.html">SystemWizardDialog</A></samp> classes, propogating settings
from these to the wizard, and further propogating those to the individual wizard pages.
<li>The overall wizard title and image can be set via the constructor or setter methods.
<li>Supports setting an input object, and getting an output object. This is exploited by the
<samp><A href="../../../org/eclipse/rse/ui/actions/SystemBaseWizardAction.html">SystemBaseWizardAction</A></samp> class, when this wizard is launched from a subclass of that action class.
<li>Supports setting a wizard page title via <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setWizardPageTitle(java.lang.String)">setWizardPageTitle(String)</A></samp>, that all
<samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</A></samp> pages will use by default for
<samp><A href="../../../reference/api/org/eclipse/rse/ui/actions/SystemBaseWizardAction.html">SystemBaseWizardAction</A></samp> class, when this wizard is launched from a subclass of that action class.
<li>Supports setting a wizard page title via <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setWizardPageTitle(java.lang.String)">setWizardPageTitle(String)</A></samp>, that all
<samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</A></samp> pages will use by default for
their title, if the non-title constructor is used for that page.
<li>If being hosted by a <samp><A href="../../../org/eclipse/rse/ui/dialogs/SystemWizardDialog.html">SystemWizardDialog</A></samp>, supports dynamically
updating the wizard size via <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#updateSize()">updateSize()</A></samp>,
<li>If being hosted by a <samp><A href="../../../reference/api/org/eclipse/rse/ui/dialogs/SystemWizardDialog.html">SystemWizardDialog</A></samp>, supports dynamically
updating the wizard size via <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#updateSize()">updateSize()</A></samp>,
if dynamic content is added to a wizard page, causing the page to grow beyond its initial size.
<li>Supports a <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setHelp(java.lang.String)">setHelp(String)</A></samp> method to set the overall wizard's contextual help. This is propogated to each
<samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</A></samp> as it is added.
<li>Supports a <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setHelp(java.lang.String)">setHelp(String)</A></samp> method to set the overall wizard's contextual help. This is propogated to each
<samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizardPage.html">AbstractSystemWizardPage</A></samp> as it is added.
<li>Supports setting the viewer that launched this wizard, as wizards often need to know this so they can update the UI upon Finish.
<li>Supports a <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#wasCancelled()">wasCancelled()</A></samp> method so callers can easily test if the wizard was cancelled by the user.
<li>Supports a <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setMinimumPageSize(int, int)">setMinimumPageSize(int,int)</A></samp> method to set the minimum width and height of the wizard.
<li>Supports a <samp><A href="../../../org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setPageError(org.eclipse.jface.wizard.IWizardPage)">setPageError(IWizardPage)</A></samp> method that can be called in performFinish when an error is detected on a
<li>Supports a <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#wasCancelled()">wasCancelled()</A></samp> method so callers can easily test if the wizard was cancelled by the user.
<li>Supports a <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setMinimumPageSize(int, int)">setMinimumPageSize(int,int)</A></samp> method to set the minimum width and height of the wizard.
<li>Supports a <samp><A href="../../../reference/api/org/eclipse/rse/ui/wizards/AbstractSystemWizard.html#setPageError(org.eclipse.jface.wizard.IWizardPage)">setPageError(IWizardPage)</A></samp> method that can be called in performFinish when an error is detected on a
non-current page. This issues a message telling the user there is an error on another page.
</ol>

View file

@ -42,10 +42,10 @@ the information needed to enable them to in Remote System Explorer.
Remote System Explorer. To use this you need to know the class type
of these objects for the <samp>objectClass</samp> attribute of the <samp>&lt;page&gt;</samp> element:
<ul>
<li>Connections: <samp><A href="../../org/eclipse/rse/model/IHost.html"org.eclipse.rse.model.IHost</A></samp>
<li>SubSystems: <samp><A href="../../org/eclipse/rse/core/subsystems/ISubSystem.html">org.eclipse.rse.core.subsystems.SubSystem</A></samp>
<li>Filter Pools: <samp><A href="../../org/eclipse/rse/filters/ISystemFilterPoolReference.html">org.eclipse.rse.filters.ISystemFilterPoolReference</A></samp>
<li>Filters: <samp><A href="../../org/eclipse/rse/filters/ISystemFilterReference.html">org.eclipse.rse.filters.ISystemFilterReference</A></samp>
<li>Connections: <samp><A href="../../reference/api/org/eclipse/rse/model/IHost.html"org.eclipse.rse.model.IHost</A></samp>
<li>SubSystems: <samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html">org.eclipse.rse.core.subsystems.SubSystem</A></samp>
<li>Filter Pools: <samp><A href="../../reference/api/org/eclipse/rse/filters/ISystemFilterPoolReference.html">org.eclipse.rse.filters.ISystemFilterPoolReference</A></samp>
<li>Filters: <samp><A href="../../reference/api/org/eclipse/rse/filters/ISystemFilterReference.html">org.eclipse.rse.filters.ISystemFilterReference</A></samp>
</ul>
It is possible to scope your property pages to only appear for certain system types or subsystems, using
the <samp>&lt;filter&gt;</samp> element. For example:<br>
@ -68,10 +68,10 @@ the information needed to enable them to in Remote System Explorer.
To use this you need to know the class type of these objects for the <samp>objectClass</samp> attribute
of the &lt;objectContribution&gt; element:
<ul>
<li>Connections: <samp><A href="../../org/eclipse/rse/model/IHost.html"org.eclipse.rse.model.IHost</A></samp>
<li>SubSystems: <samp><A href="../../org/eclipse/rse/core/subsystems/ISubSystem.html">org.eclipse.rse.core.subsystems.SubSystem</A></samp>
<li>Filter Pools: <samp><A href="../../org/eclipse/rse/filters/ISystemFilterPoolReference.html">org.eclipse.rse.filters.ISystemFilterPoolReference</A></samp>
<li>Filters: <samp><A href="../../org/eclipse/rse/filters/ISystemFilterReference.html">org.eclipse.rse.filters.ISystemFilterReference</A></samp>
<li>Connections: <samp><A href="../../reference/api/org/eclipse/rse/model/IHost.html"org.eclipse.rse.model.IHost</A></samp>
<li>SubSystems: <samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html">org.eclipse.rse.core.subsystems.SubSystem</A></samp>
<li>Filter Pools: <samp><A href="../../reference/api/org/eclipse/rse/filters/ISystemFilterPoolReference.html">org.eclipse.rse.filters.ISystemFilterPoolReference</A></samp>
<li>Filters: <samp><A href="../../reference/api/org/eclipse/rse/filters/ISystemFilterReference.html">org.eclipse.rse.filters.ISystemFilterReference</A></samp>
</ul>
It is possible to scope your actions to only appear for certain system types or subsystems, using
the <samp>&lt;filter&gt;</samp> element. For example:<br>

View file

@ -112,8 +112,8 @@ specifying all the menu Ids up to the final menu, slash-separated, and then the
<h2>Programming Details</h2>
<p>To use this extension point you will create a class that extends the
<samp><A href="../../org/eclipse/rse/ui/actions/SystemAbstractPopupMenuExtensionAction.html">SystemAbstractPopupMenuExtensionAction</A></samp> class in the
package <samp><A href="../../org/eclipse/rse/ui/actions/package-summary.html">org.eclipse.rse.ui.actions</A></samp>. This is your action class,
<samp><A href="../../reference/api/org/eclipse/rse/ui/actions/SystemAbstractPopupMenuExtensionAction.html">SystemAbstractPopupMenuExtensionAction</A></samp> class in the
package <samp><A href="../../reference/api/org/eclipse/rse/ui/actions/package-summary.html">org.eclipse.rse.ui.actions</A></samp>. This is your action class,
and when the user selects your action, the <samp>run()</samp>
method in your action class will be called. You will rarely extend the <samp>SystemAbstractPopupMenuExtensionAction</samp> base class
directly, though. Instead there are subclasses of it that offer additional functionality for specific types of remote objects,
@ -128,12 +128,12 @@ as shown here:
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../org/eclipse/rse/ui/actions/SystemAbstractPopupMenuExtensionAction.html">SystemAbstractPopupMenuExtensionAction</A></samp> in
<TD><samp><A href="../../reference/api/org/eclipse/rse/ui/actions/SystemAbstractPopupMenuExtensionAction.html">SystemAbstractPopupMenuExtensionAction</A></samp> in
<samp>org.eclipse.rse.ui</samp> plugin</TD>
<TD>Base class offering generic support for any remote object pop-up menu action, for any system type.</TD>
</TR>
<TR>
<TD><samp><A href="../../org/eclipse/rse/files/ui/actions/SystemAbstractRemoteFilePopupMenuExtensionAction.html">SystemAbstractRemoteFilePopupMenuExtensionAction</A></samp>
<TD><samp><A href="../../reference/api/org/eclipse/rse/files/ui/actions/SystemAbstractRemoteFilePopupMenuExtensionAction.html">SystemAbstractRemoteFilePopupMenuExtensionAction</A></samp>
in <samp>org.eclipse.rse.files.ui</samp> plugin</TD>
<TD>Specialized base class offering specific support for any remote file object pop-up menu action, for any system type.</TD>
</TR>

View file

@ -57,12 +57,12 @@ selected on the left side. The supplied classes are listed here:
<TH>Description</TH>
</TR>
<TR>
<TD><samp><A href="../../org/eclipse/rse/ui/propertypages/SystemAbstractPropertyPageExtensionAction.html">SystemAbstractPropertyPageExtensionAction</A></samp>
<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="../../org/eclipse/rse/files/ui/propertypages/SystemAbstractRemoteFilePropertyPageExtensionAction.html">SystemAbstractRemoteFilePropertyPageExtensionAction</A></samp>
<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>

View file

@ -25,7 +25,7 @@ as it has only one element, <b><samp>&lt;configuration&gt;</samp></b>, with only
<ul>
<li><b>id</b>. Unique id for the extension, as required for all extensions. However, in this case it is used to create
folders within the <samp>RemoteSystemsConnections</samp> project, where all Remote Systems Explorer data is stored.
There is also a way to <A href="../../org/eclipse/rse/model/ISystemRegistry.html#getSubSystemConfiguration(java.lang.String)">query</A> a subsystem configuration
There is also a way to <A href="../../reference/api/org/eclipse/rse/model/ISystemRegistry.html#getSubSystemConfiguration(java.lang.String)">query</A> a subsystem configuration
object via its ID.<li><b>vendor</b>. Your company name, shown in properties dialog for subsystems created by this subsystem configuration.
<li><b>icon</b>. The icon displayed in the Remote Systems view for each subsystem created by this subsystem configuration.
<li><b>iconlive</b>. The icon used when the subsystem is physically connected to its remote system.
@ -36,7 +36,7 @@ system types.
<li><b>category</b>. A name used to categorize this subsystem's functionality. Used by the <A href="popup.html">popupMenus</A>
and <A href="propertypage.html">propertyPages</A> extension points to allow actions and property pages to be scoped to
resources shown in subsystems of a particular category. Multiple subsystems can have the same category.
<li><b>class</b>. A class implementing <A href="../../org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html">ISubSystemConfiguration</A>
<li><b>class</b>. A class implementing <A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html">ISubSystemConfiguration</A>
interface, as described in the following programming details section.
</ul>
@ -45,33 +45,33 @@ interface, as described in the following programming details section.
<p>It is important to remember what the purpose of a subsystem is, and how it fits in the overall RSE <A
href="../Model.html">model</A>, so as to understand the programming details for supporting
subsystems via this subsystem configuration extension point. Minimally speaking, this extension point requires a class that implements the interface
<samp><A href="../../org/eclipse/rse/core/subsystems/ISubSystemFactory.html"><B>ISubSystemFactory</B></A></samp>.
<samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystemFactory.html"><B>ISubSystemFactory</B></A></samp>.
Ultimately, the intent of a subsystem <I>configuration</I> is to provide individual
subsystem <I>instances</I> to each connection, and the intent of a subsystem instance is to present remote resources for display or manipulation purposes. Thus, you must also create a class implementing the interface <samp><A href="../../org/eclipse/rse/core/subsystems/ISubSystem.html"><B>ISubSystem</B></A></samp>.
subsystem <I>instances</I> to each connection, and the intent of a subsystem instance is to present remote resources for display or manipulation purposes. Thus, you must also create a class implementing the interface <samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html"><B>ISubSystem</B></A></samp>.
<BR>
The intent of each subsystem is to show remote resources from the remote system
identified by the parent connection, for the user. (Subsystems can in fact be hidden, which means their their role is to return remote resources for programmatic purposes only.) When the first request is made for remote objects, the subsystem is asked to connect to the remote system if it is not already.
This job is deferred to a <A href="../../org/eclipse/rse/core/subsystems/IConnectorService.html">IConnectorService</A> object whose role it is to manage connecting and disconnecting
to the remote physical system. By use of a <A href="../../org/eclipse/rse/core/subsystems/AbstractConnectorServiceManager.html">connector service manager</a>,
This job is deferred to a <A href="../../reference/api/org/eclipse/rse/core/subsystems/IConnectorService.html">IConnectorService</A> object whose role it is to manage connecting and disconnecting
to the remote physical system. By use of a <A href="../../reference/api/org/eclipse/rse/core/subsystems/AbstractConnectorServiceManager.html">connector service manager</a>,
one system can manage the live connections of multiple subsystems in the same system connection, should they happen to share the same communication pipe.
If filters are <A href="../../org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html#supportsFilters()">supported</A>
If filters are <A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.html#supportsFilters()">supported</A>
(the default), the first connection is made, and the remote resources are subsequently shown, when filters within the subsystem
are expanded, which results in a call to
<samp><A href="../../org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.html#internalResolveFilterString(org.eclipse.core.runtime.IProgressMonitor, java.lang.String)">resolveFilterString</A></samp>
<samp><A href="../../reference/api/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.html#internalResolveFilterString(org.eclipse.core.runtime.IProgressMonitor, java.lang.String)">resolveFilterString</A></samp>
in the subsystem object. <BR>
Furthermore, you will want to supply your own
<B><A
href="../../org/eclipse/rse/filters/ui/actions/SystemNewFilterAction.html">new-filter</A></B> and
<A href="../../org/eclipse/rse/filters/ui/actions/SystemChangeFilterAction.html"><B>change-filter</B></A> actions.
href="../../reference/api/org/eclipse/rse/filters/ui/actions/SystemNewFilterAction.html">new-filter</A></B> and
<A href="../../reference/api/org/eclipse/rse/filters/ui/actions/SystemChangeFilterAction.html"><B>change-filter</B></A> actions.
If filters are not supported, then these remote resources are shown immediately when the subsystem itself is expanded, via a call to
<samp><A href="../../org/eclipse/rse/core/subsystems/ISubSystem.html#getChildren()">getChildren</A></samp>.
<samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/ISubSystem.html#getChildren()">getChildren</A></samp>.
Either way the resulting resources are displayed to the user. To facilitate the displaying of these objects in the RSE views, the objects
themselves must implement the Eclipse IAdaptable interface (to enable the property sheet viewer) and there must be a specific RSE
<B><A
href="../../org/eclipse/rse/ui/view/AbstractSystemViewAdapter.html">view
href="../../reference/api/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.html">view
adapter</A></B>
and an RSE <B><A
href="../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">remote-information
href="../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">remote-information
adapter</A></B>
registered for the remote objects, which the RSE views consult to get the labels, images, actions,
and property sheet values for the remote objects.
@ -100,36 +100,36 @@ following summarizes the minimum set of classes you will be creating in order to
</TR>
<TR>
<TD>subsystem configuration</TD>
<TD><samp><A href="../../org/eclipse/rse/core/subsystems/SubSystemConfiguration.html">SubSystemConfiguration</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystemConfiguration.html">SubSystemConfiguration</A></samp></TD>
<TD>The factory class responsible for creating instances of subsystem class</TD>
</TR>
<TR>
<TD>subsystem</TD>
<TD><samp><A href="../../org/eclipse/rse/core/subsystems/SubSystem.html">SubSystem</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystem.html">SubSystem</A></samp></TD>
<TD>The subsystem class. There will be one instance created for each connection. In addition to storing
your unique attributes, this must return the remote resource objects when a filter is expanded within the
subsystem. How that communication with the remote system is done is left up to you.</TD>
</TR>
<TR>
<TD>system</TD>
<TD><samp><A href="../../org/eclipse/rse/core/subsystems/AbstractConnectorService.html">AbstractConnectorService</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/AbstractConnectorService.html">AbstractConnectorService</A></samp></TD>
<TD>Represents and manages a live connection to the remote system, doing the connecting and disconnecting.</TD>
</TR>
<TR>
<TD>system manager</TD>
<TD><samp><A href="../../org/eclipse/rse/core/subsystems/AbstractConnectorServiceManager.html">AbstractConnectorServiceManager</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/core/subsystems/AbstractConnectorServiceManager.html">AbstractConnectorServiceManager</A></samp></TD>
<TD>Manages a single system instance that is shared among multiple subsystems in a single connection. Even if you only have a single subsystem configuration it is useful to use this in
case you later add additional factories, and their subsystems share the same communication pipe. To enable this, all your subsystem classes need to implement a unique interface of your own creation.</TD>
</TR>
<TR>
<TD>remote resource</TD>
<TD><samp><A href="../../org/eclipse/rse/ui/subsystems/impl/AbstractResource.html">AbstractResource</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/ui/subsystems/impl/AbstractResource.html">AbstractResource</A></samp></TD>
<TD>Can be used as a base class for the objects representing remote resources.</TD>
</TR>
<TR>
<TD>new-filter wizard</TD>
<TD><samp><A href="../../org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html">SystemNewFilterAction</A></samp> and
<samp><A href="../../org/eclipse/rse/ui/filters/SystemFilterStringEditPane.html">SystemFilterStringEditPane</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html">SystemNewFilterAction</A></samp> and
<samp><A href="../../reference/api/org/eclipse/rse/ui/filters/SystemFilterStringEditPane.html">SystemFilterStringEditPane</A></samp></TD>
<TD>Displays a wizard prompting for a new filter. Filters contain filter strings, which are up to each subsystem to design and interpret. The New Filter wizard
prompts for a single filter string (more can be added in change mode). Typically you subclass <samp>SystemFilterStringEditPane</samp> to create your own
prompt for the filter string information, and then subclass <samp>SystemNewFilterAction</samp> so as to configure the default New Filter wizard to use
@ -137,16 +137,16 @@ following summarizes the minimum set of classes you will be creating in order to
</TR>
<TR>
<TD>change-filter dialog</TD>
<TD><samp><A href="../../org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html">SystemChangeFilterAction</A></samp> and
<samp><A href="../../org/eclipse/rse/ui/filters/SystemFilterStringEditPane.html">SystemFilterStringEditPane</A></samp></TD>
<TD><samp><A href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html">SystemChangeFilterAction</A></samp> and
<samp><A href="../../reference/api/org/eclipse/rse/ui/filters/SystemFilterStringEditPane.html">SystemFilterStringEditPane</A></samp></TD>
<TD>Displays a dialog prompting to change an existing filter. The default dialog allows the user to create and edit filter strings. Typically, you
override the <samp>SystemChangeFilterAction</samp> class, and configure the dialog to use the same edit pane used in the New Filter wizard.
</TD>
</TR>
<TR>
<TD>remote element adapter</TD>
<TD><samp><A href="../../org/eclipse/rse/ui/view/AbstractSystemViewAdapter.html">AbstractSystemViewAdapter</A></samp> and
<samp><A href="../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>
<TD><samp><A href="../../reference/api/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.html">AbstractSystemViewAdapter</A></samp> and
<samp><A href="../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A></samp>
</TD>
<TD>The view adapter is an amalgamation of all the required information needed to populate the RSE views. You will define one class per unique remote object interface or class, and in it you will override methods to return the remote object's label, image, popup-menu actions, property sheet properties and children (if expandable). You can also decide whether to enable common RSE popup menu actions like rename, delete and refresh. <BR>Your view adapter will usually also implement the remote adapter interface, enabling the many common RSE capabilities to work, such as the copy, paste, drag and drop, and more. </TD>
</TR>
@ -157,14 +157,14 @@ following summarizes the minimum set of classes you will be creating in order to
<p>Implementing a subsystem involves the following steps, in the following order:</p>
<OL>
<li>Creating an interface for your subsystem. It can, and often is, an empty interface.</li>
<li>Creating a subclass of <A href="../../org/eclipse/rse/core/subsystems/AbstractConnectorService.html">AbstractConnectorService</A>.
<li>Creating a subclass of <A href="../../reference/api/org/eclipse/rse/core/subsystems/AbstractConnectorService.html">AbstractConnectorService</A>.
The code here will interact as necessary with your subsystem to manage the live connection to the remote system.</li>
<li>Creating a subclass of <A href="../../org/eclipse/rse/core/subsystems/AbstractConnectorServiceManager.html">AbstractConnectorServiceManager</A>.
<li>Creating a subclass of <A href="../../reference/api/org/eclipse/rse/core/subsystems/AbstractConnectorServiceManager.html">AbstractConnectorServiceManager</A>.
The code here will re-use the same system object from step 2 for all subsystems that implement the interface from step 1, within the same connection.</li>
<li>Designing the classes to represent the remote resources (your <i>model</i>) that you will show from your subsystem.
Each must implement the <samp>org.eclipse.core.runtime.IAdaptable</samp> interface from Eclipse.
It is also very helpful if they also maintain a reference to the subsystem which created them. The base class
<A href="../../org/eclipse/rse/ui/subsystems/impl/AbstractResource.html">AbstractResource</A> is offered to help with this.</li>
<A href="../../reference/api/org/eclipse/rse/ui/subsystems/impl/AbstractResource.html">AbstractResource</A> is offered to help with this.</li>
<li>Designing the syntax of the <i>filter string</i> that will be used as a pattern to tell your subsystem what resources to show. For example, for files this might be of the
form "path/generic-name /options". It is the job of your subsystem to interpret these strings and return a list of remote resources matching the
criteria capturing in the string. You will eventually design a user interface to prompt the user for one the
@ -172,27 +172,27 @@ following summarizes the minimum set of classes you will be creating in order to
can parse it into its constituent pieces via getter methods. It should also support a default constructor and setting of constituent pieces via setter methods,
and the generation of the filter string via toString().
</li>
<li>Creating a subclass of <A href="../../org/eclipse/rse/core/subsystems/SubSystem.html">SubSystem</A>
<li>Creating a subclass of <A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystem.html">SubSystem</A>
that implements the interface you designed in step 1. This will:
<ul>
<li>return a singleton instance of the system manager from step 3 in its <A href="../../org/eclipse/rse/core/subsystems/SubSystem.html#getSystemManager()">getSystemManager</A> method,
<li>manage persistent properties via calls to the inherited <A href="../../org/eclipse/rse/core/subsystems/SubSystem.html#setVendorAttribute(java.lang.String, java.lang.String, java.lang.String)">setVendorAttribute</A>
and <A href="../../org/eclipse/rse/core/subsystems/SubSystem.htmll#getVendorAttribute(java.lang.String, java.lang.String)">getVendorAttribute</A> methods,
<li>use your communications layer to return instances of your model objects in its <A href="../../org/eclipse/rse/core/subsystems/SubSystem.html.html#internalResolveFilterString(org.eclipse.core.runtime.IProgressMonitor, java.lang.String)">internalResolveFilterString</A> method.
<li>return a singleton instance of the system manager from step 3 in its <A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystem.html#getSystemManager()">getSystemManager</A> method,
<li>manage persistent properties via calls to the inherited <A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystem.html#setVendorAttribute(java.lang.String, java.lang.String, java.lang.String)">setVendorAttribute</A>
and <A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystem.htmll#getVendorAttribute(java.lang.String, java.lang.String)">getVendorAttribute</A> methods,
<li>use your communications layer to return instances of your model objects in its <A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystem.html.html#internalResolveFilterString(org.eclipse.core.runtime.IProgressMonitor, java.lang.String)">internalResolveFilterString</A> method.
The input to this is one or more strings such as you designed in step 5. It will return all remote resources matching the criteria captured in the input filter string.
You may also find the <A href="../../org/eclipse/rse/services/clientserver/NamePatternMatcher.html">org.eclipse.rse.services.clientserver.NamePatternMatcher</a>
You may also find the <A href="../../reference/api/org/eclipse/rse/services/clientserver/NamePatternMatcher.html">org.eclipse.rse.services.clientserver.NamePatternMatcher</a>
class to be handy in comparing a generic pattern to a particular input. This class is in the <samp>runtime/clientserver.jar</samp> file,
and has no eclipse-dependencies, so it can be used in your client subsystem code, or your server-side code.
</ul>
</li>
<li>Creating a subclass of <A href="../../org/eclipse/rse/core/subsystems/SubSystemConfiguration.html">DefaultSubSystemFactoryImpl.</A></li>
<li>Creating a subclass of <A href="../../reference/api/org/eclipse/rse/core/subsystems/SubSystemConfiguration.html">DefaultSubSystemFactoryImpl.</A></li>
<li>Defining your <A href="../../doc/org_eclipse_rse_ui_subsystemConfiguration.html">subsystemConfiguration extension</a> in your <samp>plugin.xml</samp> file.</li>
<li>For each remote resource class you created in step 4, you need to create an adapter class, which extends
<A href="../../org/eclipse/rse/ui/view/AbstractSystemViewAdapter.html">AbstractSystemViewAdapter</A> and which
implements <A href="../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A>.
<A href="../../reference/api/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.html">AbstractSystemViewAdapter</A> and which
implements <A href="../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html">ISystemRemoteElementAdapter</A>.
</li>
<li>Register your adapters with the platform. First you create an
adapter class that extends <samp><a href="../../org/eclipse/rse/ui/view/AbstractSystemRemoteAdapterFactory.html">AbstractSystemRemoteAdapterFactory</a></samp>
adapter class that extends <samp><a href="../../reference/api/org/eclipse/rse/ui/view/AbstractSystemRemoteAdapterFactory.html">AbstractSystemRemoteAdapterFactory</a></samp>
and implements interface <samp><b>org.eclipse.core.runtime.IAdapterFactory</b></samp>. Next,
in the <samp>startup()</samp> method of your plugin class, add code to instantiate the class and register the object with
the platform adapter manager, once for each class in your resource model. For example:
@ -211,28 +211,28 @@ following summarizes the minimum set of classes you will be creating in order to
change these for your subsystem, you need to:
<ol>
<li type="i">Create your own
<a href="../../org/eclipse/rse/ui/filters/SystemFilterStringEditPane.html">filter string edit pane</a>
<a href="../../reference/api/org/eclipse/rse/ui/filters/SystemFilterStringEditPane.html">filter string edit pane</a>
subclass that contains your own GUI prompts as desired.
<li type="i">Create your own
<a href="../../org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html">new-filter wizard action</a>
<a href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html">new-filter wizard action</a>
subclass, and configure it to use your own edit pane subclass by overriding
<samp><a href="../../org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html#configureNewFilterWizard(org.eclipse.rse.ui.filters.dialogs.SystemNewFilterWizard)">configureNewFilterWizard</a></samp>
and in it calling <samp><a href="../../org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizard.html#setFilterStringEditPane(org.eclipse.rse.ui.filters.SystemFilterStringEditPane)">setFilterStringEditPane</a></samp>
<samp><a href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html#configureNewFilterWizard(org.eclipse.rse.ui.filters.dialogs.SystemNewFilterWizard)">configureNewFilterWizard</a></samp>
and in it calling <samp><a href="../../reference/api/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizard.html#setFilterStringEditPane(org.eclipse.rse.ui.filters.SystemFilterStringEditPane)">setFilterStringEditPane</a></samp>
on the given wizard.
<li type="i">Create your own
<a href="../../org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html">change-filter action</a>
<a href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html">change-filter action</a>
subclass, and configure it to use your own edit pane subclass by overriding
<samp><a href="../../org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html#configureFilterDialog(org.eclipse.rse.ui.filters.dialogs.SystemChangeFilterDialog)">configureFilterDialog</a></samp>
and in it calling <samp><a href="../../org/eclipse/rse/ui/filters/dialogs/SystemChangeFilterDialog.html#setFilterStringEditPane(org.eclipse.rse.ui.filters.SystemFilterStringEditPane)">setFilterStringEditPane</a></samp>
<samp><a href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html#configureFilterDialog(org.eclipse.rse.ui.filters.dialogs.SystemChangeFilterDialog)">configureFilterDialog</a></samp>
and in it calling <samp><a href="../../reference/api/org/eclipse/rse/ui/filters/dialogs/SystemChangeFilterDialog.html#setFilterStringEditPane(org.eclipse.rse.ui.filters.SystemFilterStringEditPane)">setFilterStringEditPane</a></samp>
on the given dialog.
<li type="i">Override the <samp><a href="../../org/eclipse/rse/ui/view/SubSystemFactoryAdapter.html#getNewFilterPoolFilterAction(org.eclipse.rse.filters.ISystemFilterPool, org.eclipse.swt.widgets.Shell)">getNewFilterPoolFilterAction(SystemFilterPool, Shell)</a></samp>
<li type="i">Override the <samp><a href="../../reference/api/org/eclipse/rse/ui/view/SubSystemFactoryAdapter.html#getNewFilterPoolFilterAction(org.eclipse.rse.filters.ISystemFilterPool, org.eclipse.swt.widgets.Shell)">getNewFilterPoolFilterAction(SystemFilterPool, Shell)</a></samp>
method in your subsystem factory, to return an instance of your new-filter action.
You can actually avoid creating an action subclass if you choose, by calling the configuration methods
in the RSE-supplied <a href="../../org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html">new-filter action class</a>.
<li type="i">Override the <samp><a href="../../org/eclipse/rse/ui/view/SubSystemFactoryAdapter.html#getChangeFilterAction(org.eclipse.rse.filters.ISystemFilter, org.eclipse.swt.widgets.Shell)">getChangeFilterAction(SystemFilter, Shell)</a></samp>
in the RSE-supplied <a href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemNewFilterAction.html">new-filter action class</a>.
<li type="i">Override the <samp><a href="../../reference/api/org/eclipse/rse/ui/view/SubSystemFactoryAdapter.html#getChangeFilterAction(org.eclipse.rse.filters.ISystemFilter, org.eclipse.swt.widgets.Shell)">getChangeFilterAction(SystemFilter, Shell)</a></samp>
method in your subsystem factory, to return an instance of your change-filter action.
You can actually avoid creating an action subclass if you choose, by calling the configuration methods
in the RSE-supplied <a href="../../org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html">change-filter action class</a>.
in the RSE-supplied <a href="../../reference/api/org/eclipse/rse/ui/filters/actions/SystemChangeFilterAction.html">change-filter action class</a>.
</ol>
</li>
</OL>

View file

@ -1,271 +1,271 @@
<!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">
<LINK REL="STYLESHEET" HREF="../../book.css" TYPE="text/css">
<title>Creating a Subsystem Factory</title>
</head>
<body bgcolor="#ffffff">
<h1>Creating a Subsystem Factory</h1>
<p>In this tutorial, you will use the RSE <A href="../plugin/subsystem.html">subsystemfactory
extension point</A> to show new subsystems within connections, when they are expanded. Effectively,
you will add a new <i>remote-accessing tool</i> to the Remote System Explorer.</p>
<p>
A full-blown tutorial to illustrate this extension point is a bit difficult without inventing
server-side code and a communication layer for that server-side code to communication with the
client-side subsystem. Rather than becoming bogged down in these details, this tutorial will not
write server-side code or a communications-layer, but instead will hard-code the remote resources
on the client-side so as to focus discussion on the client-side code. The extension point assumes
you already have server-side code and a communication layer you now want to exploit within
Eclipse.
</p>
<h2>Scenario</h2>
<p>This tutorial pretends that you have server-side code, which manages user profiles for developers, and
<i>teams</i> of developers. There is a master list of developers identified for development access
to this server, and there is a grouping mechanism that allows developers to be assigned to named
teams. Developers may exist on multiple teams. Each developer can have one or more <i>roles</i>, which
may affect what they are allowed to access.</p>
<p>In this tutorial you will define a subsystem for working with these resources in the remote system
identified by the parent connection object. This will first list teams, then developers within teams.
Roles will be accessible via an action.
</p>
<p><i>Do not worry about how useful or realistic the example is. The point of the exercise is
show the code necessary to fully enable new subsystems. It is up to the subsystem developer to
decide what resources to expose and what actions on those resources.</i></p>
<br>
<hr>
<h2>Step By Step: Creating a Subsystem Factory</h2>
<p>If you have not already, first <a href="pdeProject.html">create or prepare a plugin project</a>
We will follow the steps listed in the <A href="../plugin/subsystem.html#steps">Overview of Steps</A> section in the description of the plugin.</p>.
<ol>
<li>Create a package named <samp><b>samples.subsystems</b></samp>, by right-clicking on the <samp>src</samp> folder
and using the <b>New-&gt;Package</b> wizard. In the new package, create an empty interface
named <A href="IDeveloperSubSystem.html">IDeveloperSubSystem</A>,
by right-clicking on the package and selecting <b>New-&gt;Interface</b>.
</li>
<li>Also in package <samp>samples.subsystems</samp>, use <b>New-&gt;Class</b> to
create a class named <samp><b>DeveloperSystem</b></samp> that extends <b>superclass</b>
<samp><A href="../../com/ibm/etools/systems/subsystems/impl/AbstractSystem.html">AbstractSystem</A></samp>,
selecting the option to include <b>Constructors from superclass</b>. Edit the result to add
a <samp>connected</samp> instance variable that is used in the methods, as shown in bold <a href="DeveloperSystem.html">here</a>.
</li>
<li>Again in package <samp>samples.subsystems</samp>, use <b>New-&gt;Class</b> to
create a class named <samp><b>DeveloperSystemManager</b></samp> that extends <b>superclass</b>
<samp><A href="../../com/ibm/etools/systems/subsystems/impl/AbstractSystemManager.html">AbstractSystemManager</A></samp>,
selecting the option to include <b>Constructors from superclass</b>. Edit the result to add
a factory method, and flesh out the methods, as highlighted <a href="DeveloperSystemManager.html">here</a>.
</li>
<li>Create a package named <samp><b>samples.model</b></samp>. Create two classes in it:
<b><samp>TeamResource</samp></b> and <b><samp>DeveloperResource</samp></b>, each of which extend
<A href="../../org/eclipse/rse/ui/subsystems/impl/AbstractResource.html">AbstractResource</A>.
<ol>
<li type="i">Edit <samp>DeveloperResource</samp> to add <samp>name</samp>, <samp>id</samp>, and <samp>deptNbr</samp> properties,
as shown in bold <a href="DeveloperResource.html"><samp>here</samp></a>.
<li type="i">Edit <samp>TeamResource</samp> to add <samp>name</samp> and <samp>developers</samp> (array) properties,
as shown in bold <a href="TeamResource.html"><samp>here</samp></a>.
</ol>
<li>You need to think about filter support. For now, you can keep it simple: users can only create filters that list teams,
by specifying a single string that is either a scalar or a generic team name. If scalar, one team will be shown when the filter is expanded.
If generic, all teams matching the generic pattern will be listed. Given the simplicity, you will not need to create a filter string class to perform
parsing. As a result, you have nothing to do for this step.</li>
<li>Return to package <samp>samples.subsystems</samp>, and create class <b><samp>DeveloperSubSystem</samp></b>
that extends <samp><A href="../../com/ibm/etools/systems/dftsubsystem/impl/DefaultSubSystemImpl.html">DefaultSubSystemImpl</A></samp>.
Edit the generated class to add code highlighted <a href="DeveloperSubSystem.html">here</a>.</li>
<li>Again in package <samp>samples.subsystems</samp>, create class <b><samp>DeveloperSubSystemFactory</samp></b>
that extends <samp><A href="../../com/ibm/etools/systems/dftsubsystem/impl/DefaultSubSystemFactoryImpl.html">DefaultSubSystemFactoryImpl</A></samp>.
Edit the generated class to add code highlighted <a href="DeveloperSubSystemFactory.html">here</a>.
</li>
<li>In the project's root folder, find and edit file <samp>rseSamplesResources.properties</samp> and
add the line highlighted <a href="rseSamplesResources3.html">here</a>.
</li>
<li>Update your <samp>plugin.xml</samp> file to include the following lines:
<pre><samp>
&lt;!-- ======================================= --&gt;
&lt;!-- SubSystem Factory --&gt;
&lt;!-- ======================================= --&gt;
&lt;extension point=&quot;com.ibm.etools.systems.core.subsystemfactory&quot;&gt;
&lt;factory
id=&quot;samples.subsystems.factory&quot;
systemtypes=&quot;Linux;Unix;Windows&quot;
name=&quot;Teams&quot;
class=&quot;samples.subsystems.DeveloperSubSystemFactory&quot;
category=&quot;users&quot;
vendor=&quot;ACME&quot;
&gt;
&lt;/factory&gt;
&lt;/extension&gt;
</samp></pre>
<b>Note:</b> You would normal use the <samp>icon</samp> and <samp>iconLive</samp> attributes to specify
a unique icon for your subsystem, but to keep it simple here, just use the default icon.
</li>
</ol>
<p>Now you are far enough along that you can try our what you have, before proceeding. Select
<b>Run-&gt;Run As-&gt;Run-time workbench</b>. Create a new Linux connection in the RSE, and
expand it. You'll now see your <A href="runIt1.gif">new subsystem</A>, which you can expand
to see its default filter, which in turn you can expand to see your hardcoded list of teams:<br>
<IMG border="0" src="runIt1.gif" width="800" height="514">
<br>
You will be prompted for a user ID and password, but since the system class does not really
connect, enter anything you like!
<p>Eventually, you will be able to expand a team to see its developers.</p>
<p>Now it is time to work on the appearance and functions of those remote resources. You will do this
by creating adapters for the resources:</p>
<ol start="10">
<li>Select the <samp>samples.model</samp> package, and:
<ol>
<li type="i">Create a new class named <b><samp>TeamResourceAdapter</samp></b>
that extends <a href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter</samp></A> and implements
<a href="../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter</samp></A>.
Edit the generated class and add the code highlighted <a href="TeamResourceAdapter.html"><b>here</b></a>.
</li>
<li type="i">Create a new class named <b><samp>DeveloperResourceAdapter</samp></b>
that extends <a href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter</samp></A> and implements
<a href="../../org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter</samp></A>.
Edit the generated class and add the code highlighted <a href="DeveloperResourceAdapter.html"><b>here</b></a>.
</li>
<li type="i">Next, you need the icons for your remote resources, which you referred to in your adapters. Edit the <samp>RSESamplesPlugin</samp> file and edit the <samp>initializeImageRegistry</samp>
to add the lines of code highlighted <a href="InitializeImageRegistry.html"><b>here</b></a>. Now, you need the icons. Select the RSESamplesPlugin project,
right-click and select <b>New-&gt;Folder</b> and create a folder named <b>icons</b>. Select the new folder, and use <b>File-&gt;Import</b> to
import the <samp>team.gif</samp> and <samp>developer.gif</samp> files from the <samp>plugins\com.ibm.etools.systems.doc.isv\icons</samp> folder,
typically found <samp>c:\wdsc\iseries</samp> where c:\wdsc is where you installed this product.
</li>
</ol>
</li>
<li>Creating the adapters does nothing until you register them with the platform. To do that, you need
an adapter factory class and you need to register it with the platform:
<ol>
<li type="i">Select the <samp>samples.model</samp> package and in it create a class named
<b>DeveloperAdapterFactory</b> that extends <samp><a href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemRemoteAdapterFactory.html">AbstracSystemRemoteAdapterFactory</a></samp>
and implements interface <samp><b>org.eclipse.core.runtime.IAdapterFactory</b></samp>.
Edit the generate class as per the highlighted code <a href="DeveloperAdapterFactory.html"><b>here</b></a>.
</li>
<li type="i">Back in the <samp>RSESamplesPlugin</samp> class, add the highlighted code
<b><a href="startup.html">here</a></b> to your <samp>startup</samp> method.
</li>
</ol>
</li>
</ol>
<p>Once again, run the workbench to see your new subsystem:<br>
<IMG border="0" src="runIt2.gif" width="886" height="594"><br>
It is looking better now! There are icons and labels, and the team resources are expandable. Try the following things with
your new subsystem resources:</p>
<ul>
<li>Right-click on <samp>Team 1</samp> and select the <a href="renameAction.gif">rename action</A>. The rename action is enabled because you
overwrote <a href="TeamResourceAdapter.html#canRename">canRename</a> in the team resource adapter class. Try renaming it to a name already in use.
The <a href="renameDialog.gif">rename dialog</a> can catch this error because we returned the list of names in use in
the <a href="TeamResourceAdapter.html#getNames">getRemoteParentNamesInUse</a>
method in our team resource adapter class. Rename to a new name. The rename in fact happens because we implemented
the <a href="TeamResourceAdapter.html#doRename">doRename</a> method.
<li>The default filter <samp>All teams</samp> exists because we wrote code to create it in
our <a href="DeveloperSubSystemFactory.html#createDefaultFilterPool">createDefaultFilterPool</a>
subsystem factory method. Try creating a new filter: right-click on <samp>Teams</samp> subsystem and select
<a href="newFilterAction.gif">New-&gt;Filter</a> to get the
<a href="NewFilterWizard.gif">New Filter wizard</a>. Enter <samp>*2</samp>, press <b>Next</b>, and
enter <samp>Test filter</samp> for the filter name. Press <b>Finish</b>
to create the filter. Expand it, and you will see that only teams whose name ends with "2" are shown:<br>
<IMG border="0" src="testFilter.gif">
<br>
Filter support is free in the RSE,
but you do have to write our own code to apply that filter pattern as you see fit. In this case, we did this in our
<a href="DeveloperSubSystem.html#resolveFilterString">internalResolveFilterString</a> subsystem method.
<li>Notice how a resource like team can display multiple times, by different filters that resolve to it.
Rename <samp>Team 2</samp> shown under the new expanded <samp>Test filter</samp>, and notice how it is successfully
renamed under both filters. This ability to refresh the name in all occurrences of the same resource is made
possible by the adapter methods <a href="TeamResourceAdapter.html#getAbsoluteName">getAbsoluteName</a>, which helps
RSE find redundant copies of the same object, and <a href="TeamResourceAdapter.html#refreshRemoteObject">refreshRemoteObject</a>,
which the RSE calls, on each redundant copy, on a rename operation.
<IMG border="0" src="testRename.gif"></ul>
<p>
<br><br><br>
<p>There are no steps to perform here, but for your reference here is some information on how to further
evolve the functions via your adapter, should you want to:</p>
<ul>
<li>To not show the rename and delete actions at all, or to enable them,
override appropriate methods in the adapter class. For details see the methods
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#showRename(java.lang.Object)">showRename</A>,
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#showDelete(java.lang.Object)">showDelete</A>,
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#doRename(org.eclipse.swt.widgets.Shell, java.lang.Object, java.lang.String)">doRename</A>
and
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#doDelete(org.eclipse.swt.widgets.Shell, java.lang.Object)">doDelete</A> in the parent
<samp><A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html">AbstractSystemViewAdapter</A></samp> class.
<li>To supply your own validator for syntax checking of new names on the rename dialogs,
override <A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#getNameValidator(java.lang.Object)">getNameValidator</A>.
<li>To add additional actions to the pop-up menus, implement the <A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#addActions(com.ibm.etools.systems.core.ui.SystemMenuManager, org.eclipse.jface.viewers.IStructuredSelection, org.eclipse.swt.widgets.Shell, java.lang.String)">addActions</a>
method in your adapter class.
<li>To support dragging and dropping, override the
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#canDrag(java.lang.Object)">canDrag</a> and
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#canDrop(java.lang.Object)">canDrop</a> parent methods in your adapter class.
<li>To add additional properties to the property sheet, implement the
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#internalGetPropertyDescriptors()">internalGetPropertyDescriptors</a> and
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#internalGetPropertyValue()">internalGetPropertyValue</a> methods
in your adapter class.
<li>To add property pages to your remote objects (the Properties popup menu item will then appear) use
the RSE <A href="../plugin/propertypage.html">propertyPages</a> extension point.
</ul>
<br><br><br>
<p>Now you will continue with the tutorial by enhancing the running example to supply its own actions for creating and changing
filters. You will support two types of filters in our subsystems: team filters and developer filters. You have seen team filter already,
but developer filters will be new. They will contain a team name and a developer name-pattern, and when expanded, they will list all the
matching developers in the given team. The filter string syntax for developer filters will be "team-name/developer-generic-name". Because
you have more than one type of filter, our filter wizards will set the type attribute for the filters, so the change action will know
which dialog to present to the user. This will also allow you to have different icons for each filter.
<ol start="11">
<li>Follow these steps to enable support for our own filter-support:
<ol>
<li type="i">First, create the new GUI pane for your developer filter prompts. Select the <samp>samples.subsystems</samp>
package and in it create a new class named <samp><b>DeveloperFilterStringEditPane</b></samp> that extends the
class <samp><b>SystemFilterStringEditPane</b></samp> in package <samp>com.ibm.etools.systems.filters.ui</samp>.
Edit the new class, adding the code highlighted <a href="DeveloperFilterStringEditPane.html">here</a>.
</li>
<li type="i">Edit the <samp>DeveloperSubSystemFactory</samp> class, and add the code highlighted
<a href="DeveloperSubSystemFactory2.html">here</a>.
</li>
<li type="i">Next, you need the unique icons for your own filters, which you referred to in your subsystem factory. Edit the <samp>RSESamplesPlugin</samp> file and edit the <samp>initializeImageRegistry</samp>
to add the lines of code highlighted <a href="InitializeImageRegistry2.html">here</a>. Now you need these icons.
Select the folder named <b>icons</b> and use <b>File-&gt;Import</b> to
import the <samp>teamFilter.gif</samp> and <samp>developerFilter.gif</samp> files from the
<samp>plugins\com.ibm.etools.systems.doc.isv\icons</samp> folder,
typically found in <samp>c:\wdsc\iseries</samp> where c:\wdsc is where you installed this product.
</li>
<li type="i">Now you need to edit your subsystem so it will parse the two types of filters you now
have. Edit <samp>DeveloperSubSystem</samp> and edit it as highlighted <a href="DeveloperSubSystem2.html#resolve">here</a>.
</li>
<li type="i">In the project's root folder, find and edit file <samp>rseSamplesResources.properties</samp> and
add the line highlighted <a href="rseSamplesResources4.html">here</a>.
</li>
<li type="i">Now you can run again. Right click on the <samp>Teams</samp> subsystem, to see the new actions for
creating filters:<br>
<IMG border="0" src="NewFilterActions.gif">
<IMG border="0" src="TeamFilterWizard.gif"><br><br>
<IMG border="0" src="DeveloperFilterWizard.gif"><br><br>
Create a team filter and a developer filter, and notice the new icons:<br>
<IMG border="0" src="NewFilterIcons.gif"><br><br>
Now right-click on a team filter and select Change, and then do the same for a developer filter:<br>
<IMG border="0" src="TeamFilterDialog.gif">
<IMG border="0" src="DeveloperFilterDialog.gif"><br>
</li>
</ol>
</li>
</ol>
<br><br><br>
</body>
<!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">
<LINK REL="STYLESHEET" HREF="../../book.css" TYPE="text/css">
<title>Creating a Subsystem Factory</title>
</head>
<body bgcolor="#ffffff">
<h1>Creating a Subsystem Factory</h1>
<p>In this tutorial, you will use the RSE <A href="../plugin/subsystem.html">subsystemfactory
extension point</A> to show new subsystems within connections, when they are expanded. Effectively,
you will add a new <i>remote-accessing tool</i> to the Remote System Explorer.</p>
<p>
A full-blown tutorial to illustrate this extension point is a bit difficult without inventing
server-side code and a communication layer for that server-side code to communication with the
client-side subsystem. Rather than becoming bogged down in these details, this tutorial will not
write server-side code or a communications-layer, but instead will hard-code the remote resources
on the client-side so as to focus discussion on the client-side code. The extension point assumes
you already have server-side code and a communication layer you now want to exploit within
Eclipse.
</p>
<h2>Scenario</h2>
<p>This tutorial pretends that you have server-side code, which manages user profiles for developers, and
<i>teams</i> of developers. There is a master list of developers identified for development access
to this server, and there is a grouping mechanism that allows developers to be assigned to named
teams. Developers may exist on multiple teams. Each developer can have one or more <i>roles</i>, which
may affect what they are allowed to access.</p>
<p>In this tutorial you will define a subsystem for working with these resources in the remote system
identified by the parent connection object. This will first list teams, then developers within teams.
Roles will be accessible via an action.
</p>
<p><i>Do not worry about how useful or realistic the example is. The point of the exercise is
show the code necessary to fully enable new subsystems. It is up to the subsystem developer to
decide what resources to expose and what actions on those resources.</i></p>
<br>
<hr>
<h2>Step By Step: Creating a Subsystem Factory</h2>
<p>If you have not already, first <a href="pdeProject.html">create or prepare a plugin project</a>
We will follow the steps listed in the <A href="../plugin/subsystem.html#steps">Overview of Steps</A> section in the description of the plugin.</p>.
<ol>
<li>Create a package named <samp><b>samples.subsystems</b></samp>, by right-clicking on the <samp>src</samp> folder
and using the <b>New-&gt;Package</b> wizard. In the new package, create an empty interface
named <A href="IDeveloperSubSystem.html">IDeveloperSubSystem</A>,
by right-clicking on the package and selecting <b>New-&gt;Interface</b>.
</li>
<li>Also in package <samp>samples.subsystems</samp>, use <b>New-&gt;Class</b> to
create a class named <samp><b>DeveloperSystem</b></samp> that extends <b>superclass</b>
<samp><A href="../../com/ibm/etools/systems/subsystems/impl/AbstractSystem.html">AbstractSystem</A></samp>,
selecting the option to include <b>Constructors from superclass</b>. Edit the result to add
a <samp>connected</samp> instance variable that is used in the methods, as shown in bold <a href="DeveloperSystem.html">here</a>.
</li>
<li>Again in package <samp>samples.subsystems</samp>, use <b>New-&gt;Class</b> to
create a class named <samp><b>DeveloperSystemManager</b></samp> that extends <b>superclass</b>
<samp><A href="../../com/ibm/etools/systems/subsystems/impl/AbstractSystemManager.html">AbstractSystemManager</A></samp>,
selecting the option to include <b>Constructors from superclass</b>. Edit the result to add
a factory method, and flesh out the methods, as highlighted <a href="DeveloperSystemManager.html">here</a>.
</li>
<li>Create a package named <samp><b>samples.model</b></samp>. Create two classes in it:
<b><samp>TeamResource</samp></b> and <b><samp>DeveloperResource</samp></b>, each of which extend
<A href="../../reference/api/org/eclipse/rse/ui/subsystems/impl/AbstractResource.html">AbstractResource</A>.
<ol>
<li type="i">Edit <samp>DeveloperResource</samp> to add <samp>name</samp>, <samp>id</samp>, and <samp>deptNbr</samp> properties,
as shown in bold <a href="DeveloperResource.html"><samp>here</samp></a>.
<li type="i">Edit <samp>TeamResource</samp> to add <samp>name</samp> and <samp>developers</samp> (array) properties,
as shown in bold <a href="TeamResource.html"><samp>here</samp></a>.
</ol>
<li>You need to think about filter support. For now, you can keep it simple: users can only create filters that list teams,
by specifying a single string that is either a scalar or a generic team name. If scalar, one team will be shown when the filter is expanded.
If generic, all teams matching the generic pattern will be listed. Given the simplicity, you will not need to create a filter string class to perform
parsing. As a result, you have nothing to do for this step.</li>
<li>Return to package <samp>samples.subsystems</samp>, and create class <b><samp>DeveloperSubSystem</samp></b>
that extends <samp><A href="../../com/ibm/etools/systems/dftsubsystem/impl/DefaultSubSystemImpl.html">DefaultSubSystemImpl</A></samp>.
Edit the generated class to add code highlighted <a href="DeveloperSubSystem.html">here</a>.</li>
<li>Again in package <samp>samples.subsystems</samp>, create class <b><samp>DeveloperSubSystemFactory</samp></b>
that extends <samp><A href="../../com/ibm/etools/systems/dftsubsystem/impl/DefaultSubSystemFactoryImpl.html">DefaultSubSystemFactoryImpl</A></samp>.
Edit the generated class to add code highlighted <a href="DeveloperSubSystemFactory.html">here</a>.
</li>
<li>In the project's root folder, find and edit file <samp>rseSamplesResources.properties</samp> and
add the line highlighted <a href="rseSamplesResources3.html">here</a>.
</li>
<li>Update your <samp>plugin.xml</samp> file to include the following lines:
<pre><samp>
&lt;!-- ======================================= --&gt;
&lt;!-- SubSystem Factory --&gt;
&lt;!-- ======================================= --&gt;
&lt;extension point=&quot;com.ibm.etools.systems.core.subsystemfactory&quot;&gt;
&lt;factory
id=&quot;samples.subsystems.factory&quot;
systemtypes=&quot;Linux;Unix;Windows&quot;
name=&quot;Teams&quot;
class=&quot;samples.subsystems.DeveloperSubSystemFactory&quot;
category=&quot;users&quot;
vendor=&quot;ACME&quot;
&gt;
&lt;/factory&gt;
&lt;/extension&gt;
</samp></pre>
<b>Note:</b> You would normal use the <samp>icon</samp> and <samp>iconLive</samp> attributes to specify
a unique icon for your subsystem, but to keep it simple here, just use the default icon.
</li>
</ol>
<p>Now you are far enough along that you can try our what you have, before proceeding. Select
<b>Run-&gt;Run As-&gt;Run-time workbench</b>. Create a new Linux connection in the RSE, and
expand it. You'll now see your <A href="runIt1.gif">new subsystem</A>, which you can expand
to see its default filter, which in turn you can expand to see your hardcoded list of teams:<br>
<IMG border="0" src="runIt1.gif" width="800" height="514">
<br>
You will be prompted for a user ID and password, but since the system class does not really
connect, enter anything you like!
<p>Eventually, you will be able to expand a team to see its developers.</p>
<p>Now it is time to work on the appearance and functions of those remote resources. You will do this
by creating adapters for the resources:</p>
<ol start="10">
<li>Select the <samp>samples.model</samp> package, and:
<ol>
<li type="i">Create a new class named <b><samp>TeamResourceAdapter</samp></b>
that extends <a href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter</samp></A> and implements
<a href="../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter</samp></A>.
Edit the generated class and add the code highlighted <a href="TeamResourceAdapter.html"><b>here</b></a>.
</li>
<li type="i">Create a new class named <b><samp>DeveloperResourceAdapter</samp></b>
that extends <a href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter</samp></A> and implements
<a href="../../reference/api/org/eclipse/rse/ui/view/ISystemRemoteElementAdapter.html"><samp>com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter</samp></A>.
Edit the generated class and add the code highlighted <a href="DeveloperResourceAdapter.html"><b>here</b></a>.
</li>
<li type="i">Next, you need the icons for your remote resources, which you referred to in your adapters. Edit the <samp>RSESamplesPlugin</samp> file and edit the <samp>initializeImageRegistry</samp>
to add the lines of code highlighted <a href="InitializeImageRegistry.html"><b>here</b></a>. Now, you need the icons. Select the RSESamplesPlugin project,
right-click and select <b>New-&gt;Folder</b> and create a folder named <b>icons</b>. Select the new folder, and use <b>File-&gt;Import</b> to
import the <samp>team.gif</samp> and <samp>developer.gif</samp> files from the <samp>plugins\com.ibm.etools.systems.doc.isv\icons</samp> folder,
typically found <samp>c:\wdsc\iseries</samp> where c:\wdsc is where you installed this product.
</li>
</ol>
</li>
<li>Creating the adapters does nothing until you register them with the platform. To do that, you need
an adapter factory class and you need to register it with the platform:
<ol>
<li type="i">Select the <samp>samples.model</samp> package and in it create a class named
<b>DeveloperAdapterFactory</b> that extends <samp><a href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemRemoteAdapterFactory.html">AbstracSystemRemoteAdapterFactory</a></samp>
and implements interface <samp><b>org.eclipse.core.runtime.IAdapterFactory</b></samp>.
Edit the generate class as per the highlighted code <a href="DeveloperAdapterFactory.html"><b>here</b></a>.
</li>
<li type="i">Back in the <samp>RSESamplesPlugin</samp> class, add the highlighted code
<b><a href="startup.html">here</a></b> to your <samp>startup</samp> method.
</li>
</ol>
</li>
</ol>
<p>Once again, run the workbench to see your new subsystem:<br>
<IMG border="0" src="runIt2.gif" width="886" height="594"><br>
It is looking better now! There are icons and labels, and the team resources are expandable. Try the following things with
your new subsystem resources:</p>
<ul>
<li>Right-click on <samp>Team 1</samp> and select the <a href="renameAction.gif">rename action</A>. The rename action is enabled because you
overwrote <a href="TeamResourceAdapter.html#canRename">canRename</a> in the team resource adapter class. Try renaming it to a name already in use.
The <a href="renameDialog.gif">rename dialog</a> can catch this error because we returned the list of names in use in
the <a href="TeamResourceAdapter.html#getNames">getRemoteParentNamesInUse</a>
method in our team resource adapter class. Rename to a new name. The rename in fact happens because we implemented
the <a href="TeamResourceAdapter.html#doRename">doRename</a> method.
<li>The default filter <samp>All teams</samp> exists because we wrote code to create it in
our <a href="DeveloperSubSystemFactory.html#createDefaultFilterPool">createDefaultFilterPool</a>
subsystem factory method. Try creating a new filter: right-click on <samp>Teams</samp> subsystem and select
<a href="newFilterAction.gif">New-&gt;Filter</a> to get the
<a href="NewFilterWizard.gif">New Filter wizard</a>. Enter <samp>*2</samp>, press <b>Next</b>, and
enter <samp>Test filter</samp> for the filter name. Press <b>Finish</b>
to create the filter. Expand it, and you will see that only teams whose name ends with "2" are shown:<br>
<IMG border="0" src="testFilter.gif">
<br>
Filter support is free in the RSE,
but you do have to write our own code to apply that filter pattern as you see fit. In this case, we did this in our
<a href="DeveloperSubSystem.html#resolveFilterString">internalResolveFilterString</a> subsystem method.
<li>Notice how a resource like team can display multiple times, by different filters that resolve to it.
Rename <samp>Team 2</samp> shown under the new expanded <samp>Test filter</samp>, and notice how it is successfully
renamed under both filters. This ability to refresh the name in all occurrences of the same resource is made
possible by the adapter methods <a href="TeamResourceAdapter.html#getAbsoluteName">getAbsoluteName</a>, which helps
RSE find redundant copies of the same object, and <a href="TeamResourceAdapter.html#refreshRemoteObject">refreshRemoteObject</a>,
which the RSE calls, on each redundant copy, on a rename operation.
<IMG border="0" src="testRename.gif"></ul>
<p>
<br><br><br>
<p>There are no steps to perform here, but for your reference here is some information on how to further
evolve the functions via your adapter, should you want to:</p>
<ul>
<li>To not show the rename and delete actions at all, or to enable them,
override appropriate methods in the adapter class. For details see the methods
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#showRename(java.lang.Object)">showRename</A>,
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#showDelete(java.lang.Object)">showDelete</A>,
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#doRename(org.eclipse.swt.widgets.Shell, java.lang.Object, java.lang.String)">doRename</A>
and
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#doDelete(org.eclipse.swt.widgets.Shell, java.lang.Object)">doDelete</A> in the parent
<samp><A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html">AbstractSystemViewAdapter</A></samp> class.
<li>To supply your own validator for syntax checking of new names on the rename dialogs,
override <A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#getNameValidator(java.lang.Object)">getNameValidator</A>.
<li>To add additional actions to the pop-up menus, implement the <A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#addActions(com.ibm.etools.systems.core.ui.SystemMenuManager, org.eclipse.jface.viewers.IStructuredSelection, org.eclipse.swt.widgets.Shell, java.lang.String)">addActions</a>
method in your adapter class.
<li>To support dragging and dropping, override the
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#canDrag(java.lang.Object)">canDrag</a> and
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#canDrop(java.lang.Object)">canDrop</a> parent methods in your adapter class.
<li>To add additional properties to the property sheet, implement the
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#internalGetPropertyDescriptors()">internalGetPropertyDescriptors</a> and
<A href="../../com/ibm/etools/systems/core/ui/view/AbstractSystemViewAdapter.html#internalGetPropertyValue()">internalGetPropertyValue</a> methods
in your adapter class.
<li>To add property pages to your remote objects (the Properties popup menu item will then appear) use
the RSE <A href="../plugin/propertypage.html">propertyPages</a> extension point.
</ul>
<br><br><br>
<p>Now you will continue with the tutorial by enhancing the running example to supply its own actions for creating and changing
filters. You will support two types of filters in our subsystems: team filters and developer filters. You have seen team filter already,
but developer filters will be new. They will contain a team name and a developer name-pattern, and when expanded, they will list all the
matching developers in the given team. The filter string syntax for developer filters will be "team-name/developer-generic-name". Because
you have more than one type of filter, our filter wizards will set the type attribute for the filters, so the change action will know
which dialog to present to the user. This will also allow you to have different icons for each filter.
<ol start="11">
<li>Follow these steps to enable support for our own filter-support:
<ol>
<li type="i">First, create the new GUI pane for your developer filter prompts. Select the <samp>samples.subsystems</samp>
package and in it create a new class named <samp><b>DeveloperFilterStringEditPane</b></samp> that extends the
class <samp><b>SystemFilterStringEditPane</b></samp> in package <samp>com.ibm.etools.systems.filters.ui</samp>.
Edit the new class, adding the code highlighted <a href="DeveloperFilterStringEditPane.html">here</a>.
</li>
<li type="i">Edit the <samp>DeveloperSubSystemFactory</samp> class, and add the code highlighted
<a href="DeveloperSubSystemFactory2.html">here</a>.
</li>
<li type="i">Next, you need the unique icons for your own filters, which you referred to in your subsystem factory. Edit the <samp>RSESamplesPlugin</samp> file and edit the <samp>initializeImageRegistry</samp>
to add the lines of code highlighted <a href="InitializeImageRegistry2.html">here</a>. Now you need these icons.
Select the folder named <b>icons</b> and use <b>File-&gt;Import</b> to
import the <samp>teamFilter.gif</samp> and <samp>developerFilter.gif</samp> files from the
<samp>plugins\com.ibm.etools.systems.doc.isv\icons</samp> folder,
typically found in <samp>c:\wdsc\iseries</samp> where c:\wdsc is where you installed this product.
</li>
<li type="i">Now you need to edit your subsystem so it will parse the two types of filters you now
have. Edit <samp>DeveloperSubSystem</samp> and edit it as highlighted <a href="DeveloperSubSystem2.html#resolve">here</a>.
</li>
<li type="i">In the project's root folder, find and edit file <samp>rseSamplesResources.properties</samp> and
add the line highlighted <a href="rseSamplesResources4.html">here</a>.
</li>
<li type="i">Now you can run again. Right click on the <samp>Teams</samp> subsystem, to see the new actions for
creating filters:<br>
<IMG border="0" src="NewFilterActions.gif">
<IMG border="0" src="TeamFilterWizard.gif"><br><br>
<IMG border="0" src="DeveloperFilterWizard.gif"><br><br>
Create a team filter and a developer filter, and notice the new icons:<br>
<IMG border="0" src="NewFilterIcons.gif"><br><br>
Now right-click on a team filter and select Change, and then do the same for a developer filter:<br>
<IMG border="0" src="TeamFilterDialog.gif">
<IMG border="0" src="DeveloperFilterDialog.gif"><br>
</li>
</ol>
</li>
</ol>
<br><br><br>
</body>
</html>