blob: 80ef73e26f0117f615f0eae3c99c729657754b7e [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="resource-manager-data">
<xs:annotation>
<xs:documentation>
It is assumed that the xml instance of the schema will bear a name which sufficiently distinguishes it from others
of a similar type; e.g., pbs-torque-v_2.3.7_abe is specific to an installation on the host abe, ll-v_4.0 suits all installations of
LoadLeveler version 4, etc.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="site"/>
<xs:element ref="control"/>
<xs:element ref="monitor"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="site">
<xs:annotation>
<xs:documentation>
An optional place to set remote site information.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="control-connection" type="xs:string"/>
<xs:element minOccurs="0" name="monitor-server-install" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="control">
<xs:annotation>
<xs:documentation>
The implementation will construct a variable map serving as the resource manager "environment"; these are dereferenced in the
configuration file via ${rm:name} or ${rm:name#getterName}; in addition to the properties specified at the top level of the control
tree, all attributes and parsers will be mapped for reference. The following hard-coded variables are added at runtime:
<!-- from runtime configuration information -->
control.user.name
control.address
monitor.user.name
monitor.address
<!-- from the monitoring part -->
available_queues
<!-- from the launch command stdout parser -->
jobId
<!-- from the other Run Configuration tabs -->
executablePath
progArgs
directory
The top level of the tree represents the available commands/methods on all resource managers, places
for defining stdout or stderr parsers, for defining the structure of a batch script to be used, for defining (job) attributes, and
finally for describing how to construct the UI (Launch Configuration Tab).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
<xs:element minOccurs="0" ref="managed-files"/>
<xs:element minOccurs="0" ref="on-start-up"/>
<xs:element minOccurs="0" ref="discover-attributes"/>
<xs:element name="submit-commands">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="3">
<xs:element ref="submit-interactive"/>
<xs:element ref="submit-batch"/>
<xs:element ref="submit-debug"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element ref="terminate-job"/>
<xs:element minOccurs="0" ref="suspend-job"/>
<xs:element minOccurs="0" ref="resume-job"/>
<xs:element minOccurs="0" ref="hold-job"/>
<xs:element minOccurs="0" ref="release-job"/>
<xs:element minOccurs="0" ref="on-shut-down"/>
<xs:element minOccurs="0" ref="commands"/>
<xs:element minOccurs="0" ref="parsers"/>
<xs:element minOccurs="0" ref="script"/>
<xs:element ref="attribute-definitions"/>
<xs:element ref="launch-tab"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="property">
<xs:annotation>
<xs:documentation>
The value is any object type; these are set at runtime.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="managed-files">
<xs:annotation>
<xs:documentation>
List of files to be staged.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="file-source-location" minOccurs="0" type="xs:string"/>
<xs:element name="file-staging-location" minOccurs="0" type="xs:string"/>
<xs:element maxOccurs="unbounded" ref="managed-file"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="managed-file">
<xs:annotation>
<xs:documentation>
If 'contents' is present, the file is written.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="contents" minOccurs="0" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="uniqueIdPrefix" type="xs:boolean" default="false"/>
<xs:attribute name="deleteAfterUse" type="xs:boolean" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="on-start-up">
<xs:annotation>
<xs:documentation>
Arbitrary commands which need to be run on startup.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="discover-attributes">
<xs:annotation>
<xs:documentation>
A command for retrieving (if possible) attributes defined by the service dynamically.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="submit-interactive">
<xs:annotation>
<xs:documentation>
The command(s) for running interactive jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="submit-batch">
<xs:annotation>
<xs:documentation>
The command(s) for running jobs through the scheduler.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="submit-debug">
<xs:annotation>
<xs:documentation>
The command(s) for running debug jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminate-job">
<xs:annotation>
<xs:documentation>
The command(s) for canceling or killing jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="suspend-job">
<xs:annotation>
<xs:documentation>
The command(s) for suspending jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="resume-job">
<xs:annotation>
<xs:documentation>
The command(s) for restarting suspended jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="hold-job">
<xs:annotation>
<xs:documentation>
The command(s) for holding jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="release-job">
<xs:annotation>
<xs:documentation>
The command(s) for releasing suspended jobs.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="on-shut-down">
<xs:annotation>
<xs:documentation>
Arbitrary commands which need to be run on shut-down.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="commands">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="parsers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="stream-parser"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="script">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="directive-definitions"/>
<xs:element minOccurs="0" ref="environment-variables"/>
<xs:element minOccurs="0" ref="pre-execute-commands"/>
<xs:element ref="execute-command"/>
<xs:element minOccurs="0" ref="post-execute-commands"/>
</xs:sequence>
<xs:attribute name="shell" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="directive-definitions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="directive-definition"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="directive-definition">
<xs:annotation>
<xs:documentation>
'ValueFrom' refers to properties in the resource manager environment.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="valueFrom"/>
</xs:complexType>
</xs:element>
<xs:element name="environment-variables">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="environment-variable"/>
</xs:sequence>
<xs:attribute name="syntax" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="sentenv"/>
<xs:enumeration value="export"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="environment-variable">
<xs:annotation>
<xs:documentation>
'ValueFrom' refers to properties in the resource manager environment.
</xs:documentation>
</xs:annotation>
<xs:complexType >
<xs:attribute name="variableName" use="required" type="xs:string"/>
<xs:attribute name="valueFrom" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="pre-execute-commands">
<xs:complexType>
<xs:sequence>
<xs:element ref="arglist" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="execute-command">
<xs:complexType>
<xs:sequence>
<xs:element ref="arglist"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="post-execute-commands">
<xs:complexType>
<xs:sequence>
<xs:element ref="arglist" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attribute-definitions">
<xs:complexType>
<xs:sequence>
<xs:element ref="job-attribute" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="job-attribute">
<xs:complexType>
<xs:sequence>
<xs:element name="description" type="xs:string"/>
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
<xs:element name="choice" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>
A a comma-delimited set of values.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="default" minOccurs="0" type="xs:string"/>
<xs:element minOccurs="0" ref="validator"/>
<xs:element name="value" minOccurs="0" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:string"/>
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="type" use="required" type="xs:string"/>
<xs:attribute name="basic" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
Indicates if this attribute is part of a basic (required) set, or if it is an (advanced) option.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="min" type="xs:int"/>
<xs:attribute name="max" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="command-ref" type="xs:string"/>
<xs:element name="parser-ref" type="xs:string"/>
<xs:element name="command">
<xs:complexType>
<xs:sequence>
<xs:element ref="arglist"/>
<xs:element minOccurs="0" maxOccurs="2" ref="parser-ref"/>
<xs:element minOccurs="0" ref="environment-variables"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="displayStdout" type="xs:boolean" default="false"/>
<xs:attribute name="displayStderr" type="xs:boolean" default="false"/>
<xs:attribute name="directory" type="xs:string"/>
<xs:attribute name="redirectStderr" type="xs:boolean" default="false"/>
<xs:attribute name="replaceEnvironment" type="xs:boolean" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="arglist">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="arg"/>
</xs:sequence>
<xs:attribute name="dynamicAppend" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
Iterate over all dynamic attributes, appending the sequence of args for each attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="arg">
<xs:annotation>
<xs:documentation>
The text of the argument will be parsed for references to the resource manager environment; e.g., ${rm:a}, v=${rm:v},
etc. By convention, '${rm:@name}' and '${rm:@value}' will refer to a given dynamic attribute name and value (of undefined position i in
the list).
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="isUndefinedIfEquals" type="xs:string">
<xs:annotation>
<xs:documentation>
If this is defined (even a zero-length string is valid), an equality check on the arg will be run and if satisfied the arg will be
eliminated from the list.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="stream-parser">
<xs:annotation>
<xs:documentation>
These are attached to the stdout or stderr streams in order to capture the output of the command and add values
into the resource manager environment. The range indicates which lines of output should be examined. If redirect is true, the
stream will be passed on to an output stream provided by the caller.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="range"/>
<xs:element ref="token"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="stderr" type="xs:boolean" default="false"/>
<xs:attribute name="redirect" type="xs:boolean" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="token">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="range"/>
<xs:choice>
<xs:element ref="token"/>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="put"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="set"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="add"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
<xs:attribute name="delim">
<xs:annotation>
<xs:documentation>
The absence of a delimiter means match the entire segment.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:annotation>
<xs:documentation>
Value is the concatenation of tokens matching the range; this is then added as an element to the named list. If
there is no such list, a list will be created and assigned to the variable name. If no range is present, the value equals the
entire element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="range"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:annotation>
<xs:documentation>
Value assigned to the setter is the concatenation of tokens matching the range; in the context of this
implementation, setter refers to the name of an attribute or element of JobAttribute or to a Property value; name designates the
variable to which the JobAttribute or Property has been assigned. If no such element exists an exception is thrown. If no
range is
present, the value equals the entire element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="range"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="setter" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="put">
<xs:annotation>
<xs:documentation>
Value is the concatenation of tokens matching the range; this is assigned as a Property variable with the given
name. This method will overwrite any variable with the same name. If no range is present, the value equals
the entire element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="range"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="range" type="xs:string">
<xs:annotation>
<xs:documentation>
Indicates which elements generated by a segmentation should be returned; expression is a comma-delimited list,
which may also contain colon-delimited ranges; by convention, ":N" = up to final segment returned.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="validator">
<xs:annotation>
<xs:documentation>
A regular expression or an acl used to validate an attribute value.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="regex" type="xs:string"/>
<xs:element name="acl" type="xs:string"/>
</xs:choice>
<xs:element name="error-message" minOccurs="0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="launch-tab">
<xs:annotation>
<xs:documentation>
This is a recursive description of the main UI element associated with the control part, the Launch Tab. NOTE: I
do not as yet know how many of the underlying widget options need to be exposed here for effective building in the createControl
method. What follows is minimal.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="tab-controller"/>
</xs:sequence>
<xs:attribute name="advancedModeEnabled" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
If this is set to true, a tab-controller which allows the user to browse the local file system and/or workspace
to open and edit a custom batch script will be created; this will include copy and renaming buttons.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="tab-controller">
<xs:annotation>
<xs:documentation>
as in: org.eclipse.ptp.rm.ui.launch.ExtendableRMLaunchConfigurationDynamicTab; a top-level "switch" between views.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="group"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tab-folder">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element maxOccurs="unbounded" ref="tab-item"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tab-item">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="group"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="group">
<xs:annotation>
<xs:documentation>
We may want a few tweaks here, such as borders, etc. Dynamic attribute means this group gets rebuilt if there is a
button allowing the user to select displayed attributes.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="grid-data" minOccurs="0"/>
<xs:element ref="grid-layout" minOccurs="0"/>
<xs:element name="title" type="xs:string" minOccurs="0"/>
<xs:element ref="style" minOccurs="0"/>
<xs:choice>
<xs:choice maxOccurs="unbounded">
<xs:element ref="group"/>
<xs:element ref="tab-folder"/>
<xs:element ref="widget"/>
<xs:element ref="viewer"/>
</xs:choice>
<xs:element ref="discovered-attributes"/>
<xs:element ref="all-attributes"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="dynamic" type="xs:boolean" default="false"/>
<xs:attribute name="scrollable" type="xs:boolean" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="all-attributes">
<xs:annotation>
<xs:documentation>
Indicates that all the attributes defined at initialization and runtime be placed in this group.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="viewer" minOccurs="0">
<xs:annotation>
<xs:documentation>
The presence of this element indicates all attributes should be placed in a single table; otherwise, attributes
are mapped serially to widgets by type.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="headers" type="xs:boolean" default="true"/>
<xs:attribute name="sort" type="xs:boolean" default="true"/>
<xs:attribute name="name" type="xs:boolean" default="true"/>
<xs:attribute name="tooltip" type="xs:boolean" default="true"/>
<xs:attribute name="description" type="xs:boolean" default="true"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="discovered-attributes">
<xs:annotation>
<xs:documentation>
Indicates that all the attributes defined at runtime be placed in this group.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="viewer" minOccurs="0">
<xs:annotation>
<xs:documentation>
The presence of this element indicates all attributes should be placed in a single table; otherwise, attributes
are mapped serially to widgets by type.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="headers" type="xs:boolean" default="true"/>
<xs:attribute name="sort" type="xs:boolean" default="true"/>
<xs:attribute name="name" type="xs:boolean" default="true"/>
<xs:attribute name="tooltip" type="xs:boolean" default="true"/>
<xs:attribute name="description" type="xs:boolean" default="true"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="grid-data">
<xs:complexType>
<xs:attribute name="horizontalAlign" type="xs:string"/>
<xs:attribute name="verticalAlign" type="xs:string"/>
<xs:attribute name="grabExcessHorizontal" type="xs:boolean" default="true"/>
<xs:attribute name="grabExcessVertical" type="xs:boolean" default="false"/>
<xs:attribute name="horizontalSpan" type="xs:integer"/>
<xs:attribute name="verticalSpan" type="xs:integer"/>
<xs:attribute name="minHeight" type="xs:integer"/>
<xs:attribute name="minWidth" type="xs:integer"/>
<xs:attribute name="heightHint" type="xs:integer"/>
<xs:attribute name="widthHint" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="grid-layout">
<xs:complexType>
<xs:attribute name="numColumns" type="xs:integer"/>
<xs:attribute name="horizontalSpacing" type="xs:integer"/>
<xs:attribute name="makeColumnsEqualWidth" type="xs:boolean" default="true"/>
<xs:attribute name="marginBottom" type="xs:integer"/>
<xs:attribute name="marginHeight" type="xs:integer"/>
<xs:attribute name="marginLeft" type="xs:integer"/>
<xs:attribute name="marginRight" type="xs:integer"/>
<xs:attribute name="marginTop" type="xs:integer"/>
<xs:attribute name="marginWidth" type="xs:integer"/>
<xs:attribute name="verticalSpacing" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="column-data">
<xs:complexType>
<xs:sequence>
<xs:element ref="style"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="width" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="style">
<xs:complexType>
<xs:sequence>
<xs:element name="tag" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
The strings will be converted into their integer values;
e.g., "SWT.NONE". They will then be 'or'd' ( | ).
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="viewer">
<xs:complexType>
<xs:sequence>
<xs:element ref="grid-data" minOccurs="0"/>
<xs:element ref="grid-layout" minOccurs="0"/>
<xs:element name="label" minOccurs="0" type="xs:string"/>
<xs:element ref="style" minOccurs="0"/>
<xs:element ref="column-data" minOccurs="0"/>
<xs:element name="initial-rows" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="row" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="column-text" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="editable" type="xs:boolean" default="true"/>
<xs:attribute name="type" default="table">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="table"/>
<xs:enumeration value="tree"/>
<xs:enumeration value="checkboxTable"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="widget">
<xs:complexType>
<xs:sequence>
<xs:element name="label" minOccurs="0" type="xs:string"/>
<xs:element ref="style" minOccurs="0"/>
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
<xs:element name="content" minOccurs="0">
<xs:annotation>
<xs:documentation>
The text of this element will be parsed for references to the resource manager environment; e.g., ${a},
version-${b}, etc.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="arglist"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="saveValueTo" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
The text of this element will be the name of a property.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="type" default="text">
<xs:annotation>
<xs:documentation>
Custom, fixed widgets:
1. select-attributes: push button which brings up wizard exposing attribute names with
checkboxes, allowing dynamic groups to be rebuilt.
2. show-script: push button which displays the batch script as it would
currently be submitted.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="label"/> <!-- automatically read-only -->
<xs:enumeration value="text"/>
<xs:enumeration value="pushButton"/> <!-- automatically read-only -->
<xs:enumeration value="radioButton"/> <!-- automatically read-only -->
<xs:enumeration value="spinner"/>
<xs:enumeration value="checkbox"/> <!-- automatically read-only -->
<xs:enumeration value="combo"/>
<xs:enumeration value="browseDirectoryButton"/>
<xs:enumeration value="browseExistingFileButton"/>
<xs:enumeration value="browseOrCreateFileButton"/>
<xs:enumeration value="selectAttributes"/> <!-- automatically read-only -->
<xs:enumeration value="showScript"/> <!-- automatically read-only -->
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readOnly" type="xs:boolean" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="monitor">
<xs:annotation>
<xs:documentation>
I have for the moment left this undefined.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>