From 1b319147f9fff577f29dc79d9188eb8665f1f47a Mon Sep 17 00:00:00 2001 From: metasim Date: Tue, 13 Feb 2001 13:38:53 +0000 Subject: [PATCH] Initial blurb on Antidote. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268659 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/Integration/Antidote.html | 304 +++++++------------------- 1 file changed, 81 insertions(+), 223 deletions(-) diff --git a/docs/manual/Integration/Antidote.html b/docs/manual/Integration/Antidote.html index 4436afcde..5a73d8271 100644 --- a/docs/manual/Integration/Antidote.html +++ b/docs/manual/Integration/Antidote.html @@ -1,249 +1,107 @@ - Antidote Design Overview + About Antidote -

Antidote Design Overview

+

About Antidote

-

Version 0.2 (2000/12/18)

+

Version 0.1 (2001/02/13)

Authors: Simeon H.K. Fitch

-

Introduction

+

Overview

-

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 - ;-)

+

Antidote is the Ant subproject + for developing a graphical user interface to facilitate the + efficient use of Ant. In general, its purpose is to allow the + quick generation, modification, and use of Ant build files, + helping the user define a build process and track down build + problems. It is not meant to be an IDE, but an enabler for the + powerful features available in Ant, particularlyl for novice + users, or users who want a rapid way of controlling their build + process.

-

Overview

- -

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.

- -

To acheive 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 - predifined Swing model interfaces. Furthermore, the architecture - is highly event driven, whereby modules communicate via a shared - communications channel.

- -

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.

- -

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 EventBus. - -

-
-Antidote Component Architecture
-
-   +---------------+ +----------------+ +-------------+ +-------------+
-   |               | |                | |             | |             |  
-   | ActionManager | | EventResponder | |  AntModule  | |  AntModule  |
-   |               | |                | |(ProjectNav) | |(SourceEdit) |  
-   +---------------+ +----------------+ +-------------+ +-------------+
-           |                  ^               ^               ^
-           |                  |               |               |
-      ActionEvent         EventObject      AntEvent       AntEvent
-           |                  |               |               |
-           v                  v               v               v
-  /---------------------------------------------------------------------\
- /                                                                       \
-<                                   EventBus                              >
- \                                                                       /
-  \---------------------------------------------------------------------/
-           |                  ^               ^               ^
-           |                  |               |               |
-      EventObject         ChangeEvent      BuildEvent     EventObject
-           |                  |               |               |
-           v                  |               |               v
-   +---------------+ +----------------+ +-------------+ +--------------+
-   |               | |                | |             | |              |  
-   |   Console     | |  ProjectProxy  | |    Ant      | | (Your Module)|
-   |               | |                | |             | |              |  
-   +---------------+ +----------------+ +-------------+ +--------------+
-
-    
- -

Event Bus

- -

The backbone of the application is the EventBus. Any - component of the application can post events to the - EventBus. Components that wish to receive events are - called BusMembers.

- -

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

- -

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

- -

When a BusMember registers itself with the - EventBus, it must provide a (so called) interrupt - level which is a integer value defining a relative ordering - for dispatching EventObjects to BusMembers. The - purpose of this is to allow certain BusMember instances - to see an event before others, and in the case of AntEventEventBus class defines the interrupt level constants - VETOING=1, MONITORING=5, and RESPONDING=10 to - help define categories of members. The implied purpose being that: -