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()); | |||
} | |||
} |