<?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:jface" xmlns:log="jelly:log" xmlns:define="jelly:define">

  <define:script var="onPerformFinish">
        <log:error>onPerformFinish called ...</log:error>
  </define:script>
  
  <define:script var="onPerformCancel">
        <log:error>onPerformCancel called ...</log:error>
  </define:script>  
  
  <applicationWindow var="mainapp">
      
        <wizardDialog var="wizardDialog" performFinish="${onPerformFinish}" performCancel="${onPerformCancel}">

            <wizardPage var="wpage1" title="Step 1" description="Step 1 in this wizard, showing page 1">
                <composite>
                    <gridLayout numColumns="2" />
                    
                    <label text="Some input" />
                    <text />
                    
                    <label text="Label 1" />
                    <button text="Set Message">    
                        <onEvent type="Selection">
                            ${wpage1.setMessage('Message: give me some more ...')}
                        </onEvent>
                    </button>
                    <label text="Label 2" />
                    <button text="Set Error Message">    
                        <onEvent type="Selection">
                            ${wpage1.setErrorMessage('ErrorMessage: This step is not complete')}
                        </onEvent>                        
                    </button>    
                    <label text="Label 3" />
                    <button text="Set Page Complete">    
                        <onEvent type="Selection">
                            ${wpage1.setPageComplete(true)}
                        </onEvent>                        
                    </button>
                    
                </composite>
            </wizardPage>    

            
            <wizardPage var="wpage2" title="Step 2" description="Step 2 in this wizard">
                <composite>
                    <gridLayout numColumns="2" />
                    <label text="Label 3" />
                    <button text="Do nothing" />
                </composite>
            </wizardPage>    
            
        </wizardDialog>
    
  </applicationWindow>

  ${wpage1.setPageComplete(false)}  
  ${wizardDialog.open()}  


</j:jelly>

