<?xml version="1.0" encoding="UTF-8"?>
<otrunk id="CD47F7EC-5E1F-47F8-81F5-C34CC8FCD83E">
  <imports>
    <import class="org.concord.data.state.OTAlphaDataProducer" />
    <import class="org.concord.data.state.OTDataChannelDescription" />
    <import class="org.concord.data.state.OTDataField" />
    <import class="org.concord.data.state.OTDataProducer"/>
    <import class="org.concord.data.state.OTDataStore" />
    <import class="org.concord.data.state.OTDataTable" />
    <import class="org.concord.datagraph.state.OTDataAxis" />
    <import class="org.concord.datagraph.state.OTDataBarGraphable" />
    <import class="org.concord.datagraph.state.OTDataCollector" />
    <import class="org.concord.datagraph.state.OTDataGraph" />
    <import class="org.concord.datagraph.state.OTDataGraphable" />
    <import class="org.concord.datagraph.state.OTDataPointLabel" />
    <import class="org.concord.datagraph.state.OTMultiDataGraph" />
    <import class="org.concord.datagraph.state.OTPluginView" />
    <import class="org.concord.otrunk.OTInclude" />
    <import class="org.concord.otrunk.OTSystem" />
    <import class="org.concord.otrunk.graph.OTDataCollectorViewConfig" />
    <import class="org.concord.otrunk.intrasession.OTMultiUserPollingGraph"/>
    <import class="org.concord.otrunk.script.OTScriptEngineBundle" />
    <import class="org.concord.otrunk.script.OTScriptEngineEntry" />
    <import class="org.concord.otrunk.script.js.OTJavascript" />
    <import class="org.concord.otrunk.script.ui.OTScriptButton" />
    <import class="org.concord.otrunk.script.ui.OTScriptObject" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariable" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariableComponent" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariableRealObject" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariableView" />
    <import class="org.concord.otrunk.ui.OTButton" />
    <import class="org.concord.otrunk.ui.OTChoice" />
    <import class="org.concord.otrunk.ui.OTText" />
    <import class="org.concord.otrunk.ui.question.OTQuestion" />
    <import class="org.concord.otrunk.view.OTViewBundle" />
    <import class="org.concord.otrunk.view.OTViewChild" />
    <import class="org.concord.otrunk.view.OTViewEntry" />
    <import class="org.concord.otrunk.view.OTViewMode" />
    <import class="org.concord.otrunk.view.document.OTCompoundDoc" />
    <import class="org.concord.otrunk.view.document.OTCssText" />
  </imports>
  <objects>
    <OTSystem local_id="system">
      <bundles>
        <OTScriptEngineBundle>
          <engines>
            <OTScriptEngineEntry objectClass="org.concord.otrunk.script.js.OTJavascript" engineClass="org.concord.otrunk.script.js.OTJavascriptEngine" />
          </engines>
        </OTScriptEngineBundle>
        <OTViewBundle showLeftPanel="false">
          <views>
            <OTViewEntry objectClass="org.concord.datagraph.state.OTDataCollector" viewClass="org.concord.datagraph.state.OTDataCollectorView"/>
            <OTViewEntry objectClass="org.concord.datagraph.state.OTDataGraph" viewClass="org.concord.datagraph.state.OTDataGraphView"/>
            <OTViewEntry objectClass="org.concord.otrunk.intrasession.OTMultiUserPollingGraph" viewClass="org.concord.otrunk.intrasession.ui.OTMultiUserPollingGraphTeacherView" />
            <OTViewEntry objectClass="org.concord.otrunk.script.ui.OTScriptObject" viewClass="org.concord.otrunk.script.ui.OTScriptObjectView" />
            <OTViewEntry objectClass="org.concord.otrunk.ui.OTButton" viewClass="org.concord.otrunk.ui.swing.OTButtonView"/>
            <OTViewEntry objectClass="org.concord.otrunk.view.document.OTDocument" viewClass="org.concord.otrunk.view.document.OTDocumentView" />
          </views>
        </OTViewBundle>
      </bundles>
      <root>
        <OTCompoundDoc showEditBar="false">
          <bodyText>
            <h2>Multi-Channel Data Collector</h2>
            <object type="graph" refid="${data-collector}" />
            <object refid="${step-button}" /><br />
            <object type="script" refid="${button-script}" />
            <h2>Single-Channel Bar Graph</h2>
            <object type="graph" refid="${bar-graph2}" />
          </bodyText>
        </OTCompoundDoc>
      </root>
      <library>
        <OTButton local_id="step-button" text="Next" />
        <OTDataCollector local_id="data-collector" 
            name="Example graph" title="Title" 
            showLabelCoordinates="true" labelDecimalPlaces="2" 
            showControlBar="false" useDefaultToolBar="false" 
            displayButtons="">
          <source>
            <OTDataBarGraphable
                showSampleLimit="1" name="Numbers that add to sum"
                connectPoints="true" drawMarks="false" lineWidth="20.0"
                color="0xff9900" yColumn="4" xColumn="0" showAllChannels="true"
                showControlButtons="true" showToolButtons="true" 
                visible="true">
              <dataStore>
                <OTDataStore sampleKeepLimit="10" dt="1.0" numberChannels="4">
                </OTDataStore>
              </dataStore>
              <dataProducer>
                <OTAlphaDataProducer local_id="alpha-producer" numChannels="4" sum="1.0">
                </OTAlphaDataProducer>
              </dataProducer>
            </OTDataBarGraphable>
          </source>
          <xDataAxis>
            <OTDataAxis max="4.0" min="0.0" label="X Axis" labelFormat="Engineering">
              <customGridLabels />
            </OTDataAxis>
          </xDataAxis>
          <yDataAxis>
            <OTDataAxis max="1.0" min="-0.0" label="Y Axis" labelFormat="Engineering">
              <customGridLabels />
            </OTDataAxis>
          </yDataAxis>
        </OTDataCollector>
        <OTScriptObject local_id="button-script">
          <script>
            <OTJavascript>
              <script>
importClass(Packages.java.awt.event.ActionListener);
importClass(Packages.java.lang.System);

function init() {
button.addActionListener(actionListener);
alpha.step();
return true;
}

var actionHandler = {
actionPerformed: function(evt) {
    alpha.step();
}
}

var actionListener = new ActionListener(actionHandler);

function save() {
return true;
}
              </script>
            </OTJavascript>
          </script>
          <variables>
            <OTScriptVariableComponent name="button">
              <reference>
                <object refid="${step-button}" />
              </reference>
            </OTScriptVariableComponent>
            <OTScriptVariableRealObject name="alpha">
              <reference>
                <object refid="${alpha-producer}" />
              </reference>
            </OTScriptVariableRealObject>
          </variables>
          <scriptState />
        </OTScriptObject>
        <OTDataGraph name="Single Channel Bar Graph 1" local_id="bar-graph2" showToolbar="false">
          <graphables>
            <OTDataBarGraphable color="0x00b080" lineWidth="30" maxBarsToSelect="2">
              <dataStore>
                <OTDataStore numberChannels="2">
                  <channelDescriptions>
                   <OTDataChannelDescription name="Color" precision="0"/>
                    <OTDataChannelDescription name="Count" precision="2"/>
                  </channelDescriptions>
                  <valuesString>1 2 2 3 3 7 4 4</valuesString>
                </OTDataStore>
              </dataStore>
            </OTDataBarGraphable>
          </graphables>
          <xDataAxis>
            <OTDataAxis min="0" max="5" label="X-Axis" intervalWorld="1">
              <customGridLabels>
                <entry key="1.0"><string>Crimson</string></entry>
                <entry key="2.0"><string>Turquoise</string></entry>
                <entry key="3.0"><string>Lavender</string></entry>
                <entry key="4.0"><string>Indigo</string></entry>
              </customGridLabels>
            </OTDataAxis>
          </xDataAxis>
          <yDataAxis>
            <OTDataAxis min="0" max="8" label="Y-Axis"/>
          </yDataAxis>
        </OTDataGraph>
      </library>
    </OTSystem>
  </objects>
</otrunk>

