Browse Source

Remove Antidote pages

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278085 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 20 years ago
parent
commit
b8a60e3134
10 changed files with 0 additions and 1333 deletions
  1. +0
    -354
      docs/projects/antidote/design.html
  2. BIN
      docs/projects/antidote/images/screenshot.jpg
  3. +0
    -166
      docs/projects/antidote/index.html
  4. +0
    -190
      docs/projects/antidote/module.html
  5. +0
    -134
      docs/projects/antidote/news.html
  6. +0
    -259
      xdocs/projects/antidote/design.xml
  7. +0
    -77
      xdocs/projects/antidote/index.xml
  8. +0
    -107
      xdocs/projects/antidote/module.xml
  9. +0
    -40
      xdocs/projects/antidote/news.xml
  10. +0
    -6
      xdocs/stylesheets/project.xml

+ 0
- 354
docs/projects/antidote/design.html View File

@@ -1,354 +0,0 @@


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apache Ant - Design Overview</title>
<link type="text/css" href="../../page.css" rel="stylesheet">
<meta name="author" content="Simeon H. K. Fitch">
<meta name="email" content="simeon@fitch.net">
<meta name="author" content="Christoph Wilhelms">
<meta name="email" content="christoph.wilhelms@t-online.de">
</head>

<body>
<p class="navpath">
<script src="../../breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</p>

<div class="logobar">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left"><img border="0" alt="Apache Ant site" src="../../images/group-logo.gif"></td>
<td align="center" width="100%"><img alt="Apache Ant logo" border="0" src="../../images/project-logo.gif"></td>
<td align="right">
<form target="_blank" onsubmit="q.value = query.value + ' site:ant.apache.org'" action="http://www.google.com/search" method="get">
<table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
<tr>
<td colspan="3"><img height="10" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td nowrap="nowrap" class="searchcaption">
<input name="q" type="hidden">
<input size="15" id="query" type="text">
<img height="1" width="5" alt="" src="../../images/spacer.gif">
<input name="Search" value="Search" type="submit">
<br>
the Apache Ant site
</td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-left.gif"></td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-right.gif"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>

<div class="tab">
<table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="5"><img alt="" height="8" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="../../index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-right.gif"></td>
</tr>
</table>
</td>
<td width="8"><img alt="" height="5" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="selected tab" style="height: 1.5em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>Projects</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-right.gif"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>

<div class="bluebar"></div>
<div class="menucontainer">

<div class="menu">
<ul>
<li class="menuheader">Projects
<ul>
<li>
<a href="../../projects/index.html">Welcome</a>
</li>
</ul>
</li>
</ul>
</div>
<img style="float: left" height="10" width="10" border="0" alt="" src="../../images/menu-left.gif">
<img style="float: right" height="10" width="10" border="0" alt="" src="../../images/menu-right.gif">
</div>
<div class="lightbluebar">&nbsp;</div>
<div class="main">
<div class="content">
<h1 class="title">Design Overview</h1>
<h3 class="section">
<a name="Introduction"></a>
Introduction
</h3>
<p>The purpose of this document is to communicate the overall
structure and design patters used in Antidote, the GUI for
Ant. This document is a work in progress, as well as a living
document, and it is most likely not be in full synchronization with
the source code. Therefore, if there is any doubt, view the source
;-)
</p>
<h3 class="section">
<a name="Overview"></a>
Overview
</h3>
<p>The Antidote architecture design aims to provide a high level
of modularity and extensibility. Ideally the components of
Antidote will be able to be assembled in different configurations
to provide the type of application or plug-in desired.
</p>
<p>To achieve this modularity, a high level of decoupling is
necessary. The standard UI design approach of providing separation
of view (presentation) from model (data) is applied, leveraging
the built-in Ant data model where possible, as well as the
predefined Swing model interfaces. Furthermore, the architecture
is highly event driven, whereby modules communicate via a shared
communications channel.
</p>
<p>To a large extent, the configuration of application modules is
driven by localized configuration files, allowing new modules or
data views to be added, as well as providing multi-language
support.
</p>
<p>The diagram below conveys a high altitude view of the
application's structure. As the application grows, new components
will be plugged in to what will be described as the <code>EventBus</code>
</p>
<h3 class="section">
<a name="Antidote Component Architecture/Event Bus"></a>
Antidote Component Architecture/Event Bus
</h3>
<pre class="code">
+---------------+ +----------------+ +-------------+ +-------------+
| | | | | | | |
| ActionManager | | EventResponder | | AntModule | | AntModule |
| | | | |(ProjectNav) | |(SourceEdit) |
+---------------+ +----------------+ +-------------+ +-------------+
| ^ ^ ^
| | | |
ActionEvent EventObject AntEvent AntEvent
| | | |
v v v v
/---------------------------------------------------------------------\
/ \
&lt; EventBus &gt;
\ /
\---------------------------------------------------------------------/
| ^ ^ ^
| | | |
EventObject ChangeEvent BuildEvent EventObject
| | | |
v | | v
+---------------+ +----------------+ +-------------+ +--------------+
| | | | | | | |
| Console | | ProjectProxy | | Ant | | (Your Module)|
| | | | | | | |
+---------------+ +----------------+ +-------------+ +--------------+
</pre>
<p>The backbone of the application is the <code>EventBus</code>. Any
component of the application can post events to the
<code>EventBus</code>. Components that wish to receive events are
called <code>BusMember</code>s.
</p>
<p>The <code>EventBus</code> will dispatch any object of type
<code>java.util.Event</code>, which means that Ant <code>BuildEvent</code>
objects, as well as <code>AWTEvent</code> objects can be posted (if desired). A
new class of events called <code>AntEvent</code> is defined for Antidote
specific events, which have the additional capability of being
canceled mid-dispatch.
</p>
<p>Each <code>BusMember</code> must provide a <code>BusFilter</code> instance,
which is the members' means of telling the bus which
events it is interested in. This allows a <code>BusMember</code> to,
say, only receive <code>AntEvent</code> objects.
</p>
<p>When a <code>BusMember</code> registers itself with the
<code>EventBus</code>, it must provide a (so called) <i>interrupt
level</i> which is a integer value defining a relative ordering
for dispatching <code>EventObject</code>s to <code>BusMember</code>s. The
purpose of this is to allow certain <code>BusMember</code> instances
to see an event before others, and in the case of <code>AntEvent</code>
objects, keep the event from propagating onward. The
<code>EventBus</code> class defines the interrupt level constants
<code>VETOING=1</code>, <code>MONITORING=5</code>, and <code>RESPONDING=10</code> to
help define categories of members. The implied purpose being that:
</p>
<ul>

<li><code>VETOING</code>: Listens for certain types of events, and
may process them in a non-default manner to determine if the
event should be canceled before being dispatched to the
<code>RESPONDING</code> group.
</li>

<li><code>MONITORING</code>: Just listens for events, like a logger
or status monitor.
</li>

<li><code>RESPONDING</code>: Process events in a default manner,
knowing that the event has passed any <code>VETOING</code> members.
</li>

</ul>
<p>Within a specific interrupt level, the order in which members will
receive events is undefined. A <code>BusMember</code> may be registered
at a level that is +/- of one of the defined levels, as long as it
follows the constraint <code>MONITORING &lt;= interruptLevel &lt;=
MAX_INTERRUPT</code>.
</p>
<h3 class="section">
<a name="Actions and ActionManager"></a>
Actions and ActionManager
</h3>
<p>Extensive use of the <code>javax.swing.Action</code> interface is
made for defining the set of menu and tool bar options that are
available. The configuration file <code>action.properties</code>
exists to define what should appear in the menu and toolbar, how
it is displayed, and the <code>Action</code> command name that is
dispatched when the user invokes that action. A class called
<code>ActionManager</code> exists for not only processing the
configuration file, but also for dispatching invoked action events
to the <code>EventBus</code>, and for controlling the enabled state of
an <code>Action</code>. When a new menu item or toolbar button is
desired, first it is added to the <code>action.properties</code> file,
and then the code to respond to it is added to the
<code>EventResponder</code> (see below).
</p>
<h3 class="section">
<a name="Commands and EventResponder"></a>
Commands and EventResponder
</h3>
<p>At some point in the stages of event processing, an event may
require the data model to be modified, or some other task be
performed. The <code>Command</code> interface is defined to classify
code which performs some task or operation. This is distinct from
an <code>Action</code>, which is a user request for an operation. A
<code>Command</code> class is the encapsulation of the operation
itself.
</p>
<p>When an <code>Action</code> generates an <code>ActionEvent</code>, the
event is posted to the <code>EventBus</code> which delivers the event
to all interested <code>BusMember</code>s. It eventually makes it to
the <code>EventResponder</code> instance (registered at the
<code>RESPONDING</code> interrupt level), which is responsible for
translating specific events into <code>Command</code> objects, and
then executing the <code>Command</code> object. For example, when the
user selects the "Open..." menu option, an <code>ActionEvent</code> is
generated by the Swing <code>MenuItem</code> class, which is then
posted to the <code>EventBus</code> by the <code>ActionManager</code>. The
<code>ActionEvent</code> is delivered to the <code>EventResponder</code>,
which converts the <code>ActionEvent</code> into a <code>Command</code>
instance. The <code>EventResponder</code> then calls the method
<code>Command.execute()</code> to invoke the command (which displays a
dialog for selecting a file to open).
</p>
<p>When adding new <code>Action</code>s or general tasks to the
application, a <code>Command</code> object should be created to
encapsulate the behavior. This includes most operations which
modify the state of the data model.
</p>
<p>The purpose of this encapsulation is to allow the clean
separation of making a request, and servicing a request. Due to
various conditions in the application state, the actually response
to a request may change, as well as who services it. This
design approach facilitates that.
</p>
<h3 class="section">
<a name="Data Model and Views"></a>
Data Model and Views
</h3>
<p><i>NB: This part of the architecture is not fleshed out very well. There
needs to be a discussion of the degree to which the Antidote development
should be able to impose changes on the Ant data model, and to what level
that model should be mirrored in the Antidote code base. The coupling
between them should be kept low, and at the same time changes to one should
affect the other minimally. Still, features like property change events and
bean introspection (or BeanInfo) may be needed to be added to the Ant data
model. Right now the data model is encapsulated in the package
<code>org.apache.tools.ant.gui.acs</code> (where "<code>acs</code>" stands for "Ant Construction Set").</i>
</p>
<h3 class="section">
<a name="Application Context"></a>
Application Context
</h3>
<p>In order to keep the coupling among application modules to a
minimum, a single point of reference is needed for coordination
and data sharing. The class <code>AppContext</code> is the catch-all
class for containing the application state. Most modules and
<code>Command</code> classes require an instance of the
<code>AppContext</code> class. Because all state information in
contained in an <code>AppContext</code> instance, multiple instances
of Antidote can run inside the same JVM as long as each has it's
own <code>AppContext</code>. (Interestingly, two instances of the
Antidote could conceivably share an <code>AppContext</code> instance
through RMI, allowing remote interaction/collaboration.)
</p>
<h3 class="section">
<a name="Configuration and ResourceManager"></a>
Configuration and ResourceManager
</h3>
<p>Full "i18n" support should be assumed in modern applications,
and all user viewable strings should be defined in a configuration
file. For Antidote this configuration file is
<code>antidote.properties</code>, which is located (with other UI
resources) in the sub-package "resources".
</p>
<p>To aid in the lookup of text properties, as well as other
resources like icons, a class called <code>ResourceManager</code> is
defined. There are various convenience methods attached to this
class, which will likely grow to make looking up configuration
values as easy as possible.
</p>
<p>The organization of configuration properties is based on the
fully qualified path of the class that requires the property. For
example, the "about" box contains a messages, so it looks for the
property "<code>org.apache.tools.ant.gui.About.message</code>" for the text
message it should display. Therefore, the <code>ResourceManager</code>
method <code>getString()</code> takes a <code>Class</code> instance as
well as a <code>String</code> key. Please see the
<code>ResourceManager</code> documentation for more information. Given
this support, no user visible strings should appear in the source
code itself.
</p>
</div>
</div>

<p class="copyright">
Copyright &copy; 2000-2005&nbsp;The Apache Software Foundation. All rights reserved.
<script type="text/javascript" language="JavaScript"><!--
document.write(" - "+"Last Published: " + document.lastModified);
// -->
</script>
</p>
</body>
</html>











BIN
docs/projects/antidote/images/screenshot.jpg View File

Before After
Width: 648  |  Height: 595  |  Size: 69 KiB

+ 0
- 166
docs/projects/antidote/index.html View File

@@ -1,166 +0,0 @@


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apache Ant - About Antidote</title>
<link type="text/css" href="../../page.css" rel="stylesheet">
<meta name="author" content="Christoph Wilhelms">
<meta name="email" content="christoph.wilhelms@t-online.de">
</head>

<body>
<p class="navpath">
<script src="../../breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</p>

<div class="logobar">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left"><img border="0" alt="Apache Ant site" src="../../images/group-logo.gif"></td>
<td align="center" width="100%"><img alt="Apache Ant logo" border="0" src="../../images/project-logo.gif"></td>
<td align="right">
<form target="_blank" onsubmit="q.value = query.value + ' site:ant.apache.org'" action="http://www.google.com/search" method="get">
<table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
<tr>
<td colspan="3"><img height="10" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td nowrap="nowrap" class="searchcaption">
<input name="q" type="hidden">
<input size="15" id="query" type="text">
<img height="1" width="5" alt="" src="../../images/spacer.gif">
<input name="Search" value="Search" type="submit">
<br>
the Apache Ant site
</td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-left.gif"></td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-right.gif"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>

<div class="tab">
<table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="5"><img alt="" height="8" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="../../index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-right.gif"></td>
</tr>
</table>
</td>
<td width="8"><img alt="" height="5" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="selected tab" style="height: 1.5em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>Projects</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-right.gif"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>

<div class="bluebar"></div>
<div class="menucontainer">

<div class="menu">
<ul>
<li class="menuheader">Projects
<ul>
<li>
<a href="../../projects/index.html">Welcome</a>
</li>
</ul>
</li>
</ul>
</div>
<img style="float: left" height="10" width="10" border="0" alt="" src="../../images/menu-left.gif">
<img style="float: right" height="10" width="10" border="0" alt="" src="../../images/menu-right.gif">
</div>
<div class="lightbluebar">&nbsp;</div>
<div class="main">
<div class="content">
<h1 class="title">About Antidote</h1>
<h3 class="section">
<a name="About"></a>
About
</h3>
<h3>ANTidote is the GUI for Ant...</h3>
<p>... in fact it is the Ant GUI by the Apache Ant project itself, because,
as you might know, there are several other graphical user interfaces covering Ant.
Most of them are integrated in IDEs such as <a href="http://ant.netbeans.org">NetBeans</a>
or <a href="http://www.eclipse.org">Eclipse</a>. To be honest Antidote
has started a long time ago (spring 2000) and was designed to become integrable into
IDEs by it's original Author Simeon H. K. Fitch, who did the most work on Antidote.
Unfortunately the Antidote community never came really "to speed" and so the IDE-guys
where faster with their integrations.
</p>
<p>With these other Ant GUIs Antidote became less important and it seemed there was not much
interest in such a tool...
</p>
<p>Anyways: The "sleeping beauty" Antidote has been awaken and is now being developed to
a full featured, stand alone, JFC/Swing-based Ant GUI to graphically create, edit and run
build-files to be quite useful for the developer who do not use an IDE at all. So one of
the goals of Antidote development is to make it small, fast and really neat :)!
</p>
<h3 class="section">
<a name="Get a glimpse"></a>
Get a glimpse
</h3>
<p>
<img src="images/screenshot.jpg" width="648" height="595" alt="Screenshot" />
</p>
<p>This is a screenshot of how Antidote looks today. Still there is, of course, a lot to do
and you are welcome to contribute! It shows Antidote using a custom look and feel called
"Metouia" which you can find <a href="http://mlf.sourceforge.net">here</a> if you want to try it!
</p>
<h3 class="section">
<a name="Get Involved"></a>
Get Involved
</h3>
<p>Antidote is discussed on the main Ant mailing lists you can find here:
</p>
<ul>
<li><a href="http://jakarta.apache.org/getinvolved/getinvolvedindex.html">Get Involved</a></li>
<li><a href="../../mail.html">Join Mailing Lists</a></li>
<li><a href="http://marc.theaimsgroup.com/?l=ant-dev&amp;r=1&amp;w=2">Search the Dev Mailing List</a>
</li>
<li><a href="http://marc.theaimsgroup.com/?l=ant-user&amp;r=1&amp;w=2">Search the User Mailing List</a>
</li>
</ul>
</div>
</div>

<p class="copyright">
Copyright &copy; 2000-2005&nbsp;The Apache Software Foundation. All rights reserved.
<script type="text/javascript" language="JavaScript"><!--
document.write(" - "+"Last Published: " + document.lastModified);
// -->
</script>
</p>
</body>
</html>











+ 0
- 190
docs/projects/antidote/module.html View File

@@ -1,190 +0,0 @@


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apache Ant - Module HOW-TO</title>
<link type="text/css" href="../../page.css" rel="stylesheet">
<meta name="author" content="Simeon H. K. Fitch">
<meta name="email" content="simeon@fitch.net">
<meta name="author" content="Christoph Wilhelms">
<meta name="email" content="christoph.wilhelms@t-online.de">
</head>

<body>
<p class="navpath">
<script src="../../breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</p>

<div class="logobar">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left"><img border="0" alt="Apache Ant site" src="../../images/group-logo.gif"></td>
<td align="center" width="100%"><img alt="Apache Ant logo" border="0" src="../../images/project-logo.gif"></td>
<td align="right">
<form target="_blank" onsubmit="q.value = query.value + ' site:ant.apache.org'" action="http://www.google.com/search" method="get">
<table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
<tr>
<td colspan="3"><img height="10" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td nowrap="nowrap" class="searchcaption">
<input name="q" type="hidden">
<input size="15" id="query" type="text">
<img height="1" width="5" alt="" src="../../images/spacer.gif">
<input name="Search" value="Search" type="submit">
<br>
the Apache Ant site
</td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-left.gif"></td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-right.gif"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>

<div class="tab">
<table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="5"><img alt="" height="8" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="../../index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-right.gif"></td>
</tr>
</table>
</td>
<td width="8"><img alt="" height="5" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="selected tab" style="height: 1.5em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>Projects</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-right.gif"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>

<div class="bluebar"></div>
<div class="menucontainer">

<div class="menu">
<ul>
<li class="menuheader">Projects
<ul>
<li>
<a href="../../projects/index.html">Welcome</a>
</li>
</ul>
</li>
</ul>
</div>
<img style="float: left" height="10" width="10" border="0" alt="" src="../../images/menu-left.gif">
<img style="float: right" height="10" width="10" border="0" alt="" src="../../images/menu-right.gif">
</div>
<div class="lightbluebar">&nbsp;</div>
<div class="main">
<div class="content">
<h1 class="title">Module HOW-TO</h1>
<h3 class="section">
<a name="Introduction"></a>
Introduction
</h3>
<p>The purpose of this document is to provide an overview of the
basic steps one must undertake to add a new module to
Antidote. Please see <a href="./design.html">The Antidote
Design Overview</a> for information on what a module is and how it
fits into Antidote. If you've already got all that, then read
on!
</p>
<p>NB: <i>Please submit updates and criticisms to this, particularly
areas that were unclear, missing, or difficult to follow.</i>
</p>
<h3 class="section">
<a name="Step by step"></a>
Step by step
</h3>
<h2>1) Specialize <code>org.apache.tools.ant.gui.core.AntModule</code></h2>
<p>All modules must inherit from the <code>AntModule</code>
class. This will probably irritate some of you, but it essentially
enforces inheritance from <code>javax.swing.JComponent</code> and
provides encapsulated handling of the <code>AppContext</code> instance
that is so important to this class.
</p>
<p>Your module is required to implement the
<code>AntModule.contextualize(AppContext)</code> method. The first
thing this method should do is call
<code>AntModule.setContext(AppContext)</code>, and then it is safe for
it to begin constructing its display, using whatever resources it
needs from the given <code>AppContext</code> instance. Think of this
in a similar manner to <code>Applet.init()</code> or
<code>Servlet.init()</code>.
</p>
<h2>2) Update
<code>org/apache/tools/ant/gui/resources/antidote.properties</code></h2>
<h3>2a) Externalize All Displayable Strings</h3>
<p>All displayable strings must be externalized to the
<code>antidote.properties</code> file, and looked up via the
<code>AppContext.getResources()</code> method after the
<code>AntModule.contextualize()</code> method has been called. Follow
the naming convention currently used in the properties file and
you should have to problems. This task should be done
<b>during</b> development of your module. Under no circumstances
should your module be submitted or committed without this task
being completed. Remember that Antidote has an international
audience.
</p>
<h3>2b) Add Module to List of Auto-Loaded Modules</h3>
<p>Look for the properties with the format
<code>org.apache.tools.ant.gui.Antidote.xxx.modules</code> where
<code>xxx</code> is one of {left | right | top | bottom}. Depending on
where you want your module to appear, and the order that you want
it to appear in relationship to the other modules, add the class
name of your module appropriately. If multiple modules are listed
for a single property (via a comma delimited list), then each
module will have it's own tab in a <code>javax.swing.JTabbedPane</code>.
</p>
<p>NB:<i>This goofy way of constructing the main screen will probably
change to something much more general (but not as general as, say
<a href="http://www.alphaworks.ibm.com/tech/bml">BML</a>).</i>
</p>
<h2>Run it!</h2>
<p>That should be all you need to do, at least to get your module
plugged in. Check out the source code for
<code>ProjectNavigator</code> and <code>PropertyEditor</code> for module
examples that use the various facilities of the Antidote
framework.
</p>
</div>
</div>

<p class="copyright">
Copyright &copy; 2000-2005&nbsp;The Apache Software Foundation. All rights reserved.
<script type="text/javascript" language="JavaScript"><!--
document.write(" - "+"Last Published: " + document.lastModified);
// -->
</script>
</p>
</body>
</html>











+ 0
- 134
docs/projects/antidote/news.html View File

@@ -1,134 +0,0 @@


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apache Ant - News</title>
<link type="text/css" href="../../page.css" rel="stylesheet">
<meta name="author" content="Christoph Wilhelms">
<meta name="email" content="christoph.wilhelms@gmx.de">
</head>

<body>
<p class="navpath">
<script src="../../breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</p>

<div class="logobar">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left"><img border="0" alt="Apache Ant site" src="../../images/group-logo.gif"></td>
<td align="center" width="100%"><img alt="Apache Ant logo" border="0" src="../../images/project-logo.gif"></td>
<td align="right">
<form target="_blank" onsubmit="q.value = query.value + ' site:ant.apache.org'" action="http://www.google.com/search" method="get">
<table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
<tr>
<td colspan="3"><img height="10" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td nowrap="nowrap" class="searchcaption">
<input name="q" type="hidden">
<input size="15" id="query" type="text">
<img height="1" width="5" alt="" src="../../images/spacer.gif">
<input name="Search" value="Search" type="submit">
<br>
the Apache Ant site
</td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
</tr>
<tr>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-left.gif"></td>
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
<td><img alt="" border="0" height="10" width="9" src="../../images/search-right.gif"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>

<div class="tab">
<table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="5"><img alt="" height="8" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="../../index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-right.gif"></td>
</tr>
</table>
</td>
<td width="8"><img alt="" height="5" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
<table summary="selected tab" style="height: 1.5em" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>Projects</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="../../images/tabSel-right.gif"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>

<div class="bluebar"></div>
<div class="menucontainer">

<div class="menu">
<ul>
<li class="menuheader">Projects
<ul>
<li>
<a href="../../projects/index.html">Welcome</a>
</li>
</ul>
</li>
</ul>
</div>
<img style="float: left" height="10" width="10" border="0" alt="" src="../../images/menu-left.gif">
<img style="float: right" height="10" width="10" border="0" alt="" src="../../images/menu-right.gif">
</div>
<div class="lightbluebar">&nbsp;</div>
<div class="main">
<div class="content">
<h1 class="title">News</h1>
<h3 class="section">
<a name="German i18n"></a>
German i18n
</h3>
<h3>October 12, 2003 - Antidote German internationalization implemented</h3>
<p>After English and Japanese, German is the third language Antidote has been
localized to! Many others may follow!?!</p>
<h3 class="section">
<a name="Antidote News Page"></a>
Antidote News Page
</h3>
<h3>October 12, 2003 - News Page</h3>
<p>To show, that we are really continue the work on Antidote, I set up this
news page to inform you all about the progress. Additonally I'd like to encourage
you to use and test Antidote, or - of course - take part in the development!</p>
</div>
</div>

<p class="copyright">
Copyright &copy; 2000-2005&nbsp;The Apache Software Foundation. All rights reserved.
<script type="text/javascript" language="JavaScript"><!--
document.write(" - "+"Last Published: " + document.lastModified);
// -->
</script>
</p>
</body>
</html>











+ 0
- 259
xdocs/projects/antidote/design.xml View File

@@ -1,259 +0,0 @@
<?xml version="1.0"?>
<!--
Copyright 2003-2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>

<properties>
<index value="1"/>
<author email="simeon@fitch.net">Simeon H. K. Fitch</author>
<author email="christoph.wilhelms@t-online.de">Christoph Wilhelms</author>
<title>Design Overview</title>
</properties>

<body>

<section name="Introduction">
<p>The purpose of this document is to communicate the overall
structure and design patters used in Antidote, the GUI for
Ant. This document is a work in progress, as well as a living
document, and it is most likely not be in full synchronization with
the source code. Therefore, if there is any doubt, view the source
;-)
</p>
</section>

<section name="Overview">
<p>The Antidote architecture design aims to provide a high level
of modularity and extensibility. Ideally the components of
Antidote will be able to be assembled in different configurations
to provide the type of application or plug-in desired.
</p>
<p>To achieve this modularity, a high level of decoupling is
necessary. The standard UI design approach of providing separation
of view (presentation) from model (data) is applied, leveraging
the built-in Ant data model where possible, as well as the
predefined Swing model interfaces. Furthermore, the architecture
is highly event driven, whereby modules communicate via a shared
communications channel.
</p>
<p>To a large extent, the configuration of application modules is
driven by localized configuration files, allowing new modules or
data views to be added, as well as providing multi-language
support.
</p>
<p>The diagram below conveys a high altitude view of the
application's structure. As the application grows, new components
will be plugged in to what will be described as the <code>EventBus</code>
</p>
</section>
<section name="Antidote Component Architecture/Event Bus">
<source>
+---------------+ +----------------+ +-------------+ +-------------+<br/>
| | | | | | | |<br/>
| ActionManager | | EventResponder | | AntModule | | AntModule |<br/>
| | | | |(ProjectNav) | |(SourceEdit) |<br/>
+---------------+ +----------------+ +-------------+ +-------------+<br/>
| ^ ^ ^<br/>
| | | |<br/>
ActionEvent EventObject AntEvent AntEvent<br/>
| | | |<br/>
v v v v<br/>
/---------------------------------------------------------------------\<br/>
/ \<br/>
&lt; EventBus &gt;<br/>
\ /<br/>
\---------------------------------------------------------------------/<br/>
| ^ ^ ^<br/>
| | | |<br/>
EventObject ChangeEvent BuildEvent EventObject<br/>
| | | |<br/>
v | | v<br/>
+---------------+ +----------------+ +-------------+ +--------------+<br/>
| | | | | | | |<br/>
| Console | | ProjectProxy | | Ant | | (Your Module)|<br/>
| | | | | | | |<br/>
+---------------+ +----------------+ +-------------+ +--------------+
</source>
<p>The backbone of the application is the <code>EventBus</code>. Any
component of the application can post events to the
<code>EventBus</code>. Components that wish to receive events are
called <code>BusMember</code>s.
</p>

<p>The <code>EventBus</code> will dispatch any object of type
<code>java.util.Event</code>, which means that Ant <code>BuildEvent</code>
objects, as well as <code>AWTEvent</code> objects can be posted (if desired). A
new class of events called <code>AntEvent</code> is defined for Antidote
specific events, which have the additional capability of being
canceled mid-dispatch.
</p>

<p>Each <code>BusMember</code> must provide a <code>BusFilter</code> instance,
which is the members' means of telling the bus which
events it is interested in. This allows a <code>BusMember</code> to,
say, only receive <code>AntEvent</code> objects.
</p>

<p>When a <code>BusMember</code> registers itself with the
<code>EventBus</code>, it must provide a (so called) <i>interrupt
level</i> which is a integer value defining a relative ordering
for dispatching <code>EventObject</code>s to <code>BusMember</code>s. The
purpose of this is to allow certain <code>BusMember</code> instances
to see an event before others, and in the case of <code>AntEvent</code>
objects, keep the event from propagating onward. The
<code>EventBus</code> class defines the interrupt level constants
<code>VETOING=1</code>, <code>MONITORING=5</code>, and <code>RESPONDING=10</code> to
help define categories of members. The implied purpose being that:
</p>
<ul>

<li><code>VETOING</code>: Listens for certain types of events, and
may process them in a non-default manner to determine if the
event should be canceled before being dispatched to the
<code>RESPONDING</code> group.
</li>

<li><code>MONITORING</code>: Just listens for events, like a logger
or status monitor.
</li>

<li><code>RESPONDING</code>: Process events in a default manner,
knowing that the event has passed any <code>VETOING</code> members.
</li>

</ul>

<p>Within a specific interrupt level, the order in which members will
receive events is undefined. A <code>BusMember</code> may be registered
at a level that is +/- of one of the defined levels, as long as it
follows the constraint <code>MONITORING &lt;= interruptLevel &lt;=
MAX_INTERRUPT</code>.
</p>
</section>

<section name="Actions and ActionManager">
<p>Extensive use of the <code>javax.swing.Action</code> interface is
made for defining the set of menu and tool bar options that are
available. The configuration file <code>action.properties</code>
exists to define what should appear in the menu and toolbar, how
it is displayed, and the <code>Action</code> command name that is
dispatched when the user invokes that action. A class called
<code>ActionManager</code> exists for not only processing the
configuration file, but also for dispatching invoked action events
to the <code>EventBus</code>, and for controlling the enabled state of
an <code>Action</code>. When a new menu item or toolbar button is
desired, first it is added to the <code>action.properties</code> file,
and then the code to respond to it is added to the
<code>EventResponder</code> (see below).
</p>
</section>
<section name="Commands and EventResponder">
<p>At some point in the stages of event processing, an event may
require the data model to be modified, or some other task be
performed. The <code>Command</code> interface is defined to classify
code which performs some task or operation. This is distinct from
an <code>Action</code>, which is a user request for an operation. A
<code>Command</code> class is the encapsulation of the operation
itself.
</p>

<p>When an <code>Action</code> generates an <code>ActionEvent</code>, the
event is posted to the <code>EventBus</code> which delivers the event
to all interested <code>BusMember</code>s. It eventually makes it to
the <code>EventResponder</code> instance (registered at the
<code>RESPONDING</code> interrupt level), which is responsible for
translating specific events into <code>Command</code> objects, and
then executing the <code>Command</code> object. For example, when the
user selects the "Open..." menu option, an <code>ActionEvent</code> is
generated by the Swing <code>MenuItem</code> class, which is then
posted to the <code>EventBus</code> by the <code>ActionManager</code>. The
<code>ActionEvent</code> is delivered to the <code>EventResponder</code>,
which converts the <code>ActionEvent</code> into a <code>Command</code>
instance. The <code>EventResponder</code> then calls the method
<code>Command.execute()</code> to invoke the command (which displays a
dialog for selecting a file to open).
</p>

<p>When adding new <code>Action</code>s or general tasks to the
application, a <code>Command</code> object should be created to
encapsulate the behavior. This includes most operations which
modify the state of the data model.
</p>

<p>The purpose of this encapsulation is to allow the clean
separation of making a request, and servicing a request. Due to
various conditions in the application state, the actually response
to a request may change, as well as who services it. This
design approach facilitates that.
</p>
</section>
<section name="Data Model and Views">
<p><i>NB: This part of the architecture is not fleshed out very well. There
needs to be a discussion of the degree to which the Antidote development
should be able to impose changes on the Ant data model, and to what level
that model should be mirrored in the Antidote code base. The coupling
between them should be kept low, and at the same time changes to one should
affect the other minimally. Still, features like property change events and
bean introspection (or BeanInfo) may be needed to be added to the Ant data
model. Right now the data model is encapsulated in the package
<code>org.apache.tools.ant.gui.acs</code> (where "<code>acs</code>" stands for "Ant Construction Set").</i>
</p>
</section>
<section name="Application Context">
<p>In order to keep the coupling among application modules to a
minimum, a single point of reference is needed for coordination
and data sharing. The class <code>AppContext</code> is the catch-all
class for containing the application state. Most modules and
<code>Command</code> classes require an instance of the
<code>AppContext</code> class. Because all state information in
contained in an <code>AppContext</code> instance, multiple instances
of Antidote can run inside the same JVM as long as each has it's
own <code>AppContext</code>. (Interestingly, two instances of the
Antidote could conceivably share an <code>AppContext</code> instance
through RMI, allowing remote interaction/collaboration.)
</p>
</section>
<section name="Configuration and ResourceManager">
<p>Full "i18n" support should be assumed in modern applications,
and all user viewable strings should be defined in a configuration
file. For Antidote this configuration file is
<code>antidote.properties</code>, which is located (with other UI
resources) in the sub-package "resources".
</p>

<p>To aid in the lookup of text properties, as well as other
resources like icons, a class called <code>ResourceManager</code> is
defined. There are various convenience methods attached to this
class, which will likely grow to make looking up configuration
values as easy as possible.
</p>

<p>The organization of configuration properties is based on the
fully qualified path of the class that requires the property. For
example, the "about" box contains a messages, so it looks for the
property "<code>org.apache.tools.ant.gui.About.message</code>" for the text
message it should display. Therefore, the <code>ResourceManager</code>
method <code>getString()</code> takes a <code>Class</code> instance as
well as a <code>String</code> key. Please see the
<code>ResourceManager</code> documentation for more information. Given
this support, no user visible strings should appear in the source
code itself.
</p>
</section>

</body>
</document>


+ 0
- 77
xdocs/projects/antidote/index.xml View File

@@ -1,77 +0,0 @@
<?xml version="1.0"?>
<!--
Copyright 2003-2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>

<properties>
<index value="1"/>
<author email="christoph.wilhelms@t-online.de">Christoph Wilhelms</author>
<title>About Antidote</title>
</properties>

<body>

<section name="About">
<h3>ANTidote is the GUI for Ant...</h3>

<p>... in fact it is the Ant GUI by the Apache Ant project itself, because,
as you might know, there are several other graphical user interfaces covering Ant.
Most of them are integrated in IDEs such as <a href="http://ant.netbeans.org">NetBeans</a>
or <a href="http://www.eclipse.org">Eclipse</a>. To be honest Antidote
has started a long time ago (spring 2000) and was designed to become integrable into
IDEs by it's original Author Simeon H. K. Fitch, who did the most work on Antidote.
Unfortunately the Antidote community never came really "to speed" and so the IDE-guys
where faster with their integrations.
</p>
<p>With these other Ant GUIs Antidote became less important and it seemed there was not much
interest in such a tool...
</p>
<p>Anyways: The "sleeping beauty" Antidote has been awaken and is now being developed to
a full featured, stand alone, JFC/Swing-based Ant GUI to graphically create, edit and run
build-files to be quite useful for the developer who do not use an IDE at all. So one of
the goals of Antidote development is to make it small, fast and really neat :)!
</p>
</section>

<section name="Get a glimpse">
<p>
<img src="images/screenshot.jpg" width="648" height="595" alt="Screenshot"/>
</p>
<p>This is a screenshot of how Antidote looks today. Still there is, of course, a lot to do
and you are welcome to contribute! It shows Antidote using a custom look and feel called
"Metouia" which you can find <a href="http://mlf.sourceforge.net">here</a> if you want to try it!
</p>
</section>

<section name="Get Involved">
<p>Antidote is discussed on the main Ant mailing lists you can find here:
</p>
<ul>
<li><a href="http://jakarta.apache.org/getinvolved/getinvolvedindex.html">Get Involved</a></li>
<li><a href="../../mail.html">Join Mailing Lists</a></li>
<li><a href="http://marc.theaimsgroup.com/?l=ant-dev&amp;r=1&amp;w=2">Search the Dev Mailing List</a>
</li>
<li><a href="http://marc.theaimsgroup.com/?l=ant-user&amp;r=1&amp;w=2">Search the User Mailing List</a>
</li>
</ul>



</section>

</body>
</document>


+ 0
- 107
xdocs/projects/antidote/module.xml View File

@@ -1,107 +0,0 @@
<?xml version="1.0"?>
<!--
Copyright 2003-2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>

<properties>
<index value="1"/>
<author email="simeon@fitch.net">Simeon H. K. Fitch</author>
<author email="christoph.wilhelms@t-online.de">Christoph Wilhelms</author>
<title>Module HOW-TO</title>
</properties>

<body>

<section name="Introduction">
<p>The purpose of this document is to provide an overview of the
basic steps one must undertake to add a new module to
Antidote. Please see <a href="./design.html">The Antidote
Design Overview</a> for information on what a module is and how it
fits into Antidote. If you've already got all that, then read
on!
</p>

<p>NB: <i>Please submit updates and criticisms to this, particularly
areas that were unclear, missing, or difficult to follow.</i>
</p>
</section>

<section name="Step by step">
<h2>1) Specialize <code>org.apache.tools.ant.gui.core.AntModule</code></h2>

<p>All modules must inherit from the <code>AntModule</code>
class. This will probably irritate some of you, but it essentially
enforces inheritance from <code>javax.swing.JComponent</code> and
provides encapsulated handling of the <code>AppContext</code> instance
that is so important to this class.
</p>

<p>Your module is required to implement the
<code>AntModule.contextualize(AppContext)</code> method. The first
thing this method should do is call
<code>AntModule.setContext(AppContext)</code>, and then it is safe for
it to begin constructing its display, using whatever resources it
needs from the given <code>AppContext</code> instance. Think of this
in a similar manner to <code>Applet.init()</code> or
<code>Servlet.init()</code>.
</p>

<h2>2) Update
<code>org/apache/tools/ant/gui/resources/antidote.properties</code></h2>

<h3>2a) Externalize All Displayable Strings</h3>

<p>All displayable strings must be externalized to the
<code>antidote.properties</code> file, and looked up via the
<code>AppContext.getResources()</code> method after the
<code>AntModule.contextualize()</code> method has been called. Follow
the naming convention currently used in the properties file and
you should have to problems. This task should be done
<b>during</b> development of your module. Under no circumstances
should your module be submitted or committed without this task
being completed. Remember that Antidote has an international
audience.
</p>

<h3>2b) Add Module to List of Auto-Loaded Modules</h3>

<p>Look for the properties with the format
<code>org.apache.tools.ant.gui.Antidote.xxx.modules</code> where
<code>xxx</code> is one of {left | right | top | bottom}. Depending on
where you want your module to appear, and the order that you want
it to appear in relationship to the other modules, add the class
name of your module appropriately. If multiple modules are listed
for a single property (via a comma delimited list), then each
module will have it's own tab in a <code>javax.swing.JTabbedPane</code>.
</p>

<p>NB:<i>This goofy way of constructing the main screen will probably
change to something much more general (but not as general as, say
<a href="http://www.alphaworks.ibm.com/tech/bml">BML</a>).</i>
</p>

<h2>Run it!</h2>
<p>That should be all you need to do, at least to get your module
plugged in. Check out the source code for
<code>ProjectNavigator</code> and <code>PropertyEditor</code> for module
examples that use the various facilities of the Antidote
framework.
</p>

</section>
</body>
</document>


+ 0
- 40
xdocs/projects/antidote/news.xml View File

@@ -1,40 +0,0 @@
<?xml version="1.0"?>
<!--
Copyright 2003-2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>

<properties>
<index value="1"/>
<author email="christoph.wilhelms@gmx.de">Christoph Wilhelms</author>
<title>News</title>
</properties>

<body>
<section name="German i18n">
<h3>October 12, 2003 - Antidote German internationalization implemented</h3>
<p>After English and Japanese, German is the third language Antidote has been
localized to! Many others may follow!?!</p>
</section>

<section name="Antidote News Page">
<h3>October 12, 2003 - News Page</h3>
<p>To show, that we are really continue the work on Antidote, I set up this
news page to inform you all about the progress. Additonally I'd like to encourage
you to use and test Antidote, or - of course - take part in the development!</p>
</section>
</body>
</document>


+ 0
- 6
xdocs/stylesheets/project.xml View File

@@ -69,12 +69,6 @@
<menu name="Projects">
<item name="Welcome" href="/projects/index.html"/>
</menu>
<!--menu name="Antidote">
<item name="About Antidote" href="/projects/antidote/index.html"/>
<item name="News" href="/projects/antidote/news.html"/>
<item name="Design Overview" href="/projects/antidote/design.html"/>
<item name="Module HOW-TO" href="/projects/antidote/module.html"/>
</menu-->
</menusection>
</body>
</project>

Loading…
Cancel
Save