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
index 8e5accca7..e869a72af 100644
--- a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/AbstractWizzardStep.java
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/AbstractWizzardStep.java
@@ -52,6 +52,7 @@
* .
*/
package org.apache.tools.ant.gui.wizzard;
+import org.apache.tools.ant.gui.core.ResourceManager;
import javax.swing.JComponent;
@@ -64,6 +65,10 @@ import javax.swing.JComponent;
public abstract class AbstractWizzardStep extends JComponent
implements WizzardStep {
+ /** Flag to indicate whether or not init has been called. */
+ private boolean _initialized = false;
+ /** Resources. */
+ private ResourceManager _resources = null;
/** Step id. */
private String _id = null;
/** Step display title. */
@@ -77,6 +82,31 @@ public abstract class AbstractWizzardStep extends JComponent
/** ID of previous step. */
private String _prevID = null;
+ /**
+ * Called when the instance should initialize its contents, e.g.
+ * create the widgets, etc. When this is called then all
+ * data values, including the ResourceManager, have been setup.
+ *
+ */
+ protected abstract void init();
+
+ /**
+ * Set the step's resources.
+ *
+ */
+ public void setResources(ResourceManager resources) {
+ _resources = resources;
+ }
+
+ /**
+ * Get the step's resources.
+ *
+ * @return Resources.
+ */
+ protected ResourceManager getResources() {
+ return _resources;
+ }
+
/**
* Set the step id. The id must be unique among steps within the wizzard.
*
@@ -195,6 +225,11 @@ public abstract class AbstractWizzardStep extends JComponent
* @return Editing component.
*/
public JComponent getEditorComponent() {
+ if(!_initialized) {
+ init();
+ _initialized = true;
+ }
+
return this;
}
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
index 9311f7f23..cbd1617ab 100644
--- a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/InstructionStep.java
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/InstructionStep.java
@@ -53,6 +53,9 @@
*/
package org.apache.tools.ant.gui.wizzard;
import javax.swing.*;
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.Insets;
/**
* Wizzard step whose only purpose is to display some text.
@@ -62,4 +65,38 @@ import javax.swing.*;
*/
public class InstructionStep extends AbstractWizzardStep {
+ /**
+ * Initialize the contents of the container.
+ *
+ */
+ protected void init() {
+ setLayout(new BorderLayout());
+ String msg = getResources().getString(getID() + ".instructions");
+
+ JTextArea text = new JTextArea(msg);
+ text.setMargin(new Insets(30, 20, 5, 5));
+ text.setOpaque(false);
+ text.setFont(new Font("Serif", Font.PLAIN, 18));
+ text.setEditable(false);
+ text.setLineWrap(true);
+ text.setWrapStyleWord(true);
+ add(text);
+ }
+
+ /**
+ * Called when the step should refresh its display based on the
+ * current model setting.
+ *
+ */
+ public void updateDisplay() {
+ // NOOP
+ }
+ /**
+ * Called when the step should update the data model based on the
+ * settings of its widgets.
+ *
+ */
+ public void updateDataModel() {
+ // NOOP
+ }
}
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
index 14fbd54b6..3a292c5b8 100644
--- a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/Wizzard.java
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/Wizzard.java
@@ -60,6 +60,7 @@ import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.Font;
+import java.awt.Insets;
import java.util.*;
/**
@@ -78,8 +79,12 @@ public class Wizzard extends JComponent {
private CardLayout _layout = null;
/** Set initialized steps. */
private Map _steps = new HashMap();
+ /** Steps saved in a list to preserve ordering. */
+ private List _stepOrdering = new ArrayList();
/** Description text. XXX should probably change to some other widget. */
private JTextArea _description = null;
+ /** Progress meter. */
+ private JProgressBar _progress = null;
/** Widget for navigating through steps. */
private WizzardNavigator _nav = null;
/** The data model to pass on to each step. */
@@ -100,21 +105,35 @@ public class Wizzard extends JComponent {
_resources = resources;
_model = dataModel;
- TitledBorder border = new TitledBorder("Border");
- setBorder(border);
+ _progress = new JProgressBar();
+ _progress.setBorder(BorderFactory.createTitledBorder(
+ _resources.getString("progress")));
+ _progress.setStringPainted(true);
+ add(_progress, BorderLayout.NORTH);
- _description = new JTextArea(4, 40);
- _description.setBorder(BorderFactory.createEtchedBorder());
- _description.setOpaque(false);
+ _description = new JTextArea();
+ _description.setMargin(new Insets(5, 5, 5, 5));
+ _description.setPreferredSize(new Dimension(100, 100));
+ _description.setOpaque(true);
_description.setFont(new Font("Serif", Font.PLAIN, 12));
_description.setEditable(false);
_description.setLineWrap(true);
_description.setWrapStyleWord(true);
- add(_description, BorderLayout.NORTH);
+ JScrollPane scroller = new JScrollPane(
+ _description,
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+
+ scroller.setBorder(BorderFactory.createTitledBorder(
+ _resources.getString("help")));
+ add(scroller, BorderLayout.WEST);
_stepContainer = new JPanel(_layout = new CardLayout());
_stepContainer.setBorder(BorderFactory.createEtchedBorder());
+ _stepContainer.setPreferredSize(new Dimension(400, 400));
+
+
add(_stepContainer, BorderLayout.CENTER);
_nav = new ButtonNavigator(_resources);
@@ -123,10 +142,12 @@ public class Wizzard extends JComponent {
add((ButtonNavigator)_nav, BorderLayout.SOUTH);
String[] steps = _resources.getStringArray("steps");
+ _progress.setMaximum(steps.length - 1);
try {
for(int i = 0; i < steps.length; i++) {
Class type = _resources.getClass(steps[i] + ".editor");
WizzardStep step = (WizzardStep) type.newInstance();
+ step.setResources(_resources);
step.setID(steps[i]);
step.setTitle(_resources.getString(steps[i]+ ".title"));
step.setDescription(
@@ -141,6 +162,7 @@ public class Wizzard extends JComponent {
step.setPrevious(id);
_steps.put(steps[i], step);
+ _stepOrdering.add(step);
_stepContainer.add(step.getEditorComponent(), steps[i]);
}
// Initialize the first screen with the data model.
@@ -157,8 +179,6 @@ public class Wizzard extends JComponent {
ex.printStackTrace();
}
- setPreferredSize(new Dimension(500, 400));
-
}
/**
@@ -188,22 +208,26 @@ public class Wizzard extends JComponent {
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.
- TitledBorder border = (TitledBorder) getBorder();
- border.setTitle(step.getTitle());
+ _stepContainer.setBorder(
+ BorderFactory.createTitledBorder(step.getTitle()));
_description.setText(step.getDescription());
_nav.setBackEnabled(step.getPrevious() != null);
_nav.setNextEnabled(step.getNext() != null);
_nav.setFinishEnabled(step.getNext() == null);
+ _progress.setValue(_stepOrdering.indexOf(step));
+
+ // Tell the step to refresh its display based on the data model.
+ step.updateDisplay();
// Display the step.
_layout.show(_stepContainer, step.getID());
_curr = step;
-
}
/** Handler for actions invoked by wizzard. */
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
index 3a9bde5d4..cc6df77ec 100644
--- a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardStep.java
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/WizzardStep.java
@@ -52,6 +52,7 @@
* .
*/
package org.apache.tools.ant.gui.wizzard;
+import org.apache.tools.ant.gui.core.ResourceManager;
import javax.swing.JComponent;
@@ -62,6 +63,12 @@ import javax.swing.JComponent;
* @author Simeon Fitch
*/
public interface WizzardStep {
+ /**
+ * Set the step's resources.
+ *
+ */
+ void setResources(ResourceManager resources);
+
/**
* Set the step id. The id must be unique among steps within the wizzard.
*
@@ -153,4 +160,19 @@ public interface WizzardStep {
* @return Editing component.
*/
JComponent getEditorComponent();
+
+ /**
+ * Called when the step should refresh its display based on the
+ * current model setting.
+ *
+ */
+ void updateDisplay();
+
+ /**
+ * Called when the step should update the data model based on the
+ * settings of its widgets.
+ *
+ */
+ void updateDataModel();
+
}
diff --git a/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/build/ProjectSetupStep.java b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/build/ProjectSetupStep.java
new file mode 100644
index 000000000..e8a4cc704
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/Attic/wizzard/build/ProjectSetupStep.java
@@ -0,0 +1,112 @@
+/*
+ * 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.build;
+
+import org.apache.tools.ant.gui.wizzard.AbstractWizzardStep;
+import javax.swing.*;
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.GridBagLayout;
+import org.apache.tools.ant.gui.acs.*;
+
+/**
+ * Build file wizzard step for naming the project and
+ * selecting what features are desired.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class ProjectSetupStep extends AbstractWizzardStep {
+
+ /** Name of the project. */
+ private JTextField _name = null;
+
+ protected void init() {
+ setLayout(new BorderLayout());
+
+ JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ add(p, BorderLayout.NORTH);
+
+ _name = new JTextField(10);
+ p.add(new JLabel(getResources().getString(getID() + ".nameLabel")));
+ p.add(_name);
+
+ p = new JPanel(new GridBagLayout());
+ p.setBorder(BorderFactory.createTitledBorder(
+ getResources().getString(getID() + ".optionsLabel")));
+ add(p, BorderLayout.CENTER);
+
+ }
+
+ /**
+ * Called when the step should refresh its display based on the
+ * current model setting.
+ *
+ */
+ public void updateDisplay() {
+ ACSProjectElement project = (ACSProjectElement) getDataModel();
+ _name.setText(project.getName());
+ }
+
+ /**
+ * Called when the step should update the data model based on the
+ * settings of its widgets.
+ *
+ */
+ public void updateDataModel() {
+ ACSProjectElement project = (ACSProjectElement) getDataModel();
+ project.setName(_name.getText());
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties b/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties
index 8466d3773..1b057a8ef 100644
--- a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties
+++ b/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizzard.properties
@@ -1,18 +1,49 @@
# Property file for the wizzard used to create a new build file.
-steps=start, finish
-
+###########################################################
+# Define required properties for wizzard.
+###########################################################
next=Next >>
back=<< Back
cancel=Cancel
finish=Finish
+progress=Progress
+help=Help
+
+###########################################################
+# Define the steps the comprise the wizzard.
+###########################################################
+steps=start, setup, finish
+###########################################################
+# Step 1
+###########################################################
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.
+start.instructions=Welcome to the Ant build file wizzard!\n\
+You will be asked a series of questions about the project you wish to create\
+and the types of build options you want included.\n\n\
+Click "Next >>" to proceed.
+
+###########################################################
+# Step 2
+###########################################################
+
+setup.editor=org.apache.tools.ant.gui.wizzard.build.ProjectSetupStep
+setup.title=Setup project
+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
+###########################################################
+# Last step
+###########################################################
finish.editor=org.apache.tools.ant.gui.wizzard.InstructionStep
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\
+build file.