Each of the sample plug-ins written in Java™ provides its own registry file.
The following sections describe the important parts of the registry file and illustrate how to create appropriate entries for your own plug-ins. The examples are taken from the appropriate sample which illustrates the function described.
Programmatic Identifier (ProgID)
Your plug-in is uniquely identified to iSeries™ Navigator by means of a text string of the form <vendor>.<component>, where vendor identifies the vendor who developed the plug-in, and component describes the function being provided. In the examples below, the string IBM.MsgQueueSample3 identifies IBM® as the vendor, and "MsgQueueSample3" as the description of the function provided by the plug-in. This string is known as the programmatic identifier, or ProgID. It's used throughout the registry file when specifying the function your plug-in provides, and it also names the directory where your plug-in will reside on both the iSeries server and the client workstation.
Globally unique identifiers (GUIDs)
Microsoft®'s Component Object Model uses 16-byte hex integers to uniquely identify ActiveX implementation classes and interfaces. These integers are known as Globally Unique Identifiers, or GUIDs. GUIDs that identify implementation classes are called CLSIDs (pronounced "class IDs").
For iSeries Navigator components written in Java, you should not define new GUIDs. All Java plug-ins use a set of standard GUIDs that specify the built-in ActiveX server component which manages Java plug-ins. The standard CLSIDs to use are provided in the examples below.
;-------------------------------------------------------------------- ; Define the primary registry key for Message Queue Sample 3. [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample3] "Type"="PLUGIN" "NLS"="MessageQueuesMRI.dll" "NameID"=dword:00000001 "DescriptionID"=dword:00000002 "MinimumIMPIRelease"="NONE" "MinimumRISCRelease"="ANY" "ProductID"="NONE" "ServerEntryPoint"="NONE" "JavaPath"="MsgQueueSample3.jar" "JavaMRI"="MsgQueueSample3MRI.jar"
If the plug-in does not support any i5/OS release that runs on IMPI hardware (releases prior to Version 3 Release 6), the value of this field should be "NONE." If the plug-in can support any release that runs on IMPI hardware, the value of this field should be "ANY."
If the plug-in does not support any i5/OS release that runs on RISC hardware (Version 3 Release 6 and above), the value of this field should be "NONE." If the plug-in can support any release that runs on RISC hardware, the value of this field should be "ANY."
Multiple comma-separated product IDs may be specified if multiple IDs exist for the same product.
;-------------------------------------------------------------------- ; Register a new folder [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample3\folders\Sample3] "Parent"="AS4" "Attributes"=hex:00,01,00,a0 "CLSID"="{1827A856-9C20-11d1-96C3-00062912C9B2}" "JavaClass"="com.ibm.as400.opnav.MsgQueueSample3.MqListManager" "NameID"=dword:0000000b "DescriptionID"=dword:0000000c "DefaultIconIndex"=dword:00000001 "OpenIconIndex"=dword:00000000 "AdminItem"="QIBM_SAMPLE_SMPFLR" "TaskpadNameID"=dword:00000003 "TaskpadDescriptionID"=dword:00000004
ADF | Application Development folder |
AS4 | iSeries server folder |
BKF | Backup folder |
BOF | Basic Operations folder |
CFG | Configuration and Service folder |
DBF | Database folder |
FSF | File Systems folder |
MCN | Management Central folder |
MCS | Management Central Configuration and Service folder |
MDF | Management Central Definitions folder |
MMN | Management Central Monitors |
MST | Management Central Scheduled Tasks |
MTA | Management Central Task Activity |
MXS | Management Central Extreme Support |
NSR | Network Servers folder |
NWF | Network folder |
SCF | Security folder |
UGF | Users and Groups folder |
WMF | Work Management folder |
;-------------------------------------------------------------------- ; Register a context menu handler for the new folder and its objects [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample3\ shellex\Sample3\*\ContextMenuHandlers\{1827A857-9C20-11d1-96C3-00062912C9B2}] "JavaClass"="com.ibm.as400.opnav.MsgQueueSample3.MqActionsManager"
;------------------------------------------------------------------------------ ; Register a drag/drop context menu handler for the new folder and its objects [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample3\ shellex\Sample3\*\DragDropHandlers\{1827A857-9C20-11d1-96C3-00062912C9B2}] "JavaClass"="com.ibm.as400.opnav.MsgQueueSample3.MqActionsManager"
;-------------------------------------------------------------------- ; Register a task handler for the new folder and its objects [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample5\ shellex\Sample5\*\TaskHandlers\{1827A857-9C20-11d1-96C3-00062912C9B2}] "JavaClass"="com.ibm.as400.opnav.MsgQueueSample5.MqTasksManager" "JavaClassType"="TasksManager"
;-------------------------------------------------------------------- ; Register a drop handler for the new folder and its objects [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample3\ shellex\Sample3\*\DropHandler] @="{1827A857-9C20-11d1-96C3-00062912C9B2}" "JavaClass"="com.ibm.as400.opnav.MsgQueueSample3.MqDropTargetManager"
A pair of object type identifiers is required under the shellex key. The first identifier in the pair specifies the root folder for an iSeries Navigator component. For new folders added by your plug-in, this identifier should match the logical type of the folder you specified as your junction point. For existing folders, this subkey should generally be the object type of the first-level folder under an iSeries server container object. These type strings are defined under HKEY_CLASSES_ROOT\IBM.AS400.Network\TYPES in the registry.
The second identifier in the pair identifies the specific object type that the plug-in wants to affect. If "*" is specified, the plug-in will be called the for the folder type identified in the first identifier, plus all folders and objects which appear in the hierarchy under that folder. Otherwise, a specific type identifier should be specified, and the plug-in will only be called when the user performs an action on an object of that type.
Remember that any number of plug-ins may register their intent to add function to a given object type in the Navigator hierarchy. The plug-in should never assume that it is the only server component which is providing function for a given object type. This applies not only to existing object types, but also to any new objects that a plug-in may choose to define. If your plug-in is widely used, there is nothing to prevent another vendor from extending object types that are defined by your plug-in.
If a plug-in's communications with the iSeries server are performed by using the Sockets API or some other low-level communications service, then it is the responsibility of the plug-in to support SSL if it has been requested. If the plug-in doesn't provide this support, it should indicate that it doesn't support SSL as described below. When this is done, the plug-in's function will be disabled if the user has requested a secure connection.
;------------------------------------------------------------------------------ ; Indicate that this plug-in supports SSL. [HKEY_CLASSES_ROOT\IBM.AS400.Network\3RD PARTY EXTENSIONS\IBM.MsgQueueSample3\SSL] "Support Level"=dword:00000001