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 |