Current Controller Architecture

One way to understand a piece of software architecture is to make a diagram out of it:

Also, it's an excuse to make another diagram... Oh, and here's the version with packages:


The idea is the following:

1. mouse events happen in Java2D or SWT (or...)
2. needs to be converted into something platform independent
3. gesture events need to be interpreted into editing actions
4. editing actions have to be called

Now, by carefully choosing the editing actions, we can make a scripting language at the same time. Is this important? I think so. This allows people to write simple scripts to add protective groups to molecules, or ...

Step 2 is important to allow creation of editing frameworks for applets and RCP without having to depend on buggy AWT-SWT bridges, which has given many of us very bad headaches.