This initial version is mainly to establish the source infrastructure. The code currently compiles under JDK 1.2+ and provides a basic GUI which is able to open a build.xml file. Stay tuned ... Submitted by: Simeon Fitch <metasim@yahoo.com> git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268148 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,13 @@ | |||||
| 2000-11-02 Simeon H.K. Fitch <simeon@fitch.net> | |||||
| * org/apache/tools/ant/gui/event/EventBus.java: Added interrupt | |||||
| level support. | |||||
| * org/apache/tools/ant/gui/About.java: Created | |||||
| 2000-11-01 Simeon H.K. Fitch <simeon@fitch.net> | |||||
| * org/apache/tools/ant/gui/Main.java: Added XMLHelper.init() call | |||||
| * build.xml: Updated run target to include ant.jar in classpath. | |||||
| @@ -0,0 +1,130 @@ | |||||
| <?xml version="1.0"?> | |||||
| <!-- ======================================================================= --> | |||||
| <!-- Ant GUI build file --> | |||||
| <!-- ======================================================================= --> | |||||
| <project name="Antidote" default="compile" basedir="."> | |||||
| <!-- Give user a chance to override without editing this file | |||||
| (and without typing -D each time it compiles it) --> | |||||
| <property file="${user.home}/.ant.properties" /> | |||||
| <property name="Name" value="Antidote"/> | |||||
| <property name="name" value="antidote"/> | |||||
| <property name="version" value="0.1"/> | |||||
| <property name="src.dir" value="."/> | |||||
| <property name="build.dir" value="../../../build/antidote"/> | |||||
| <property name="lib.dir" value="${build.dir}/lib"/> | |||||
| <property name="build.classes" value="${build.dir}/classes"/> | |||||
| <property name="build.javadocs" value="${build.dir}/javadocs"/> | |||||
| <property name="manifest" value="${src.dir}/etc/manifest"/> | |||||
| <path id="classpath"> | |||||
| </path> | |||||
| <property name="packages" value="org.apache.tools.*"/> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Set some the defaults the user can override in .ant.properties --> | |||||
| <!-- =================================================================== --> | |||||
| <property name="build.compiler" value="classic"/> | |||||
| <property name="build.compiler.emacs" value="on"/> | |||||
| <property name="junit.fork" value="false" /> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Prepares the build directory --> | |||||
| <!-- =================================================================== --> | |||||
| <target name="prepare"> | |||||
| <mkdir dir="${build.dir}"/> | |||||
| <tstamp /> | |||||
| </target> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Compiles the source code --> | |||||
| <!-- =================================================================== --> | |||||
| <target name="compile" depends="prepare"> | |||||
| <mkdir dir="${build.classes}"/> | |||||
| <javac srcdir="${src.dir}" | |||||
| destdir="${build.classes}" | |||||
| debug="on" | |||||
| deprecation="off" | |||||
| optimize="on" > | |||||
| <classpath refid="classpath" /> | |||||
| </javac> | |||||
| <copy todir="${build.classes}"> | |||||
| <fileset dir="${src.dir}"> | |||||
| <include name="**/*.properties" /> | |||||
| <include name="**/*.gif" /> | |||||
| </fileset> | |||||
| </copy> | |||||
| <filter token="VERSION" value="${version}" /> | |||||
| <filter token="DATE" value="${TODAY}" /> | |||||
| <filter token="TIME" value="${TSTAMP}" /> | |||||
| <copy todir="${build.classes}" | |||||
| overwrite="true" | |||||
| filtering="on"> | |||||
| <fileset dir="${src.dir}"> | |||||
| <include name="**/version.txt" /> | |||||
| </fileset> | |||||
| </copy> | |||||
| </target> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Creates the jar archive --> | |||||
| <!-- =================================================================== --> | |||||
| <target name="jar" depends="compile"> | |||||
| <mkdir dir="${lib.dir}"/> | |||||
| <jar jarfile="${lib.dir}/${name}.jar" | |||||
| basedir="${build.classes}" | |||||
| includes="org/**" | |||||
| manifest="${manifest}"/> | |||||
| </target> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Creates the API documentation --> | |||||
| <!-- =================================================================== --> | |||||
| <target name="javadocs" depends="prepare" | |||||
| description="Creates the API documentation"> | |||||
| <mkdir dir="${build.javadocs}"/> | |||||
| <javadoc packagenames="${packages}" | |||||
| sourcepath="${basedir}/${src.dir}" | |||||
| destdir="${build.javadocs}" | |||||
| author="true" | |||||
| version="true" | |||||
| windowtitle="${Name} API" | |||||
| doctitle="${Name}" | |||||
| bottom="Copyright © 2000 Apache Software Foundation. All Rights Reserved."> | |||||
| <group title="Ant Gui" packages="org.apache.tools.ant.gui*" /> | |||||
| </javadoc> | |||||
| </target> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Run the GUI --> | |||||
| <!-- =================================================================== --> | |||||
| <target name="run" depends="compile" description="Run Antidote"> | |||||
| <java classname="org.apache.tools.ant.gui.Main" | |||||
| fork="yes" | |||||
| dir="${user.home}"> | |||||
| <jvmarg value="-Djava.compiler=NONE"/> | |||||
| <classpath> | |||||
| <pathelement location="${build.classes}"/> | |||||
| <pathelement location="${ant.home}/lib/ant.jar"/> | |||||
| </classpath> | |||||
| </java> | |||||
| </target> | |||||
| <!-- =================================================================== --> | |||||
| <!-- Cleans up generated stuff --> | |||||
| <!-- =================================================================== --> | |||||
| <target name="clean"> | |||||
| <delete dir="${build.dir}"/> | |||||
| </target> | |||||
| </project> | |||||
| @@ -0,0 +1,245 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "strict.dtd"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <TITLE>Ant GUI Feature List</TITLE> | |||||
| </HEAD> | |||||
| <BODY> | |||||
| <H1>Ant GUI Feature List</H1> | |||||
| <P>Version 0.3 (2000/10/31)</P> | |||||
| <P>Authors: | |||||
| <A HREF="mailto:simeon@fitch.net">Simeon H.K. Fitch</A>, | |||||
| <A HREF="mailto:chris@christophertodd.com">Chris Todd</A>, | |||||
| <A HREF="mailto:clint.combs@contrado.com">Clint Combs</A>, | |||||
| <A HREF="mailto:conor@ebinteractive.com.au">Conor MacNeill</A>, | |||||
| <A HREF="mailto:matthew.k.heun@gaerospace.com">Matthew Kuperus Heun</A>, | |||||
| <A HREF="mailto:duncan@x180.com">James Duncan Davidson</A> | |||||
| <P>The purpose of this document is to capture the proposed feature list for | |||||
| the Ant Graphical User Interface. This is not a hard requirements | |||||
| specification; you won't find the word "shall" in it (other than that one | |||||
| time). :-)</P> | |||||
| <P>In general, the purpose of the GUI is to allow the quick generation and | |||||
| modification of Ant build files, helping the user define their build process | |||||
| and track down build problems. For it to be successful it must make the user | |||||
| more efficient and productive, insofar as their involvement in build | |||||
| management and use of Ant goes. It should first address the needs of the | |||||
| novice Ant user, and then add abilities for the "power" user. This does not | |||||
| imply that the UI should be "dumbed down", it just means that usability | |||||
| should come before slick but complicated features.</P> | |||||
| <P>The features are in a loose order of expressed interested by | |||||
| contributors.</P> | |||||
| <!-- Section List --> | |||||
| <OL TYPE="A"> | |||||
| <LI><H2>Build Management</H2></LI> | |||||
| <P>Once a build file is created, the user will want to start and | |||||
| stop it from the UI. This will serve both as a testing facility as well as | |||||
| a general compile tool. Monitoring of the build can occur through the Ant | |||||
| BuildListener interface.</P> | |||||
| <OL> | |||||
| <LI>Build execution.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Initiate a build starting from any task.</LI> | |||||
| <LI>Stop a currently active build.</LI> | |||||
| </OL> | |||||
| <LI>Build monitoring.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide feedback on the current status of the build.<BR> | |||||
| <I>This is where you can have more fun with the directed graph view, | |||||
| where the current build activity is highlighted on the screen, making | |||||
| the whole thing behave like a dynamic state transition diagram. You | |||||
| can then highlight the node where the build fails, etc.</I></LI> | |||||
| <LI>Show log messages from the build, allowing the user to determine | |||||
| the task they originated from.</LI> | |||||
| <LI>Provide the ability to filter logged messages, adn to display the | |||||
| messages in color codes corresponding to logging levels.</LI> | |||||
| <LI>Allow the installation of custom log listeners</LI> | |||||
| <LI>Record runtime statistics to determine bottleneck in the build | |||||
| process<BR> | |||||
| <I>This may be of limited use, as calling <javac> probably takes | |||||
| the most time. But maybe not.</I></LI> | |||||
| </OL> | |||||
| </OL> | |||||
| <BR> | |||||
| <LI><H2>Build Wizard (auto-configure)</H2></LI> | |||||
| <P>To make starting a new project with Ant as easy as possible, the a | |||||
| wizard type of UI can be used where the user provides some basic | |||||
| information and the application deduces what a default build.xml file for | |||||
| it should look like.</P> | |||||
| <OL> | |||||
| <LI>Project attributes.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide input for the required project attributes.<BR> | |||||
| <I>This probably means project name and default target.</I></LI> | |||||
| </OL> | |||||
| <LI>Project directories.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Ask for the source directory.</LI> | |||||
| <LI>Ask for the destination directory.</LI> | |||||
| <LI>Ask for the necessary JAR files.</LI> | |||||
| </OL> | |||||
| <LI>Project properties.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide a default set of project properties.<BR> | |||||
| <I>In here would be things like classpath, build.compiler, version, | |||||
| etc.</I></LI> | |||||
| <LI>Allow the user to add to or remove from properties the default set | |||||
| of properties.</LI> | |||||
| </OL> | |||||
| <LI>Task creation</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide a list of "standard" tasks to insert into the project.<BR> | |||||
| <I>This would be tasks like <javac> and | |||||
| <javadoc>.</I></LI> | |||||
| <LI>Generate default init, compile, javadoc, and clean targets.</LI> | |||||
| </OL> | |||||
| <LI>Creation review.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide a review of the contents of the generated build.xml | |||||
| file.</LI> | |||||
| <LI>Allow the user to go back to any step in the process to change a | |||||
| setting.</LI> | |||||
| <LI>Prompt the user to save the build.xml file.</LI> | |||||
| </OL> | |||||
| </OL> | |||||
| <BR> | |||||
| <LI><H2>IDE Integration</H2></LI> | |||||
| <P>Components of the Ant GUI shoule support plugging into IDEs and code | |||||
| editors.</P> | |||||
| <OL> | |||||
| <LI>Emacs</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide support for launching builds from emacs, and notification | |||||
| of errors.</LI> | |||||
| </OL> | |||||
| <LI>JEdit</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide JEdit plug-in.</LI> | |||||
| </OL> | |||||
| <LI>ProjectBuilder</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide integration with OSX ProjectBuilder.</LI> | |||||
| </OL> | |||||
| <LI>NetBeans</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide integration with the NetBeans IDE.</LI> | |||||
| </OL> | |||||
| </OL> | |||||
| <BR> | |||||
| <LI><H2>Project Editing</H2></LI> | |||||
| <P>The Ant UI will be centered around the project file. All operations of | |||||
| the UI will be on a project, whether it be existing or new. <I>How | |||||
| sub-projects are handled (i.e. via the <ant> task) needs to be | |||||
| determined.</I></P> | |||||
| <OL> | |||||
| <LI>Load a project.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Read the native Ant XML format as defined by the Ant users' | |||||
| manual.</LI> | |||||
| <LI>When possible, automatically handle changes in the Ant element | |||||
| set, or at least changes to the task set, as well as the valid set of | |||||
| attributes.<BR> | |||||
| <I>Possible approach: load "default.properties", use | |||||
| introspection to discover attribute set, then reference some other | |||||
| mechanism for attributes that are manifested as properties.</I> | |||||
| </LI> | |||||
| <LI>Report errors in the XML source.</LI> | |||||
| </OL> | |||||
| <LI>View project contents.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>View the project in it's XML source format.</LI> | |||||
| <LI>View the project in a non-source format.<BR> | |||||
| <I>This is left ambiguous to keep the implementation out of the | |||||
| requirements. The different presentation formats are likely to evolve | |||||
| over time.</I> | |||||
| </LI> | |||||
| <LI>View the project properties.</LI> | |||||
| <LI>View the project contents (tasks).</LI> | |||||
| </OL> | |||||
| <LI>Modify a project.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Edit via the XML source.</LI> | |||||
| <LI>Edit properties via a property sheet.</LI> | |||||
| <LI>Provide facility for editing XML references used in the build | |||||
| file.</LI> | |||||
| </OL> | |||||
| <LI>Save a project.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Save to the native Ant XML format as defined by the Ant users' | |||||
| manual.</LI> | |||||
| <LI>Default save name is "build.xml".</LI> | |||||
| <LI>Verify before overwriting existing file when in "Save as" | |||||
| mode.</LI> | |||||
| </OL> | |||||
| <LI>Create a new project.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Define a project name.</LI> | |||||
| <LI>Define the default target.</LI> | |||||
| <LI>Define the project base directory.</LI> | |||||
| </OL> | |||||
| </OL> | |||||
| <BR> | |||||
| <LI><H2>Task Editing</H2></LI> | |||||
| <P>Tasks define what it is that Ant is to do, and will be the object most | |||||
| edited in the UI. <U>Task</U> <I>is to</I> <U>Paragraph</U> <I>as</I> | |||||
| <U>Project</U> <I>is to</I> <U>Document</U>. | |||||
| <OL> | |||||
| <LI>View tasks.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>View a sorted list of tasks.<BR> | |||||
| <I>Provide sorting based on name, depth in dependency tree, how many | |||||
| tasks depend in it...</I></LI> | |||||
| <LI>View tasks as a directed graph.<BR> | |||||
| <I>Need a good graph editing library. Looked at <A | |||||
| HREF="http://gef.tigris.org">GEF</A> but it still needs a lot of | |||||
| work, to make it easily reusable. Long term status unknown.</I></LI> | |||||
| <LI>View tasks as a dependency tree.</LI> | |||||
| <LI>View task as a properties sheet.</LI> | |||||
| <LI>Provide dependency viewing, both immediate and "flattened" | |||||
| views.</LI> | |||||
| </OL> | |||||
| <LI>Modify task.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Allow editing of a task via a property sheet.</LI> | |||||
| <LI>Allow editing of a task via XML source.</LI> | |||||
| <LI>Allow the graphical editing of task dependencies<BR> | |||||
| <I>This is where you can go hog wild with the component wiring type of | |||||
| UI. </I></LI> | |||||
| <LI>Allow non-graphical editing of dependencies.</LI> | |||||
| <LI>Provide detection of circular dependencies.</LI> | |||||
| <LI>Facilitate definition of conditional tasks with evaluation | |||||
| editor.</LI> | |||||
| </OL> | |||||
| </OL> | |||||
| <BR> | |||||
| <LI><H2>Build File Source Editing</H2></LI> | |||||
| <P>This section listes desired features for editing the Ant build file | |||||
| directly. Some components of this could be met by a generic XML editing | |||||
| capability, but other parts will be Ant specific features.</P> | |||||
| <OL> | |||||
| <LI>XML Editor.</LI> | |||||
| <OL TYPE="a"> | |||||
| <LI>Provide syntax higlighting.</LI> | |||||
| <LI>Provide auto-indentation.</LI> | |||||
| <LI>Provide smart tag completion.</LI> | |||||
| <LI>Provide visual highlighting of syntax errors.</LI> | |||||
| <LI>Support auto-reparsing of contents and model update.</LI> | |||||
| </OL> | |||||
| </OL> | |||||
| </BODY> | |||||
| </HTML> | |||||
| @@ -0,0 +1,4 @@ | |||||
| Manifest-Version: 1.0 | |||||
| Main-Class: org.apache.tools.ant.gui.Main | |||||
| @@ -0,0 +1,134 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.util.WindowUtils; | |||||
| import javax.swing.*; | |||||
| import java.io.IOException; | |||||
| import java.util.*; | |||||
| import java.awt.BorderLayout; | |||||
| import java.awt.event.ActionListener; | |||||
| import java.awt.event.ActionEvent; | |||||
| /** | |||||
| * Dialog displaying information on the application. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class About extends JDialog { | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public About(AppContext context) { | |||||
| super(context.getParentFrame(), true); | |||||
| setDefaultCloseOperation(DISPOSE_ON_CLOSE); | |||||
| String version = null; | |||||
| String date = null; | |||||
| String contributors = null; | |||||
| Properties props = new Properties(); | |||||
| try { | |||||
| props.load(getClass().getResourceAsStream("version.txt")); | |||||
| } | |||||
| catch(IOException ex) { | |||||
| // XXX log me. | |||||
| ex.printStackTrace(); | |||||
| return; | |||||
| } | |||||
| version = props.getProperty("VERSION", "??"); | |||||
| date = props.getProperty("DATE", "??"); | |||||
| // XXX eventually this should be tokenized on commas and | |||||
| // presented nicely in box. | |||||
| contributors = props.getProperty("CONTRIBUTORS", "??"); | |||||
| String message = context.getResources().getMessage( | |||||
| getClass(), "message", | |||||
| new Object[] { version, date, contributors }); | |||||
| String title = context.getResources().getString( | |||||
| getClass(), "title"); | |||||
| setTitle(title); | |||||
| JLabel contents = new JLabel(message); | |||||
| getContentPane().add(BorderLayout.CENTER, contents); | |||||
| // Add the OK button. | |||||
| JButton ok = new JButton( | |||||
| context.getResources().getString(getClass(), "ok")); | |||||
| ok.addActionListener(new ActionHandler()); | |||||
| JPanel p = new JPanel(); | |||||
| p.add(ok); | |||||
| getContentPane().add(BorderLayout.SOUTH, p); | |||||
| // Just go ahead and show it... | |||||
| pack(); | |||||
| WindowUtils.centerWindow(context.getParentFrame(), this); | |||||
| setVisible(true); | |||||
| } | |||||
| /** Handles press of the OK button. */ | |||||
| private class ActionHandler implements ActionListener { | |||||
| public void actionPerformed(ActionEvent e) { | |||||
| WindowUtils.sendCloseEvent(About.this); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,303 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.event.*; | |||||
| import javax.swing.*; | |||||
| import java.awt.event.ActionEvent; | |||||
| import java.awt.event.ActionListener; | |||||
| import java.util.*; | |||||
| import java.net.URL; | |||||
| /** | |||||
| * Manager of antidote actions. Receives its configuration from the action | |||||
| * ResourceBundle. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class ActionManager { | |||||
| private ResourceBundle _resources = | |||||
| ResourceBundle.getBundle( | |||||
| "org.apache.tools.ant.gui.resources.action"); | |||||
| /** Array of action identifiers. */ | |||||
| private String[] _actionIDs = null; | |||||
| /** Look table of all defined actions. */ | |||||
| private Map _actions = new HashMap(); | |||||
| /** Event bus. */ | |||||
| private EventBus _bus = null; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param bus Event bus to post events to. | |||||
| */ | |||||
| public ActionManager(EventBus bus) { | |||||
| _bus = bus; | |||||
| // Configure the set of actions. | |||||
| String toTok = _resources.getString("actions"); | |||||
| StringTokenizer tok = new StringTokenizer(toTok, ", "); | |||||
| _actionIDs = new String[tok.countTokens()]; | |||||
| for(int i = 0; i < _actionIDs.length; i++) { | |||||
| _actionIDs[i] = tok.nextToken(); | |||||
| _actions.put(_actionIDs[i], new AntAction(_actionIDs[i])); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Create a menubar for the application based on the configuration file. | |||||
| * | |||||
| * @return Menubar. | |||||
| */ | |||||
| public JMenuBar createMenuBar() { | |||||
| JMenuBar retval = new JMenuBar(); | |||||
| Map menus = new HashMap(); | |||||
| String toTok = _resources.getString("menus"); | |||||
| StringTokenizer tok = new StringTokenizer(toTok, ", "); | |||||
| while(tok.hasMoreTokens()) { | |||||
| String name = tok.nextToken(); | |||||
| JMenu menu = new JMenu(name); | |||||
| retval.add(menu); | |||||
| menus.put(name, menu); | |||||
| } | |||||
| for(int i = 0; i < _actionIDs.length; i++) { | |||||
| AntAction action = (AntAction) _actions.get(_actionIDs[i]); | |||||
| String parent = action.getParentMenuName(); | |||||
| if(parent != null) { | |||||
| JMenu menu = (JMenu) menus.get(parent); | |||||
| // A well configured file shouldn't cause this, | |||||
| // but be safe anyway. | |||||
| if(menu == null) { | |||||
| menu = new JMenu(parent); | |||||
| retval.add(menu); | |||||
| menus.put(parent, menu); | |||||
| } | |||||
| if(action.isPreceededBySeparator()) { | |||||
| menu.addSeparator(); | |||||
| } | |||||
| JMenuItem item = menu.add(action); | |||||
| addNiceStuff(item, action); | |||||
| } | |||||
| } | |||||
| return retval; | |||||
| } | |||||
| /** | |||||
| * Create a tool bar based on the current configuration. | |||||
| * | |||||
| * @return Toolbar ready for action. | |||||
| */ | |||||
| public JToolBar createToolBar() { | |||||
| JToolBar retval = new JToolBar(); | |||||
| for(int i = 0; i < _actionIDs.length; i++) { | |||||
| AntAction action = (AntAction) _actions.get(_actionIDs[i]); | |||||
| // If it has an icon, then we add it to the toolbar. | |||||
| if(action.getIcon() != null) { | |||||
| if(action.isPreceededBySeparator()) { | |||||
| retval.addSeparator(); | |||||
| } | |||||
| JButton button = retval.add(action); | |||||
| button.setText(null); | |||||
| addNiceStuff(button, action); | |||||
| } | |||||
| } | |||||
| return retval; | |||||
| } | |||||
| private void addNiceStuff(AbstractButton button, AntAction action) { | |||||
| // Set the action command so that it is consitent | |||||
| // no matter what language the display is in. | |||||
| button.setActionCommand(action.getID()); | |||||
| String tip = action.getShortDescription(); | |||||
| if(tip != null) { | |||||
| button.setToolTipText(tip); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Convenience method for looking put a resource with the name | |||||
| * "id.key". Will return null if the resource doesn't exist. | |||||
| * | |||||
| * @param id Action id. | |||||
| * @param key Key name for the action. | |||||
| * @return String resource for composite key, or null if not found. | |||||
| */ | |||||
| private String getString(String id, String key) { | |||||
| String retval = null; | |||||
| try { | |||||
| retval = _resources.getString(id + "." + key); | |||||
| } | |||||
| catch(MissingResourceException ex) { | |||||
| // Its ok to be missing a resource name... | |||||
| // Too bad the API throws an exception in this case. | |||||
| } | |||||
| return retval; | |||||
| } | |||||
| /** Class representing an action in the Antidote application. */ | |||||
| private class AntAction extends AbstractAction { | |||||
| /** Property name for the parent menu item. */ | |||||
| public static final String PARENT_MENU_NAME = "parentMenuName"; | |||||
| public static final String SEPARATOR = "separator"; | |||||
| /** Unique id. */ | |||||
| private String _id = null; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param id Unique id for the action | |||||
| */ | |||||
| public AntAction(String id) { | |||||
| _id = id; | |||||
| putValue(NAME, getString(id, "name")); | |||||
| putValue(SHORT_DESCRIPTION, getString(id, "shortDescription")); | |||||
| putValue(PARENT_MENU_NAME, getString(id, "parentMenuName")); | |||||
| putValue(SEPARATOR, getString(id, "separator")); | |||||
| String iconName = getString(id, "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(); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Unique id for the action. | |||||
| * | |||||
| * @return Action id. | |||||
| */ | |||||
| public String getID() { | |||||
| return _id; | |||||
| } | |||||
| /** | |||||
| * Get the name of the menu in the menu bar that this action shoul | |||||
| * appear under. | |||||
| * | |||||
| * @return Menu to appear under, or null if not a menu action. | |||||
| */ | |||||
| public String getParentMenuName() { | |||||
| return (String) getValue(PARENT_MENU_NAME); | |||||
| } | |||||
| /** | |||||
| * Get the localized name for the action. | |||||
| * | |||||
| * @return Name | |||||
| */ | |||||
| public String getName() { | |||||
| return (String) getValue(NAME); | |||||
| } | |||||
| /** | |||||
| * Get the short description. Used in tool tips. | |||||
| * | |||||
| * @return Short description. | |||||
| */ | |||||
| public String getShortDescription() { | |||||
| return (String) getValue(SHORT_DESCRIPTION); | |||||
| } | |||||
| /** | |||||
| * Determine if a separator should appear before the action. | |||||
| * | |||||
| * @return True if add separator, false otherwise. | |||||
| */ | |||||
| public boolean isPreceededBySeparator() { | |||||
| return Boolean.valueOf( | |||||
| String.valueOf(getValue(SEPARATOR))).booleanValue(); | |||||
| } | |||||
| /** | |||||
| * Get the icon. | |||||
| * | |||||
| * @return Icon for action, or null if none. | |||||
| */ | |||||
| public Icon getIcon() { | |||||
| return (Icon) getValue(SMALL_ICON); | |||||
| } | |||||
| /** | |||||
| * Pass the action on to the EventBus. | |||||
| * | |||||
| * @param e Event to forward. | |||||
| */ | |||||
| public void actionPerformed(ActionEvent e) { | |||||
| _bus.postEvent(e); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -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; | |||||
| import javax.swing.JPanel; | |||||
| /** | |||||
| * Abstract base class for an "editor", which is really anything that | |||||
| * can send or receive events, or edit or view the model. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public abstract class AntEditor extends JPanel { | |||||
| /** Parameters to the Contructor. Used for loading | |||||
| classes through reflection. */ | |||||
| public static final Class[] CTOR_PARAMS = { AppContext.class }; | |||||
| /** The application context. */ | |||||
| private AppContext _context = null; | |||||
| /** | |||||
| * Standard constuctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| protected AntEditor(AppContext context) { | |||||
| _context = context; | |||||
| } | |||||
| /** | |||||
| * Get the application context. | |||||
| * | |||||
| * @return Application context. | |||||
| */ | |||||
| public AppContext getAppContext() { | |||||
| return _context; | |||||
| } | |||||
| /** | |||||
| * Get the name of the editor. | |||||
| * | |||||
| * @return Editor's name. | |||||
| */ | |||||
| public String getName() { | |||||
| return _context.getResources().getString(getClass(), "name"); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,145 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.*; | |||||
| import java.awt.BorderLayout; | |||||
| import java.awt.Dimension; | |||||
| import java.lang.reflect.Constructor; | |||||
| /** | |||||
| * The root class for the Ant GUI. Assembles all the graphical components | |||||
| * based on the configuration files. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class Antidote extends JPanel { | |||||
| /** Logging console. */ | |||||
| private Console _console = null; | |||||
| /** Source of application state data. */ | |||||
| private AppContext _context = null; | |||||
| /** | |||||
| * Default ctor. | |||||
| * | |||||
| */ | |||||
| public Antidote(AppContext context) { | |||||
| setLayout(new BorderLayout()); | |||||
| _context = context; | |||||
| _console = new Console(_context); | |||||
| // Add the various editors/views to the editing area. | |||||
| JSplitPane splitter = new JSplitPane(); | |||||
| splitter.add(JSplitPane.LEFT, populateEditors("left")); | |||||
| splitter.add(JSplitPane.RIGHT, populateEditors("right")); | |||||
| add(BorderLayout.CENTER, splitter); | |||||
| add(BorderLayout.SOUTH, _console); | |||||
| setPreferredSize(new Dimension(640, 480)); | |||||
| } | |||||
| /** | |||||
| * Instantiate the configured editors. | |||||
| * | |||||
| * @return Component containing the editor(s). | |||||
| */ | |||||
| private JComponent populateEditors(String prefix) { | |||||
| String[] classNames = _context.getResources(). | |||||
| getStringArray(getClass(), prefix + ".editors"); | |||||
| AntEditor[] editors = new AntEditor[classNames.length]; | |||||
| for(int i = 0; i < classNames.length; i++) { | |||||
| try { | |||||
| Class editorType = Class.forName(classNames[i]); | |||||
| Constructor ctor = | |||||
| editorType.getConstructor(AntEditor.CTOR_PARAMS); | |||||
| editors[i] = | |||||
| (AntEditor) ctor.newInstance(new Object[] { _context }); | |||||
| } | |||||
| catch(Exception ex) { | |||||
| // XXX log me. | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| } | |||||
| if(editors.length == 1) { | |||||
| return editors[0]; | |||||
| } | |||||
| else if(editors.length > 1) { | |||||
| JTabbedPane tabbed = new JTabbedPane(JTabbedPane.BOTTOM); | |||||
| for(int i = 0; i < editors.length; i++) { | |||||
| tabbed.addTab(editors[i].getName(), editors[i]); | |||||
| } | |||||
| return tabbed; | |||||
| } | |||||
| else { | |||||
| return new JLabel("I shouldn't be here..."); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,146 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.event.*; | |||||
| import java.awt.Frame; | |||||
| /** | |||||
| * A container for the state information for the application. Provides | |||||
| * a centeralized place to gain access to resources and data. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class AppContext { | |||||
| /** Event bus. */ | |||||
| private EventBus _eventBus = new EventBus(); | |||||
| /** Application resources. */ | |||||
| private ResourceManager _resources = new ResourceManager(); | |||||
| /** Application actions. */ | |||||
| private ActionManager _actions = new ActionManager(_eventBus); | |||||
| /** Parent frame used in various operations. XXX what do we do | |||||
| * in the applet context. */ | |||||
| private Frame _parentFrame = null; | |||||
| /** The current data model. */ | |||||
| private ProjectProxy _project = null; | |||||
| public AppContext(Frame parent) { | |||||
| _parentFrame = parent; | |||||
| } | |||||
| /** | |||||
| * Get the localized resources. | |||||
| * | |||||
| * @return Resources. | |||||
| */ | |||||
| public ResourceManager getResources() { | |||||
| return _resources; | |||||
| } | |||||
| /** | |||||
| * Get the action manager. | |||||
| * | |||||
| * @return Action manager. | |||||
| */ | |||||
| public ActionManager getActions() { | |||||
| return _actions; | |||||
| } | |||||
| /** | |||||
| * Get the event bus. | |||||
| * | |||||
| * @return EventBus. | |||||
| */ | |||||
| public EventBus getEventBus() { | |||||
| return _eventBus; | |||||
| } | |||||
| /** | |||||
| * Get the parent frame. XXX may change... | |||||
| * | |||||
| * @return Parent frame. | |||||
| */ | |||||
| public Frame getParentFrame() { | |||||
| return _parentFrame; | |||||
| } | |||||
| /** | |||||
| * Get the current project. | |||||
| * | |||||
| * @return Current project. NUll if no active project. | |||||
| */ | |||||
| public ProjectProxy getProject() { | |||||
| return _project; | |||||
| } | |||||
| /** | |||||
| * Set the current project. | |||||
| * | |||||
| * @param project Next project to operate on. May be null for the "close" | |||||
| * action. | |||||
| */ | |||||
| public void setProject(ProjectProxy project) { | |||||
| if(_project == null || !_project.equals(project)) { | |||||
| _project = project; | |||||
| getEventBus().postEvent(new NewProjectEvent(this)); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,84 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.*; | |||||
| import java.awt.GridLayout; | |||||
| import java.awt.Dimension; | |||||
| /** | |||||
| * Logging console display. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class Console extends JPanel { | |||||
| private AppContext _context = null; | |||||
| private JTextPane _text = null; | |||||
| public Console(AppContext context) { | |||||
| setLayout(new GridLayout(1,1)); | |||||
| _context = context; | |||||
| _text = new JTextPane(); | |||||
| _text.setEditable(false); | |||||
| JScrollPane scroller = new JScrollPane(_text); | |||||
| add(scroller); | |||||
| _text.setText( | |||||
| "This is the console area. \nLots of stuff to see here..."); | |||||
| setPreferredSize(new Dimension(200, 40)); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,176 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.event.*; | |||||
| import org.apache.tools.ant.gui.command.*; | |||||
| import java.util.EventObject; | |||||
| import java.awt.event.ActionEvent; | |||||
| import javax.swing.JFrame; | |||||
| /** | |||||
| * The purpose of this class is to watch for events that require some sort | |||||
| * of action, like opening a file. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| class EventResponder { | |||||
| /** The application context. */ | |||||
| private AppContext _context = null; | |||||
| /** | |||||
| * Standard constructor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public EventResponder(AppContext context) { | |||||
| _context = context; | |||||
| // XXX This needs to be changed, along with the event bus, | |||||
| // to allow the EventResponder to be the last listener | |||||
| // to receive the event. This will allow the addition | |||||
| // of event filters to yank an event out of the bus, sort of | |||||
| // like an interrupt level. | |||||
| _context.getEventBus().addMember( | |||||
| EventBus.RESPONDING, new ActionResponder()); | |||||
| _context.getEventBus().addMember( | |||||
| EventBus.RESPONDING, new AntResponder()); | |||||
| } | |||||
| /** Handler for bus events. */ | |||||
| private class ActionResponder implements BusMember { | |||||
| private final ActionFilter _filter = new ActionFilter(); | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| public void eventPosted(EventObject event) { | |||||
| 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(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 { | |||||
| // XXX log me. | |||||
| System.err.println("Unhandled action: " + command); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** Filter for action events. */ | |||||
| private static class ActionFilter implements BusFilter { | |||||
| public boolean accept(EventObject event) { | |||||
| return event instanceof ActionEvent; | |||||
| } | |||||
| } | |||||
| /** Handler for bus events. */ | |||||
| private class AntResponder implements BusMember { | |||||
| private final AntFilter _filter = new AntFilter(); | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| public void eventPosted(EventObject event) { | |||||
| AntEvent e = (AntEvent) event; | |||||
| Command cmd = e.createDefaultCmd(); | |||||
| cmd.execute(); | |||||
| } | |||||
| } | |||||
| /** Filter for ant events. */ | |||||
| private static class AntFilter implements BusFilter { | |||||
| public boolean accept(EventObject event) { | |||||
| return event instanceof AntEvent; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,95 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.*; | |||||
| import java.awt.BorderLayout; | |||||
| /** | |||||
| * Launch point for the Antidote GUI. Configurs it as an application. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class Main { | |||||
| /** | |||||
| * Application start. | |||||
| * | |||||
| * @param args TBD | |||||
| */ | |||||
| public static void main(String[] args) { | |||||
| XMLHelper.init(); | |||||
| try { | |||||
| JFrame f = new JFrame("Antidote"); | |||||
| AppContext context = new AppContext(f); | |||||
| EventResponder resp = new EventResponder(context); | |||||
| Antidote gui = new Antidote(context); | |||||
| f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/); | |||||
| f.setJMenuBar(context.getActions().createMenuBar()); | |||||
| f.getContentPane().add(BorderLayout.CENTER, gui); | |||||
| f.getContentPane().add(BorderLayout.NORTH, | |||||
| context.getActions().createToolBar()); | |||||
| f.pack(); | |||||
| f.setVisible(true); | |||||
| // Hack around linux window placement annoyance. | |||||
| f.setLocation(100, 100); | |||||
| } | |||||
| catch(Exception ex) { | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,94 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.Project; | |||||
| import javax.swing.text.DefaultStyledDocument; | |||||
| import java.io.*; | |||||
| /** | |||||
| * Provides a Document view on the Project XML source. | |||||
| * NB: This class currently looks nothing like it should. | |||||
| * Rather than just rendering a copy of the build file contents, | |||||
| * this class should implement a true document model, representing | |||||
| * the true XML sturcture of the build file. This is just a temporary | |||||
| * implementation. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class ProjectDocument extends DefaultStyledDocument { | |||||
| // This is what the real constructor needs to look like... | |||||
| //public ProjectDocument(Project project) { | |||||
| //} | |||||
| public ProjectDocument(File f) { | |||||
| // XXX stubbed method. will go away. | |||||
| try { | |||||
| // XXX hack hack hack.... | |||||
| Reader reader = new BufferedReader(new FileReader(f)); | |||||
| char[] buf = new char[1024]; | |||||
| int num = 0; | |||||
| while((num = reader.read(buf)) >= 0) { | |||||
| insertString(getLength(), new String(buf, 0, num), null); | |||||
| } | |||||
| } | |||||
| catch(Exception ex) { | |||||
| // XXX log me. | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,139 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.event.*; | |||||
| import javax.swing.*; | |||||
| import java.awt.GridLayout; | |||||
| import java.awt.Dimension; | |||||
| import java.util.EventObject; | |||||
| /** | |||||
| * AntEditor for displaying the project target in a | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| class ProjectNavigator extends AntEditor { | |||||
| /** Navigation via a tree widget. */ | |||||
| private JTree _tree = null; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public ProjectNavigator(AppContext context) { | |||||
| super(context); | |||||
| context.getEventBus().addMember(EventBus.MONITORING, new Handler()); | |||||
| setLayout(new GridLayout(1,1)); | |||||
| _tree = new JTree(); | |||||
| _tree.setModel(null); | |||||
| JScrollPane scroller = new JScrollPane(_tree); | |||||
| add(scroller); | |||||
| setPreferredSize(new Dimension(100, 100)); | |||||
| } | |||||
| /** Class for handling project events. */ | |||||
| private class Handler implements BusMember { | |||||
| private final Filter _filter = new Filter(); | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| public void eventPosted(EventObject event) { | |||||
| ProjectProxy project = getAppContext().getProject(); | |||||
| if(project == null) { | |||||
| // The project has been closed. | |||||
| // XXX this needs to be tested against | |||||
| // different version of Swing... | |||||
| _tree.setModel(null); | |||||
| } | |||||
| else { | |||||
| _tree.setModel(project.getTreeModel()); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** Class providing filtering for project events. */ | |||||
| private static class Filter implements BusFilter { | |||||
| /** | |||||
| * Determines if the given event should be accepted. | |||||
| * | |||||
| * @param event Event to test. | |||||
| * @return True if event should be given to BusMember, false otherwise. | |||||
| */ | |||||
| public boolean accept(EventObject event) { | |||||
| return event instanceof NewProjectEvent; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,149 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.ProjectHelper; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import javax.swing.tree.TreeModel; | |||||
| import javax.swing.text.Document; | |||||
| /** | |||||
| * This class provides the gateway interface to the data model for | |||||
| * the application. The translation between the Ant datamodel, | |||||
| * (or other external datamodel) occurs. This class also provides various | |||||
| * views into the data model, such as TreeModel, Documenet, etc. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class ProjectProxy { | |||||
| /** The file where the project was last saved. */ | |||||
| private File _file = null; | |||||
| /** The real Ant Project instance. */ | |||||
| private Project _project = null; | |||||
| /** | |||||
| * Default constructor. NB: right now it is private, but | |||||
| * will be opened up once the gui supports creating new projects. | |||||
| * | |||||
| */ | |||||
| private ProjectProxy() { | |||||
| } | |||||
| /** | |||||
| * File loading ctor. | |||||
| * | |||||
| * @param file File containing build file to load. | |||||
| */ | |||||
| public ProjectProxy(File file) throws IOException { | |||||
| this(); | |||||
| _file = file; | |||||
| loadProject(); | |||||
| } | |||||
| private void loadProject() throws IOException { | |||||
| _project = new Project(); | |||||
| _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 replicated here. | |||||
| // XXX need to provide a way to pass in externally defined properties. | |||||
| // Perhaps define an external Antidote properties file. | |||||
| _project.setUserProperty("ant.file" , _file.getAbsolutePath()); | |||||
| ProjectHelper.configureProject(_project, _file); | |||||
| } | |||||
| /** | |||||
| * Get the file where the project is saved to. If the project | |||||
| * is a new one that has never been saved the this will return null. | |||||
| * | |||||
| * @return Project file, or null if not save yet. | |||||
| */ | |||||
| public File getFile() { | |||||
| return _file; | |||||
| } | |||||
| /** | |||||
| * Get the TreeModel perspective on the data. | |||||
| * | |||||
| * @return TreeModel view on project. | |||||
| */ | |||||
| public TreeModel getTreeModel() { | |||||
| if(_project != null) { | |||||
| return new ProjectTreeModel(_project); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| /** | |||||
| * Get the Document perspective on the data. | |||||
| * | |||||
| * @return Document view on project. | |||||
| */ | |||||
| public Document getDocument() { | |||||
| if(_project != null) { | |||||
| // This is what the call should look like | |||||
| //return new ProjectDocument(_project); | |||||
| return new ProjectDocument(_file); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,199 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.tree.TreeModel; | |||||
| import javax.swing.tree.TreePath; | |||||
| import javax.swing.event.TreeModelListener; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.Target; | |||||
| import java.util.*; | |||||
| /** | |||||
| * Provides a tree model view of the Project class. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon H.K. Fitch | |||||
| */ | |||||
| public class ProjectTreeModel implements TreeModel { | |||||
| private Project _project = null; | |||||
| private ProjectWrapper _wrapper = null; | |||||
| // XXX temp doesn't handle dynamic updates. | |||||
| /** Defines an ordering for the tasks. */ | |||||
| private List _targetOrdering = new ArrayList(); | |||||
| public ProjectTreeModel(Project project) { | |||||
| _project = project; | |||||
| _wrapper = new ProjectWrapper(); | |||||
| Enumeration enum = _project.getTargets().keys(); | |||||
| while(enum.hasMoreElements()) { | |||||
| _targetOrdering.add(enum.nextElement()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Returns the root of the tree. Returns null only if the tree has | |||||
| * no nodes. | |||||
| * | |||||
| * @return the root of the tree | |||||
| */ | |||||
| public Object getRoot() { | |||||
| return _wrapper; | |||||
| } | |||||
| /** | |||||
| * Returns the child of <I>parent</I> at index <I>index</I> in the parent's | |||||
| * child array. <I>parent</I> must be a node previously obtained from | |||||
| * this data source. This should not return null if <i>index</i> | |||||
| * is a valid index for <i>parent</i> (that is <i>index</i> >= 0 && | |||||
| * <i>index</i> < getChildCount(<i>parent</i>)). | |||||
| * | |||||
| * @param parent a node in the tree, obtained from this data source | |||||
| * @return the child of <I>parent</I> at index <I>index</I> | |||||
| */ | |||||
| public Object getChild(Object parent, int index) { | |||||
| if(parent != _wrapper) return null; | |||||
| Object name = _targetOrdering.get(index); | |||||
| return _project.getTargets().get(name); | |||||
| } | |||||
| /** | |||||
| * Returns the number of children of <I>parent</I>. Returns 0 if the node | |||||
| * is a leaf or if it has no children. <I>parent</I> must be a node | |||||
| * previously obtained from this data source. | |||||
| * | |||||
| * @param parent a node in the tree, obtained from this data source | |||||
| * @return the number of children of the node <I>parent</I> | |||||
| */ | |||||
| public int getChildCount(Object parent) { | |||||
| return parent == _wrapper ? _project.getTargets().size() : 0; | |||||
| } | |||||
| /** | |||||
| * Returns true if <I>node</I> is a leaf. It is possible for this method | |||||
| * to return false even if <I>node</I> has no children. A directory in a | |||||
| * filesystem, for example, may contain no files; the node representing | |||||
| * the directory is not a leaf, but it also has no children. | |||||
| * | |||||
| * @param node a node in the tree, obtained from this data source | |||||
| * @return true if <I>node</I> is a leaf | |||||
| */ | |||||
| public boolean isLeaf(Object node) { | |||||
| return node != _wrapper; | |||||
| } | |||||
| /** | |||||
| * Messaged when the user has altered the value for the item identified | |||||
| * by <I>path</I> to <I>newValue</I>. If <I>newValue</I> signifies | |||||
| * a truly new value the model should post a treeNodesChanged | |||||
| * event. | |||||
| * | |||||
| * @param path path to the node that the user has altered. | |||||
| * @param newValue the new value from the TreeCellEditor. | |||||
| */ | |||||
| public void valueForPathChanged(TreePath path, Object newValue) { | |||||
| System.out.println(path); | |||||
| } | |||||
| /** | |||||
| * Returns the index of child in parent. | |||||
| */ | |||||
| public int getIndexOfChild(Object parent, Object child) { | |||||
| return parent == _project ? | |||||
| _targetOrdering.indexOf(((Target)child).getName()) : -1; | |||||
| } | |||||
| /** | |||||
| * Adds a listener for the TreeModelEvent posted after the tree changes. | |||||
| * | |||||
| * @see #removeTreeModelListener | |||||
| * @param l the listener to add | |||||
| */ | |||||
| public void addTreeModelListener(TreeModelListener l) { | |||||
| } | |||||
| /** | |||||
| * Removes a listener previously added with <B>addTreeModelListener()</B>. | |||||
| * | |||||
| * @see #addTreeModelListener | |||||
| * @param l the listener to remove | |||||
| */ | |||||
| public void removeTreeModelListener(TreeModelListener l) { | |||||
| } | |||||
| /** | |||||
| * A wrapper around the Project class to provide different | |||||
| * toString behavior. XXX this is temporary until a custom | |||||
| * cell renderer is created. | |||||
| * | |||||
| */ | |||||
| private class ProjectWrapper { | |||||
| public String toString() { | |||||
| return _project.getName(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,69 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.*; | |||||
| /** | |||||
| * Stub for a property editor. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon H.K. Fitch | |||||
| */ | |||||
| class PropertyEditor extends AntEditor { | |||||
| public PropertyEditor(AppContext context) { | |||||
| super(context); | |||||
| add(new JLabel(getName())); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,146 @@ | |||||
| /* | |||||
| * 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; | |||||
| import java.util.*; | |||||
| import java.text.MessageFormat; | |||||
| /** | |||||
| * Singleton class for accessing various resources by the application. | |||||
| * Relies on the resource bundles for resource values. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon H.K. Fitch | |||||
| */ | |||||
| public class ResourceManager { | |||||
| private ResourceBundle _resources = | |||||
| ResourceBundle.getBundle( | |||||
| "org.apache.tools.ant.gui.resources.antidote"); | |||||
| /** | |||||
| * Get a string resource for the given class. | |||||
| * | |||||
| * @param clazz Class to get resource for. | |||||
| * @param name Name of the string resource. | |||||
| * @return String resource for the given class. | |||||
| */ | |||||
| public String getString(Class clazz, String name) { | |||||
| if(clazz == null || name == null) { | |||||
| return null; | |||||
| } | |||||
| return _resources.getString(getKey(clazz, name)); | |||||
| } | |||||
| /** | |||||
| * Get an array of string resources for the given class. | |||||
| * | |||||
| * @param clazz Class to get resource for. | |||||
| * @param name Name of the string resource. | |||||
| * @return Array of string resources for the given class. | |||||
| */ | |||||
| public String[] getStringArray(Class clazz, String name) { | |||||
| if(clazz == null || name == null) { | |||||
| return null; | |||||
| } | |||||
| String key = getKey(clazz, name); | |||||
| String toTok = null; | |||||
| try { | |||||
| toTok = _resources.getString(key); | |||||
| } | |||||
| catch(MissingResourceException ex) { | |||||
| // Ignore as we are doing a cascading lookup. | |||||
| } | |||||
| if(toTok == null) { | |||||
| return _resources.getStringArray(key); | |||||
| } | |||||
| else { | |||||
| StringTokenizer tok = new StringTokenizer(toTok, ", "); | |||||
| String[] retval = new String[tok.countTokens()]; | |||||
| for(int i = 0; i < retval.length; i++) { | |||||
| retval[i] = tok.nextToken(); | |||||
| } | |||||
| return retval; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Generate a composit key from the given class and key name. | |||||
| * | |||||
| * @param clazz Class to find resource for. | |||||
| * @param name Name of the resource. | |||||
| * @return Composite key. | |||||
| */ | |||||
| private String getKey(Class clazz, String name) { | |||||
| return clazz.getName() + "." + name; | |||||
| } | |||||
| /** | |||||
| * Generate a localized message using the given set of arguments to | |||||
| * format the message with. | |||||
| * | |||||
| * @param clazz Class to get message resource for. | |||||
| * @param name | |||||
| * @param arguments | |||||
| * @return | |||||
| */ | |||||
| public String getMessage(Class clazz, String name, Object[] arguments) { | |||||
| String format = getString(clazz, name); | |||||
| return MessageFormat.format(format, arguments); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,127 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.event.*; | |||||
| import java.util.EventObject; | |||||
| import javax.swing.*; | |||||
| import javax.swing.text.PlainDocument; | |||||
| import java.awt.GridLayout; | |||||
| import java.awt.Font; | |||||
| /* | |||||
| * AntEditor for the XML source. XXX Stubbed version. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| class SourceEditor extends AntEditor { | |||||
| private JEditorPane _text = null; | |||||
| public SourceEditor(AppContext context) { | |||||
| super(context); | |||||
| context.getEventBus().addMember(EventBus.MONITORING, new Handler()); | |||||
| setLayout(new GridLayout(1,1)); | |||||
| _text = new JEditorPane(); | |||||
| _text.setEditable(false); | |||||
| // _text.setFont(new Font("Monospaced", 10, Font.PLAIN)); | |||||
| JScrollPane scroller = new JScrollPane(_text); | |||||
| add(scroller); | |||||
| } | |||||
| /** Class for handling project events. */ | |||||
| private class Handler implements BusMember { | |||||
| private final Filter _filter = new Filter(); | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| public void eventPosted(EventObject event) { | |||||
| ProjectProxy project = getAppContext().getProject(); | |||||
| _text.setDocument(project == null ? new PlainDocument() : | |||||
| project.getDocument()); | |||||
| } | |||||
| } | |||||
| /** Class providing filtering for project events. */ | |||||
| private static class Filter implements BusFilter { | |||||
| /** | |||||
| * Determines if the given event should be accepted. | |||||
| * | |||||
| * @param event Event to test. | |||||
| * @return True if event should be given to BusMember, false otherwise. | |||||
| */ | |||||
| public boolean accept(EventObject event) { | |||||
| return event instanceof NewProjectEvent; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,102 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.filechooser.FileFilter; | |||||
| import java.io.File; | |||||
| /** | |||||
| * FileFilter for showing only XML files. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class XMLFileFilter extends FileFilter { | |||||
| /** Text description of filter. */ | |||||
| private String _description = null; | |||||
| /** | |||||
| * Standard constructor. | |||||
| * | |||||
| * @param resources Access to text resources. | |||||
| */ | |||||
| public XMLFileFilter(ResourceManager resources) { | |||||
| _description = resources.getString(getClass(), "description"); | |||||
| } | |||||
| /** | |||||
| * Accept files that end with ".xml". | |||||
| * | |||||
| * @param f File to test. | |||||
| * @return True if accepted, false otherwise. | |||||
| */ | |||||
| public boolean accept(File f) { | |||||
| if(f.isDirectory()) return true; | |||||
| String name = f.getName().toLowerCase(); | |||||
| return name.endsWith(".xml"); | |||||
| } | |||||
| /** | |||||
| * Human readable description of filter. | |||||
| * | |||||
| * @return Description. | |||||
| */ | |||||
| public String getDescription() { | |||||
| return _description; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,74 @@ | |||||
| /* | |||||
| * 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; | |||||
| /** | |||||
| * Placeholder for XML related duties. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class XMLHelper { | |||||
| public static void init() { | |||||
| try { | |||||
| Class.forName("javax.xml.parsers.SAXParserFactory"); | |||||
| } | |||||
| catch(Exception ex) { | |||||
| System.err.println("No JAXP compliant XML parser found. " + | |||||
| "See http://java.sun.com/xml for the\n" + | |||||
| "reference implementation."); | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,88 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.About; | |||||
| import java.awt.Window; | |||||
| import java.awt.event.WindowEvent; | |||||
| /** | |||||
| * Handler for the About command. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @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; | |||||
| /** | |||||
| * Standard constructor. | |||||
| * | |||||
| * @param window | |||||
| */ | |||||
| public AboutCmd(AppContext context) { | |||||
| _context = context; | |||||
| } | |||||
| /** | |||||
| * Show the about box. | |||||
| * | |||||
| */ | |||||
| public void execute() { | |||||
| new About(_context); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,87 @@ | |||||
| /* | |||||
| * 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; | |||||
| /** | |||||
| * Handler for the close command. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @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; | |||||
| /** | |||||
| * Standard constructor. | |||||
| * | |||||
| * @param window | |||||
| */ | |||||
| public CloseCmd(AppContext context) { | |||||
| _context = context; | |||||
| } | |||||
| /** | |||||
| * Send a close event to the parent window. | |||||
| * | |||||
| */ | |||||
| public void execute() { | |||||
| _context.setProject(null); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,64 @@ | |||||
| /* | |||||
| * 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; | |||||
| /** | |||||
| * Interface for commands. Details TBD | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public interface Command { | |||||
| public void execute(); | |||||
| } | |||||
| @@ -0,0 +1,107 @@ | |||||
| /* | |||||
| * 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; | |||||
| import javax.swing.JOptionPane; | |||||
| /** | |||||
| * Command for displaying an arbitrary error message to the user. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon H.K. Fitch | |||||
| */ | |||||
| public class DisplayErrorCmd implements Command { | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| /** Text description of error. */ | |||||
| private String _message = null; | |||||
| /** Throwable associated with the error. */ | |||||
| private Throwable _ex = null; | |||||
| /** | |||||
| * Standard constuctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param message Error message. | |||||
| * @param ex Throwable assocated with error. | |||||
| */ | |||||
| public DisplayErrorCmd(AppContext context, String message, Throwable ex) { | |||||
| _context = context; | |||||
| _message = message; | |||||
| _ex = ex; | |||||
| } | |||||
| /** | |||||
| * No Throwable constructor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param message Error message. | |||||
| */ | |||||
| public DisplayErrorCmd(AppContext context, String message) { | |||||
| this(context, message, null); | |||||
| } | |||||
| /** | |||||
| * Display the error. | |||||
| * | |||||
| */ | |||||
| public void execute() { | |||||
| // XXX change this so that exceptions can be optionally shown. | |||||
| String title = _context.getResources().getString(getClass(), "title"); | |||||
| JOptionPane.showMessageDialog( | |||||
| _context.getParentFrame(), _message, | |||||
| title, JOptionPane.ERROR_MESSAGE); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,92 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.util.WindowUtils; | |||||
| import java.awt.Window; | |||||
| import java.awt.event.WindowEvent; | |||||
| /** | |||||
| * Handler for an exit command . | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @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; | |||||
| /** | |||||
| * Standard constructor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public ExitCmd(AppContext context) { | |||||
| _window = context.getParentFrame(); | |||||
| } | |||||
| /** | |||||
| * Send a close event to the parent window. | |||||
| * | |||||
| */ | |||||
| public void execute() { | |||||
| // Manually send a window close event to the window. | |||||
| WindowUtils.sendCloseEvent(_window); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,111 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.ProjectProxy; | |||||
| import org.apache.tools.ant.gui.event.ErrorEvent; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| /** | |||||
| * Command for reading in a build file and initializing the data model. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class LoadFileCmd implements Command { | |||||
| /** The application context */ | |||||
| private AppContext _context = null; | |||||
| /** The file to load. */ | |||||
| private File _file = null; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param file The file to load. | |||||
| */ | |||||
| public LoadFileCmd(AppContext context, File file) { | |||||
| _context = context; | |||||
| _file = file; | |||||
| } | |||||
| /** | |||||
| * Open the file and load it. | |||||
| * | |||||
| */ | |||||
| public void execute() { | |||||
| if(!_file.exists()) { | |||||
| String message = _context.getResources().getMessage( | |||||
| getClass(), "noFile", new Object[] { _file.toString() }); | |||||
| _context.getEventBus(). | |||||
| postEvent(new ErrorEvent(_context, message)); | |||||
| } | |||||
| else { | |||||
| try { | |||||
| ProjectProxy project = new ProjectProxy(_file); | |||||
| _context.setProject(project); | |||||
| } | |||||
| catch(IOException ex) { | |||||
| String message = _context.getResources().getMessage( | |||||
| getClass(), "loadError", | |||||
| new Object[] { _file.toString() }); | |||||
| _context.getEventBus(). | |||||
| postEvent(new ErrorEvent(_context, message)); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,68 @@ | |||||
| /* | |||||
| * 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; | |||||
| /** | |||||
| * NoOp command. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class NoOpCmd implements Command { | |||||
| /** | |||||
| * Successfully do nothing. | |||||
| * | |||||
| */ | |||||
| public void execute() {} | |||||
| } | |||||
| @@ -0,0 +1,106 @@ | |||||
| /* | |||||
| * 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; | |||||
| import org.apache.tools.ant.gui.event.OpenRequestEvent; | |||||
| import org.apache.tools.ant.gui.XMLFileFilter; | |||||
| import javax.swing.JFileChooser; | |||||
| import javax.swing.filechooser.FileFilter; | |||||
| import java.io.File; | |||||
| /** | |||||
| * Command to execute the opening of a file. A dialog is presented to the | |||||
| * user for selecting a build file to open. If a file is selected then an | |||||
| * OpenRequestEvent is posted. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @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 file.s */ | |||||
| private FileFilter _filter = null; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| */ | |||||
| public OpenCmd(AppContext context) { | |||||
| _context = context; | |||||
| _filter = new XMLFileFilter(_context.getResources()); | |||||
| } | |||||
| /** | |||||
| * 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 execute() { | |||||
| // XXX need to set chooser text based on ResourceManager values. | |||||
| JFileChooser chooser = new JFileChooser(); | |||||
| chooser.addChoosableFileFilter(_filter); | |||||
| int val = chooser.showOpenDialog(_context.getParentFrame()); | |||||
| if(val == JFileChooser.APPROVE_OPTION) { | |||||
| File selected = chooser.getSelectedFile(); | |||||
| _context.getEventBus().postEvent( | |||||
| new OpenRequestEvent(_context, selected)); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,113 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import org.apache.tools.ant.gui.command.Command; | |||||
| import org.apache.tools.ant.gui.AppContext; | |||||
| import java.util.EventObject; | |||||
| /** | |||||
| * Base class for all Ant specific events. Details TBD. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public abstract class AntEvent extends EventObject { | |||||
| /** Flag indicating that the event has been cancelled. */ | |||||
| private boolean _cancelled = false; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context application context. | |||||
| */ | |||||
| protected AntEvent(AppContext context) { | |||||
| super(context); | |||||
| } | |||||
| /** | |||||
| * Get the application context. | |||||
| * | |||||
| * @return Application context. | |||||
| */ | |||||
| protected AppContext getAppContext() { | |||||
| return (AppContext) getSource(); | |||||
| } | |||||
| /** | |||||
| * Determine if the event has been cancelled. | |||||
| * | |||||
| * @return True if cancelled, false otherwise. | |||||
| */ | |||||
| public boolean isCancelled() { | |||||
| return _cancelled; | |||||
| } | |||||
| /** | |||||
| * Tag the event as being canceled. | |||||
| * | |||||
| */ | |||||
| public void cancel() { | |||||
| _cancelled = true; | |||||
| } | |||||
| /** | |||||
| * Create the appropriate default response command to this event. | |||||
| * | |||||
| * @return Command representing an appropriate response to this event. | |||||
| */ | |||||
| public abstract Command createDefaultCmd(); | |||||
| } | |||||
| @@ -0,0 +1,73 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import java.util.EventObject; | |||||
| /** | |||||
| * Interace for determining whether an event should be given to a BusMember | |||||
| * instance. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public interface BusFilter { | |||||
| /** | |||||
| * Determines if the given event should be accepted. | |||||
| * | |||||
| * @param event Event to test. | |||||
| * @return True if event should be given to BusMember, false otherwise. | |||||
| */ | |||||
| public boolean accept(EventObject event); | |||||
| } | |||||
| @@ -0,0 +1,80 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import java.util.EventObject; | |||||
| /** | |||||
| * Interface for classes that want to be a member of the EventBus. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public interface BusMember { | |||||
| /** | |||||
| * Get the filter to that is used to determine if an event should | |||||
| * to to the member. | |||||
| * | |||||
| * @return Filter to use. | |||||
| */ | |||||
| public BusFilter getBusFilter(); | |||||
| /** | |||||
| * Called when an event is to be posed to the member. | |||||
| * | |||||
| * @param event Event to post. | |||||
| */ | |||||
| public void eventPosted(EventObject event); | |||||
| } | |||||
| @@ -0,0 +1,133 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import org.apache.tools.ant.gui.AppContext; | |||||
| import org.apache.tools.ant.gui.command.DisplayErrorCmd; | |||||
| import org.apache.tools.ant.gui.command.Command; | |||||
| import org.apache.tools.ant.gui.util.StackFrame; | |||||
| /** | |||||
| * Event fired whenever there is an error of any sort. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class ErrorEvent extends AntEvent { | |||||
| /** Text description of error. */ | |||||
| private String _message = null; | |||||
| /** Throwable associated with the error. */ | |||||
| private Throwable _ex = null; | |||||
| /** | |||||
| * Standard constructor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param message Message about the error. | |||||
| * @param ex Throwable associated with the error. | |||||
| */ | |||||
| public ErrorEvent(AppContext context, String message, Throwable ex) { | |||||
| super(context); | |||||
| _message = message; | |||||
| _ex = ex; | |||||
| } | |||||
| /** | |||||
| * Message centric constructor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param message Message to display. | |||||
| */ | |||||
| public ErrorEvent(AppContext context, String message) { | |||||
| this(context, message, null); | |||||
| } | |||||
| /** | |||||
| * Throwable centric constructor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param ex Throwable behind the error. | |||||
| */ | |||||
| public ErrorEvent(AppContext context, Throwable ex) { | |||||
| this(context, ex.getMessage(), ex); | |||||
| } | |||||
| /** | |||||
| * Create the appropriate response command to this event. | |||||
| * | |||||
| * @return Command representing an appropriate response to this event. | |||||
| */ | |||||
| public Command createDefaultCmd() { | |||||
| return new DisplayErrorCmd(getAppContext(), _message, _ex); | |||||
| } | |||||
| /** | |||||
| * Create human readable version of this. | |||||
| * | |||||
| * @return String representation.a | |||||
| */ | |||||
| public String toString() { | |||||
| StringBuffer buf = new StringBuffer("Error: "); | |||||
| if(_message != null) { | |||||
| buf.append(_message); | |||||
| buf.append('\n'); | |||||
| } | |||||
| if(_ex != null) { | |||||
| buf.append(StackFrame.toString(_ex)); | |||||
| } | |||||
| return buf.toString(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,170 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import java.util.*; | |||||
| /** | |||||
| * An event "bus" providing a centralized place for posting | |||||
| * and recieving generic application events. To receive events a class must | |||||
| * implement the "BusMember" interface. When registering as a member, an | |||||
| * "interrupt level" is provided, which specifies a relative ordering level | |||||
| * that the member wishes to receive events for. By convention, a member | |||||
| * can be registered at the MONITORING, VETOING, or RESPONDING levels, which | |||||
| * correspond to recieving events first to receiving events last. If a member | |||||
| * receives an event, the event is of type AntEvent, and the member calls the | |||||
| * AntEvent.cancel() method, the event is not then delivered | |||||
| * to subsequent members. Members also indicate interest in an event | |||||
| * by providing an instance of the BusFilter interface.<BR> | |||||
| * | |||||
| * NB: This class is overly simple right now, but will eventually | |||||
| * be expanded to do better event filtering, interrupt levels, etc. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class EventBus { | |||||
| /** The default "monitoring" interrupt level, used by members who | |||||
| * are only listeners/monitors of events. */ | |||||
| public static final int MONITORING = 1; | |||||
| /** The default "vetoing" interrupt level, used by bus members | |||||
| * whose role is to veto request events or otherwise handle an | |||||
| * event before it is processed by the default handler. */ | |||||
| public static final int VETOING = 5; | |||||
| /** The default "responding" interrupt level, for members who service | |||||
| * events in a default manner. */ | |||||
| public static final int RESPONDING = 10; | |||||
| /** The maximum valid interrupt value. */ | |||||
| public static final int MAX_INTERRUPT = 15; | |||||
| /** Set of bus members, with a list for each interrupt level. */ | |||||
| private List[] _memberSet = new List[MAX_INTERRUPT]; | |||||
| /** | |||||
| * Default ctor. | |||||
| * | |||||
| */ | |||||
| public EventBus() { | |||||
| } | |||||
| /** | |||||
| * Add a member to the bus. | |||||
| * | |||||
| * @param intLevel Interrupt level. | |||||
| * @param member Member to add. | |||||
| */ | |||||
| public void addMember(int intLevel, BusMember member) { | |||||
| if(intLevel < 1 || intLevel > MAX_INTERRUPT) { | |||||
| throw new IllegalArgumentException( | |||||
| "Invalid interrupt level: " + intLevel); | |||||
| } | |||||
| synchronized(_memberSet) { | |||||
| List list = _memberSet[intLevel - 1]; | |||||
| if(list == null) { | |||||
| list = new LinkedList(); | |||||
| _memberSet[intLevel - 1] = list; | |||||
| } | |||||
| list.add(member); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Remove a member from the bus. | |||||
| * | |||||
| * @param member Member to remove. | |||||
| */ | |||||
| public void removeMember(BusMember member) { | |||||
| synchronized(_memberSet) { | |||||
| // XXX lets hope we don't do too much removing. Yuck... | |||||
| for(int i = 0; i < _memberSet.length; i++) { | |||||
| if(_memberSet[i] == null) continue; | |||||
| _memberSet[i].remove(member); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Method used for sending an event to the bus. | |||||
| * | |||||
| * @param event Event to post. | |||||
| */ | |||||
| public void postEvent(EventObject event) { | |||||
| synchronized(_memberSet) { | |||||
| // XXX need to insert code here to test whether we are being | |||||
| // executed by the AWTEventQueue, or some other thread. If | |||||
| // the latter, then we need to insert our execution on the | |||||
| // AWTEventQueue thread as all code executing commands assumes | |||||
| // that context. | |||||
| for(int i = 0; i < _memberSet.length; i++) { | |||||
| if(_memberSet[i] == null) continue; | |||||
| Iterator it = _memberSet[i].iterator(); | |||||
| while(it.hasNext()) { | |||||
| BusMember next = (BusMember) it.next(); | |||||
| BusFilter filter = next.getBusFilter(); | |||||
| if(filter == null || filter.accept(event)) { | |||||
| next.eventPosted(event); | |||||
| } | |||||
| // Check to see if the member cancelled the event. If so | |||||
| // then don't send it on to the other members. | |||||
| if(event instanceof AntEvent && | |||||
| ((AntEvent)event).isCancelled()) break; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,84 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import org.apache.tools.ant.gui.command.Command; | |||||
| import org.apache.tools.ant.gui.command.NoOpCmd; | |||||
| import org.apache.tools.ant.gui.AppContext; | |||||
| /** | |||||
| * Event providing notification of a change in the current project. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class NewProjectEvent extends AntEvent { | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context application context. | |||||
| */ | |||||
| public NewProjectEvent(AppContext context) { | |||||
| super(context); | |||||
| } | |||||
| /** | |||||
| * Create the appropriate default response command to this event. | |||||
| * | |||||
| * @return Command representing an appropriate response to this event. | |||||
| */ | |||||
| public Command createDefaultCmd() { | |||||
| return new NoOpCmd(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,92 @@ | |||||
| /* | |||||
| * 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.event; | |||||
| import org.apache.tools.ant.gui.AppContext; | |||||
| import org.apache.tools.ant.gui.command.Command; | |||||
| import org.apache.tools.ant.gui.command.LoadFileCmd; | |||||
| import java.io.File; | |||||
| /** | |||||
| * Event for requesting that the given file be opened. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class OpenRequestEvent extends AntEvent { | |||||
| /** The file to open. */ | |||||
| private File _file = null; | |||||
| /** | |||||
| * Standard ctor. | |||||
| * | |||||
| * @param context Application context. | |||||
| * @param file File to be opened. | |||||
| */ | |||||
| public OpenRequestEvent(AppContext context, File file) { | |||||
| super(context); | |||||
| _file = file; | |||||
| } | |||||
| /** | |||||
| * Create the appropriate response command to this event, which is to | |||||
| * load in a build file. | |||||
| * | |||||
| * @return Load command. | |||||
| */ | |||||
| public Command createDefaultCmd() { | |||||
| return new LoadFileCmd(getAppContext(), _file); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,32 @@ | |||||
| menus=File, Help | |||||
| actions=open, close, exit, about | |||||
| new.name=New | |||||
| new.shortDescription=Create a new project | |||||
| new.parentMenuName=File | |||||
| new.icon=new.gif | |||||
| open.name=Open | |||||
| open.shortDescription=Open an existing project | |||||
| open.parentMenuName=File | |||||
| open.icon=open.gif | |||||
| save.name=Save | |||||
| save.shortDescription=Save the current project | |||||
| save.parentMenuName=File | |||||
| save.icon=save.gif | |||||
| close.name=Close | |||||
| close.shortDescription=Close the current project | |||||
| close.parentMenuName=File | |||||
| exit.name=Exit | |||||
| exit.shortDescription=Quit the application | |||||
| exit.parentMenuName=File | |||||
| exit.separator=true | |||||
| about.name=About | |||||
| about.shortDescription=About this application | |||||
| about.parentMenuName=Help | |||||
| about.separator=true; | |||||
| @@ -0,0 +1,35 @@ | |||||
| # This is the general properties file for the Antidote application. | |||||
| # Configure the editors that appear on the right of the UI. | |||||
| org.apache.tools.ant.gui.Antidote.right.editors=\ | |||||
| org.apache.tools.ant.gui.PropertyEditor, \ | |||||
| org.apache.tools.ant.gui.SourceEditor | |||||
| # Configure the editors that appear on the left of the UI. | |||||
| org.apache.tools.ant.gui.Antidote.left.editors=\ | |||||
| org.apache.tools.ant.gui.ProjectNavigator | |||||
| # Set specific class properties. | |||||
| org.apache.tools.ant.gui.SourceEditor.name=Source | |||||
| org.apache.tools.ant.gui.PropertyEditor.name=Properties | |||||
| org.apache.tools.ant.gui.ProjectNavigator.name=Task Navigator | |||||
| org.apache.tools.ant.gui.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.command.DisplayErrorCmd.title=Error... | |||||
| org.apache.tools.ant.gui.About.title=About | |||||
| org.apache.tools.ant.gui.About.ok=OK | |||||
| org.apache.tools.ant.gui.About.message=\ | |||||
| <html><h1>Antidote</h1> \ | |||||
| <p><b>Version:</b> {0}</p> \ | |||||
| <p><b>Date:</b> {1}</p> \ | |||||
| <p><b>Contributors:</B> {2}</p> \ | |||||
| <hr> \ | |||||
| <p>Copyright © 2000 The Apache Software Foundation.</p> | |||||
| <p>All rights reserved.</p> \ | |||||
| <hr> \ | |||||
| </html> | |||||
| @@ -0,0 +1,208 @@ | |||||
| /* | |||||
| * 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.util; | |||||
| import java.io.StringWriter; | |||||
| import java.io.PrintWriter; | |||||
| import java.util.StringTokenizer; | |||||
| /* | |||||
| * Class for parsing the stack frame information from a Throwable's stack frame | |||||
| * dump. Probably only suitable for debugging, as it depends on the specific | |||||
| * output format of the stack dump, which could change with JVM releases. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class StackFrame { | |||||
| private String _method = null; | |||||
| private int _line = -1; | |||||
| private String _clazz = null; | |||||
| /** | |||||
| * Default ctor. Gets the stack frame info for the calling method. | |||||
| * | |||||
| */ | |||||
| public StackFrame() { | |||||
| this(1); | |||||
| } | |||||
| public StackFrame(int frame) { | |||||
| if(frame < 0) { | |||||
| throw new IllegalArgumentException("Frame number must be <= 0"); | |||||
| } | |||||
| // Add a stack frame for this method and for | |||||
| // the fillInStackTrace method. | |||||
| frame += 2; | |||||
| Throwable t = new Throwable(); | |||||
| t.fillInStackTrace(); | |||||
| String text = toString(t); | |||||
| // Extract the line that has the stack frame info we want on it. | |||||
| StringTokenizer tok = new StringTokenizer(text, "\n"); | |||||
| // Ignore the first line as it just has the exception type on it. | |||||
| tok.nextToken(); | |||||
| String hit = null; | |||||
| while(tok.hasMoreTokens() && frame-- >= 0) { | |||||
| hit = tok.nextToken(); | |||||
| } | |||||
| // This should always pass. '4' is the number of characters to get | |||||
| // to the start of the class name ("\tat "). | |||||
| if(hit != null && hit.length() > 4) { | |||||
| int idx = hit.indexOf('('); | |||||
| if(idx > 4) { | |||||
| String before = hit.substring(4, idx); | |||||
| String after = hit.substring(idx + 1, hit.length() - 1); | |||||
| // Extract the method name and class name. | |||||
| idx = before.lastIndexOf('.'); | |||||
| if(idx >= 0) { | |||||
| _clazz = before.substring(0, idx); | |||||
| _method = before.substring( | |||||
| idx + 1, before.length()); | |||||
| } | |||||
| idx = after.lastIndexOf(':'); | |||||
| // Extract the line number. If it fails in any way | |||||
| // then just leave the value at -1 which is a valid value. | |||||
| try { | |||||
| _line = Integer.parseInt( | |||||
| after.substring(idx + 1, after.length())); | |||||
| } | |||||
| catch(Exception ex) { | |||||
| // Ignore. | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Utility method for converting a throwable object to a string. | |||||
| * | |||||
| * @param t Throwable to convert. | |||||
| * @return String representation. | |||||
| */ | |||||
| public static String toString(Throwable t) { | |||||
| StringWriter writer = new StringWriter(); | |||||
| t.printStackTrace(new PrintWriter(writer)); | |||||
| return writer.toString(); | |||||
| } | |||||
| /** | |||||
| * Get the stack frame class. | |||||
| * | |||||
| * @return | |||||
| */ | |||||
| public String getClassName() { | |||||
| return _clazz; | |||||
| } | |||||
| /** | |||||
| * Get the name of the stack frame method | |||||
| * | |||||
| * @return | |||||
| */ | |||||
| public String getMethodName() { | |||||
| return _method; | |||||
| } | |||||
| /** | |||||
| * Get the line number for the frame call. | |||||
| * | |||||
| * @return Line number, or -1 if unknown. | |||||
| */ | |||||
| public int getLineNumber() { | |||||
| return _line; | |||||
| } | |||||
| public String toString() { | |||||
| return getClassName() + "." + getMethodName() + "(line " + | |||||
| (getLineNumber() >= 0 ? | |||||
| String.valueOf(getLineNumber()) : "unknown") + ")"; | |||||
| } | |||||
| /** | |||||
| * Test code. | |||||
| * | |||||
| * @param args Ignored. | |||||
| */ | |||||
| /* | |||||
| public static void main(String[] args) { | |||||
| //Test class for generating a bunch of stack frames. | |||||
| class Test { | |||||
| public Test() { | |||||
| System.out.println("Main method: " + new StackFrame(2)); | |||||
| recurse(20); | |||||
| } | |||||
| private void recurse(int val) { | |||||
| if(val == 0) { | |||||
| System.out.println("Recurse method: " + new StackFrame()); | |||||
| } | |||||
| else if(val % 2 == 0) { | |||||
| recurse(val - 1); | |||||
| } | |||||
| else { | |||||
| recurse(val - 1); | |||||
| } | |||||
| } | |||||
| } | |||||
| new Test(); | |||||
| } | |||||
| */ | |||||
| } | |||||
| @@ -0,0 +1,97 @@ | |||||
| /* | |||||
| * 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.util; | |||||
| import java.awt.Window; | |||||
| import java.awt.Rectangle; | |||||
| import java.awt.Dimension; | |||||
| import java.awt.event.WindowEvent; | |||||
| /** | |||||
| * Function container for various window operations. | |||||
| * | |||||
| * @version $Revision$ | |||||
| * @author Simeon Fitch | |||||
| */ | |||||
| public class WindowUtils { | |||||
| /** | |||||
| * Default ctor. | |||||
| * | |||||
| */ | |||||
| private WindowUtils() {} | |||||
| /** | |||||
| * Send a close event to the given window. | |||||
| * | |||||
| * @param window Window to send close event to. | |||||
| */ | |||||
| public static void sendCloseEvent(Window window) { | |||||
| window.dispatchEvent( | |||||
| new WindowEvent(window, WindowEvent.WINDOW_CLOSING)); | |||||
| } | |||||
| /** | |||||
| * Center the given child window with repsect to the child window. | |||||
| * | |||||
| * @param parent Window to base centering on. | |||||
| * @param child Window to center. | |||||
| */ | |||||
| public static void centerWindow(Window parent, Window child) { | |||||
| Rectangle bounds = parent.getBounds(); | |||||
| Dimension size = child.getSize(); | |||||
| child.setLocation(bounds.x + (bounds.width - size.width)/2, | |||||
| bounds.y + (bounds.height - size.height)/2); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,3 @@ | |||||
| VERSION=@VERSION@ | |||||
| DATE=@DATE@ | |||||
| CONTRIBUTORS=Simeon H.K. Fitch, Ant Development Team | |||||