You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by me...@locus.apache.org on 2000/11/16 19:32:23 UTC
cvs commit: jakarta-ant/src/antidote/org/apache/tools/ant/gui ActionManager.java AntAction.java Antidote.java AppContext.java EventResponder.java Main.java ProjectProxy.java
metasim 00/11/16 10:32:23
Modified: src/antidote/org/apache/tools/ant/gui ActionManager.java
AntAction.java Antidote.java AppContext.java
EventResponder.java Main.java ProjectProxy.java
Log:
Added option to turn on notification of emacs on a build error so that emacs
goes to the file and location of the error. Also added the ability to provide a
build file to load at startup from the command line.
Revision Changes Path
1.5 +17 -4 jakarta-ant/src/antidote/org/apache/tools/ant/gui/ActionManager.java
Index: ActionManager.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/ActionManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ActionManager.java 2000/11/15 21:25:33 1.4
+++ ActionManager.java 2000/11/16 18:32:23 1.5
@@ -61,7 +61,7 @@
* Manager of antidote actions. Receives its configuration from the action
* ResourceBundle.
*
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
* @author Simeon Fitch
*/
public class ActionManager {
@@ -164,9 +164,22 @@
menu.getMenuComponentCount() > 0) {
menu.addSeparator();
}
- JMenuItem item = menu.add(action);
- item.setAccelerator(action.getAccelerator());
- addNiceStuff(item, action);
+
+ if(!action.isToggle()) {
+ JMenuItem item = menu.add(action);
+ item.setAccelerator(action.getAccelerator());
+ addNiceStuff(item, action);
+ }
+ else {
+ JCheckBoxMenuItem b =
+ new JCheckBoxMenuItem(action.getName());
+ b.setActionCommand(action.getID());
+ b.addActionListener(action);
+ b.setAction(action);
+ addNiceStuff(b, action);
+ menu.add(b);
+ }
+
}
}
1.2 +19 -1 jakarta-ant/src/antidote/org/apache/tools/ant/gui/AntAction.java
Index: AntAction.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/AntAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AntAction.java 2000/11/14 21:47:51 1.1
+++ AntAction.java 2000/11/16 18:32:23 1.2
@@ -64,7 +64,7 @@
/**
* Class representing an action in the Antidote application.
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
* @author Simeon Fitch
*/
public class AntAction extends AbstractAction {
@@ -75,6 +75,7 @@
public static final String ENABLED = "enabled";
public static final String ENABLE_ON = "enableOn";
public static final String DISABLE_ON = "disableOn";
+ public static final String TOGGLE = "toggle";
/** Property resources. */
private ResourceBundle _resources = null;
@@ -89,6 +90,8 @@
/** Events that the action should cause transition to the
* enabled(false) state. */
private Class[] _disableOn = null;
+ /** Flag indicating toggle action. */
+ private boolean _toggle = false;
/**
@@ -118,6 +121,12 @@
putValue(ACCELERATOR, KeyStroke.getKeyStroke(accelerator));
}
+ // Check to see if action is a toggle action.
+ String toggle = getString(TOGGLE);
+ if(toggle != null) {
+ _toggle = Boolean.valueOf(toggle).booleanValue();
+ }
+
// Add an icon if any (which means it'll show up on the tool bar).
String iconName = getString("icon");
if(iconName != null) {
@@ -270,6 +279,15 @@
*/
public Class[] getDisableOnEvents() {
return _disableOn;
+ }
+
+ /**
+ * True if this is a toggle action, false otherwise.
+ *
+ * @return True if this is a toggle action, false otherwise.
+ */
+ public boolean isToggle() {
+ return _toggle;
}
/**
1.4 +2 -2 jakarta-ant/src/antidote/org/apache/tools/ant/gui/Antidote.java
Index: Antidote.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/Antidote.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Antidote.java 2000/11/14 19:47:58 1.3
+++ Antidote.java 2000/11/16 18:32:23 1.4
@@ -62,7 +62,7 @@
* The root class for the Ant GUI. Assembles all the graphical components
* based on the configuration files.
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
* @author Simeon Fitch
*/
public class Antidote extends JPanel {
@@ -100,7 +100,7 @@
add(BorderLayout.NORTH, populateEditors("top"));
- setPreferredSize(new Dimension(640, 480));
+ setPreferredSize(new Dimension(640, 600));
}
1.2 +39 -2 jakarta-ant/src/antidote/org/apache/tools/ant/gui/AppContext.java
Index: AppContext.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/AppContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AppContext.java 2000/11/03 12:04:23 1.1
+++ AppContext.java 2000/11/16 18:32:23 1.2
@@ -52,15 +52,16 @@
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.gui;
+import org.apache.tools.ant.BuildListener;
import org.apache.tools.ant.gui.event.*;
import java.awt.Frame;
+import java.util.*;
-
/**
* A container for the state information for the application. Provides
* a centeralized place to gain access to resources and data.
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
* @author Simeon Fitch
*/
public class AppContext {
@@ -70,6 +71,8 @@
private ResourceManager _resources = new ResourceManager();
/** Application actions. */
private ActionManager _actions = new ActionManager(_eventBus);
+ /** List of build listeners to register when build starts. */
+ private List _buildListeners = new LinkedList();
/** Parent frame used in various operations. XXX what do we do
* in the applet context. */
@@ -81,6 +84,10 @@
public AppContext(Frame parent) {
_parentFrame = parent;
+ // Add the build listener for dispatching BuildEvent
+ // objects to the EventBus.
+ BuildEventForwarder handler = new BuildEventForwarder(this);
+ addBuildListener(handler);
}
/**
@@ -126,6 +133,36 @@
*/
public ProjectProxy getProject() {
return _project;
+ }
+
+
+ /**
+ * Add a build listener.
+ *
+ * @param l Listener to add.
+ */
+ public void addBuildListener(BuildListener l) {
+ _buildListeners.add(l);
+ }
+
+ /**
+ * Remove a build listener.
+ *
+ * @param l Listener to remove.
+ */
+ public void removeBuildListener(BuildListener l) {
+ _buildListeners.remove(l);
+ }
+
+ /**
+ * Get the set of current build listeners.
+ *
+ * @return Set of current build listeners.
+ */
+ public BuildListener[] getBuildListeners() {
+ BuildListener[] retval = new BuildListener[_buildListeners.size()];
+ _buildListeners.toArray(retval);
+ return retval;
}
/**
1.5 +9 -2 jakarta-ant/src/antidote/org/apache/tools/ant/gui/EventResponder.java
Index: EventResponder.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/EventResponder.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- EventResponder.java 2000/11/15 21:25:33 1.4
+++ EventResponder.java 2000/11/16 18:32:23 1.5
@@ -57,13 +57,13 @@
import org.apache.tools.ant.gui.command.*;
import java.util.EventObject;
import java.awt.event.ActionEvent;
-import javax.swing.JFrame;
+import javax.swing.*;
/**
* The purpose of this class is to watch for events that require some sort
* of action, like opening a file.
*
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
* @author Simeon Fitch
*/
class EventResponder {
@@ -133,6 +133,13 @@
}
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();
}
else {
// XXX log me.
1.4 +12 -5 jakarta-ant/src/antidote/org/apache/tools/ant/gui/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/Main.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Main.java 2000/11/14 19:55:45 1.3
+++ Main.java 2000/11/16 18:32:23 1.4
@@ -52,14 +52,15 @@
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.gui;
-import org.apache.tools.ant.gui.util.WindowUtils;
+import org.apache.tools.ant.gui.command.LoadFileCmd;
import javax.swing.*;
import java.awt.BorderLayout;
+import java.io.File;
/**
* Launch point for the Antidote GUI. Configurs it as an application.
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
* @author Simeon Fitch
*/
public class Main {
@@ -74,7 +75,9 @@
String vmVersion = System.getProperty("java.vm.vendor");
if(vmVersion.indexOf("Blackdown") > 0 &&
vmVersion.indexOf("RC") > 0) {
- System.err.println("Warning: Antidote will not work with VM version Blackdown-1.3.0-RC1.");
+ System.err.println(
+ "Warning: Antidote will not work with VM version " +
+ "Blackdown-1.3.0-RC1.");
System.err.println("Your version: " + vmVersion);
}
@@ -101,9 +104,13 @@
f.pack();
f.setVisible(true);
- // Hack around linux window placement annoyance.
- WindowUtils.centerWindow(f);
+
+ // XXX this will change once full command line argument parsing
+ // is supported.
+ if(args.length > 0) {
+ new LoadFileCmd(context, new File(args[0])).execute();
+ }
}
catch(Exception ex) {
ex.printStackTrace();
1.6 +25 -22 jakarta-ant/src/antidote/org/apache/tools/ant/gui/ProjectProxy.java
Index: ProjectProxy.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/antidote/org/apache/tools/ant/gui/ProjectProxy.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ProjectProxy.java 2000/11/11 04:52:20 1.5
+++ ProjectProxy.java 2000/11/16 18:32:23 1.6
@@ -62,8 +62,7 @@
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
-import java.util.Enumeration;
-import java.util.Vector;
+import java.util.*;
/**
* This class provides the gateway interface to the data model for
@@ -71,7 +70,7 @@
* (or other external datamodel) occurs. This class also provides various
* views into the data model, such as TreeModel, Documenet, etc.
*
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
* @author Simeon Fitch
*/
public class ProjectProxy {
@@ -96,6 +95,7 @@
_file = file;
_context = context;
loadProject();
+
}
/**
@@ -109,15 +109,6 @@
}
/**
- * Called to indicate that the project is no longer going to be used
- * by the GUI, and that any cleanup should occur.
- *
- */
- //public void close() {
- //
- //}
-
- /**
* Build the project with the current target (or the default target
* if none is selected. Build occurs on a separate thread, so method
* returns immediately.
@@ -128,12 +119,13 @@
project.init();
// XXX there is a bunch of stuff in the class
// org.apache.tools.ant.Main that needs to be
- // abstracted out so that it doesn't have to be
+ // refactored out so that it doesn't have to be
// replicated here.
// XXX need to provide a way to pass in externally
// defined properties. Perhaps define an external
- // Antidote properties file.
+ // Antidote properties file. JAVA_HOME may have to be set,
+ // as well as checking the .ant.properties
project.setUserProperty("ant.file" , _file.getAbsolutePath());
ProjectHelper.configureProject(project, _file);
@@ -189,7 +181,14 @@
/** Class for executing the build in a separate thread. */
private class BuildRunner implements Runnable {
+ /** The project to execute build on. */
private Project _project = null;
+
+ /**
+ * Standard ctor.
+ *
+ * @param project Project to execute build on.
+ */
public BuildRunner(Project project) {
_project = project;
}
@@ -214,13 +213,14 @@
*
*/
public void run() {
- // Add the build listener for
- // dispatching BuildEvent objects to the
- // EventBus.
- BuildEventForwarder handler =
- new BuildEventForwarder(_context);
- _project.addBuildListener(handler);
+ // Add the build listeners
+ BuildListener[] listeners = _context.getBuildListeners();
+ for(int i = 0; i < listeners.length; i++) {
+ _project.addBuildListener(listeners[i]);
+ }
+
try {
+
fireBuildEvent(new BuildEvent(
_project), BuildEventType.BUILD_STARTED);
@@ -250,8 +250,11 @@
finally {
fireBuildEvent(new BuildEvent(
_project), BuildEventType.BUILD_FINISHED);
- _project.removeBuildListener(handler);
- _buildThread = null;
+
+ // Remove the build listeners.
+ for(int i = 0; i < listeners.length; i++) {
+ _project.removeBuildListener(listeners[i]);
+ }
}
}
}