From b2abffd01edbf6a2c3dc671f4f64bae4c070c69b Mon Sep 17 00:00:00 2001 From: metasim Date: Fri, 12 Jan 2001 20:42:45 +0000 Subject: [PATCH] Added rough ability to add new tasks (javac only) and properties. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268449 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tools/ant/gui/acs/ACSFactory.java | 29 ++++++ .../tools/ant/gui/acs/ACSTaskElement.java | 8 ++ .../tools/ant/gui/command/NewPropertyCmd.java | 93 ++++++++++++++++++ .../tools/ant/gui/command/NewTaskCmd.java | 94 +++++++++++++++++++ .../tools/ant/gui/event/NewPropertyEvent.java | 91 ++++++++++++++++++ .../tools/ant/gui/event/NewTaskEvent.java | 90 ++++++++++++++++++ .../tools/ant/gui/resources/action.properties | 2 + 7 files changed, 407 insertions(+) create mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java create mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java create mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java create mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java index c0cfb938f..65c391c91 100644 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java +++ b/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java @@ -206,6 +206,35 @@ public class ACSFactory { return retval; } + /** + * Create a new task. + * + * @param target Target the task is assigned to. + * @return New, unnamed task. + */ + public ACSTaskElement createTask(ACSTargetElement target) { + ACSTaskElement retval = (ACSTaskElement) target. + getOwnerDocument().createElement("task"); + indent(target, 2); + target.appendChild(retval); + return retval; + } + + /** + * Create a new property. + * + * @param node the Node to assign the property to. + * @return New, unnamed property. + */ + public ACSPropertyElement createProperty(ACSElement node) { + ACSPropertyElement retval = (ACSPropertyElement) node. + getOwnerDocument().createElement("property"); + // XXX fixme. + indent(node, 1); + node.appendChild(retval); + return retval; + } + /** * Insert a new line and indentation at the end of the given * node in preparation for a new element being added. diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java index 5387fac5f..42ef9bc80 100644 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java +++ b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java @@ -86,6 +86,14 @@ public class ACSTaskElement extends ACSTreeNodeElement { return getTagName(); } + /** + * Set the task type. + * + * @param type Type name. + */ + public void setTaskType(String type) { + setTag(type); + } /** * Get the attributes (named value mappings). This method is not named diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java new file mode 100644 index 000000000..ee20902d2 --- /dev/null +++ b/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java @@ -0,0 +1,93 @@ +/* + * 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.command; +import org.apache.tools.ant.gui.core.AppContext; +import org.apache.tools.ant.gui.event.NewPropertyEvent; +import org.apache.tools.ant.gui.acs.*; + +/** + * Command for creating a new propertyh. + * + * @version $Revision$ + * @author Simeon Fitch + */ +public class NewPropertyCmd extends AbstractCommand { + /** New count for this session. Used to create default names, + * numbered as a convenience. */ + private static int _count = 1; + + /** + * Standard ctor. + * + * @param context Application context. + */ + public NewPropertyCmd(AppContext context) { + super(context); + } + + /** + * Create a new property and make it active. + * + */ + public void run() { + ACSElement[] vals = getContext().getSelectionManager(). + getSelectedElements(); + if(vals != null && vals.length > 0) { + ACSPropertyElement retval = + ACSFactory.getInstance().createProperty(vals[vals.length - 1]); + getContext().getEventBus().postEvent( + new NewPropertyEvent(getContext(), retval)); + } + } +} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java new file mode 100644 index 000000000..e392fdcf9 --- /dev/null +++ b/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java @@ -0,0 +1,94 @@ +/* + * 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.command; +import org.apache.tools.ant.gui.core.AppContext; +import org.apache.tools.ant.gui.event.NewTaskEvent; +import org.apache.tools.ant.gui.acs.*; + +/** + * Command for creating a new task. + * + * @version $Revision$ + * @author Simeon Fitch + */ +public class NewTaskCmd extends AbstractCommand { + /** New count for this session. Used to create default names, + * numbered as a convenience. */ + private static int _count = 1; + + /** + * Standard ctor. + * + * @param context Application context. + */ + public NewTaskCmd(AppContext context) { + super(context); + } + + /** + * Create a new task and make it active. + * + */ + public void run() { + ACSTargetElement[] targets = getContext().getSelectionManager(). + getSelectedTargets(); + if(targets != null && targets.length > 0) { + ACSTaskElement retval = + ACSFactory.getInstance().createTask(targets[0]); + retval.setTaskType("javac"); + getContext().getEventBus().postEvent( + new NewTaskEvent(getContext(), retval)); + } + } +} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java new file mode 100644 index 000000000..08a169dd4 --- /dev/null +++ b/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java @@ -0,0 +1,91 @@ +/* + * 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", "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.event; +import org.apache.tools.ant.gui.acs.ACSElement; +import org.apache.tools.ant.gui.acs.ACSPropertyElement; +import org.apache.tools.ant.gui.core.AppContext; + +/** + * Event fired when a new property is created. + * + * @version $Revision$ + * @author Simeon Fitch + */ +public class NewPropertyEvent extends PropertySelectionEvent + implements NewElementEvent { + + /** + * Standard ctor. + * + * @param context application context. + * @param prop the new property. + */ + public NewPropertyEvent(AppContext context, + ACSPropertyElement prop) { + super(context, new ACSElement[] { prop }); + if(prop == null) { + throw new IllegalArgumentException( + "A new property can't be null."); + } + } + + /** + * Get the newly added task. + * + * @return New task. + */ + public ACSElement getNewElement() { + return getSelectedProperties()[0]; + } +} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java new file mode 100644 index 000000000..72a20ee03 --- /dev/null +++ b/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java @@ -0,0 +1,90 @@ +/* + * 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", "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.event; +import org.apache.tools.ant.gui.acs.ACSElement; +import org.apache.tools.ant.gui.acs.ACSTaskElement; +import org.apache.tools.ant.gui.core.AppContext; + +/** + * Event fired when a new target is created. + * + * @version $Revision$ + * @author Simeon Fitch + */ +public class NewTaskEvent extends TaskSelectionEvent + implements NewElementEvent { + + /** + * Standard ctor. + * + * @param context application context. + * @param target the new task. + */ + public NewTaskEvent(AppContext context, + ACSTaskElement task) { + super(context, new ACSElement[] { task }); + if(task == null) { + throw new IllegalArgumentException("A new task can't be null."); + } + } + + /** + * Get the newly added task. + * + * @return New task. + */ + public ACSElement getNewElement() { + return getSelectedTasks()[0]; + } +} diff --git a/src/antidote/org/apache/tools/ant/gui/resources/action.properties b/src/antidote/org/apache/tools/ant/gui/resources/action.properties index 2258fa4eb..8302340dd 100644 --- a/src/antidote/org/apache/tools/ant/gui/resources/action.properties +++ b/src/antidote/org/apache/tools/ant/gui/resources/action.properties @@ -126,6 +126,7 @@ newTask.name=New Task newTask.shortDescription=Create a new task under the selected target newTask.icon=new-task.gif newTask.enabled=false +newTask.command=org.apache.tools.ant.gui.command.NewTaskCmd newTask.enableOn=\ org.apache.tools.ant.gui.event.TargetSelectionEvent newTask.disableOn=\ @@ -137,6 +138,7 @@ newTask.disableOn=\ newProperty.name=New Property newProperty.shortDescription=Create a new property under the selected element newProperty.icon=new-property.gif +newProperty.command=org.apache.tools.ant.gui.command.NewPropertyCmd newProperty.enabled=false newProperty.enableOn=\ org.apache.tools.ant.gui.event.ProjectSelectedEvent, \