Monday, October 20, 2008

Chemical Editing...

As you might have seen, we, Uppala and the EBI, are working on the next generation JChemPaint. JChemPaint is an editor, and therefore, consists of a mode (IChemModel), a view (IRenderer) and a controller (IController). See the many posts in Gilleain's blog.

For the renderer I have set up a wiki page which I'll be hacking in the next days, which shows how a IChemObject content should be rendered in JChemPaint. It looks like:

The IController is a rather important part too, and like the IRenderer bit of JChemPaint, needs a major overhaul. The new design, discussed by Gilleain here and here, should, IMHO, look like:

In this diagram, the gestures can come from any input device, mouse, tracking ball, Wiimote, and will result in events in some widget library (SWT, AWT shown). The old JChemPaint, converted the Swing MouseEvent's directly into IChemObject modifications, making the code incompatible with SWT. This is why the Chemical Editing Events layer must be added.

Events in this layer look like addAtom(attachementAtom, coordinates) and setFormalCharge(atom, newCharge). The link to scripting should be clear now, and will help use write unit tests for this layer.