git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268476 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -55,6 +55,7 @@ package org.apache.tools.ant.gui; | |||
| import org.apache.tools.ant.gui.core.*; | |||
| import org.apache.tools.ant.gui.util.XMLHelper; | |||
| import org.apache.tools.ant.gui.wizard.Wizard; | |||
| import org.apache.tools.ant.gui.wizard.build.BuildData; | |||
| import org.apache.tools.ant.gui.wizard.WizardListener; | |||
| import org.apache.tools.ant.gui.command.LoadFileCmd; | |||
| import org.apache.tools.ant.gui.event.EventBus; | |||
| @@ -115,10 +116,7 @@ public class Main { | |||
| } | |||
| else { | |||
| // We are in wizard mode. Create it. | |||
| ResourceManager resources = new ResourceManager( | |||
| "org.apache.tools.ant.gui.resources.buildFileWizard"); | |||
| Wizard wiz = new Wizard( | |||
| resources, ACSFactory.getInstance().createProject()); | |||
| Wizard wiz = new Wizard(new BuildData()); | |||
| // XXX this is temporary for testing. Eventually | |||
| // it will launch the regular antidote screen with the | |||
| // results of the wizard. | |||
| @@ -13,10 +13,10 @@ help=Help | |||
| ########################################################### | |||
| # Define the steps the comprise the wizard. | |||
| ########################################################### | |||
| steps=start, setup, finish | |||
| steps=start, type, setup, compile, jar, javadoc, finish | |||
| ########################################################### | |||
| # Step 1 | |||
| # Step: start | |||
| ########################################################### | |||
| start.editor=org.apache.tools.ant.gui.wizard.InstructionStep | |||
| start.title=Create new build file | |||
| @@ -29,7 +29,21 @@ and the types of build options you want included.\n\n\ | |||
| Click "Next >>" to proceed. | |||
| ########################################################### | |||
| # Step 2 | |||
| # Step: type | |||
| ########################################################### | |||
| type.editor=org.apache.tools.ant.gui.wizard.build.ProjectTypeStep | |||
| type.title=Select project type | |||
| type.description=Select "New" if you want the buile environment \ | |||
| directory structure defined and created for you \ | |||
| in addition to the build file. Select "Import" if you want \ | |||
| a build file created for an existing project. | |||
| type.isNewLabel=New project | |||
| type.isImportLabel=Import existing project | |||
| ########################################################### | |||
| # Step: setup | |||
| ########################################################### | |||
| setup.editor=org.apache.tools.ant.gui.wizard.build.ProjectSetupStep | |||
| @@ -38,11 +52,35 @@ setup.description=Give the project a name, and select the features you \ | |||
| wish to be included in the project file, such as JavaDoc and JAR creation. | |||
| setup.nameLabel=Project Name: | |||
| setup.optionsLabel=Options | |||
| setup.compile.label=Compiled Java code (.class files) | |||
| setup.jar.label=Executable JAR file | |||
| setup.javadoc.label=JavaDoc | |||
| ########################################################### | |||
| # Step: compile | |||
| ########################################################### | |||
| compile.title=Setup Java source compilation | |||
| compile.description=Need help? | |||
| compile.editor=org.apache.tools.ant.gui.wizard.build.CompileStep | |||
| ########################################################### | |||
| # Step: jar | |||
| ########################################################### | |||
| jar.title=Setup executable JAR creation | |||
| jar.description=Need help? | |||
| jar.editor=org.apache.tools.ant.gui.wizard.build.JARStep | |||
| ########################################################### | |||
| # Step: javadoc | |||
| ########################################################### | |||
| javadoc.title=Setup JavaDoc creation | |||
| javadoc.description=Need help? | |||
| javadoc.editor=org.apache.tools.ant.gui.wizard.build.JavaDocStep | |||
| ########################################################### | |||
| # Last step | |||
| # Step: finish | |||
| ########################################################### | |||
| finish.editor=org.apache.tools.ant.gui.wizard.InstructionStep | |||
| finish.editor=org.apache.tools.ant.gui.wizard.build.FinishStep | |||
| finish.title=Complete build file | |||
| finish.description=Click "Finish" to save your build file definition. | |||
| finish.instructions=You are done!\n\nClick "Finish" to complete your new\ | |||
| @@ -76,11 +76,7 @@ public abstract class AbstractWizardStep extends JComponent | |||
| /** Description of the step. */ | |||
| private String _description = null; | |||
| /** Data model. */ | |||
| private Object _model = null; | |||
| /** ID of next step. */ | |||
| private String _nextID = null; | |||
| /** ID of previous step. */ | |||
| private String _prevID = null; | |||
| private WizardData _model = null; | |||
| /** | |||
| * Called when the instance should initialize its contents, e.g. | |||
| @@ -161,41 +157,6 @@ public abstract class AbstractWizardStep extends JComponent | |||
| return _description; | |||
| } | |||
| /** | |||
| * Set the default id of the next step. | |||
| * | |||
| * @param nextID ID of next step. | |||
| */ | |||
| public void setNext(String nextID) { | |||
| _nextID = nextID; | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return _nextID; | |||
| } | |||
| /** | |||
| * Set the default id of the previous step. | |||
| * | |||
| * @param prevID ID of previous step. | |||
| */ | |||
| public void setPrevious(String prevID) { | |||
| _prevID = prevID; | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return _prevID; | |||
| } | |||
| /** | |||
| * Set the data model object that the step will edit. It is assumed | |||
| @@ -204,7 +165,7 @@ public abstract class AbstractWizardStep extends JComponent | |||
| * | |||
| * @param model Data model to edit. | |||
| */ | |||
| public void setDataModel(Object model) { | |||
| public void setDataModel(WizardData model) { | |||
| _model = model; | |||
| } | |||
| @@ -213,7 +174,7 @@ public abstract class AbstractWizardStep extends JComponent | |||
| * | |||
| * @return Current data model. | |||
| */ | |||
| public Object getDataModel() { | |||
| public WizardData getDataModel() { | |||
| return _model; | |||
| } | |||
| @@ -233,6 +194,26 @@ public abstract class AbstractWizardStep extends JComponent | |||
| return this; | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return getDataModel().getStateMachine().getNext( | |||
| this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return getDataModel().getStateMachine().getPrevious( | |||
| this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get a string representation of this. | |||
| * | |||
| @@ -242,10 +223,6 @@ public abstract class AbstractWizardStep extends JComponent | |||
| StringBuffer buf = new StringBuffer(getClass().getName()); | |||
| buf.append("[id="); | |||
| buf.append(getID()); | |||
| buf.append(",prev="); | |||
| buf.append(getPrevious()); | |||
| buf.append(",next="); | |||
| buf.append(getNext()); | |||
| buf.append("]"); | |||
| return buf.toString(); | |||
| } | |||
| @@ -0,0 +1,108 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard; | |||
| import org.apache.tools.ant.gui.core.ResourceManager; | |||
| import java.util.*; | |||
| /** | |||
| * A simple state machine based on the defined ordering of steps | |||
| * in the resources. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class DefaultStateMachine implements StateMachine { | |||
| /** | |||
| * Get the list of step IDs defined in the resources as a list. | |||
| * | |||
| * @param data Current wizard state. | |||
| * @return List of step IDs | |||
| */ | |||
| protected List getStepList(WizardData data) { | |||
| return Arrays.asList(data.getResources().getStringArray("steps")); | |||
| } | |||
| /** | |||
| * Get the next step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The ID of next step, or null if there currently isn't one. | |||
| */ | |||
| public String getNext(WizardStep curr, WizardData data) { | |||
| List steps = getStepList(data); | |||
| int nextIndex = steps.indexOf(curr.getID()) + 1; | |||
| if(nextIndex > 0 && nextIndex < steps.size()) { | |||
| return (String) steps.get(nextIndex); | |||
| } | |||
| return null; | |||
| } | |||
| /** | |||
| * Get the previous step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The ID of previous step, or null if there currently isn't one. | |||
| */ | |||
| public String getPrevious(WizardStep curr, WizardData data) { | |||
| List steps = getStepList(data); | |||
| int nextIndex = steps.indexOf(curr.getID()) - 1; | |||
| if(nextIndex > 0 && nextIndex < steps.size()) { | |||
| return (String) steps.get(nextIndex); | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @@ -0,0 +1,82 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard; | |||
| /** | |||
| * Interface for the wizard state machine, responsible for determining the | |||
| * next step in the wizard. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public interface StateMachine { | |||
| /** | |||
| * Get the next step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The next step, or null if there currently isn't one. | |||
| */ | |||
| String getNext(WizardStep curr, WizardData data); | |||
| /** | |||
| * Get the previous step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The previous step, or null if there currently isn't one. | |||
| */ | |||
| String getPrevious(WizardStep curr, WizardData data); | |||
| } | |||
| @@ -70,9 +70,8 @@ import java.util.*; | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class Wizard extends JComponent { | |||
| /** Resources defining the wizard contents. Separate from the | |||
| * application context resources. */ | |||
| private ResourceManager _resources = null; | |||
| /** The data model to pass on to each step. */ | |||
| private WizardData _data = null; | |||
| /** Container for the step editors. */ | |||
| private JPanel _stepContainer = null; | |||
| /** Layout manager for all the step panels. */ | |||
| @@ -87,8 +86,6 @@ public class Wizard extends JComponent { | |||
| private JProgressBar _progress = null; | |||
| /** Widget for navigating through steps. */ | |||
| private WizardNavigator _nav = null; | |||
| /** The data model to pass on to each step. */ | |||
| private Object _model = null; | |||
| /** The current Wizard step. */ | |||
| private WizardStep _curr = null; | |||
| /** The set of wizard listeners. */ | |||
| @@ -97,17 +94,15 @@ public class Wizard extends JComponent { | |||
| /** | |||
| * Standard ctor. | |||
| * | |||
| * @param resources Wizard definition resources | |||
| * @param dataModel Initial data model. | |||
| * @param data Data for the wizard. | |||
| */ | |||
| public Wizard(ResourceManager resources, Object dataModel) { | |||
| public Wizard(WizardData data) { | |||
| setLayout(new BorderLayout()); | |||
| _resources = resources; | |||
| _model = dataModel; | |||
| _data = data; | |||
| _progress = new JProgressBar(); | |||
| _progress.setBorder(BorderFactory.createTitledBorder( | |||
| _resources.getString("progress"))); | |||
| _data.getResources().getString("progress"))); | |||
| _progress.setStringPainted(true); | |||
| add(_progress, BorderLayout.NORTH); | |||
| @@ -126,7 +121,7 @@ public class Wizard extends JComponent { | |||
| JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); | |||
| scroller.setBorder(BorderFactory.createTitledBorder( | |||
| _resources.getString("help"))); | |||
| _data.getResources().getString("help"))); | |||
| add(scroller, BorderLayout.WEST); | |||
| _stepContainer = new JPanel(_layout = new CardLayout()); | |||
| @@ -136,30 +131,23 @@ public class Wizard extends JComponent { | |||
| add(_stepContainer, BorderLayout.CENTER); | |||
| _nav = new ButtonNavigator(_resources); | |||
| _nav = new ButtonNavigator(_data.getResources()); | |||
| _nav.addNavigatorListener(new NavHandler()); | |||
| ((ButtonNavigator)_nav).setBorder(BorderFactory.createEtchedBorder()); | |||
| add((ButtonNavigator)_nav, BorderLayout.SOUTH); | |||
| String[] steps = _resources.getStringArray("steps"); | |||
| String[] steps = _data.getResources().getStringArray("steps"); | |||
| _progress.setMaximum(steps.length - 1); | |||
| try { | |||
| for(int i = 0; i < steps.length; i++) { | |||
| Class type = _resources.getClass(steps[i] + ".editor"); | |||
| Class type = _data.getResources().getClass(steps[i] + ".editor"); | |||
| WizardStep step = (WizardStep) type.newInstance(); | |||
| step.setResources(_resources); | |||
| step.setResources(_data.getResources()); | |||
| step.setID(steps[i]); | |||
| step.setTitle(_resources.getString(steps[i]+ ".title")); | |||
| step.setTitle( | |||
| _data.getResources().getString(steps[i]+ ".title")); | |||
| step.setDescription( | |||
| _resources.getString(steps[i]+ ".description")); | |||
| String id = _resources.getString(steps[i] + ".next"); | |||
| id = (id == null && i < steps.length - 1) ? steps[i + 1] : id; | |||
| step.setNext(id); | |||
| id = _resources.getString(steps[i] + ".prev"); | |||
| id = (id == null && i > 0) ? steps[i - 1] : id; | |||
| step.setPrevious(id); | |||
| _data.getResources().getString(steps[i]+ ".description")); | |||
| _steps.put(steps[i], step); | |||
| _stepOrdering.add(step); | |||
| @@ -168,7 +156,7 @@ public class Wizard extends JComponent { | |||
| // Initialize the first screen with the data model. | |||
| if(steps.length > 0) { | |||
| WizardStep first = (WizardStep)_steps.get(steps[0]); | |||
| first.setDataModel(_model); | |||
| first.setDataModel(_data); | |||
| _curr = first; | |||
| showStep(first); | |||
| } | |||
| @@ -207,13 +195,13 @@ public class Wizard extends JComponent { | |||
| private void showStep(WizardStep step) { | |||
| if(step == null) return; | |||
| // Transfer data model (in case step wants to create a new one. | |||
| _curr.updateDataModel(); | |||
| step.setDataModel(_curr.getDataModel()); | |||
| // Update the title and description. | |||
| _stepContainer.setBorder( | |||
| BorderFactory.createTitledBorder(step.getTitle())); | |||
| BorderFactory.createCompoundBorder( | |||
| BorderFactory.createTitledBorder(step.getTitle()), | |||
| BorderFactory.createEmptyBorder(5, 15, 5, 15))); | |||
| _description.setText(step.getDescription()); | |||
| _nav.setBackEnabled(step.getPrevious() != null); | |||
| @@ -233,21 +221,28 @@ public class Wizard extends JComponent { | |||
| /** Handler for actions invoked by wizard. */ | |||
| private class NavHandler implements NavigatorListener { | |||
| public void nextStep() { | |||
| // Called to give data model chance to make changes to what is next. | |||
| _curr.updateDataModel(); | |||
| String nextID = _curr.getNext(); | |||
| if(nextID != null) { | |||
| showStep((WizardStep)_steps.get(nextID)); | |||
| } | |||
| } | |||
| public void backStep() { | |||
| // Called to give data model chance to make changes to what is | |||
| // before. | |||
| _curr.updateDataModel(); | |||
| String prevID = _curr.getPrevious(); | |||
| if(prevID != null) { | |||
| showStep((WizardStep)_steps.get(prevID)); | |||
| } | |||
| } | |||
| public void gotoStep(String stepID){ | |||
| _curr.updateDataModel(); | |||
| showStep((WizardStep) _steps.get(stepID)); | |||
| } | |||
| public void cancel() { | |||
| _curr.updateDataModel(); | |||
| Iterator it = _listeners.iterator(); | |||
| while(it.hasNext()) { | |||
| WizardListener l = (WizardListener) it.next(); | |||
| @@ -255,6 +250,7 @@ public class Wizard extends JComponent { | |||
| } | |||
| } | |||
| public void finish() { | |||
| _curr.updateDataModel(); | |||
| Iterator it = _listeners.iterator(); | |||
| while(it.hasNext()) { | |||
| WizardListener l = (WizardListener) it.next(); | |||
| @@ -0,0 +1,79 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard; | |||
| import org.apache.tools.ant.gui.core.ResourceManager; | |||
| /** | |||
| * Interface for the wizard data model. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public interface WizardData { | |||
| /** | |||
| * Get access to the resources for the wizard. | |||
| * | |||
| * @return Wizard resources. | |||
| */ | |||
| ResourceManager getResources(); | |||
| /** | |||
| * Get the class the determines what the next step should be. | |||
| * | |||
| * @return State machine. | |||
| */ | |||
| StateMachine getStateMachine(); | |||
| } | |||
| @@ -109,33 +109,6 @@ public interface WizardStep { | |||
| */ | |||
| String getDescription(); | |||
| /** | |||
| * Set the default id of the next step. | |||
| * | |||
| * @param nextID ID of next step. | |||
| */ | |||
| void setNext(String nextID); | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| String getNext(); | |||
| /** | |||
| * Set the default id of the previous step. | |||
| * | |||
| * @param prevID ID of previous step. | |||
| */ | |||
| void setPrevious(String prevID); | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| String getPrevious(); | |||
| /** | |||
| * Set the data model object that the step will edit. It is assumed | |||
| * that all steps initialized within a single wizard agree on the | |||
| @@ -143,14 +116,14 @@ public interface WizardStep { | |||
| * | |||
| * @param model Data model to edit. | |||
| */ | |||
| void setDataModel(Object model); | |||
| void setDataModel(WizardData model); | |||
| /** | |||
| * Get the data model that should be passeed on to the next step. | |||
| * | |||
| * @return Current data model. | |||
| */ | |||
| Object getDataModel(); | |||
| WizardData getDataModel(); | |||
| /** | |||
| * Get the component that should be displayed to the user for | |||
| @@ -175,4 +148,18 @@ public interface WizardStep { | |||
| */ | |||
| void updateDataModel(); | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| String getNext(); | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| String getPrevious(); | |||
| } | |||
| @@ -0,0 +1,159 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.*; | |||
| import org.apache.tools.ant.gui.core.ResourceManager; | |||
| import org.apache.tools.ant.gui.acs.*; | |||
| import java.util.*; | |||
| /** | |||
| * Data model for the build wizard. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class BuildData implements WizardData { | |||
| /** Wizard resources. */ | |||
| private ResourceManager _resources = new ResourceManager( | |||
| "org.apache.tools.ant.gui.resources.buildFileWizard"); | |||
| private StateMachine _stateMachine = new BuildStateMachine(); | |||
| private String _name = null; | |||
| private boolean _isNewProject = true; | |||
| private List _optionalSteps = null; | |||
| /** | |||
| * Default ctor. | |||
| * | |||
| */ | |||
| public BuildData() { | |||
| //_project = ACSFactory.getInstance().createProject(); | |||
| _optionalSteps = Arrays.asList(ProjectSetupStep.OPTIONS); | |||
| } | |||
| /** | |||
| * Get access to the resources for the wizard. | |||
| * | |||
| * @return Wizard resources. | |||
| */ | |||
| public ResourceManager getResources() { | |||
| return _resources; | |||
| } | |||
| /** | |||
| * Get the class the determines what the next step should be. | |||
| * | |||
| * @return State machine. | |||
| */ | |||
| public StateMachine getStateMachine() { | |||
| return _stateMachine; | |||
| } | |||
| /** | |||
| * Get the project name. | |||
| * | |||
| * @param name Project name. | |||
| */ | |||
| public void setProjectName(String name) { | |||
| _name = name; | |||
| } | |||
| /** | |||
| * Set the project name. | |||
| * | |||
| * @return Project name. | |||
| */ | |||
| public String getProjectName() { | |||
| return _name; | |||
| } | |||
| /** | |||
| * Set whether or not a new project is being created. | |||
| * | |||
| * @param isNew True if new project, false if importing a project. | |||
| */ | |||
| public void setNewProject(boolean isNew) { | |||
| _isNewProject = isNew; | |||
| } | |||
| /** | |||
| * Determine if we are creating a new project. | |||
| * | |||
| * @return True if new project, false if importing a project. | |||
| */ | |||
| public boolean isNewProject() { | |||
| return _isNewProject; | |||
| } | |||
| /** | |||
| * Set the set of optional steps (as IDs) that should be executed. | |||
| * | |||
| * @param steps Set of optional step IDs. | |||
| */ | |||
| public void setOptionalSteps(List steps) { | |||
| _optionalSteps = steps; | |||
| } | |||
| /** | |||
| * Get the set of optional steps (as IDs) that should be executed. | |||
| * | |||
| * @return Set of optional step IDs. | |||
| */ | |||
| public List getOptionalSteps() { | |||
| return _optionalSteps; | |||
| } | |||
| } | |||
| @@ -0,0 +1,141 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.*; | |||
| import org.apache.tools.ant.gui.core.ResourceManager; | |||
| import java.util.*; | |||
| /** | |||
| * State machine defining the step ordering for the build wizard. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class BuildStateMachine extends DefaultStateMachine { | |||
| private List _optionals = Arrays.asList(ProjectSetupStep.OPTIONS); | |||
| /** | |||
| * Get the next step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The ID of next step, or null if there currently isn't one. | |||
| */ | |||
| public String getNext(ProjectSetupStep curr, WizardData data) { | |||
| return getFollowingID(super.getNext(curr, data), data, +1); | |||
| } | |||
| /** | |||
| * Get the next step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The ID of next step, or null if there currently isn't one. | |||
| */ | |||
| public String getNext(OptionalStep curr, WizardData data) { | |||
| return getFollowingID(super.getNext(curr, data), data, +1); | |||
| } | |||
| /** | |||
| * Get the previous step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The ID of previous step, or null if there currently isn't one. | |||
| */ | |||
| public String getPrevious(OptionalStep curr, WizardData data) { | |||
| return getFollowingID(super.getPrevious(curr, data), data, -1); | |||
| } | |||
| /** | |||
| * Get the previous step. | |||
| * | |||
| * @param curr The current step. | |||
| * @param data The current state of the wizard. | |||
| * @return The ID of previous step, or null if there currently isn't one. | |||
| */ | |||
| public String getPrevious(FinishStep curr, WizardData data) { | |||
| return getFollowingID(super.getPrevious(curr, data), data, -1); | |||
| } | |||
| /** | |||
| * Figure out which ID should follow the given one based on the current | |||
| * state setting of the optional steps. | |||
| * | |||
| * @param curr ID of the current step. | |||
| * @param data State data. | |||
| * @param direction +1 for next, -1 for previous. | |||
| * @return The ID to follow, or null if none. | |||
| */ | |||
| private String getFollowingID(String curr, WizardData data, int direction) { | |||
| String follow = curr; | |||
| List steps = getStepList(data); | |||
| List setting = ((BuildData)data).getOptionalSteps(); | |||
| while(follow != null && _optionals.contains(follow) && | |||
| !setting.contains(follow)) { | |||
| int index = steps.indexOf(follow) + direction; | |||
| if(index >= 0 && index < steps.size()) { | |||
| follow = (String) steps.get(index); | |||
| } | |||
| else { | |||
| follow = null; | |||
| } | |||
| } | |||
| return follow; | |||
| } | |||
| } | |||
| @@ -0,0 +1,116 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.AbstractWizardStep; | |||
| import javax.swing.*; | |||
| import java.awt.event.ActionListener; | |||
| import java.awt.event.ActionEvent; | |||
| /** | |||
| * | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class CompileStep extends AbstractWizardStep implements OptionalStep { | |||
| /** | |||
| * Initialize the display. | |||
| * | |||
| */ | |||
| protected void init() { | |||
| } | |||
| /** | |||
| * Called when the step should refresh its display based on the | |||
| * current model setting. | |||
| * | |||
| */ | |||
| public void updateDisplay() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Called when the step should update the data model based on the | |||
| * settings of its widgets. | |||
| * | |||
| */ | |||
| public void updateDataModel() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getNext(this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getPrevious(this, getDataModel()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,110 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.InstructionStep; | |||
| import javax.swing.*; | |||
| import java.awt.event.ActionListener; | |||
| import java.awt.event.ActionEvent; | |||
| /** | |||
| * | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class FinishStep extends InstructionStep { | |||
| /** | |||
| * Called when the step should refresh its display based on the | |||
| * current model setting. | |||
| * | |||
| */ | |||
| public void updateDisplay() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Called when the step should update the data model based on the | |||
| * settings of its widgets. | |||
| * | |||
| */ | |||
| public void updateDataModel() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getNext(this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getPrevious(this, getDataModel()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,116 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.AbstractWizardStep; | |||
| import javax.swing.*; | |||
| import java.awt.event.ActionListener; | |||
| import java.awt.event.ActionEvent; | |||
| /** | |||
| * | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class JARStep extends AbstractWizardStep implements OptionalStep { | |||
| /** | |||
| * Initialize the display. | |||
| * | |||
| */ | |||
| protected void init() { | |||
| } | |||
| /** | |||
| * Called when the step should refresh its display based on the | |||
| * current model setting. | |||
| * | |||
| */ | |||
| public void updateDisplay() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Called when the step should update the data model based on the | |||
| * settings of its widgets. | |||
| * | |||
| */ | |||
| public void updateDataModel() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getNext(this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getPrevious(this, getDataModel()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,116 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.AbstractWizardStep; | |||
| import javax.swing.*; | |||
| import java.awt.event.ActionListener; | |||
| import java.awt.event.ActionEvent; | |||
| /** | |||
| * | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class JavaDocStep extends AbstractWizardStep implements OptionalStep { | |||
| /** | |||
| * Initialize the display. | |||
| * | |||
| */ | |||
| protected void init() { | |||
| } | |||
| /** | |||
| * Called when the step should refresh its display based on the | |||
| * current model setting. | |||
| * | |||
| */ | |||
| public void updateDisplay() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Called when the step should update the data model based on the | |||
| * settings of its widgets. | |||
| * | |||
| */ | |||
| public void updateDataModel() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getNext(this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getPrevious(this, getDataModel()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,65 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.WizardStep; | |||
| /** | |||
| * A tagging interface for optional steps to make virtual dispatching easier. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| interface OptionalStep extends WizardStep { | |||
| } | |||
| @@ -58,7 +58,7 @@ import javax.swing.*; | |||
| import java.awt.BorderLayout; | |||
| import java.awt.FlowLayout; | |||
| import java.awt.GridBagLayout; | |||
| import org.apache.tools.ant.gui.acs.*; | |||
| import java.util.*; | |||
| /** | |||
| * Build file wizard step for naming the project and | |||
| @@ -69,9 +69,31 @@ import org.apache.tools.ant.gui.acs.*; | |||
| */ | |||
| public class ProjectSetupStep extends AbstractWizardStep { | |||
| /** ID for compile option. */ | |||
| public static final String COMPILE_OPTION = "compile"; | |||
| /** ID for JAR option. */ | |||
| public static final String JAR_OPTION = "jar"; | |||
| /** ID for JavaDoc option. */ | |||
| public static final String JAVADOC_OPTION = "javadoc"; | |||
| /** Available options as an array. */ | |||
| public static final String[] OPTIONS = { | |||
| COMPILE_OPTION, | |||
| JAR_OPTION, | |||
| JAVADOC_OPTION | |||
| }; | |||
| /** Array of the option selections. */ | |||
| private JCheckBox[] _selections = null; | |||
| /** Name of the project. */ | |||
| private JTextField _name = null; | |||
| /** | |||
| * Initialize the screen widgets. | |||
| * | |||
| */ | |||
| protected void init() { | |||
| setLayout(new BorderLayout()); | |||
| @@ -82,11 +104,21 @@ public class ProjectSetupStep extends AbstractWizardStep { | |||
| p.add(new JLabel(getResources().getString(getID() + ".nameLabel"))); | |||
| p.add(_name); | |||
| p = new JPanel(new GridBagLayout()); | |||
| p.setBorder(BorderFactory.createTitledBorder( | |||
| getResources().getString(getID() + ".optionsLabel"))); | |||
| p = new JPanel(null); | |||
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); | |||
| p.setBorder(BorderFactory.createCompoundBorder( | |||
| BorderFactory.createTitledBorder( | |||
| getResources().getString(getID() + ".optionsLabel")), | |||
| BorderFactory.createEmptyBorder(5, 10, 5, 10))); | |||
| add(p, BorderLayout.CENTER); | |||
| _selections = new JCheckBox[OPTIONS.length]; | |||
| for(int i = 0; i < OPTIONS.length; i++) { | |||
| _selections[i] = new JCheckBox( | |||
| getResources().getString(getID() + "." + OPTIONS[i] + ".label")); | |||
| _selections[i].setSelected(true); | |||
| p.add(_selections[i]); | |||
| } | |||
| } | |||
| /** | |||
| @@ -95,8 +127,17 @@ public class ProjectSetupStep extends AbstractWizardStep { | |||
| * | |||
| */ | |||
| public void updateDisplay() { | |||
| ACSProjectElement project = (ACSProjectElement) getDataModel(); | |||
| _name.setText(project.getName()); | |||
| // Name. | |||
| BuildData data = (BuildData) getDataModel(); | |||
| _name.setText(data.getProjectName()); | |||
| // Steps. | |||
| List steps = data.getOptionalSteps(); | |||
| if(steps != null) { | |||
| for(int i = 0; i < _selections.length; i++) { | |||
| _selections[i].setSelected(steps.contains(OPTIONS[i])); | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| @@ -105,8 +146,39 @@ public class ProjectSetupStep extends AbstractWizardStep { | |||
| * | |||
| */ | |||
| public void updateDataModel() { | |||
| ACSProjectElement project = (ACSProjectElement) getDataModel(); | |||
| project.setName(_name.getText()); | |||
| // Name. | |||
| BuildData data = (BuildData) getDataModel(); | |||
| data.setProjectName(_name.getText()); | |||
| // Steps. | |||
| List steps = new ArrayList(); | |||
| for(int i = 0; i < _selections.length; i++) { | |||
| if(_selections[i].isSelected()) { | |||
| steps.add(OPTIONS[i]); | |||
| } | |||
| } | |||
| data.setOptionalSteps(steps); | |||
| } | |||
| /** | |||
| * Get the id of the next step. | |||
| * | |||
| * @return ID of next step. | |||
| */ | |||
| public String getNext() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getNext(this, getDataModel()); | |||
| } | |||
| /** | |||
| * Get the id of the previous step. | |||
| * | |||
| * @return Previous step. | |||
| */ | |||
| public String getPrevious() { | |||
| return ((BuildStateMachine)getDataModel().getStateMachine()). | |||
| getPrevious(this, getDataModel()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,115 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2001 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.gui.wizard.build; | |||
| import org.apache.tools.ant.gui.wizard.AbstractWizardStep; | |||
| import javax.swing.*; | |||
| import java.awt.event.ActionListener; | |||
| import java.awt.event.ActionEvent; | |||
| import org.apache.tools.ant.gui.acs.*; | |||
| import java.util.*; | |||
| /** | |||
| * Step for selecting whether a new project is being created, or | |||
| * if an existing one is being imported. | |||
| * | |||
| * @version $Revision$ | |||
| * @author Simeon Fitch | |||
| */ | |||
| public class ProjectTypeStep extends AbstractWizardStep { | |||
| private JRadioButton _isNew = null; | |||
| private JRadioButton _isImport = null; | |||
| /** | |||
| * Initialize the display. | |||
| * | |||
| */ | |||
| protected void init() { | |||
| setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); | |||
| ButtonGroup group = new ButtonGroup(); | |||
| _isNew = new JRadioButton( | |||
| getResources().getString(getID() + ".isNewLabel")); | |||
| group.add(_isNew); | |||
| add(_isNew); | |||
| _isImport = new JRadioButton( | |||
| getResources().getString(getID() + ".isImportLabel")); | |||
| group.add(_isImport); | |||
| add(_isImport); | |||
| // XXX Not implemented yet. | |||
| _isImport.setEnabled(false); | |||
| _isImport.setToolTipText("Not implemented yet."); | |||
| } | |||
| /** | |||
| * Called when the step should refresh its display based on the | |||
| * current model setting. | |||
| * | |||
| */ | |||
| public void updateDisplay() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| _isNew.setSelected(data.isNewProject()); | |||
| } | |||
| /** | |||
| * Called when the step should update the data model based on the | |||
| * settings of its widgets. | |||
| * | |||
| */ | |||
| public void updateDataModel() { | |||
| BuildData data = (BuildData) getDataModel(); | |||
| data.setNewProject(_isNew.isSelected()); | |||
| } | |||
| } | |||