the actions. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268403 13f79535-47bb-0310-9956-ffa450edef68master
@@ -54,8 +54,9 @@ | |||
package org.apache.tools.ant.gui.acs; | |||
import javax.xml.parsers.*; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.File; | |||
import java.net.URL; | |||
import org.w3c.dom.*; | |||
import org.xml.sax.SAXException; | |||
import com.sun.xml.parser.Parser; | |||
@@ -113,14 +114,26 @@ public class ACSFactory { | |||
} | |||
/** | |||
* Load a project from the given XML file. | |||
* XXX fix me. | |||
* | |||
* @param f File to load. | |||
* @return | |||
* @param location Location of the file. | |||
* @return Loaded project. | |||
*/ | |||
public ACSProjectElement load(File f) throws IOException, SAXException { | |||
public ACSProjectElement load(File location) throws IOException { | |||
return load(new URL("file", null, location.getPath())); | |||
} | |||
/** | |||
* Load a project from the given XML file. | |||
* XXX fix me. | |||
* | |||
* @param location Location of the file. | |||
* @return Loaded project. | |||
*/ | |||
public ACSProjectElement load(URL location) throws IOException { | |||
XmlDocument doc = null; | |||
try { | |||
@@ -137,7 +150,7 @@ public class ACSFactory { | |||
parser.setEntityResolver(new Resolver()); | |||
//parser.setErrorHandler(); | |||
sax.parse(f, null); | |||
sax.parse(location.openStream(), null); | |||
doc = builder.getDocument(); | |||
@@ -146,6 +159,10 @@ public class ACSFactory { | |||
ex.printStackTrace(); | |||
throw new IOException(ex.getMessage()); | |||
} | |||
catch(SAXException ex) { | |||
ex.printStackTrace(); | |||
throw new IOException(ex.getMessage()); | |||
} | |||
return (ACSProjectElement) doc.getDocumentElement(); | |||
} | |||
@@ -54,6 +54,7 @@ | |||
package org.apache.tools.ant.gui.acs; | |||
import com.sun.xml.tree.ElementNode; | |||
import java.net.URL; | |||
/** | |||
* Class representing a project element in the build file. | |||
@@ -66,7 +67,10 @@ public class ACSProjectElement extends ACSNamedElement { | |||
public static final String DEFAULT = "default"; | |||
/** The 'basdir' property name. */ | |||
public static final String BASEDIR = "basedir"; | |||
/** Property name of the persistence location. */ | |||
public static final String LOCATION = "location"; | |||
/** The location where this project is persisted. */ | |||
private URL _location = null; | |||
/** | |||
* Default ctor. | |||
@@ -124,4 +128,25 @@ public class ACSProjectElement extends ACSNamedElement { | |||
firePropertyChange(BASEDIR, old, baseDir); | |||
} | |||
/** | |||
* Get the location where this project is persisted. | |||
* | |||
* @return Saved location, or null if not persisted. | |||
*/ | |||
public URL getLocation() { | |||
return _location; | |||
} | |||
/** | |||
* Set the loction where the project is persisted. | |||
* | |||
* @param location Location of project. | |||
*/ | |||
public void setLocation(URL location) { | |||
URL old = _location; | |||
_location = location; | |||
firePropertyChange(LOCATION, old, _location); | |||
} | |||
} |
@@ -70,9 +70,8 @@ public class ActionManager { | |||
/** Parameters for the Command constructor. */ | |||
private static final Class[] COMMAND_CTOR_PARAMS = { AppContext.class }; | |||
private ResourceBundle _resources = | |||
ResourceBundle.getBundle( | |||
"org.apache.tools.ant.gui.resources.action"); | |||
/** Externalized resources. */ | |||
private ResourceManager _resources = null; | |||
/** Array of action identifiers. */ | |||
private String[] _actionIDs = null; | |||
@@ -91,22 +90,22 @@ public class ActionManager { | |||
* Standard ctor. | |||
* | |||
* @param bus Event bus to post events to. | |||
* @param resources Location of resources. | |||
*/ | |||
public ActionManager(EventBus bus) { | |||
public ActionManager(EventBus bus, ResourceManager resources) { | |||
_bus = bus; | |||
_resources = resources; | |||
bus.addMember(EventBus.RESPONDING, new Enabler()); | |||
_mapper = new EventToActionMapper(); | |||
// Configure the set of actions. | |||
String toTok = _resources.getString("actions"); | |||
StringTokenizer tok = new StringTokenizer(toTok, ", "); | |||
_actionIDs = new String[tok.countTokens()]; | |||
String[] names = _resources.getStringArray("actions"); | |||
_actionIDs = new String[names.length]; | |||
for(int i = 0; i < _actionIDs.length; i++) { | |||
_actionIDs[i] = tok.nextToken(); | |||
_actionIDs[i] = names[i]; | |||
AntAction action = new AntAction(_resources, _bus, _actionIDs[i]); | |||
_actions.put(_actionIDs[i], action); | |||
// For each action we need to add the reverse event trigger | |||
// lookup. | |||
@@ -79,7 +79,7 @@ public class AntAction extends AbstractAction { | |||
public static final String COMMAND = "command"; | |||
/** Property resources. */ | |||
private ResourceBundle _resources = null; | |||
private ResourceManager _resources = null; | |||
/** Event bus. */ | |||
private EventBus _bus = null; | |||
/** Unique id. */ | |||
@@ -100,7 +100,7 @@ public class AntAction extends AbstractAction { | |||
* | |||
* @param id Unique id for the action | |||
*/ | |||
public AntAction(ResourceBundle resources, EventBus bus, String id) { | |||
public AntAction(ResourceManager resources, EventBus bus, String id) { | |||
_resources = resources; | |||
_bus = bus; | |||
_id = id; | |||
@@ -144,17 +144,7 @@ public class AntAction extends AbstractAction { | |||
// Add an icon if any (which means it'll show up on the tool bar). | |||
String iconName = getString("icon"); | |||
if(iconName != null) { | |||
try { | |||
URL imageLoc = | |||
AntAction.class.getResource("resources/" + iconName); | |||
if(imageLoc != null) { | |||
putValue(SMALL_ICON, new ImageIcon(imageLoc)); | |||
} | |||
} | |||
catch(Exception ex) { | |||
// XXX log me. | |||
ex.printStackTrace(); | |||
} | |||
putValue(SMALL_ICON, _resources.loadImageIcon(iconName)); | |||
} | |||
_enableOn = resolveClasses(getString(ENABLE_ON)); | |||
@@ -69,8 +69,12 @@ public class AppContext { | |||
private EventBus _eventBus = new EventBus(); | |||
/** Application resources. */ | |||
private ResourceManager _resources = new ResourceManager(); | |||
/** The project manager. */ | |||
private ProjectManager _projectManager = new ProjectManager(); | |||
/** Application actions. */ | |||
private ActionManager _actions = new ActionManager(_eventBus); | |||
private ActionManager _actions = | |||
new ActionManager(_eventBus, new ResourceManager( | |||
"org.apache.tools.ant.gui.resources.action")); | |||
/** List of build listeners to register when build starts. */ | |||
private List _buildListeners = new LinkedList(); | |||
@@ -125,6 +129,15 @@ public class AppContext { | |||
return _parentFrame; | |||
} | |||
/** | |||
* Get the project manager. | |||
* | |||
* @return Project manager. | |||
*/ | |||
public ProjectManager getProjectManager() { | |||
return _projectManager; | |||
} | |||
/** | |||
* Get the current project. | |||
* | |||
@@ -77,7 +77,7 @@ public class ResourceManager { | |||
/** Image path. */ | |||
private static final String IMG_PATH = | |||
"/" + RESOURCE_PKG.replace('.', '/'); | |||
File.separator + RESOURCE_PKG.replace('.', File.separatorChar); | |||
/** Resources to reference. */ | |||
private ResourceBundle _resources = null; | |||
@@ -99,6 +99,16 @@ public class ResourceManager { | |||
_resources = ResourceBundle.getBundle(propName); | |||
} | |||
/** | |||
* Get non-qualified String resource. | |||
* | |||
* @param name Name of the resource. | |||
* @return Value of the resource. | |||
*/ | |||
public String getString(String name) { | |||
return getString(null, name); | |||
} | |||
/** | |||
* Get a string resource for the given class. | |||
* | |||
@@ -107,13 +117,22 @@ public class ResourceManager { | |||
* @return String resource for the given class. | |||
*/ | |||
public String getString(Class clazz, String name) { | |||
if(clazz == null || name == null) { | |||
if(name == null) { | |||
return null; | |||
} | |||
return _resources.getString(getKey(clazz, name)); | |||
} | |||
/** | |||
* Get a non-qualified array of string resources for the given class. | |||
* | |||
* @param name Name of the string resource. | |||
* @return Array of string resources for the given class. | |||
*/ | |||
public String[] getStringArray(String name) { | |||
return getStringArray(null, name); | |||
} | |||
/** | |||
* Get an array of string resources for the given class. | |||
* | |||
@@ -122,7 +141,7 @@ public class ResourceManager { | |||
* @return Array of string resources for the given class. | |||
*/ | |||
public String[] getStringArray(Class clazz, String name) { | |||
if(clazz == null || name == null) { | |||
if(name == null) { | |||
return null; | |||
} | |||
@@ -157,7 +176,21 @@ public class ResourceManager { | |||
* @return Composite key. | |||
*/ | |||
private String getKey(Class clazz, String name) { | |||
return clazz.getName() + "." + name; | |||
name = name == null ? "" : name; | |||
return clazz == null ? name : clazz.getName() + "." + name; | |||
} | |||
/** | |||
* Generate a localized message using the given set of arguments to | |||
* format the message with. | |||
* | |||
* @param name Name of the message. | |||
* @param arguments Arguments to the message. | |||
* @return The formatted message. | |||
*/ | |||
public String getMessage(String name, Object[] arguments) { | |||
return getMessage(null, name, arguments); | |||
} | |||
/** | |||
@@ -165,9 +198,9 @@ public class ResourceManager { | |||
* format the message with. | |||
* | |||
* @param clazz Class to get message resource for. | |||
* @param name | |||
* @param arguments | |||
* @return | |||
* @param name Name of the message. | |||
* @param arguments Arguments to the message. | |||
* @return The formatted message. | |||
*/ | |||
public String getMessage(Class clazz, String name, Object[] arguments) { | |||
String format = getString(clazz, name); | |||
@@ -183,7 +216,7 @@ public class ResourceManager { | |||
* @return Image as an ImageIcon, or null if not found. | |||
*/ | |||
public ImageIcon getImageIcon(Class clazz, String key) { | |||
return getImageIcon(getString(clazz, key)); | |||
return loadImageIcon(getString(clazz, key)); | |||
} | |||
/** | |||
@@ -193,7 +226,7 @@ public class ResourceManager { | |||
* @param fileName Image file to load. | |||
* @return Image as an ImageIcon, or null if not found. | |||
*/ | |||
public ImageIcon getImageIcon(String fileName) { | |||
public ImageIcon loadImageIcon(String fileName) { | |||
if(fileName == null) return null; | |||
ImageIcon icon = null; | |||
@@ -51,7 +51,7 @@ | |||
* information on the Apache Software Foundation, please see | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.gui.modules; | |||
package org.apache.tools.ant.gui.modules.console; | |||
import org.apache.tools.ant.gui.core.AntModule; | |||
import org.apache.tools.ant.gui.core.AppContext; | |||
@@ -51,7 +51,7 @@ | |||
* information on the Apache Software Foundation, please see | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.gui.modules; | |||
package org.apache.tools.ant.gui.modules.console; | |||
/** | |||
* Enumeration class of the different log levels. | |||
@@ -22,17 +22,17 @@ org.apache.tools.ant.gui.Antidote.bottom.modules=\ | |||
org.apache.tools.ant.gui.Antidote.top.modules=\ | |||
org.apache.tools.ant.gui.modules.TargetMonitor | |||
org.apache.tools.ant.gui.modules.PropertyEditor.name=Properties | |||
org.apache.tools.ant.gui.modules.edit.PropertyEditor.name=Properties | |||
org.apache.tools.ant.gui.modules.ElementNavigator.name=Project | |||
org.apache.tools.ant.gui.modules.ElementNavigator.popupActions=\ | |||
org.apache.tools.ant.gui.modules.edit.ElementNavigator.name=Project | |||
org.apache.tools.ant.gui.modules.edit.ElementNavigator.popupActions=\ | |||
newTarget, newTask, newProperty | |||
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.name=Console | |||
org.apache.tools.ant.gui.modules.Console.logLevel=Log message level: | |||
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.core.XMLFileFilter.description=XML Files | |||