<?xml version="1.0" encoding="UTF-8"?>
<process xmlns:blue="http://www.e-marson.com/bluelemon">

  <descriptor>
    <name>com/emarson/lemonade/examples/mobank/_deployment/PackageMoAccount</name>
    <version>1.0</version>
    <description>
      It generates a package containing the following nodes:
       - com/emarson/lemonade/examples/mobank/moaccount/MainScreen
       - com/emarson/lemonade/examples/mobank/moaccount/AccountBalanceScreen
       - com/emarson/lemonade/examples/mobank/moaccount/TransferScreen
       - com/emarson/lemonade/examples/mobank/moaccount/HistoryScreen
       - com/emarson/lemonade/examples/mobank/moaccount/DownloadingScreen
    </description>
    <vendor>E-MARSON</vendor>
  </descriptor>

  <path>
    
    <!-- ASSOCIATIONS --->
    
    <!-- association to MainScreen in moBank package --->
    <action name="action for 'Back'">
      <type>general/bluelemon/code</type>
      <definition resultTo="backAction">
        <blue:call node="com/emarson/lemonade/examples/mobank/MainScreen"
                   location="@com/emarson/lemonade/examples/mobank"/>

      </definition>
    </action>
    
    
    <!-- CONTENT OF THE PACKAGE --->

    <subprocess name="main screen">
      <source>com/emarson/lemonade/examples/mobank/moaccount/MainScreen</source>
      <arguments>
        <argument key="actionForExit">backAction</argument>
        <argument key="labelForExit">"Back"</argument>
      </arguments>
      <resultTo>mainScreen</resultTo>
    </subprocess>

    <subprocess name="account balance screen">
      <source>com/emarson/lemonade/examples/mobank/moaccount/AccountBalanceScreen</source>
      <resultTo>accountBalanceScreen</resultTo>
    </subprocess>

    <subprocess name="transfer screen">
      <source>com/emarson/lemonade/examples/mobank/moaccount/TransferScreen</source>
      <resultTo>transferScreen</resultTo>
    </subprocess>
    
    <subprocess name="history screen">
      <source>com/emarson/lemonade/examples/mobank/moaccount/HistoryScreen</source>
      <resultTo>historyScreen</resultTo>
    </subprocess>
    
    <!-- 
      We want to use a different version of DownloadingScreen 
      This version uses nodes located in the 'mobank' package,
      which we know that is installed in the MIDlet environment.
    --->

    <subprocess name="downloading screen">
      <source>com/emarson/lemonade/examples/mobank/_deployment/DownloadingScreenMoAccount</source>
      <resultTo>downloadingScreen</resultTo>
    </subprocess>


    <!-- INSTALL PACKAGE INSTRUCTION --->

    <action name="prepare the arrays with package definitions"> 
      <type>general/bcl</type>
      <definition>
        package = new Array(5);
        package[0] = mainScreen;
        package[1] = accountBalanceScreen;
        package[2] = transferScreen;
        package[3] = historyScreen;
        package[4] = downloadingScreen;
        packageNames = new Array(5);
        packageNames[0] = "com/emarson/lemonade/examples/mobank/moaccount/MainScreen";
        packageNames[1] = "com/emarson/lemonade/examples/mobank/moaccount/AccountBalanceScreen";
        packageNames[2] = "com/emarson/lemonade/examples/mobank/moaccount/TransferScreen";
        packageNames[3] = "com/emarson/lemonade/examples/mobank/moaccount/HistoryScreen";
        packageNames[4] = "com/emarson/lemonade/examples/mobank/moaccount/DownloadingScreen";
      </definition>
    </action>

    <action name="create the install package">
      <type>general/bluelemon/package</type>
      <definition resultTo="package" 
                  packageName="com/emarson/lemonade/examples/mobank/moaccount"
                  valuesContextKey="package" 
                  namesContextKey="packageNames"/>

    </action>

    <subprocess name="to be sure it will be processed correctly, wrap it">
      <source>com/emarson/lemonade/templates/ProcessCode</source>
      <arguments>
        <argument key="code">package</argument>
      </arguments>
      <resultTo>wrappedPackage</resultTo>
    </subprocess>

    <finish name="done">
      <return>wrappedPackage</return>
    </finish>

  </path>

</process>