between actions and commands rather than the original hard-coded mapping. Associations specified in the actions.properties file under the "<actionID>.command" property. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268232 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -1,4 +1,10 @@ | |||||
| TODO List: | TODO List: | ||||
| * Implement some for of refid hyperlinking functionality. | |||||
| * Provide some sort of class path debugging support. | |||||
| * Eat own dog food more. | |||||
| * Dispatch tree node change events when the properties editor changes a | * Dispatch tree node change events when the properties editor changes a | ||||
| node value. This will make sure that the node gets displayed correctly in | node value. This will make sure that the node gets displayed correctly in | ||||
| the project navigator. | the project navigator. | ||||
| @@ -24,6 +24,7 @@ | |||||
| <property name="ant.dist.dir" value="../../../dist/ant"/> | <property name="ant.dist.dir" value="../../../dist/ant"/> | ||||
| <path id="classpath"> | <path id="classpath"> | ||||
| <pathelement location="${lib.dir}/ant.jar"/> | |||||
| </path> | </path> | ||||
| <property name="packages" value="org.apache.tools.ant.gui.*"/> | <property name="packages" value="org.apache.tools.ant.gui.*"/> | ||||
| <property name="manifest" value="etc/manifest"/> | <property name="manifest" value="etc/manifest"/> | ||||
| @@ -1,3 +1,50 @@ | |||||
| /* | |||||
| * The Apache Software License, Version 1.1 | |||||
| * | |||||
| * Copyright (C) 2000 The Apache Software Foundation. All rights reserved. | |||||
| * | |||||
| * Redistribution and use in source and binary forms, with or without modifica- | |||||
| * tion, 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 acknowledgment: "This product includes software | |||||
| * developed by the Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowledgment may appear in the software itself, if | |||||
| * and wherever such third-party acknowledgments normally appear. | |||||
| * | |||||
| * 4. The names "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 name, without prior written permission of the | |||||
| * Apache Software Foundation. | |||||
| * | |||||
| * 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 (INCLU- | |||||
| * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS | |||||
| * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | |||||
| * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| * | |||||
| * This software consists of voluntary contributions made by many individuals | |||||
| * on behalf of the Apache Software Foundation. For more information on the | |||||
| * Apache Software Foundation, please see <http://www.apache.org/>. | |||||
| * | |||||
| */ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| @@ -54,6 +101,7 @@ | |||||
| package org.apache.tools.ant.gui; | package org.apache.tools.ant.gui; | ||||
| import org.apache.tools.ant.gui.event.*; | import org.apache.tools.ant.gui.event.*; | ||||
| import org.apache.tools.ant.gui.command.Command; | |||||
| import javax.swing.*; | import javax.swing.*; | ||||
| import java.util.*; | import java.util.*; | ||||
| @@ -106,9 +154,7 @@ public class ActionManager { | |||||
| // For each action we need to add the reverse event trigger | // For each action we need to add the reverse event trigger | ||||
| // lookup. | // lookup. | ||||
| _mapper.addAction(action); | _mapper.addAction(action); | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| @@ -212,6 +258,38 @@ public class ActionManager { | |||||
| return retval; | return retval; | ||||
| } | } | ||||
| /** | |||||
| * Get the command assocaited with the Action with the given id. | |||||
| * | |||||
| * @param actionID Id of action to get command for. | |||||
| * @return Command associated with action, or null if none available. | |||||
| */ | |||||
| public Command getActionCommand(String actionID, AppContext context) { | |||||
| Command retval = null; | |||||
| AntAction action = (AntAction) _actions.get(actionID); | |||||
| if(action != null) { | |||||
| Class clazz = action.getCommandClass(); | |||||
| if(clazz != null) { | |||||
| try { | |||||
| retval = (Command) clazz.newInstance(); | |||||
| retval.setContext(context); | |||||
| } | |||||
| catch(Exception ex) { | |||||
| // XXX log me. | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| return retval; | |||||
| } | |||||
| /** | |||||
| * Add tool tip, Mnemonic, etc. | |||||
| * | |||||
| * @param button Button to work on. | |||||
| * @param action Associated action. | |||||
| */ | |||||
| private void addNiceStuff(AbstractButton button, AntAction action) { | private void addNiceStuff(AbstractButton button, AntAction action) { | ||||
| // Set the action command so that it is consitent | // Set the action command so that it is consitent | ||||
| // no matter what language the display is in. | // no matter what language the display is in. | ||||
| @@ -76,6 +76,7 @@ public class AntAction extends AbstractAction { | |||||
| public static final String ENABLE_ON = "enableOn"; | public static final String ENABLE_ON = "enableOn"; | ||||
| public static final String DISABLE_ON = "disableOn"; | public static final String DISABLE_ON = "disableOn"; | ||||
| public static final String TOGGLE = "toggle"; | public static final String TOGGLE = "toggle"; | ||||
| public static final String COMMAND = "command"; | |||||
| /** Property resources. */ | /** Property resources. */ | ||||
| private ResourceBundle _resources = null; | private ResourceBundle _resources = null; | ||||
| @@ -127,6 +128,19 @@ public class AntAction extends AbstractAction { | |||||
| _toggle = Boolean.valueOf(toggle).booleanValue(); | _toggle = Boolean.valueOf(toggle).booleanValue(); | ||||
| } | } | ||||
| // See if there is a command associated with the action. | |||||
| String command = getString(COMMAND); | |||||
| if(command != null) { | |||||
| try { | |||||
| Class cmd = Class.forName(command); | |||||
| putValue(COMMAND, cmd); | |||||
| } | |||||
| catch(Exception ex) { | |||||
| // XXX log me. | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| } | |||||
| // Add an icon if any (which means it'll show up on the tool bar). | // Add an icon if any (which means it'll show up on the tool bar). | ||||
| String iconName = getString("icon"); | String iconName = getString("icon"); | ||||
| if(iconName != null) { | if(iconName != null) { | ||||
| @@ -290,6 +304,16 @@ public class AntAction extends AbstractAction { | |||||
| return _toggle; | return _toggle; | ||||
| } | } | ||||
| /** | |||||
| * Get the assciated command class. | |||||
| * | |||||
| * @return Command class. | |||||
| */ | |||||
| public Class getCommandClass() { | |||||
| return (Class) getValue(COMMAND); | |||||
| } | |||||
| /** | /** | ||||
| * Pass the action on to the EventBus. | * Pass the action on to the EventBus. | ||||
| * | * | ||||
| @@ -154,6 +154,16 @@ public class AppContext { | |||||
| _buildListeners.remove(l); | _buildListeners.remove(l); | ||||
| } | } | ||||
| /** | |||||
| * Determine if the given BuildListener is registered. | |||||
| * | |||||
| * @param l Listener to test for. | |||||
| * @return True if listener has been added, false if unknown. | |||||
| */ | |||||
| public boolean isRegisteredBuildListener(BuildListener l) { | |||||
| return _buildListeners.contains(l); | |||||
| } | |||||
| /** | /** | ||||
| * Get the set of current build listeners. | * Get the set of current build listeners. | ||||
| * | * | ||||
| @@ -114,44 +114,17 @@ class EventResponder { | |||||
| public boolean eventPosted(EventObject event) { | public boolean eventPosted(EventObject event) { | ||||
| String command = ((ActionEvent)event).getActionCommand(); | String command = ((ActionEvent)event).getActionCommand(); | ||||
| // XXX turn this switch structure into a command | |||||
| // lookup using an initialized hash table. | |||||
| if(command.equals(OpenCmd.ACTION_NAME)) { | |||||
| new OpenCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(SaveCmd.ACTION_NAME)) { | |||||
| new SaveCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(SaveAsCmd.ACTION_NAME)) { | |||||
| new SaveAsCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(BuildCmd.ACTION_NAME)) { | |||||
| new BuildCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(CloseCmd.ACTION_NAME)) { | |||||
| new CloseCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(ExitCmd.ACTION_NAME)) { | |||||
| new ExitCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(AboutCmd.ACTION_NAME)) { | |||||
| new AboutCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(ChangeLookAndFeelCmd.ACTION_NAME)) { | |||||
| new ChangeLookAndFeelCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(ChangeLookAndFeelCmd.ACTION_NAME)) { | |||||
| new ChangeLookAndFeelCmd(_context).execute(); | |||||
| } | |||||
| else if(command.equals(EmacsNotifyCmd.ACTION_NAME)) { | |||||
| AbstractButton source = (AbstractButton) event.getSource(); | |||||
| new EmacsNotifyCmd(_context, source.isSelected()).execute(); | |||||
| Command cmd = | |||||
| _context.getActions().getActionCommand(command, _context); | |||||
| if(cmd != null) { | |||||
| cmd.run(); | |||||
| return false; | |||||
| } | } | ||||
| else { | else { | ||||
| // XXX log me. | // XXX log me. | ||||
| System.err.println("Unhandled action: " + command); | System.err.println("Unhandled action: " + command); | ||||
| return true; | |||||
| } | } | ||||
| return true; | |||||
| } | } | ||||
| } | } | ||||
| @@ -186,8 +159,8 @@ class EventResponder { | |||||
| public boolean eventPosted(EventObject event) { | public boolean eventPosted(EventObject event) { | ||||
| AntEvent e = (AntEvent) event; | AntEvent e = (AntEvent) event; | ||||
| Command cmd = e.createDefaultCmd(); | Command cmd = e.createDefaultCmd(); | ||||
| cmd.execute(); | |||||
| return true; | |||||
| cmd.run(); | |||||
| return cmd instanceof NoOpCmd; | |||||
| } | } | ||||
| } | } | ||||
| @@ -96,11 +96,13 @@ public class Main { | |||||
| f.setVisible(true); | f.setVisible(true); | ||||
| // XXX this will change once full command line argument parsing | // XXX this will change once full command line argument parsing | ||||
| // is supported. | // is supported. | ||||
| if(args.length > 0) { | if(args.length > 0) { | ||||
| new LoadFileCmd(context, new File(args[0])).execute(); | |||||
| LoadFileCmd load = new LoadFileCmd(); | |||||
| load.setFile(new File(args[0])); | |||||
| load.setContext(context); | |||||
| load.run(); | |||||
| } | } | ||||
| } | } | ||||
| catch(Exception ex) { | catch(Exception ex) { | ||||
| @@ -64,25 +64,20 @@ import java.awt.event.WindowEvent; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class AboutCmd implements Command { | |||||
| /** Name of the about command. */ | |||||
| public static final String ACTION_NAME = "about"; | |||||
| /** Application context. */ | |||||
| private AppContext _context = null; | |||||
| public class AboutCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Standard constructor. | * Standard constructor. | ||||
| * | * | ||||
| * @param window | |||||
| */ | */ | ||||
| public AboutCmd(AppContext context) { | |||||
| _context = context; | |||||
| public AboutCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Show the about box. | * Show the about box. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| new About(_context); | |||||
| public void run() { | |||||
| new About(getContext()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,99 @@ | |||||
| /* | |||||
| * 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 | |||||
| * <http://www.apache.org/>. | |||||
| */ | |||||
| package org.apache.tools.ant.gui.command; | |||||
| import org.apache.tools.ant.gui.AppContext; | |||||
| /** | |||||
| * Convenience base class for Command implementations. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public abstract class AbstractCommand implements Command { | |||||
| /** Application context. */ | |||||
| private AppContext _context = null; | |||||
| /** | |||||
| * Default ctor. | |||||
| * | |||||
| */ | |||||
| protected AbstractCommand() { | |||||
| } | |||||
| /** | |||||
| * Set the application context. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public void setContext(AppContext context) { | |||||
| _context = context; | |||||
| } | |||||
| /** | |||||
| * Get the application context that was provided to setContext(); | |||||
| * | |||||
| * @return Application context. | |||||
| */ | |||||
| protected AppContext getContext() { | |||||
| return _context; | |||||
| } | |||||
| /** | |||||
| * Run the command. From interface Runnable. | |||||
| * | |||||
| */ | |||||
| public abstract void run(); | |||||
| } | |||||
| @@ -62,34 +62,28 @@ import org.apache.tools.ant.gui.event.ErrorEvent; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class BuildCmd implements Command { | |||||
| /** Name of the action the command maps to. */ | |||||
| public static final String ACTION_NAME = "startBuild"; | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| public class BuildCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Standard ctor. | * Standard ctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| */ | */ | ||||
| public BuildCmd(AppContext context) { | |||||
| _context = context; | |||||
| public BuildCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Start the Ant build. | * Start the Ant build. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| ProjectProxy project = _context.getProject(); | |||||
| public void run() { | |||||
| ProjectProxy project = getContext().getProject(); | |||||
| if(project != null) { | if(project != null) { | ||||
| try { | try { | ||||
| project.build(); | project.build(); | ||||
| } | } | ||||
| catch(Throwable ex) { | catch(Throwable ex) { | ||||
| _context.getEventBus().postEvent(new ErrorEvent(_context, ex)); | |||||
| getContext().getEventBus().postEvent( | |||||
| new ErrorEvent(getContext(), ex)); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -60,28 +60,21 @@ import org.apache.tools.ant.gui.ChangeLookAndFeel; | |||||
| * | * | ||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Erik Meade | * @author Erik Meade | ||||
| * @author Simeon Fitch | |||||
| */ | */ | ||||
| public class ChangeLookAndFeelCmd implements Command { | |||||
| /** Name of the action the command maps to. */ | |||||
| public static final String ACTION_NAME = "changeLookAndFeel"; | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| public class ChangeLookAndFeelCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Standard ctor. | * Standard ctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| */ | */ | ||||
| public ChangeLookAndFeelCmd(AppContext context) { | |||||
| _context = context; | |||||
| public ChangeLookAndFeelCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Successfully do nothing. | * Successfully do nothing. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| new ChangeLookAndFeel(_context); | |||||
| public void run() { | |||||
| new ChangeLookAndFeel(getContext()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -62,28 +62,22 @@ import org.apache.tools.ant.gui.event.ProjectClosedEvent; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class CloseCmd implements Command { | |||||
| /** Name of the exit command. */ | |||||
| public static final String ACTION_NAME = "close"; | |||||
| /** Application context. */ | |||||
| private AppContext _context = null; | |||||
| public class CloseCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Standard constructor. | * Standard constructor. | ||||
| * | * | ||||
| * @param window | |||||
| */ | */ | ||||
| public CloseCmd(AppContext context) { | |||||
| _context = context; | |||||
| public CloseCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Send a close event to the parent window. | * Send a close event to the parent window. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| _context.setProject(null); | |||||
| _context.getEventBus().postEvent(new ProjectClosedEvent(_context)); | |||||
| public void run() { | |||||
| getContext().setProject(null); | |||||
| getContext().getEventBus().postEvent( | |||||
| new ProjectClosedEvent(getContext())); | |||||
| } | } | ||||
| } | } | ||||
| @@ -52,13 +52,28 @@ | |||||
| * <http://www.apache.org/>. | * <http://www.apache.org/>. | ||||
| */ | */ | ||||
| package org.apache.tools.ant.gui.command; | package org.apache.tools.ant.gui.command; | ||||
| import org.apache.tools.ant.gui.AppContext; | |||||
| /** | /** | ||||
| * Interface for commands. Details TBD | |||||
| * Interface for commands. Implementation needs to have a default ctor. | |||||
| * Details TBD | |||||
| * | * | ||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public interface Command { | |||||
| public void execute(); | |||||
| public interface Command extends Runnable { | |||||
| /** | |||||
| * Set the application context. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public void setContext(AppContext context); | |||||
| /** | |||||
| * Run the command. From interface Runnable. | |||||
| * | |||||
| */ | |||||
| public void run(); | |||||
| } | } | ||||
| @@ -65,25 +65,28 @@ import java.awt.event.ActionEvent; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon H.K. Fitch | * @author Simeon H.K. Fitch | ||||
| */ | */ | ||||
| public class DisplayErrorCmd implements Command { | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| public class DisplayErrorCmd extends AbstractCommand { | |||||
| /** Text description of error. */ | /** Text description of error. */ | ||||
| private String _message = null; | private String _message = null; | ||||
| /** Throwable associated with the error. */ | /** Throwable associated with the error. */ | ||||
| private Throwable _ex = null; | private Throwable _ex = null; | ||||
| /** | |||||
| * Default ctor. | |||||
| * | |||||
| */ | |||||
| public DisplayErrorCmd() { | |||||
| } | |||||
| /** | /** | ||||
| * Standard constuctor. | * Standard constuctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| * @param message Error message. | * @param message Error message. | ||||
| * @param ex Throwable assocated with error. | * @param ex Throwable assocated with error. | ||||
| */ | */ | ||||
| public DisplayErrorCmd(AppContext context, String message, Throwable ex) { | |||||
| _context = context; | |||||
| _message = message; | |||||
| _ex = ex; | |||||
| public DisplayErrorCmd(String message, Throwable ex) { | |||||
| setMessage(message); | |||||
| setThrowable(_ex); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -92,20 +95,38 @@ public class DisplayErrorCmd implements Command { | |||||
| * @param context Application context. | * @param context Application context. | ||||
| * @param message Error message. | * @param message Error message. | ||||
| */ | */ | ||||
| public DisplayErrorCmd(AppContext context, String message) { | |||||
| this(context, message, null); | |||||
| public DisplayErrorCmd(String message) { | |||||
| this(message, null); | |||||
| } | |||||
| /** | |||||
| * Set the error message. | |||||
| * | |||||
| * @param message Error message. | |||||
| */ | |||||
| public void setMessage(String message) { | |||||
| _message = message; | |||||
| } | |||||
| /** | |||||
| * Set the throwable associated with the error. | |||||
| * | |||||
| * @param ex Throwable associated with the error. | |||||
| */ | |||||
| public void setThrowable(Throwable ex) { | |||||
| _ex = ex; | |||||
| } | } | ||||
| /** | /** | ||||
| * Display the error. | * Display the error. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| // XXX change this so that exceptions can be optionally shown. | |||||
| String title = _context.getResources().getString(getClass(), "title"); | |||||
| public void run() { | |||||
| String title = getContext().getResources(). | |||||
| getString(getClass(), "title"); | |||||
| JOptionPane.showMessageDialog( | JOptionPane.showMessageDialog( | ||||
| _context.getParentFrame(), new MsgPanel(), | |||||
| getContext().getParentFrame(), new MsgPanel(), | |||||
| title, JOptionPane.ERROR_MESSAGE); | title, JOptionPane.ERROR_MESSAGE); | ||||
| } | } | ||||
| @@ -116,7 +137,7 @@ public class DisplayErrorCmd implements Command { | |||||
| add(new JLabel(_message)); | add(new JLabel(_message)); | ||||
| if(_ex != null) { | if(_ex != null) { | ||||
| add(new JLabel(_ex.getMessage())); | add(new JLabel(_ex.getMessage())); | ||||
| JButton b = new JButton(_context.getResources(). | |||||
| JButton b = new JButton(getContext().getResources(). | |||||
| getString(DisplayErrorCmd.class, | getString(DisplayErrorCmd.class, | ||||
| "expand")); | "expand")); | ||||
| b.addActionListener(this); | b.addActionListener(this); | ||||
| @@ -62,39 +62,28 @@ import org.apache.tools.ant.gui.ide.EmacsNotifier; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class EmacsNotifyCmd implements Command { | |||||
| /** Action command. */ | |||||
| public static final String ACTION_NAME = "notifyEmacs"; | |||||
| public class EmacsNotifyCmd extends AbstractCommand { | |||||
| /** A global notifier can be used as it stores no state. */ | /** A global notifier can be used as it stores no state. */ | ||||
| private static EmacsNotifier _notifier = new EmacsNotifier(); | private static EmacsNotifier _notifier = new EmacsNotifier(); | ||||
| /** Application context. */ | |||||
| private AppContext _context = null; | |||||
| /** State notification should be in. */ | |||||
| private boolean _notify = false; | |||||
| /** | /** | ||||
| * Standard ctor. | * Standard ctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| * @param state True if notifying on, false for notifying off. | * @param state True if notifying on, false for notifying off. | ||||
| */ | */ | ||||
| public EmacsNotifyCmd(AppContext context, boolean state) { | |||||
| _context = context; | |||||
| _notify = state; | |||||
| public EmacsNotifyCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Turn on or off the notifying of emacs. | * Turn on or off the notifying of emacs. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| if(_notify) { | |||||
| _context.addBuildListener(_notifier); | |||||
| public void run() { | |||||
| if(getContext().isRegisteredBuildListener(_notifier)) { | |||||
| getContext().removeBuildListener(_notifier); | |||||
| } | } | ||||
| else { | else { | ||||
| _context.removeBuildListener(_notifier); | |||||
| getContext().addBuildListener(_notifier); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -65,28 +65,20 @@ import java.awt.event.WindowEvent; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class ExitCmd implements Command { | |||||
| /** Name of the exit command. */ | |||||
| public static final String ACTION_NAME = "exit"; | |||||
| /** Window to send close event to. */ | |||||
| private Window _window = null; | |||||
| public class ExitCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Standard constructor. | * Standard constructor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| */ | */ | ||||
| public ExitCmd(AppContext context) { | |||||
| _window = context.getParentFrame(); | |||||
| public ExitCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Send a close event to the parent window. | * Send a close event to the parent window. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| public void run() { | |||||
| // Manually send a window close event to the window. | // Manually send a window close event to the window. | ||||
| WindowUtils.sendCloseEvent(_window); | |||||
| WindowUtils.sendCloseEvent(getContext().getParentFrame()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -64,20 +64,23 @@ import java.io.IOException; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class LoadFileCmd implements Command { | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| public class LoadFileCmd extends AbstractCommand { | |||||
| /** The file to load. */ | /** The file to load. */ | ||||
| private File _file = null; | private File _file = null; | ||||
| /** | /** | ||||
| * Standard ctor. | * Standard ctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| * @param file The file to load. | |||||
| */ | */ | ||||
| public LoadFileCmd(AppContext context, File file) { | |||||
| _context = context; | |||||
| public LoadFileCmd() { | |||||
| } | |||||
| /** | |||||
| * Set the file to load. | |||||
| * | |||||
| * @param file File to load. | |||||
| */ | |||||
| public void setFile(File file) { | |||||
| _file = file; | _file = file; | ||||
| } | } | ||||
| @@ -85,26 +88,26 @@ public class LoadFileCmd implements Command { | |||||
| * Open the file and load it. | * Open the file and load it. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| public void run() { | |||||
| if(!_file.exists()) { | if(!_file.exists()) { | ||||
| String message = _context.getResources().getMessage( | |||||
| String message = getContext().getResources().getMessage( | |||||
| getClass(), "noFile", new Object[] { _file.toString() }); | getClass(), "noFile", new Object[] { _file.toString() }); | ||||
| _context.getEventBus(). | |||||
| postEvent(new ErrorEvent(_context, message)); | |||||
| getContext().getEventBus(). | |||||
| postEvent(new ErrorEvent(getContext(), message)); | |||||
| } | } | ||||
| else { | else { | ||||
| try { | try { | ||||
| ProjectProxy project = new ProjectProxy(_context, _file); | |||||
| _context.setProject(project); | |||||
| ProjectProxy project = new ProjectProxy(getContext(), _file); | |||||
| getContext().setProject(project); | |||||
| } | } | ||||
| catch(Exception ex) { | catch(Exception ex) { | ||||
| String message = _context.getResources().getMessage( | |||||
| String message = getContext().getResources().getMessage( | |||||
| getClass(), "loadError", | getClass(), "loadError", | ||||
| new Object[] { _file.toString() }); | new Object[] { _file.toString() }); | ||||
| _context.getEventBus(). | |||||
| postEvent(new ErrorEvent(_context, message, ex)); | |||||
| getContext().getEventBus(). | |||||
| postEvent(new ErrorEvent(getContext(), message, ex)); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -59,10 +59,10 @@ package org.apache.tools.ant.gui.command; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class NoOpCmd implements Command { | |||||
| public class NoOpCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Successfully do nothing. | * Successfully do nothing. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() {} | |||||
| public void run() {} | |||||
| } | } | ||||
| @@ -67,23 +67,12 @@ import java.io.File; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class OpenCmd implements Command { | |||||
| /** Name of the action the command maps to. */ | |||||
| public static final String ACTION_NAME = "open"; | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| /** Filter for showing only XML files. */ | |||||
| private FileFilter _filter = null; | |||||
| public class OpenCmd extends AbstractCommand { | |||||
| /** | /** | ||||
| * Standard ctor. | * Standard ctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| */ | */ | ||||
| public OpenCmd(AppContext context) { | |||||
| _context = context; | |||||
| _filter = new XMLFileFilter(_context.getResources()); | |||||
| public OpenCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -92,14 +81,16 @@ public class OpenCmd implements Command { | |||||
| * operation be completed. | * operation be completed. | ||||
| * | * | ||||
| */ | */ | ||||
| public void execute() { | |||||
| public void run() { | |||||
| FileFilter filter = new XMLFileFilter(getContext().getResources()); | |||||
| JFileChooser chooser = new JFileChooser(); | JFileChooser chooser = new JFileChooser(); | ||||
| chooser.addChoosableFileFilter(_filter); | |||||
| int val = chooser.showOpenDialog(_context.getParentFrame()); | |||||
| chooser.addChoosableFileFilter(filter); | |||||
| int val = chooser.showOpenDialog(getContext().getParentFrame()); | |||||
| if(val == JFileChooser.APPROVE_OPTION) { | if(val == JFileChooser.APPROVE_OPTION) { | ||||
| File selected = chooser.getSelectedFile(); | File selected = chooser.getSelectedFile(); | ||||
| _context.getEventBus().postEvent( | |||||
| new OpenRequestEvent(_context, selected)); | |||||
| getContext().getEventBus().postEvent( | |||||
| new OpenRequestEvent(getContext(), selected)); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -53,6 +53,15 @@ | |||||
| */ | */ | ||||
| package org.apache.tools.ant.gui.command; | package org.apache.tools.ant.gui.command; | ||||
| import org.apache.tools.ant.gui.AppContext; | import org.apache.tools.ant.gui.AppContext; | ||||
| import org.apache.tools.ant.gui.ProjectProxy; | |||||
| import org.apache.tools.ant.gui.event.ErrorEvent; | |||||
| import java.io.File; | |||||
| import java.io.FileWriter; | |||||
| import java.io.IOException; | |||||
| import org.apache.tools.ant.gui.XMLFileFilter; | |||||
| import javax.swing.JFileChooser; | |||||
| import javax.swing.filechooser.FileFilter; | |||||
| import javax.swing.JOptionPane; | |||||
| /** | /** | ||||
| @@ -61,16 +70,98 @@ import org.apache.tools.ant.gui.AppContext; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class SaveAsCmd extends SaveCmd { | |||||
| /** Name of the action the command maps to. */ | |||||
| public static final String ACTION_NAME = "saveas"; | |||||
| public class SaveAsCmd extends AbstractCommand { | |||||
| /** File to save to. */ | |||||
| private File _file = null; | |||||
| /** | /** | ||||
| * Standard ctor. | * Standard ctor. | ||||
| * | * | ||||
| * @param context Application context. | |||||
| */ | */ | ||||
| public SaveAsCmd(AppContext context) { | |||||
| super(context, null); | |||||
| public SaveAsCmd() { | |||||
| } | } | ||||
| /** | |||||
| * Set the file to save to. | |||||
| * | |||||
| * @param file File to save to. | |||||
| */ | |||||
| public void setFile(File file) { | |||||
| _file = file; | |||||
| } | |||||
| /** | |||||
| * Save the project to the current file name. | |||||
| * | |||||
| */ | |||||
| public void run() { | |||||
| FileFilter filter = new XMLFileFilter(getContext().getResources()); | |||||
| ProjectProxy project = getContext().getProject(); | |||||
| if(project != null) { | |||||
| if(_file == null) { | |||||
| // XXX code here to select a file to save to. | |||||
| JFileChooser chooser = new JFileChooser(); | |||||
| chooser.addChoosableFileFilter(filter); | |||||
| int val = chooser.showSaveDialog( | |||||
| getContext().getParentFrame()); | |||||
| if(val == JFileChooser.APPROVE_OPTION) { | |||||
| _file = chooser.getSelectedFile(); | |||||
| if(_file.exists()) { | |||||
| String title = getContext().getResources(). | |||||
| getString(SaveCmd.class, "title"); | |||||
| String message = getContext().getResources(). | |||||
| getMessage(SaveCmd.class, "overwrite", | |||||
| new Object[] {_file.toString()}); | |||||
| val = JOptionPane.showConfirmDialog( | |||||
| getContext().getParentFrame(), message, title, | |||||
| JOptionPane.YES_NO_OPTION); | |||||
| // If cancelled unset file. | |||||
| if(val != JOptionPane.YES_OPTION) { | |||||
| _file = null; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| if(_file != null) { | |||||
| project.setFile(_file); | |||||
| FileWriter out = null; | |||||
| try { | |||||
| out = new FileWriter(_file); | |||||
| project.write(out); | |||||
| } | |||||
| catch(IOException ex) { | |||||
| String message = getContext().getResources().getMessage( | |||||
| SaveCmd.class, "saveError", | |||||
| new Object[] { _file.toString() }); | |||||
| getContext().getEventBus(). | |||||
| postEvent(new ErrorEvent(getContext(), message)); | |||||
| } | |||||
| finally { | |||||
| if (out != null) { | |||||
| try { | |||||
| out.flush(); | |||||
| out.close(); | |||||
| } | |||||
| catch(IOException ex) { | |||||
| // Intentionally ignored. | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| else { | |||||
| // We shouldn't ever get here. | |||||
| String message = getContext().getResources().getString( | |||||
| SaveCmd.class, "noProject"); | |||||
| getContext().getEventBus(). | |||||
| postEvent(new ErrorEvent(getContext(), message)); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -53,15 +53,6 @@ | |||||
| */ | */ | ||||
| package org.apache.tools.ant.gui.command; | package org.apache.tools.ant.gui.command; | ||||
| import org.apache.tools.ant.gui.AppContext; | import org.apache.tools.ant.gui.AppContext; | ||||
| import org.apache.tools.ant.gui.ProjectProxy; | |||||
| import org.apache.tools.ant.gui.event.ErrorEvent; | |||||
| import java.io.File; | |||||
| import java.io.FileWriter; | |||||
| import java.io.IOException; | |||||
| import org.apache.tools.ant.gui.XMLFileFilter; | |||||
| import javax.swing.JFileChooser; | |||||
| import javax.swing.filechooser.FileFilter; | |||||
| import javax.swing.JOptionPane; | |||||
| /** | /** | ||||
| * Command to execute the saving of the current build file. | * Command to execute the saving of the current build file. | ||||
| @@ -69,106 +60,18 @@ import javax.swing.JOptionPane; | |||||
| * @version $Revision$ | * @version $Revision$ | ||||
| * @author Simeon Fitch | * @author Simeon Fitch | ||||
| */ | */ | ||||
| public class SaveCmd implements Command { | |||||
| /** Name of the action the command maps to. */ | |||||
| public static final String ACTION_NAME = "save"; | |||||
| public class SaveCmd extends SaveAsCmd { | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| /** Filter for showing only XML files. */ | |||||
| private FileFilter _filter = null; | |||||
| /** File to save to. */ | |||||
| private File _file = null; | |||||
| /** | |||||
| * Standard ctor with file. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param file File to save to, or null. | |||||
| */ | |||||
| public SaveCmd(AppContext context, File file) { | |||||
| _context = context; | |||||
| _filter = new XMLFileFilter(_context.getResources()); | |||||
| _file = file; | |||||
| public SaveCmd() { | |||||
| } | } | ||||
| /** | /** | ||||
| * Standard ctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public SaveCmd(AppContext context) { | |||||
| this(context, context.getProject() == null ? null : | |||||
| context.getProject().getFile()); | |||||
| } | |||||
| /** | |||||
| * Save the project to the current file name. | |||||
| * Set the application context. | |||||
| * | * | ||||
| * @param context Application context. | |||||
| */ | */ | ||||
| public void execute() { | |||||
| ProjectProxy project = _context.getProject(); | |||||
| if(project != null) { | |||||
| if(_file == null) { | |||||
| // XXX code here to select a file to save to. | |||||
| JFileChooser chooser = new JFileChooser(); | |||||
| chooser.addChoosableFileFilter(_filter); | |||||
| int val = chooser.showSaveDialog(_context.getParentFrame()); | |||||
| if(val == JFileChooser.APPROVE_OPTION) { | |||||
| _file = chooser.getSelectedFile(); | |||||
| if(_file.exists()) { | |||||
| String title = _context.getResources().getString( | |||||
| SaveCmd.class, "title"); | |||||
| String message = _context.getResources().getMessage( | |||||
| SaveCmd.class, "overwrite", | |||||
| new Object[] {_file.toString()}); | |||||
| val = JOptionPane.showConfirmDialog( | |||||
| _context.getParentFrame(), message, title, | |||||
| JOptionPane.YES_NO_OPTION); | |||||
| // If cancelled unset file. | |||||
| if(val != JOptionPane.YES_OPTION) { | |||||
| _file = null; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| if(_file != null) { | |||||
| project.setFile(_file); | |||||
| FileWriter out = null; | |||||
| try { | |||||
| out = new FileWriter(_file); | |||||
| project.write(out); | |||||
| } | |||||
| catch(IOException ex) { | |||||
| String message = _context.getResources().getMessage( | |||||
| SaveCmd.class, "saveError", | |||||
| new Object[] { _file.toString() }); | |||||
| _context.getEventBus(). | |||||
| postEvent(new ErrorEvent(_context, message)); | |||||
| } | |||||
| finally { | |||||
| if (out != null) { | |||||
| try { | |||||
| out.flush(); | |||||
| out.close(); | |||||
| } | |||||
| catch(IOException ex) { | |||||
| // Intentionally ignored. | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| else { | |||||
| // We shouldn't ever get here. | |||||
| String message = _context.getResources().getString( | |||||
| SaveCmd.class, "noProject"); | |||||
| _context.getEventBus(). | |||||
| postEvent(new ErrorEvent(_context, message)); | |||||
| } | |||||
| public void setContext(AppContext context) { | |||||
| super.setContext(context); | |||||
| setFile(context.getProject().getFile()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -81,7 +81,7 @@ public abstract class AntEvent extends EventObject { | |||||
| * | * | ||||
| * @return Application context. | * @return Application context. | ||||
| */ | */ | ||||
| protected AppContext getAppContext() { | |||||
| protected AppContext getContext() { | |||||
| return (AppContext) getSource(); | return (AppContext) getSource(); | ||||
| } | } | ||||
| @@ -109,7 +109,9 @@ public class ErrorEvent extends AntEvent { | |||||
| * @return Command representing an appropriate response to this event. | * @return Command representing an appropriate response to this event. | ||||
| */ | */ | ||||
| public Command createDefaultCmd() { | public Command createDefaultCmd() { | ||||
| return new DisplayErrorCmd(getAppContext(), _message, _ex); | |||||
| Command retval = new DisplayErrorCmd(_message, _ex); | |||||
| retval.setContext(getContext()); | |||||
| return retval; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -85,7 +85,10 @@ public class OpenRequestEvent extends AntEvent { | |||||
| * @return Load command. | * @return Load command. | ||||
| */ | */ | ||||
| public Command createDefaultCmd() { | public Command createDefaultCmd() { | ||||
| return new LoadFileCmd(getAppContext(), _file); | |||||
| LoadFileCmd load = new LoadFileCmd(); | |||||
| load.setFile(_file); | |||||
| load.setContext(getContext()); | |||||
| return load; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,12 +14,14 @@ open.parentMenuName=File | |||||
| open.icon=open.gif | open.icon=open.gif | ||||
| open.accelerator=control O | open.accelerator=control O | ||||
| open.enabled=true | open.enabled=true | ||||
| open.command=org.apache.tools.ant.gui.command.OpenCmd | |||||
| save.name=Save | save.name=Save | ||||
| save.shortDescription=Save the current project | save.shortDescription=Save the current project | ||||
| save.parentMenuName=File | save.parentMenuName=File | ||||
| save.icon=save.gif | save.icon=save.gif | ||||
| save.accelerator=control S | save.accelerator=control S | ||||
| save.command=org.apache.tools.ant.gui.command.SaveCmd | |||||
| save.enabled=false | save.enabled=false | ||||
| save.disableOn= \ | save.disableOn= \ | ||||
| org.apache.tools.ant.gui.event.ProjectClosedEvent, \ | org.apache.tools.ant.gui.event.ProjectClosedEvent, \ | ||||
| @@ -31,6 +33,7 @@ save.enableOn= \ | |||||
| saveas.name=Save As... | saveas.name=Save As... | ||||
| saveas.shortDescription=Save to a specific file | saveas.shortDescription=Save to a specific file | ||||
| saveas.parentMenuName=File | saveas.parentMenuName=File | ||||
| saveas.command=org.apache.tools.ant.gui.command.SaveAsCmd | |||||
| saveas.enabled=false | saveas.enabled=false | ||||
| saveas.disableOn= \ | saveas.disableOn= \ | ||||
| org.apache.tools.ant.gui.event.ProjectClosedEvent, \ | org.apache.tools.ant.gui.event.ProjectClosedEvent, \ | ||||
| @@ -42,6 +45,7 @@ saveas.enableOn= \ | |||||
| close.name=Close | close.name=Close | ||||
| close.shortDescription=Close the current project | close.shortDescription=Close the current project | ||||
| close.parentMenuName=File | close.parentMenuName=File | ||||
| close.command=org.apache.tools.ant.gui.command.CloseCmd | |||||
| close.enabled=false | close.enabled=false | ||||
| close.disableOn= \ | close.disableOn= \ | ||||
| org.apache.tools.ant.gui.event.ProjectClosedEvent, \ | org.apache.tools.ant.gui.event.ProjectClosedEvent, \ | ||||
| @@ -54,6 +58,7 @@ exit.name=Exit | |||||
| exit.shortDescription=Quit the application | exit.shortDescription=Quit the application | ||||
| exit.parentMenuName=File | exit.parentMenuName=File | ||||
| exit.separator=true | exit.separator=true | ||||
| exit.command=org.apache.tools.ant.gui.command.ExitCmd | |||||
| exit.enabled=true | exit.enabled=true | ||||
| about.name=About... | about.name=About... | ||||
| @@ -61,6 +66,7 @@ about.shortDescription=About this application | |||||
| about.parentMenuName=Help | about.parentMenuName=Help | ||||
| about.separator=true; | about.separator=true; | ||||
| about.enabled=true | about.enabled=true | ||||
| about.command=org.apache.tools.ant.gui.command.AboutCmd | |||||
| startBuild.name=Start Build | startBuild.name=Start Build | ||||
| startBuild.shortDescription=Start build of selected target | startBuild.shortDescription=Start build of selected target | ||||
| @@ -68,6 +74,7 @@ startBuild.parentMenuName=Build | |||||
| startBuild.icon=start.gif | startBuild.icon=start.gif | ||||
| startBuild.separator=true | startBuild.separator=true | ||||
| startBuild.accelerator=control B | startBuild.accelerator=control B | ||||
| startBuild.command=org.apache.tools.ant.gui.command.BuildCmd | |||||
| startBuild.enabled=false | startBuild.enabled=false | ||||
| startBuild.enableOn=\ | startBuild.enableOn=\ | ||||
| org.apache.tools.ant.gui.event.NewProjectEvent, \ | org.apache.tools.ant.gui.event.NewProjectEvent, \ | ||||
| @@ -90,6 +97,7 @@ stopBuild.disableOn=\ | |||||
| changeLookAndFeel.name=Look and Feel... | changeLookAndFeel.name=Look and Feel... | ||||
| changeLookAndFeel.shortDescription=Change the Look and Feel | changeLookAndFeel.shortDescription=Change the Look and Feel | ||||
| changeLookAndFeel.parentMenuName=Options | changeLookAndFeel.parentMenuName=Options | ||||
| changeLookAndFeel.command=org.apache.tools.ant.gui.command.ChangeLookAndFeelCmd | |||||
| changeLookAndFeel.enabled=true | changeLookAndFeel.enabled=true | ||||
| changeLookAndFeel.separator=true | changeLookAndFeel.separator=true | ||||
| @@ -98,3 +106,4 @@ notifyEmacs.shortDescription=\ | |||||
| Send a notification event to Emacs on build errors. | Send a notification event to Emacs on build errors. | ||||
| notifyEmacs.parentMenuName=Options | notifyEmacs.parentMenuName=Options | ||||
| notifyEmacs.toggle=true | notifyEmacs.toggle=true | ||||
| notifyEmacs.command=org.apache.tools.ant.gui.command.EmacsNotifyCmd | |||||