blob: deca6d7eaea408b0ef1960128e3b77d6f6c18d59 [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="tabbed-example">
<control-data>
<property name="e1" visible="true"/>
<property name="e2" visible="true"/>
<property name="e3" visible="true"/>
<property name="e4" visible="true"/>
<property name="e5" visible="true"/>
<property name="path1" visible="true"/>
<property name="path2" visible="true"/>
<property name="path3" visible="true"/>
<property name="path4" visible="true"/>
<property name="linked" visible="true">
<default>${ptp_rm:Resource_List.walltime#value}</default>
</property>
<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>
<tooltip>Format: queue[@server].</tooltip>
</attribute>
<attribute name="Resource_List.mem" type="string">
<description>Maximum amount of memory used by all concurrent processes in the job.</description>
<tooltip><![CDATA[Format: integer[suffix]; the suffix is a multiplier
in bytes or words (word size of the host): b (bytes),
w (words), kb/kw (kilo), mb/mw (mega), gb/bw (giga).]]></tooltip>
<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>
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
<default>00:30:00</default>
</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>
<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>
<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"/>
</layout-data>
</widget>
<!-- it seems that SWT will not spread a single button over more than one grid column, so we need an empty label filler here -->
<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: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.HORIZONTAL" 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="Environment,Paths">
<title>Settings</title>
<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>
<tooltip>${ptp_rm:Resource_List.mem#tooltip}</tooltip>
<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>
<tooltip>${ptp_rm:Resource_List.walltime#tooltip}</tooltip>
<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>
<title>Paths</title>
<composite>
<layout>
<grid-layout numColumns="4" makeColumnsEqualWidth="false" horizontalSpacing="10" verticalSpacing="15"/>
</layout>
<!-- 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>
<widget type="browse" uri="true" style="SWT.BORDER" readOnly="false" title="Browse" saveValueTo="path1">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</layout-data>
<sub-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</sub-layout-data>
</widget>
<!-- 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>
<widget type="browse" uri="false" directory="true" style="SWT.BORDER" readOnly="true" title="Browse" saveValueTo="path2">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</layout-data>
<sub-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</sub-layout-data>
</widget>
<!-- 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>
<widget type="browse" style="SWT.BORDER | SWT.H_SCROLL" readOnly="true" localOnly="true" title="Browse" saveValueTo="path3">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</layout-data>
<sub-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</sub-layout-data>
</widget>
<!-- 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>
<widget type="browse" directory="true" uri="true" style="SWT.BORDER" readOnly="true" localOnly="true" title="Browse"
saveValueTo="path4">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" widthHint="200" horizontalSpan="2" grabExcessHorizontal="true"/>
</layout-data>
<sub-layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" widthHint="100" horizontalSpan="1" grabExcessHorizontal="false"/>
</sub-layout-data>
</widget>
</composite>
</dynamic>
<dynamic includeWidgetValuesFrom="Settings">
<title>Environment</title>
<composite group="true">
<layout>
<grid-layout numColumns="1"/>
</layout>
<viewer name="environment" style="SWT.BORDER | SWT.MULTI" sort="true" type="table">
<layout-data>
<grid-data widthHint="600" heightHint="200" horizontalSpan="1"/>
</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="400">
<tooltip>Click to activate value widget.</tooltip>
</column-data>
<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>
</launch-tab>
</control-data>
<monitor-data schedulerType="Tabbed">
<driver>
<name></name>
</driver>
</monitor-data>
</resource-manager-builder>