blob: 993c5384b15ea2ea01d13ce5becafb791c0dc2f6 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- ******************************************************************************* -->
<!-- * Copyright (c) 2011 University of Illinois All rights reserved. This program -->
<!-- * and the accompanying materials are made available under the terms of the -->
<!-- * Eclipse Public License v1.0 which accompanies this distribution, and is -->
<!-- * available at http://www.eclipse.org/legal/epl-v10.html -->
<!-- * -->
<!-- * Contributors: -->
<!-- * Albert L. Rossi - design and implementation -->
<!-- ****************************************************************************** -->
<resource-manager-builder xmlns="http://org.eclipse.ptp/rm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="resource_manager_type.xsd" name="miscellaneous-example">
<control-data>
<property name="path1" visible="true"/>
<property name="path2" visible="true"/>
<property name="path3" visible="true"/>
<property name="path4" visible="true"/>
<property name="check" visible="false"/>
<attribute name="e1" visible="true" status="valid" type="integer">
<description>it's "e1"</description>
<tooltip>use in conjunction with E1</tooltip>
<default>1</default>
</attribute>
<attribute name="e2" visible="true" status="valid" type="integer">
<description>it's "e2"</description>
<tooltip>use in conjunction with E2</tooltip>
<default>2</default>
</attribute>
<attribute name="e3" visible="true" status="valid" type="integer">
<description>it's "e3"</description>
<tooltip>use in conjunction with E3</tooltip>
<default>3</default>
</attribute>
<attribute name="e4" visible="true" status="unsupported" type="integer">
<description>it's "e4"</description>
<tooltip>use in conjunction with E4</tooltip>
<default>4</default>
</attribute>
<attribute name="e5" visible="true" status="unsupported" type="integer">
<description>it's "e5"</description>
<tooltip>use in conjunction with E5</tooltip>
<default>5</default>
</attribute>
<attribute name="linked" visible="true" status="valid" type="string">
<description>a linked variable</description>
<tooltip>use in conjunction with E5</tooltip>
<default>00:00:00</default>
<link-value-to>Resource_List.walltime</link-value-to>
</attribute>
<attribute name="saveFiles" type="integer">
<description>Does nothing; for testing boolean value translation.</description>
</attribute>
<attribute name="mpiCommand" type="choice">
<description>Which mpi command to use.</description>
<choice>,mpiexec,mpirun</choice>
</attribute>
<attribute name="mpiCores" min="1" type="integer">
<description>the '-np' value</description>
<default>1</default>
</attribute>
<attribute name="destination" type="string">
<description>Designation of the queue to which to submit the job.</description>
</attribute>
<attribute name="Resource_List.mem" type="string">
<description>Maximum amount of memory used by all concurrent processes in the job.</description>
<default>20gb</default>
</attribute>
<attribute name="Resource_List.walltime" type="string">
<description>Maximum amount of real time during which the job can be in the running state.</description>
<default>00:30:00</default>
<validator>
<regex expression="[0-9][0-9]:[0-9][0-9]:[0-9][0-9]"/>
<error-message>must be hh:mm:ss</error-message>
</validator>
</attribute>
<script>
<line>
<arg>QUEUE = ${ptp_rm:destination#value}</arg>
</line>
<line>
<arg>COMMAND = ${ptp_rm:mpiCommand#value}</arg>
</line>
<line>
<arg>CORES = ${ptp_rm:mpiCores#value}</arg>
</line>
<line>
<arg>MEM = ${ptp_rm:Resource_List.mem#value}</arg>
</line>
<line>
<arg>WALL = ${ptp_rm:Resource_List.walltime#value}</arg>
</line>
<line>
<arg>e1 = ${ptp_rm:e1#value}</arg>
</line>
<line>
<arg>e2 = ${ptp_rm:e2#value}</arg>
</line>
<line>
<arg>e3 = ${ptp_rm:e3#value}</arg>
</line>
<line>
<arg>e4 = ${ptp_rm:e4#value}</arg>
</line>
<line>
<arg>e5 = ${ptp_rm:e5#value}</arg>
</line>
<line>
<arg>path1 = ${ptp_rm:path1#value}</arg>
</line>
<line>
<arg>path2 = ${ptp_rm:path2#value}</arg>
</line>
<line>
<arg>path3 = ${ptp_rm:path3#value}</arg>
</line>
<line>
<arg>path4 = ${ptp_rm:path4#value}</arg>
</line>
<line>
<arg>linked = ${ptp_rm:linked#value}</arg>
</line>
</script>
<start-up-command name="get-input">
<arg>ls</arg>
<arg>-l</arg>
<arg>${ptp_rm:directory#value}/input</arg>
<stdout-parser delim="\n">
<target type="property">
<match>
<expression>[-rwx+@]+.+[\d:]+[\s]+(.+)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="readOnly">
<entry value="true"/>
</set>
<set field="visible">
<entry value="true"/>
</set>
<set field="value">
<entry valueGroup="1"/>
</set>
</match>
</target>
</stdout-parser>
</start-up-command>
<start-up-command name="ompi_info">
<arg>ompi_info</arg>
<arg>-a</arg>
<arg>-parseable</arg>
<stdout-parser delim="\n">
<target type="attribute" allowOverwrites="true">
<match>
<expression>mca:.*:param:([^:]*):value:(.*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="visible">
<entry value="true"/>
</set>
<set field="value">
<entry valueGroup="2"/>
</set>
</match>
<match>
<expression>mca:.*:param:([^:]*):status:(.*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="status">
<entry valueGroup="2"/>
</set>
</match>
<match>
<expression>mca:.*:param:([^:]*):help:(.*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="tooltip">
<entry valueGroup="2"/>
</set>
</match>
<test op="EQ">
<value>#status</value>
<value>read-only</value>
<set field="readOnly">
<entry value="true"/>
</set>
<else>
<set field="readOnly">
<entry value="false"/>
</set>
</else>
</test>
</target>
<target type="attribute" allowOverwrites="true">
<match>
<expression>(.*):([^:]*):([^:]*):([^:]*)</expression>
<append field="name">
<entry valueGroup="1"/>
<entry valueGroup="2"/>
<entry valueGroup="3"/>
</append>
<set field="value">
<entry valueGroup="4"/>
</set>
<set field="visible">
<entry value="false"/>
</set>
<set field="readOnly">
<entry value="true"/>
</set>
</match>
</target>
<target type="attribute" allowOverwrites="true">
<match>
<expression>(.*):([^:]*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="value">
<entry valueGroup="2"/>
</set>
<set field="visible">
<entry value="false"/>
</set>
<set field="readOnly">
<entry value="true"/>
</set>
</match>
</target>
</stdout-parser>
</start-up-command>
<submit-interactive name="submit-interactive">
<arg>echo</arg>
<arg>$VAR_1</arg>
<arg>$VAR_2</arg>
<arg>$VAR_3</arg>
<arg>$VAR_4</arg>
<arg>$VAR_5</arg>
<environment name="VAR_1" value="${ptp_rm:e1#value}"/>
<environment name="VAR_2" value="${ptp_rm:e2#value}"/>
<environment name="VAR_3" value="${ptp_rm:e3#value}"/>
<environment name="VAR_4" value="${ptp_rm:e4#value}"/>
<environment name="VAR_5" value="${ptp_rm:e5#value}"/>
</submit-interactive>
<launch-tab>
<dynamic>
<title>Cores</title>
<layout>
<grid-layout/>
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="4" makeColumnsEqualWidth="false" horizontalSpacing="10" verticalSpacing="15"/>
</layout>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Name</fixed-text>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Value</fixed-text>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Description</fixed-text>
</widget>
<!-- row 1 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Keep Files: </fixed-text>
</widget>
<widget type="checkbox" saveValueTo="saveFiles" style="SWT.LEFT" translateBooleanAs="1,0">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="false" horizontalSpan="2"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:saveFiles#description}</fixed-text>
</widget>
<!-- row 2 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>MPI Number of Cores: </fixed-text>
</widget>
<button-group saveValueTo="mpiCores" group="true">
<layout>
<row-layout type="SWT.VERTICAL" center="true" fill="true" justify="true"/>
</layout>
<button type="radiobutton" title="1"/>
<button type="radiobutton" title="2"/>
<button type="radiobutton" title="3"/>
<button type="radiobutton" title="4"/>
<button type="radiobutton" title="5"/>
<button type="radiobutton" title="6"/>
<button type="radiobutton" title="7"/>
<button type="radiobutton" title="8"/>
</button-group>
<!-- likewise cannot seem to make new composite with row layout span two columns of its parent grid layout, so we use another empty -->
<!-- label here as filler -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:mpiCores#description}</fixed-text>
</widget>
</composite>
</dynamic>
<dynamic includeWidgetValuesFrom="Cores,Paths">
<title>Settings</title>
<layout>
<grid-layout/>
</layout>
<composite>
<layout>
<grid-layout numColumns="4" makeColumnsEqualWidth="false" horizontalSpacing="10" verticalSpacing="15"/>
</layout>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Name</fixed-text>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Value</fixed-text>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Description</fixed-text>
</widget>
<!-- row 1 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Total Memory Needed: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" saveValueTo="Resource_List.mem">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Resource_List.mem#description}</fixed-text>
</widget>
<!-- row 2 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Wallclock Time: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" saveValueTo="Resource_List.walltime">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Resource_List.walltime#description}</fixed-text>
</widget>
<!-- row 3 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>MPI Command: </fixed-text>
</widget>
<widget type="combo" style="SWT.BORDER" readOnly="true" saveValueTo="mpiCommand">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:mpiCommand#description}</fixed-text>
</widget>
</composite>
</dynamic>
<dynamic includeWidgetValuesFrom="Cores">
<title>Paths</title>
<layout>
<grid-layout/>
</layout>
<composite>
<layout>
<grid-layout numColumns="4" makeColumnsEqualWidth="false" horizontalSpacing="10" verticalSpacing="15"/>
</layout>
<layout-data>
<grid-data horizontalSpan="4" widthHint="700"/>
</layout-data>
<!-- row 1 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Browse URI: </fixed-text>
</widget>
<browse uri="true" textStyle="SWT.BORDER" readOnly="false" title="Browse" saveValueTo="path1">
<text-layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</text-layout-data>
<button-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</button-layout-data>
</browse>
<!-- row 2 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Browse Dir Path: </fixed-text>
</widget>
<browse uri="false" directory="true" textStyle="SWT.BORDER" readOnly="true" title="Browse" saveValueTo="path2">
<text-layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</text-layout-data>
<button-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</button-layout-data>
</browse>
<!-- row 3 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Browse Local File: </fixed-text>
</widget>
<browse textStyle="SWT.BORDER | SWT.H_SCROLL" readOnly="true" localOnly="true" title="Browse" saveValueTo="path3">
<text-layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</text-layout-data>
<button-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</button-layout-data>
</browse>
<!-- row 4 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Browse Local Dir URI: </fixed-text>
</widget>
<browse directory="true" uri="true" textStyle="SWT.BORDER" readOnly="true" localOnly="true" title="Browse" saveValueTo="path4">
<text-layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</text-layout-data>
<button-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</button-layout-data>
</browse>
</composite>
</dynamic>
<dynamic>
<!-- <dynamic includeWidgetValuesFrom="Settings"> -->
<title>Environment Table</title>
<layout>
<grid-layout/>
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="1"/>
</layout>
<viewer name="environmentT1" style="SWT.BORDER | SWT.MULTI" sort="true" type="table">
<layout-data>
<grid-data widthHint="600" heightHint="200" horizontalSpan="1"/>
</layout-data>
<!-- These are the 6 attribute fields mappable to columns. In a "table viewer" the order of the columns is entirely arbitrary -->
<column-data name="Name" width="100"/>
<column-data name="Status" width="100"/>
<column-data name="Description" width="100"/>
<column-data name="Value" width="100"/>
<column-data name="Default" width="100"/>
<column-data name="Type" width="100"/>
<items>
<include>e1</include>
<include>e2</include>
<include>e3</include>
<include>e4</include>
<include>e5</include>
<include>linked</include>
</items>
<value pattern="export @name='@value'" separator="; "/>
</viewer>
</composite>
</dynamic>
<dynamic>
<!-- <dynamic includeWidgetValuesFrom="Settings"> -->
<title>Environment Tree</title>
<layout>
<grid-layout/>
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="1"/>
</layout>
<viewer name="environmentT2" style="SWT.BORDER | SWT.MULTI" sort="true" type="tree">
<layout-data>
<grid-data widthHint="600" heightHint="200" horizontalSpan="1"/>
</layout-data>
<column-data name="Name" width="100"/>
<column-data name="Description" width="100"/>
<column-data name="Type" width="100"/>
<column-data name="Status" width="100"/>
<column-data name="Default" width="100"/>
<column-data name="Value" width="100"/>
<items>
<include>e1</include>
<include>e2</include>
<include>e3</include>
<include>e4</include>
<include>e5</include>
<include>linked</include>
</items>
<value pattern="export @name='@value'" separator="; "/>
</viewer>
</composite>
</dynamic>
<dynamic>
<!-- <dynamic includeWidgetValuesFrom="Settings"> -->
<title>Environment Tree Value Only</title>
<layout>
<grid-layout/>
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="1"/>
</layout>
<viewer name="environmentT3" style="SWT.BORDER | SWT.MULTI" sort="true" type="tree" initialAllChecked="false">
<layout-data>
<grid-data widthHint="600" heightHint="200" horizontalSpan="1"/>
</layout-data>
<column-data name="Name" width="100"/>
<column-data name="Value" width="100"/>
<items allDiscovered="true">
<include>e1</include>
<include>e2</include>
<include>e3</include>
<include>e4</include>
<include>e5</include>
<include>linked</include>
</items>
<value pattern="export @name='@value'" separator="; "/>
</viewer>
</composite>
</dynamic>
<dynamic>
<title>Basic Open MPI</title>
<layout>
<grid-layout numColumns="3"/>
</layout>
<widget type="label" style="SWT.NONE">
<fixed-text>Number of processes:</fixed-text>
</widget>
<widget type="spinner" style="SWT.BORDER" saveValueTo="numProcs">
<layout-data>
<grid-data horizontalAlign="SWT.LEFT" verticalAlign="SWT.CENTER" horizontalSpan="2"/>
</layout-data>
</widget>
<!-- Options group -->
<composite group="true">
<layout>
<grid-layout numColumns="4"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true" horizontalSpan="3"/>
</layout-data>
<title>Options</title>
<widget type="checkbox" title="By node"/>
<widget type="checkbox" title="By slot"/>
<widget type="checkbox" title="No oversubscribe"/>
<widget type="checkbox" title="No local"/>
<widget type="checkbox" title="Prefix:"/>
<widget type="text" style="SWT.BORDER" saveValueTo="prefix">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" horizontalSpan="3" grabExcessHorizontal="true"/>
</layout-data>
</widget>
</composite>
<composite group="true">
<layout>
<grid-layout numColumns="3"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.FILL" grabExcessHorizontal="true" grabExcessVertical="true"
horizontalSpan="2"/>
</layout-data>
<title>Hosts</title>
<widget type="checkbox" title="Host file:"/>
<browse textStyle="SWT.BORDER" title="Browse">
<text-layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true"/>
</text-layout-data>
<button-layout-data>
<grid-data horizontalAlign="SWT.RIGHT" verticalAlign="SWT.CENTER"/>
</button-layout-data>
</browse>
<widget type="checkbox" title="Host list:">
<layout-data>
<grid-data horizontalAlign="SWT.LEFT" verticalAlign="SWT.TOP"/>
</layout-data>
</widget>
<widget type="text" style="SWT.V_SCROLL | SWT.BORDER" saveValueTo="host_list">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="true"
grabExcessVertical="true"/>
</layout-data>
</widget>
</composite>
</dynamic>
<dynamic>
<title>Advanced Open MPI</title>
<layout>
<grid-layout/>
</layout>
<!-- Launch group -->
<composite group="true">
<layout>
<grid-layout numColumns="2"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true"/>
</layout-data>
<title>Launch Arguments</title>
<widget type="checkbox" title="Use default arguments">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true" horizontalSpan="2"/>
</layout-data>
</widget>
<widget type="label">
<layout-data>
<grid-data/>
</layout-data>
<fixed-text>Arguments:</fixed-text>
</widget>
<widget type="text" readOnly="true" style="SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL">
<layout-data>
<grid-data heightHint="100" horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true"/>
</layout-data>
<dynamic-text>
<arg>${ptp_rm:allAttributes#value}</arg>
</dynamic-text>
</widget>
</composite>
<!-- MCA group -->
<composite group="true">
<layout>
<grid-layout/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.FILL" grabExcessHorizontal="true" grabExcessVertical="true"/>
</layout-data>
<title>MCA Parameters</title>
<viewer name="allAttributes" style="SWT.BORDER | SWT.MULTI" sort="true" type="table" initialAllChecked="false">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true"/>
</layout-data>
<column-data name="Name" width="175">
<tooltip>Double-click on selected rows toggles their checked value.</tooltip>
</column-data>
<column-data name="Value" width="200">
<tooltip>Click to activate value widget.</tooltip>
</column-data>
<items allDiscovered="true">
</items>
<value pattern="-mca @name &quot;@value&quot;"/>
</viewer>
</composite>
</dynamic>
</launch-tab>
</control-data>
<monitor-data schedulerType="Tabbed">
<driver>
<name></name>
</driver>
</monitor-data>
</resource-manager-builder>