<?xml version="1.0"?>
<!--
  Copyright 2002-2004 The Apache Software Foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<j:jelly 
    xmlns:j="jelly:core" 
    xmlns="jelly:swing" 
    xmlns:log="jelly:log"
    xmlns:w="jelly:werkz">

    <w:useGoals var="goalMap"/>

    <!-- action to choose a file -->
    <action var="attainGoalAction" name="...">            
    </action>


    <!-- create the frame -->
    <frame var="frame" size="400,150" location="200,200" title="Maven Wizard">
    <menuBar>
      <menu text="Run">
                <j:forEach var="groupEntry" items="${goalMap.entrySet()}">            
                    
                    <menu text="${groupEntry.key}">
                        <j:forEach var="goalEntry" items="${groupEntry.value.entrySet()}">            

                            <!-- give each menu item its own scope then they have their own goal names -->
                            <j:scope>
                                <j:set var="goalName" value="${goalEntry.value.name}"/>
                                
                                <menuItem>
                                    <action name="${goalEntry.key}">
                                        <log:info>About to invoke the ${goalName} goal!</log:info>
                                        <w:attainGoal name="${goalName}"/>
                                    </action>
                                </menuItem>
                            </j:scope>
                        </j:forEach>
                    </menu>
                </j:forEach>
            </menu>
    </menuBar>
        <panel>
    </panel>
    </frame>

    ${frame.setVisible(true)}

</j:jelly>



