diff --git a/src/antidote/org/apache/tools/ant/gui/Antidote.java b/src/antidote/org/apache/tools/ant/gui/Antidote.java
index bea955153..6f9eb6e25 100644
--- a/src/antidote/org/apache/tools/ant/gui/Antidote.java
+++ b/src/antidote/org/apache/tools/ant/gui/Antidote.java
@@ -65,7 +65,7 @@ import java.lang.reflect.Constructor;
* @version $Revision$
* @author Simeon Fitch
*/
-public class Antidote extends JPanel {
+public class Antidote extends JComponent {
/** Source of application state data. */
private AppContext _context = null;
diff --git a/src/antidote/org/apache/tools/ant/gui/Args.java b/src/antidote/org/apache/tools/ant/gui/Args.java
new file mode 100644
index 000000000..e18c08dfd
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Args.java
@@ -0,0 +1,161 @@
+/*
+ * 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
+ * .
+ */
+
+package org.apache.tools.ant.gui;
+import org.apache.tools.ant.gui.core.ResourceManager;
+
+/**
+ * Class encapsulating the parsing of command-line arguments for Antidote.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class Args {
+
+ private ResourceManager _resources = null;
+ private boolean _wizzardMode = false;
+ private String _fileName = null;
+ private boolean _debugMode = false;
+
+ /**
+ * Ctor for parsing command line arguments.
+ *
+ * @param args Arguments to parse.
+ */
+ public Args(String[] args) {
+ for(int i = 0; i < args.length; i++) {
+ String arg = args[i];
+ if(i == args.length - 1 && !arg.startsWith("-")) {
+ _fileName = arg;
+ }
+ else if(arg.startsWith("-h")) {
+ System.out.println(getUsage());
+ System.exit(0);
+ }
+ else if(arg.equals("-wizzard")) {
+ _wizzardMode = true;
+ }
+ else if(arg.equals("-debug")) {
+ _debugMode = true;
+ }
+ else {
+ String msg = getResources().getMessage(
+ "invalidArg", new Object[] { arg });
+ abort(msg);
+ }
+ }
+ }
+
+ /**
+ * Get the resources, loading them if necessary.
+ *
+ * @return Loaded resources.
+ */
+ private ResourceManager getResources() {
+ if(_resources == null) {
+ _resources = new ResourceManager(
+ "org.apache.tools.ant.gui.resources.args");
+ }
+ return _resources;
+ }
+
+ /**
+ * Print message and exit.
+ *
+ * @param error Error message to print.
+ */
+ private void abort(String error) {
+ System.err.println(error);
+ System.err.println(getUsage());
+ System.exit(1);
+ }
+
+ /**
+ * Get the command line usage of Antidote.
+ *
+ * @return Command line usage help.
+ */
+ public String getUsage() {
+ return getResources().getString("usage");
+ }
+
+ /**
+ * Get the build filename.
+ *
+ * @return Build file name.
+ */
+ public String getBuildFile() {
+ return _fileName;
+ }
+
+ /**
+ * Determine if wizzard mode was requested for generating a new
+ * build file.
+ *
+ * @return True if wizzard mode, false otherwise.
+ */
+ public boolean isWizzardMode() {
+ return _wizzardMode;
+ }
+
+ /**
+ * Determine if debug mode was requested.
+ *
+ * @return True if debug mode, false otherwise.
+ */
+ public boolean isDebugMode() {
+ return _debugMode;
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/AbstractWizzardStep.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/AbstractWizzardStep.java
new file mode 100644
index 000000000..8e5accca7
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/AbstractWizzardStep.java
@@ -0,0 +1,218 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+import javax.swing.JComponent;
+
+
+/**
+ * Abstract class implementing the basic support for the WizzardStep interface.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public abstract class AbstractWizzardStep extends JComponent
+ implements WizzardStep {
+
+ /** Step id. */
+ private String _id = null;
+ /** Step display title. */
+ private String _title = null;
+ /** 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;
+
+ /**
+ * Set the step id. The id must be unique among steps within the wizzard.
+ *
+ * @param id Wizzard id.
+ */
+ public void setID(String id) {
+ _id = id;
+ }
+
+ /**
+ * Get the step id.
+ *
+ * @return Step id.
+ */
+ public String getID() {
+ return _id;
+ }
+
+ /**
+ * Set the step title.
+ *
+ * @param title Step title.
+ */
+ public void setTitle(String title) {
+ _title = title;
+ }
+
+ /**
+ * Get the step title.
+ *
+ * @return Step title.
+ */
+ public String getTitle() {
+ return _title;
+ }
+
+ /**
+ * Set the step description.
+ *
+ * @param desc Step description.
+ */
+ public void setDescription(String desc) {
+ _description = desc;
+ }
+
+ /**
+ * Get the step description.
+ *
+ * @return Step description.
+ */
+ public String getDescription() {
+ 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
+ * that all steps initialized within a single wizzard agree on the
+ * data model type.
+ *
+ * @param model Data model to edit.
+ */
+ public void setDataModel(Object model) {
+ _model = model;
+ }
+
+ /**
+ * Get the data model that should be passeed on to the next step.
+ *
+ * @return Current data model.
+ */
+ public Object getDataModel() {
+ return _model;
+ }
+
+ /**
+ * Get the component that should be displayed to the user for
+ * editing the model. This component should not include the
+ * title and text display, which is handled by the wizzard container.
+ *
+ * @return Editing component.
+ */
+ public JComponent getEditorComponent() {
+ return this;
+ }
+
+ /**
+ * Get a string representation of this.
+ *
+ * @return String representation.
+ */
+ public String toString() {
+ 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();
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/ButtonNavigator.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/ButtonNavigator.java
new file mode 100644
index 000000000..a37e9af18
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/ButtonNavigator.java
@@ -0,0 +1,197 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+import org.apache.tools.ant.gui.core.ResourceManager;
+import javax.swing.*;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import java.awt.FlowLayout;
+import java.util.*;
+
+class ButtonNavigator extends JComponent implements WizzardNavigator {
+ public static final String NEXT = "next";
+ public static final String BACK = "back";
+ public static final String CANCEL = "cancel";
+ public static final String FINISH = "finish";
+
+ /** Resources. */
+ private ResourceManager _resources = null;
+ /** Event listeners. */
+ private List _listeners = new ArrayList();
+
+ /* Buttons. */
+ private JButton _next = null;
+ private JButton _back = null;
+ private JButton _cancel = null;
+ private JButton _finish = null;
+
+ /** Action handler. */
+ private ActionHandler _handler = new ActionHandler();
+
+ public ButtonNavigator(ResourceManager resources) {
+ _resources = resources;
+ setLayout(new FlowLayout(FlowLayout.RIGHT));
+
+ _back = new JButton(_resources.getString(BACK));
+ _next = new JButton(_resources.getString(NEXT));
+ _finish = new JButton(_resources.getString(FINISH));
+ _cancel = new JButton(_resources.getString(CANCEL));
+
+ _back.setActionCommand(BACK);
+ _next.setActionCommand(NEXT);
+ _finish.setActionCommand(FINISH);
+ _cancel.setActionCommand(CANCEL);
+
+ _back.addActionListener(_handler);
+ _next.addActionListener(_handler);
+ _finish.addActionListener(_handler);
+ _cancel.addActionListener(_handler);
+
+ _back.setEnabled(false);
+ _next.setEnabled(false);
+ _finish.setEnabled(false);
+ _cancel.setEnabled(true);
+
+ add(_back);
+ add(_next);
+ add(_finish);
+ add(_cancel);
+ }
+
+ /**
+ * Add a navigator listener.
+ *
+ * @param l Listener to add.
+ */
+ public void addNavigatorListener(NavigatorListener l) {
+ _listeners.add(l);
+ }
+
+ /**
+ * Remove a navigator listener.
+ *
+ * @param l Listener to remove.
+ */
+ public void removeNavigatorListener(NavigatorListener l) {
+ _listeners.remove(l);
+ }
+
+ /**
+ * Set the enabled state of the back button.
+ *
+ * @param state True for enabled, false for disabled.
+ */
+ public void setBackEnabled(boolean state) {
+ _back.setEnabled(state);
+ }
+ /**
+ * Set the enabled state of the next button.
+ *
+ * @param state True for enabled, false for disabled.
+ */
+ public void setNextEnabled(boolean state) {
+ _next.setEnabled(state);
+ }
+ /**
+ * Set the enabled state of the finished button.
+ *
+ * @param state True for enabled, false for disabled.
+ */
+ public void setFinishEnabled(boolean state) {
+ _finish.setEnabled(state);
+ }
+
+ /** Handler of the button presses. */
+ private class ActionHandler implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ Object source = e.getSource();
+
+ // Predetermine which method to call so that
+ // we don't traverse if statements for each iteration.
+ int idx = -1;
+ if(source == _next) {
+ idx = 0;
+ }
+ else if(source == _back) {
+ idx = 1;
+ }
+ else if(source == _cancel) {
+ idx = 2;
+ }
+ else if(source == _finish) {
+ idx = 3;
+ }
+
+ Iterator it = _listeners.iterator();
+ while(it.hasNext()) {
+ NavigatorListener l = (NavigatorListener) it.next();
+ switch(idx) {
+ case 0:
+ l.nextStep();
+ break;
+ case 1:
+ l.backStep();
+ break;
+ case 2:
+ l.cancel();
+ break;
+ case 3:
+ l.finish();
+ break;
+ }
+
+ }
+ }
+ }
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/InstructionStep.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/InstructionStep.java
new file mode 100644
index 000000000..9311f7f23
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/InstructionStep.java
@@ -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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+import javax.swing.*;
+
+/**
+ * Wizzard step whose only purpose is to display some text.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class InstructionStep extends AbstractWizzardStep {
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/NavigatorListener.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/NavigatorListener.java
new file mode 100644
index 000000000..62b2d4871
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/NavigatorListener.java
@@ -0,0 +1,89 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+
+/**
+ * Interface for classes interested in events from the WizzardNavigator.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public interface NavigatorListener {
+ /**
+ * Called when the wizzard should show the next step.
+ *
+ */
+ void nextStep();
+ /**
+ * Called when the wizzard should show the previous step.
+ *
+ */
+ void backStep();
+ /**
+ * Called when the wizzard should show the step with the given id.
+ *
+ * @param stepID ID of step to show.
+ */
+ void gotoStep(String stepID);
+ /**
+ * Called when the wizzard activity shold be cancelled.
+ *
+ */
+ void cancel();
+ /**
+ * Called when the wizzard is finished.
+ *
+ */
+ void finish();
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/Wizzard.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/Wizzard.java
new file mode 100644
index 000000000..14fbd54b6
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/Wizzard.java
@@ -0,0 +1,241 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+import org.apache.tools.ant.gui.core.ResourceManager;
+
+import javax.swing.*;
+import javax.swing.border.TitledBorder;
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.util.*;
+
+/**
+ * Top level container and controller for wizzard-type GUI.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class Wizzard extends JComponent {
+ /** Resources defining the wizzard contents. Separate from the
+ * application context resources. */
+ private ResourceManager _resources = null;
+ /** Container for the step editors. */
+ private JPanel _stepContainer = null;
+ /** Layout manager for all the step panels. */
+ private CardLayout _layout = null;
+ /** Set initialized steps. */
+ private Map _steps = new HashMap();
+ /** Description text. XXX should probably change to some other widget. */
+ private JTextArea _description = null;
+ /** Widget for navigating through steps. */
+ private WizzardNavigator _nav = null;
+ /** The data model to pass on to each step. */
+ private Object _model = null;
+ /** The current Wizzard step. */
+ private WizzardStep _curr = null;
+ /** The set of wizzard listeners. */
+ private List _listeners = new ArrayList(1);
+
+ /**
+ * Standard ctor.
+ *
+ * @param resources Wizzard definition resources
+ * @param dataModel Initial data model.
+ */
+ public Wizzard(ResourceManager resources, Object dataModel) {
+ setLayout(new BorderLayout());
+ _resources = resources;
+ _model = dataModel;
+
+ TitledBorder border = new TitledBorder("Border");
+ setBorder(border);
+
+ _description = new JTextArea(4, 40);
+ _description.setBorder(BorderFactory.createEtchedBorder());
+ _description.setOpaque(false);
+ _description.setFont(new Font("Serif", Font.PLAIN, 12));
+ _description.setEditable(false);
+ _description.setLineWrap(true);
+ _description.setWrapStyleWord(true);
+
+ add(_description, BorderLayout.NORTH);
+
+ _stepContainer = new JPanel(_layout = new CardLayout());
+ _stepContainer.setBorder(BorderFactory.createEtchedBorder());
+ add(_stepContainer, BorderLayout.CENTER);
+
+ _nav = new ButtonNavigator(_resources);
+ _nav.addNavigatorListener(new NavHandler());
+ ((ButtonNavigator)_nav).setBorder(BorderFactory.createEtchedBorder());
+ add((ButtonNavigator)_nav, BorderLayout.SOUTH);
+
+ String[] steps = _resources.getStringArray("steps");
+ try {
+ for(int i = 0; i < steps.length; i++) {
+ Class type = _resources.getClass(steps[i] + ".editor");
+ WizzardStep step = (WizzardStep) type.newInstance();
+ step.setID(steps[i]);
+ step.setTitle(_resources.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);
+
+ _steps.put(steps[i], step);
+ _stepContainer.add(step.getEditorComponent(), steps[i]);
+ }
+ // Initialize the first screen with the data model.
+ if(steps.length > 0) {
+ WizzardStep first = (WizzardStep)_steps.get(steps[0]);
+ first.setDataModel(_model);
+ _curr = first;
+ showStep(first);
+ }
+ }
+ catch(Exception ex) {
+ // If we get here then the wizzard didn't initialize properly.
+ // XXX log me.
+ ex.printStackTrace();
+ }
+
+ setPreferredSize(new Dimension(500, 400));
+
+ }
+
+ /**
+ * Add a wizzard listener.
+ *
+ * @param l Listener to add.
+ */
+ public void addWizzardListener(WizzardListener l) {
+ _listeners.add(l);
+ }
+
+ /**
+ * Remove a wizzard listener.
+ *
+ * @param l Listener to remove.
+ */
+ public void removeWizzardListener(WizzardListener l) {
+ _listeners.remove(l);
+ }
+
+ /**
+ * Go to the given step.
+ *
+ * @param step Step to go to.
+ */
+ private void showStep(WizzardStep step) {
+ if(step == null) return;
+
+ // Transfer data model (in case step wants to create a new one.
+ step.setDataModel(_curr.getDataModel());
+
+ // Update the title and description.
+ TitledBorder border = (TitledBorder) getBorder();
+ border.setTitle(step.getTitle());
+ _description.setText(step.getDescription());
+
+ _nav.setBackEnabled(step.getPrevious() != null);
+ _nav.setNextEnabled(step.getNext() != null);
+ _nav.setFinishEnabled(step.getNext() == null);
+
+ // Display the step.
+ _layout.show(_stepContainer, step.getID());
+
+ _curr = step;
+
+ }
+
+ /** Handler for actions invoked by wizzard. */
+ private class NavHandler implements NavigatorListener {
+ public void nextStep() {
+ String nextID = _curr.getNext();
+ if(nextID != null) {
+ showStep((WizzardStep)_steps.get(nextID));
+ }
+ }
+ public void backStep() {
+ String prevID = _curr.getPrevious();
+ if(prevID != null) {
+ showStep((WizzardStep)_steps.get(prevID));
+ }
+ }
+ public void gotoStep(String stepID){
+ showStep((WizzardStep) _steps.get(stepID));
+ }
+ public void cancel() {
+ Iterator it = _listeners.iterator();
+ while(it.hasNext()) {
+ WizzardListener l = (WizzardListener) it.next();
+ l.canceled();
+ }
+ }
+ public void finish() {
+ Iterator it = _listeners.iterator();
+ while(it.hasNext()) {
+ WizzardListener l = (WizzardListener) it.next();
+ l.finished(_curr.getDataModel());
+ }
+ }
+ }
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardListener.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardListener.java
new file mode 100644
index 000000000..1f80c363c
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardListener.java
@@ -0,0 +1,77 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+
+
+/**
+ * Interface for classes desiring notifiction of when the user
+ * completes his/her use of wizzard.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public interface WizzardListener {
+ /**
+ * Called when the user has clicked the finish button.
+ *
+ * @param model Last state of the object model.
+ */
+ void finished(Object model);
+
+ /**
+ * Called when the user has clicked the cancel button.
+ *
+ */
+ void canceled();
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardNavigator.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardNavigator.java
new file mode 100644
index 000000000..4795d21ef
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardNavigator.java
@@ -0,0 +1,88 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+
+public interface WizzardNavigator {
+ /**
+ * Add a navigator listener.
+ *
+ * @param l Listener to add.
+ */
+ void addNavigatorListener(NavigatorListener l);
+ /**
+ * Remove a navigator listener.
+ *
+ * @param l Listener to remove.
+ */
+ void removeNavigatorListener(NavigatorListener l);
+
+ /**
+ * Set the enabled state of the back control.
+ *
+ * @param state True for enabled, false for disabled.
+ */
+ void setBackEnabled(boolean state);
+ /**
+ * Set the enabled state of the next control.
+ *
+ * @param state True for enabled, false for disabled.
+ */
+ void setNextEnabled(boolean state);
+ /**
+ * Set the enabled state of the finished control.
+ *
+ * @param state True for enabled, false for disabled.
+ */
+ void setFinishEnabled(boolean state);
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardStep.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardStep.java
new file mode 100644
index 000000000..3a9bde5d4
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardStep.java
@@ -0,0 +1,156 @@
+/*
+ * 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
+ * .
+ */
+package org.apache.tools.ant.gui.wizzard;
+import javax.swing.JComponent;
+
+
+/**
+ * Interface for classes defining a step in a wizzard.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public interface WizzardStep {
+ /**
+ * Set the step id. The id must be unique among steps within the wizzard.
+ *
+ * @param id Wizzard id.
+ */
+ void setID(String id);
+
+ /**
+ * Get the step id.
+ *
+ * @return Step id.
+ */
+ String getID();
+
+ /**
+ * Set the step title.
+ *
+ * @param title Step title.
+ */
+ void setTitle(String title);
+ /**
+ * Get the step title.
+ *
+ * @return Step title.
+ */
+ String getTitle();
+
+ /**
+ * Set the step description.
+ *
+ * @param desc Step description.
+ */
+ void setDescription(String desc);
+ /**
+ * Get the step description.
+ *
+ * @return Step description.
+ */
+ 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 wizzard agree on the
+ * data model type.
+ *
+ * @param model Data model to edit.
+ */
+ void setDataModel(Object model);
+
+ /**
+ * Get the data model that should be passeed on to the next step.
+ *
+ * @return Current data model.
+ */
+ Object getDataModel();
+
+ /**
+ * Get the component that should be displayed to the user for
+ * editing the model. This component should not include the
+ * title and text display, which is handled by the wizzard container.
+ *
+ * @return Editing component.
+ */
+ JComponent getEditorComponent();
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/Main.java b/src/antidote/org/apache/tools/ant/gui/Main.java
index 64f1a4c8f..e8f53a999 100644
--- a/src/antidote/org/apache/tools/ant/gui/Main.java
+++ b/src/antidote/org/apache/tools/ant/gui/Main.java
@@ -54,8 +54,11 @@
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.wizzard.Wizzard;
+import org.apache.tools.ant.gui.wizzard.WizzardListener;
import org.apache.tools.ant.gui.command.LoadFileCmd;
import org.apache.tools.ant.gui.event.EventBus;
+import org.apache.tools.ant.gui.acs.ACSFactory;
import javax.swing.*;
import java.awt.BorderLayout;
import java.io.File;
@@ -75,27 +78,62 @@ public class Main {
public static void main(String[] args) {
XMLHelper.init();
+ Args settings = new Args(args);
+
+
try {
JFrame f = new JFrame("Antidote");
+ f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/);
AppContext context = new AppContext(f);
- EventResponder resp = new EventResponder(context);
- Antidote gui = new Antidote(context);
- f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/);
- JMenuBar menu = context.getActions().createMenuBar();
- f.setJMenuBar(menu);
- f.getContentPane().add(BorderLayout.CENTER, gui);
- f.getContentPane().add(BorderLayout.NORTH,
- context.getActions().createToolBar());
+ if(!settings.isWizzardMode()) {
+ EventResponder resp = new EventResponder(context);
+ Antidote gui = new Antidote(context);
- // Add the project selection menu.
- ProjectSelectionMenu ps = new ProjectSelectionMenu(context);
- ps.insertInto(menu);
+ JMenuBar menu = context.getActions().createMenuBar();
+ f.setJMenuBar(menu);
+ f.getContentPane().add(BorderLayout.CENTER, gui);
+ f.getContentPane().add(BorderLayout.NORTH,
+ context.getActions().createToolBar());
+
+ // Add the project selection menu.
+ ProjectSelectionMenu ps = new ProjectSelectionMenu(context);
+ ps.insertInto(menu);
+
+ // Add debugging items.
+ if(settings.isDebugMode()) {
+ context.getEventBus().addMember(
+ EventBus.VETOING, new EventDebugMonitor());
+ }
- // Add debugging items.
- if(context.isDebugOn()) {
- context.getEventBus().addMember(
- EventBus.VETOING, new EventDebugMonitor());
+ // Load a build file if one is provided.
+ if(settings.getBuildFile() != null) {
+ LoadFileCmd load = new LoadFileCmd(context);
+ load.setFile(new File(settings.getBuildFile()));
+ load.run();
+ }
+ }
+ else {
+ // We are in wizzard mode. Create it.
+ ResourceManager resources = new ResourceManager(
+ "org.apache.tools.ant.gui.resources.buildFileWizzard");
+ Wizzard wiz = new Wizzard(
+ resources, ACSFactory.getInstance().createProject());
+ // XXX this is temporary for testing. Eventually
+ // it will launch the regular antidote screen with the
+ // results of the wizzard.
+ wiz.addWizzardListener(new WizzardListener() {
+ public void finished(Object model) {
+ System.out.println(model);
+ System.exit(0);
+ }
+ public void canceled() {
+ System.exit(0);
+ }
+
+ });
+
+ f.getContentPane().add(BorderLayout.CENTER, wiz);
}
ImageIcon icon =
@@ -106,17 +144,10 @@ public class Main {
else {
System.out.println("Application icon not found.");
}
- f.pack();
+ f.pack();
f.setVisible(true);
- // XXX this will change once full command line argument parsing
- // is supported.
- if(args.length > 0) {
- LoadFileCmd load = new LoadFileCmd(context);
- load.setFile(new File(args[0]));
- load.run();
- }
}
catch(Exception ex) {
ex.printStackTrace();
diff --git a/src/antidote/org/apache/tools/ant/gui/core/AppContext.java b/src/antidote/org/apache/tools/ant/gui/core/AppContext.java
index 9237eba52..556c02993 100644
--- a/src/antidote/org/apache/tools/ant/gui/core/AppContext.java
+++ b/src/antidote/org/apache/tools/ant/gui/core/AppContext.java
@@ -159,16 +159,6 @@ public class AppContext {
public SelectionManager getSelectionManager() {
return _selectionManager;
}
-
- /**
- * Determine if debug mode is turned on.
- *
- * @return True if in debug mode, false otherwise.
- */
- public boolean isDebugOn() {
- return _resources.getBoolean("debug");
- }
-
}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java b/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java
index 5647e2563..3ed93eb43 100644
--- a/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java
+++ b/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java
@@ -99,6 +99,19 @@ public class ResourceManager {
_resources = ResourceBundle.getBundle(propName);
}
+ /**
+ * Generate a composit key from the given class and key name.
+ *
+ * @param clazz Class to find resource for.
+ * @param name Name of the resource.
+ * @return Composite key.
+ */
+ private String getKey(Class clazz, String name) {
+ name = name == null ? "" : name;
+
+ return clazz == null ? name : clazz.getName() + "." + name;
+ }
+
/**
* Get non-qualified String resource.
*
@@ -121,7 +134,12 @@ public class ResourceManager {
return null;
}
- return _resources.getString(getKey(clazz, name));
+ try {
+ return _resources.getString(getKey(clazz, name));
+ }
+ catch(MissingResourceException ex) {
+ return null;
+ }
}
/**
@@ -156,7 +174,12 @@ public class ResourceManager {
}
if(toTok == null) {
- return _resources.getStringArray(key);
+ try {
+ return _resources.getStringArray(key);
+ }
+ catch(MissingResourceException ex) {
+ return null;
+ }
}
else {
StringTokenizer tok = new StringTokenizer(toTok, ", ");
@@ -201,25 +224,45 @@ public class ResourceManager {
value = _resources.getString(key);
}
catch(MissingResourceException ex) {
- // Ignore missing resources as they imply false.
+ return false;
}
return value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes");
}
/**
- * Generate a composit key from the given class and key name.
+ * Get the non-qualified Class type resource for the given key.
*
- * @param clazz Class to find resource for.
+ * @param name Name of the resourdce.
+ * @return Class associated with the key name.
+ */
+ public Class getClass(String name)
+ throws ClassNotFoundException {
+ return getClass(null, name);
+ }
+
+ /**
+ * Get the Class type resource for the given class and key name.
+ *
+ * @param clazz Class requesting the resource.
* @param name Name of the resource.
- * @return Composite key.
+ * @return Class associated with the key name.
*/
- private String getKey(Class clazz, String name) {
- name = name == null ? "" : name;
+ public Class getClass(Class clazz, String name)
+ throws ClassNotFoundException {
+
+ String key = getKey(clazz, name);
+ try {
+ String value = _resources.getString(key);
+ return Class.forName(value);
+ }
+ catch(MissingResourceException ex) {
+ return null;
+ }
- return clazz == null ? name : clazz.getName() + "." + name;
}
+
/**
* Generate a localized message using the given set of arguments to
* format the message with.
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/args.properties b/src/antidote/org/apache/tools/ant/gui/resources/args.properties
new file mode 100644
index 000000000..15297f9c0
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/resources/args.properties
@@ -0,0 +1,7 @@
+# Property file for the command-line strings used by the Args class.
+
+usage=usage: antidote [-help] [-wizzard] [-debug] [build-file]\n\
+\nReport bugs to http://jakarta.apache.org/site/bugs.html\n\
+Copyright (C) 2001 Apache Software Foundation. All rights reserved.
+
+invalidArg=Unrecognized argument: "{0}"
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties b/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties
new file mode 100644
index 000000000..8466d3773
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties
@@ -0,0 +1,18 @@
+# Property file for the wizzard used to create a new build file.
+
+steps=start, finish
+
+next=Next >>
+back=<< Back
+cancel=Cancel
+finish=Finish
+
+start.editor=org.apache.tools.ant.gui.wizzard.InstructionStep
+start.title=Create new build file
+start.description=This wizzard will step you through the process of creating \
+a basic Ant build file for your project.
+
+
+finish.editor=org.apache.tools.ant.gui.wizzard.InstructionStep
+finish.title=Complete build file
+finish.description=Click "Finish" to save your build file definition.