appears as an entry in the "Projects" menu. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268425 13f79535-47bb-0310-9956-ffa450edef68master
@@ -81,11 +81,16 @@ public class Main { | |||
Antidote gui = new Antidote(context); | |||
f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/); | |||
f.setJMenuBar(context.getActions().createMenuBar()); | |||
JMenuBar menu = context.getActions().createMenuBar(); | |||
f.setJMenuBar(menu); | |||
f.getContentPane().add(BorderLayout.CENTER, gui); | |||
f.getContentPane().add(BorderLayout.NORTH, | |||
context.getActions().createToolBar()); | |||
// Add the project selection menu. | |||
ProjectSelectionMenu ps = new ProjectSelectionMenu(context); | |||
ps.insertInto(menu); | |||
ImageIcon icon = | |||
context.getResources().loadImageIcon("icon-small.gif"); | |||
if(icon != null) { | |||
@@ -54,7 +54,7 @@ | |||
package org.apache.tools.ant.gui.command; | |||
import org.apache.tools.ant.gui.core.AppContext; | |||
import org.apache.tools.ant.gui.event.ErrorEvent; | |||
import org.apache.tools.ant.gui.event.ProjectSelectedEvent; | |||
import org.apache.tools.ant.gui.event.NewProjectEvent; | |||
import org.apache.tools.ant.gui.acs.ACSProjectElement; | |||
import java.io.File; | |||
import java.io.IOException; | |||
@@ -104,7 +104,7 @@ public class LoadFileCmd extends AbstractCommand { | |||
ACSProjectElement project = | |||
getContext().getProjectManager().open(_file); | |||
getContext().getEventBus().postEvent( | |||
new ProjectSelectedEvent(getContext(), project)); | |||
new NewProjectEvent(getContext(), project)); | |||
} | |||
catch(Exception ex) { | |||
String message = getContext().getResources().getMessage( | |||
@@ -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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.gui.command; | |||
import org.apache.tools.ant.gui.core.AppContext; | |||
/** | |||
* Command for creating a new project. | |||
* | |||
* @version $Revision$ | |||
* @author Simeon Fitch | |||
*/ | |||
public class NewProjectCmd extends AbstractCommand { | |||
/** | |||
* Standard ctor. | |||
* | |||
* @param context Application context. | |||
*/ | |||
public NewProjectCmd(AppContext context) { | |||
super(context); | |||
} | |||
/** | |||
* Display a dialog asking the user to select a file to open. | |||
* If one is selected then an event is posted requesting the open | |||
* operation be completed. | |||
* | |||
*/ | |||
public void run() { | |||
/* | |||
FileFilter filter = new XMLFileFilter(getContext().getResources()); | |||
JFileChooser chooser = new JFileChooser(); | |||
chooser.addChoosableFileFilter(filter); | |||
int val = chooser.showOpenDialog(getContext().getParentFrame()); | |||
if(val == JFileChooser.APPROVE_OPTION) { | |||
File selected = chooser.getSelectedFile(); | |||
getContext().getEventBus().postEvent( | |||
new OpenRequestEvent(getContext(), selected)); | |||
} | |||
*/ | |||
} | |||
} |
@@ -0,0 +1,171 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.gui.core; | |||
import org.apache.tools.ant.gui.event.*; | |||
import org.apache.tools.ant.gui.acs.ACSProjectElement; | |||
import javax.swing.*; | |||
import java.awt.event.ActionEvent; | |||
import java.awt.event.ActionListener; | |||
import java.util.*; | |||
/** | |||
* Specialization of JMenu providing selectability of the currently | |||
* open projects. | |||
* | |||
* @version $Revision$ | |||
* @author Simeon Fitch | |||
*/ | |||
public class ProjectSelectionMenu extends JMenu { | |||
/** Application context. */ | |||
private AppContext _context = null; | |||
/** Current set of menus. */ | |||
private Map _menus = new HashMap(); | |||
/** | |||
* Standard ctor. | |||
* | |||
* @param context Application context. | |||
*/ | |||
public ProjectSelectionMenu(AppContext context) { | |||
super(context.getResources().getString( | |||
ProjectSelectionMenu.class, "name"), true); | |||
_context = context; | |||
_context.getEventBus().addMember( | |||
EventBus.MONITORING, new ProjectListener()); | |||
setMnemonic(getText().charAt(0)); | |||
} | |||
/** | |||
* Replace or add the JMenu called "Projects" with this. | |||
* | |||
* @param menuBar Menu bar to insert into. | |||
*/ | |||
public void insertInto(JMenuBar menuBar) { | |||
// Iterate of the menu items looking for the one with the same name | |||
// as ours. | |||
int count = menuBar.getComponentCount(); | |||
for(int i = 0; i < count; i++) { | |||
JMenuItem menu = (JMenuItem) menuBar.getComponent(i); | |||
if(menu.getText().equals(getText())) { | |||
menuBar.remove(menu); | |||
menuBar.add(this, i); | |||
return; | |||
} | |||
} | |||
// Getting here we didn't find a menu with the same name. | |||
add(this); | |||
} | |||
/** Listener for updating the contents of the menu. */ | |||
private class ProjectListener implements BusMember { | |||
/** Event filter. */ | |||
private final Filter _filter = new Filter(); | |||
/** Action handler. */ | |||
private final ActionHandler _handler = new ActionHandler(); | |||
/** | |||
* Get the filter to that is used to determine if an event should | |||
* to to the member. | |||
* | |||
* @return Filter to use. | |||
*/ | |||
public BusFilter getBusFilter() { | |||
return _filter; | |||
} | |||
/** | |||
* Called when an event is to be posed to the member. | |||
* | |||
* @param event Event to post. | |||
* @return true if event should be propogated, false if | |||
* it should be cancelled. | |||
*/ | |||
public boolean eventPosted(EventObject event) { | |||
// Clear out our existing members | |||
removeAll(); | |||
_menus.clear(); | |||
ACSProjectElement[] projects = | |||
_context.getProjectManager().getOpen(); | |||
for(int i = 0; i < projects.length; i++) { | |||
JMenuItem menu = new JMenuItem(projects[i].getName()); | |||
menu.addActionListener(_handler); | |||
_menus.put(menu, projects[i]); | |||
add(menu); | |||
} | |||
return true; | |||
} | |||
} | |||
/** Filter for project related events. */ | |||
private static class Filter implements BusFilter { | |||
public boolean accept(EventObject event) { | |||
return event instanceof ProjectSelectedEvent || | |||
event instanceof ProjectClosedEvent; | |||
} | |||
} | |||
/** Handler for selecting the project. */ | |||
private class ActionHandler implements ActionListener { | |||
public void actionPerformed(ActionEvent e) { | |||
ACSProjectElement project = | |||
(ACSProjectElement) _menus.get(e.getSource()); | |||
_context.getEventBus().postEvent( | |||
new ProjectSelectedEvent(_context, project)); | |||
} | |||
} | |||
} |
@@ -0,0 +1,81 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.gui.event; | |||
import org.apache.tools.ant.gui.core.AppContext; | |||
import org.apache.tools.ant.gui.acs.ACSProjectElement; | |||
import org.apache.tools.ant.gui.acs.ACSElement; | |||
/** | |||
* Event providing notification that a new project has been | |||
* created or opened and selected. NB: Still not convinced that | |||
* subclassing ProjectSelectedEvent is the correct thing to | |||
* do, but it saves some time right now. It basically | |||
* assumes that any new project added to the project manager | |||
* is then selected. | |||
* | |||
* @version $Revision$ | |||
* @author Simeon Fitch | |||
*/ | |||
public class NewProjectEvent extends ProjectSelectedEvent { | |||
/** | |||
* Standard ctor. | |||
* | |||
* @param context application context. | |||
*/ | |||
public NewProjectEvent( | |||
AppContext context, ACSProjectElement project) { | |||
super(context, project); | |||
} | |||
} |
@@ -1,14 +1,20 @@ | |||
# Define the primary menubar items. | |||
menus=File, Build, Help | |||
menus=File, Build, Projects, Help | |||
# Declare the list of known actions. | |||
actions=\ | |||
open, save, saveas, close, exit, about, \ | |||
newTarget, newTask, newProperty \ | |||
startBuild, stopBuild, \ | |||
notifyEmacs | |||
startBuild, stopBuild | |||
# Configure the decalred actions. | |||
new.name=New Project... | |||
new.shortDescription=Create a new project | |||
new.parentMenuName=File | |||
new.icon=new-project.gif | |||
new.accelerator=control N | |||
new.enabled=true | |||
new.command=org.apache.tools.ant.gui.command.NewProjectCmd | |||
open.name=Open... | |||
open.shortDescription=Open an existing project | |||
@@ -30,6 +36,7 @@ save.disableOn= \ | |||
org.apache.tools.ant.gui.event.BuildStartedEvent | |||
save.enableOn= \ | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ | |||
org.apache.tools.ant.gui.event.NewProjectEvent, \ | |||
org.apache.tools.ant.gui.event.BuildFinishedEvent | |||
saveas.name=Save As... | |||
@@ -42,6 +49,7 @@ saveas.disableOn= \ | |||
org.apache.tools.ant.gui.event.BuildStartedEvent | |||
saveas.enableOn= \ | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ | |||
org.apache.tools.ant.gui.event.NewProjectEvent, \ | |||
org.apache.tools.ant.gui.event.BuildFinishedEvent | |||
close.name=Close | |||
@@ -54,6 +62,7 @@ close.disableOn= \ | |||
org.apache.tools.ant.gui.event.BuildStartedEvent | |||
close.enableOn= \ | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ | |||
org.apache.tools.ant.gui.event.NewProjectEvent, \ | |||
org.apache.tools.ant.gui.event.BuildFinishedEvent | |||
exit.name=Exit | |||
@@ -80,6 +89,7 @@ startBuild.command=org.apache.tools.ant.gui.command.BuildCmd | |||
startBuild.enabled=false | |||
startBuild.enableOn=\ | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ | |||
org.apache.tools.ant.gui.event.NewProjectEvent, \ | |||
org.apache.tools.ant.gui.event.BuildFinishedEvent | |||
startBuild.disableOn=\ | |||
org.apache.tools.ant.gui.event.BuildStartedEvent, \ | |||
@@ -102,7 +112,8 @@ newTarget.icon=new-target.gif | |||
newTarget.enabled=false | |||
newTarget.separator=true | |||
newTarget.enableOn=\ | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ | |||
org.apache.tools.ant.gui.event.NewProjectEvent | |||
newTarget.disableOn=\ | |||
org.apache.tools.ant.gui.event.TargetSelectionEvent, \ | |||
org.apache.tools.ant.gui.event.TaskSelectionEvent, \ | |||
@@ -127,6 +138,7 @@ newProperty.icon=new-property.gif | |||
newProperty.enabled=false | |||
newProperty.enableOn=\ | |||
org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ | |||
org.apache.tools.ant.gui.event.NewProjectEvent, \ | |||
org.apache.tools.ant.gui.event.TargetSelectionEvent, \ | |||
org.apache.tools.ant.gui.event.TaskSelectionEvent | |||
newProperty.disableOn=\ | |||
@@ -32,12 +32,17 @@ org.apache.tools.ant.gui.modules.TargetMonitor.name=Selected Target(s) | |||
org.apache.tools.ant.gui.modules.TargetMonitor.defText=[none] | |||
org.apache.tools.ant.gui.modules.console.BuildConsole.name=Console | |||
org.apache.tools.ant.gui.modules.console.BuildConsole.logLevel=Log message level: | |||
org.apache.tools.ant.gui.modules.console.BuildConsole.logLevel=\ | |||
Log message level: | |||
org.apache.tools.ant.gui.core.XMLFileFilter.description=XML Files | |||
org.apache.tools.ant.gui.command.LoadFileCmd.noFile=The file "{0}" was not found. | |||
org.apache.tools.ant.gui.command.LoadFileCmd.loadError=The file "{0}" could not be loaded. | |||
org.apache.tools.ant.gui.core.ProjectSelectionMenu.name=Projects | |||
org.apache.tools.ant.gui.command.LoadFileCmd.noFile=\ | |||
The file "{0}" was not found. | |||
org.apache.tools.ant.gui.command.LoadFileCmd.loadError=\ | |||
The file "{0}" could not be loaded. | |||
org.apache.tools.ant.gui.command.DisplayErrorCmd.title=Antidote Error... | |||
org.apache.tools.ant.gui.command.DisplayErrorCmd.expand=Details >> | |||