diff --git a/src/antidote/org/apache/tools/ant/gui/ElementSelectionModel.java b/src/antidote/org/apache/tools/ant/gui/ElementSelectionModel.java
new file mode 100644
index 000000000..b2530da26
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/ElementSelectionModel.java
@@ -0,0 +1,123 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.acs.ACSElement;
+import org.apache.tools.ant.gui.acs.ACSTargetElement;
+
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreePath;
+import java.util.*;
+
+/**
+ * Selection model for the currently selected targets.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+class ElementSelectionModel extends DefaultTreeSelectionModel {
+ /**
+ * Default ctor.
+ *
+ */
+ public ElementSelectionModel() {
+ setSelectionMode(DISCONTIGUOUS_TREE_SELECTION);
+ }
+
+ /**
+ * Convenience method for providing the set of currently selected
+ * elements.
+ *
+ * @return the currently selected elements.
+ */
+ public ACSElement[] getSelectedElements() {
+ TreePath[] path = getSelectionPaths();
+ List values = new LinkedList();
+ for(int i = 0; path != null && i < path.length; i++) {
+ Object val = path[i].getLastPathComponent();
+ if(val instanceof ACSElement) {
+ values.add(val);
+ }
+ }
+
+ ACSElement[] retval = new ACSElement[values.size()];
+ values.toArray(retval);
+ return retval;
+ }
+
+ /**
+ * Get the set of selected tagets. A target is included if one of its
+ * child nodes is selected.
+ *
+ * @return the currently selected targets, and indirectly selected targets.
+ */
+ public ACSTargetElement[] getSelectedTargets() {
+ TreePath[] path = getSelectionPaths();
+ List values = new LinkedList();
+ for(int i = 0; path != null && i < path.length; i++) {
+ TreePath curr = path[i];
+ for(int j = 0; j < curr.getPathCount(); j++) {
+ Object item = curr.getPathComponent(j);
+ if(item instanceof ACSTargetElement) {
+ values.add(item);
+ }
+ }
+ }
+
+ ACSTargetElement[] retval = new ACSTargetElement[values.size()];
+ values.toArray(retval);
+ return retval;
+
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java
new file mode 100644
index 000000000..d3c92a78c
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java
@@ -0,0 +1,154 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.acs;
+
+import com.sun.xml.tree.ElementNode;
+
+/**
+ * Element containing a property definition.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class ACSPropertyElement extends ACSTreeNodeElement {
+ /** The 'name' property name. */
+ public static final String NAME = "name";
+ /** The 'value' property name. */
+ public static final String VALUE = "value";
+ /** The file to load properties from. */
+ public static final String FILE = "file";
+
+ /**
+ * Default ctor.
+ *
+ */
+ public ACSPropertyElement() {
+ }
+
+ /**
+ * Get the display name of this.
+ *
+ * @return Display name.
+ */
+ public String getDisplayName() {
+ String file = getFile();
+
+ if(file == null || file.trim().length() == 0) {
+ return "Property: " + getName();
+ }
+ else {
+ return "Property File: " + file;
+ }
+ }
+
+ /**
+ * Get the property name.
+ *
+ * @return Property name.
+ */
+ public String getName() {
+ return getAttribute(NAME);
+ }
+
+ /**
+ * Set the property name.
+ *
+ * @param name Property name.
+ */
+ public void setName(String name) {
+ String old = getName();
+ setAttribute(NAME, name);
+ firePropertyChange(NAME, old, name);
+ }
+
+ /**
+ * Get the property value.
+ *
+ * @return Property value.
+ */
+ public String getValue() {
+ return getAttribute(VALUE);
+ }
+
+ /**
+ * Set the property value.
+ *
+ * @param name Property value.
+ */
+ public void setValue(String value) {
+ String old = getValue();
+ setAttribute(VALUE, value);
+ firePropertyChange(VALUE, old, value);
+ }
+
+ /**
+ * Get the external property file.
+ *
+ * @return Property file.
+ */
+ public String getFile() {
+ return getAttribute(FILE);
+ }
+
+ /**
+ * Set the external property file.
+ *
+ * @param name Property file.
+ */
+ public void setFile(String file) {
+ String old = getFile();
+ setAttribute(FILE, file);
+ firePropertyChange(FILE, old, file);
+ }
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java
new file mode 100644
index 000000000..97fe45a59
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java
@@ -0,0 +1,116 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.acs;
+
+import java.beans.*;
+
+/**
+ * BeanInfo for the ACSPropertyElement class.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class ACSPropertyElementBeanInfo extends BaseBeanInfo {
+ /**
+ * Default ctor.
+ *
+ */
+ public ACSPropertyElementBeanInfo() {
+ }
+
+ /**
+ * Get the type that this BeanInfo represents.
+ *
+ * @return Type.
+ */
+ public Class getType() {
+ return ACSPropertyElement.class;
+ }
+
+ /**
+ * Get the property descriptors.
+ *
+ * @return Property descriptors.
+ */
+ public PropertyDescriptor[] getPropertyDescriptors() {
+ PropertyDescriptor[] retval = null;
+
+ try {
+ retval = new PropertyDescriptor[] {
+ new PropertyDescriptor(ACSPropertyElement.FILE,
+ ACSPropertyElement.class),
+ new PropertyDescriptor(ACSPropertyElement.NAME,
+ ACSPropertyElement.class),
+ new PropertyDescriptor(ACSPropertyElement.VALUE,
+ ACSPropertyElement.class)
+ };
+
+ retval[0].setDisplayName(getResources().getString(
+ getClass(),ACSPropertyElement.FILE));
+ retval[1].setDisplayName(getResources().getString(
+ getClass(),ACSPropertyElement.NAME));
+ retval[2].setDisplayName(getResources().getString(
+ getClass(),ACSPropertyElement.VALUE));
+
+ setSortingOrder(retval);
+ }
+ catch(IntrospectionException ex) {
+ ex.printStackTrace();
+ throw new Error(ex.toString());
+ }
+
+ return retval;
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java
new file mode 100644
index 000000000..e58d917d3
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java
@@ -0,0 +1,84 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.acs;
+
+import com.sun.xml.tree.ElementNode;
+
+/**
+ * Element containing a property definition.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class ACSTaskElement extends ACSTreeNodeElement {
+ /** Property name for the task type. */
+ public static final String TASK_TYPE = "taskType";
+
+ /**
+ * Default ctor.
+ *
+ */
+ public ACSTaskElement() {
+ }
+
+ /**
+ * Get the task type.
+ *
+ * @return Task type.
+ */
+ public String getTaskType() {
+ return getTagName();
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java
new file mode 100644
index 000000000..a48338c7b
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java
@@ -0,0 +1,114 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.acs;
+
+import java.beans.*;
+
+/**
+ * BeanInfo for the ACSTaskElement class.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class ACSTaskElementBeanInfo extends BaseBeanInfo {
+ /**
+ * Default ctor.
+ *
+ */
+ public ACSTaskElementBeanInfo() {
+ }
+
+ /**
+ * Get the type that this BeanInfo represents.
+ *
+ * @return Type.
+ */
+ public Class getType() {
+ return ACSTaskElement.class;
+ }
+
+ /**
+ * Get the property descriptors.
+ *
+ * @return Property descriptors.
+ */
+ public PropertyDescriptor[] getPropertyDescriptors() {
+ PropertyDescriptor[] retval = null;
+
+ try {
+ retval = new PropertyDescriptor[] {
+ new PropertyDescriptor(ACSTaskElement.TASK_TYPE,
+ ACSTaskElement.class,
+ "getTaskType", null),
+ new PropertyDescriptor(ACSTaskElement.XML_STRING,
+ ACSTaskElement.class,
+ "getXMLString", null)
+ };
+
+ retval[0].setDisplayName(getResources().getString(
+ getClass(),ACSTaskElement.TASK_TYPE));
+ retval[1].setDisplayName(getResources().getString(
+ getClass(),ACSTaskElement.XML_STRING));
+
+ setSortingOrder(retval);
+ }
+ catch(IntrospectionException ex) {
+ ex.printStackTrace();
+ throw new Error(ex.toString());
+ }
+
+ return retval;
+ }
+
+}
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java
new file mode 100644
index 000000000..d1ff4d2ae
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java
@@ -0,0 +1,175 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.customizer;
+
+import javax.swing.*;
+import java.awt.Component;
+import java.util.StringTokenizer;
+
+/**
+ * Custom property editor for String arrays.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class StringArrayPropertyEditor extends AbstractPropertyEditor {
+ private JTextField _widget = null;
+
+ /**
+ * Default ctor.
+ *
+ */
+ public StringArrayPropertyEditor() {
+ _widget = new JTextField();
+ _widget.addFocusListener(new FocusHandler(this));
+ }
+
+ /**
+ * Get the child editing component. Uses JComponent so we can have tool
+ * tips, etc.
+ *
+ * @return Child editing component.
+ */
+ protected Component getChild() {
+ return _widget;
+ }
+
+ /**
+ * This method is intended for use when generating Java code to set
+ * the value of the property. It should return a fragment of Java code
+ * that can be used to initialize a variable with the current property
+ * value.
+ *
+ * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
+ *
+ * @return A fragment of Java code representing an initializer for the
+ * current value.
+ */
+ public String getJavaInitializationString() {
+ return getAsText();
+ }
+
+ /**
+ * Set (or change) the object that is to be edited. Builtin types such
+ * as "int" must be wrapped as the corresponding object type such as
+ * "java.lang.Integer".
+ *
+ * @param value The new target object to be edited. Note that this
+ * object should not be modified by the PropertyEditor, rather
+ * the PropertyEditor should create a new object to hold any
+ * modified value.
+ */
+ public void setValue(Object value) {
+ if(!(value instanceof String[])) {
+ throw new IllegalArgumentException(
+ "Value must be of type String[].");
+ }
+ String old = _widget.getText();
+
+ String[] vals = (String[]) value;
+ StringBuffer buf = new StringBuffer();
+
+ for(int i = 0; i < vals.length; i++) {
+ buf.append(vals[i]);
+ if(i < vals.length - 1) {
+ buf.append(", ");
+ }
+ }
+ _widget.setText(buf.toString());
+ firePropertyChange(old, buf.toString());
+ }
+
+ /**
+ * @return The value of the property. Builtin types such as "int" will
+ * be wrapped as the corresponding object type such as "java.lang.Integer".
+ */
+ public Object getValue() {
+ String vals = _widget.getText();
+ StringTokenizer tok = new StringTokenizer(vals,",");
+ String[] retval = new String[tok.countTokens()];
+ for(int i = 0; i < retval.length; i++) {
+ retval[i] = tok.nextToken().trim();
+ }
+
+ return retval;
+ }
+
+ /**
+ * Set the property value by parsing a given String. May raise
+ * java.lang.IllegalArgumentException if either the String is
+ * badly formatted or if this kind of property can't be expressed
+ * as text.
+ * @param text The string to be parsed.
+ */
+ public void setAsText(String text) throws IllegalArgumentException {
+ Object old = _widget.getText();
+ _widget.setText(text);
+ firePropertyChange(old, text);
+ }
+
+ /**
+ * @return The property value as a human editable string.
+ *
Returns null if the value can't be expressed
+ * as an editable string.
+ *
If a non-null value is returned, then the PropertyEditor should
+ * be prepared to parse that string back in setAsText().
+ */
+ public String getAsText() {
+ return _widget.getText();
+ }
+
+
+}
+
+
diff --git a/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java
new file mode 100644
index 000000000..1abe33774
--- /dev/null
+++ b/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java
@@ -0,0 +1,100 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999, 2000 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", "Tomcat", 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.event;
+import org.apache.tools.ant.gui.acs.ACSElement;
+import org.apache.tools.ant.gui.command.Command;
+import org.apache.tools.ant.gui.command.NoOpCmd;
+import org.apache.tools.ant.gui.AppContext;
+
+/**
+ * Event indicating that the current set of selected targets has changed.
+ *
+ * @version $Revision$
+ * @author Simeon Fitch
+ */
+public class ElementSelectionEvent extends AntEvent {
+
+ /** New set of selected elements. */
+ private ACSElement[] _selected = null;
+
+ /**
+ * Standard ctor.
+ *
+ * @param context application context.
+ * @param selected the selected Elements.
+ */
+ public ElementSelectionEvent(AppContext context,
+ ACSElement[] selected) {
+ super(context);
+ _selected = selected;
+ }
+
+ /**
+ * Current set of selected elements.
+ *
+ * @return selected element set.
+ */
+ public ACSElement[] getSelectedElements() {
+ return _selected;
+ }
+
+ /**
+ * Create the appropriate default response command to this event.
+ *
+ * @return Command representing an appropriate response to this event.
+ */
+ public Command createDefaultCmd() {
+ return new NoOpCmd();
+ }
+}