- Requirements
- Users survey
- Vision
- Configuration
- Jython Dependencies
- Interface Specification for Helpers and Tools
- Preferences
- Using a JDOM document as a Swing Document
- Using Jython and Java


Inception phase

Elaboration phase

SPEdit project log

1. Inception phase

03-Sep-2001: Produced a raw version of the Vision and Risks list artifacts. Published the website on SourceForge. Note: Many of the documents adviced by the RUP are really optional. In my case the vision document is good, but I actually don't know exactly where to put all my ideas... the Vision document has too many sections.

04-Sep-2001: Wasted the whole day trying to understand the Swing Document model.

05-Sep-2001: Have been looking for documentation, browsing through the Java source code to find out how to use the Document model. I have found very interesting documents Links.stx that prove that we will have to do an XMLDocument ourselves that will be both an XML Document and a Swing Document.

06-Sep-2001: Should be on holiday but went here to do some SimTex and work on the new SPEdit website.

07-Sep-2001: Developping a prototype bridge between Swing and JDOM. The problem encountered is the following: - I have an XMLDocument extends org.jdom.Document implements javax.swing.Document . - I have an XMLElement extends org.jdom.Element implements javax.swing.Element. - The getDocument() method has two different return types: - javax.swing.Document. - org.jdom.Document. Even if it is conceptually true, returning an XMLDocument which is both results in a compiler error. In this respect I am trying to solve this problem with Jython, which has been chosen for being compilable and clear. I have looked at DynamicJava, but it does not allow not to specify the return type. Will try with Pnuts.

09-Sep-2001: Have been working on SimTex all day. I opened a project webpage on http://www.greatbridge.org , improved the HTML stylesheet and made a working Lout stylesheet.

10-Sep-2001: Have read the RUP and waits until the interviews planned on Tuesday for improving the Vision document. I made some JUnit test suites and am working on the XML bridge which seems to run well with Python- I still have to make better test suites.

11-Sep-2001: Found a new architecture for the XMLDocument that allows not to have both Swing and JDom elements in one class. I am also writing some test suites to check if it behaves correctly. Really bad things happened in the USA- seems like it will be the start of a major conflict.

12-Sep-2001: Improved the test suites for XMLElement and XMLDocument. XMLDocument still has to be worked hard. In the afternoon interviewd Silvia, Stephanie and Elisabeth C. It gave a really good insight into SwissProt.

I then enhanced the Vision document and also wrote the requirements document which will help having a better understanding of what has to be done. Actually the RUP Vision document is quite unclear as it does not embodies the user's requirement, but rather a description of the user themselves.

I hope to be able to write use cases and scenarios next week.

13-Sep-2001: Improved the overall code and JavaDoc. Made better test cases, interviewed Andrea who gave really detailed information about the curation process. Am working on the XMLElement text methods, which are particularily difficult to set up, especially the cutString() and getDecision() methods.

14-Sep-2001: Debugging and improving the XMLElement and XMLDocument, trying to have a running prototype on Monday or Tuesday.

17-Sep-2001: Discovered how the View classes are strangely implemented into Swing. Trying to display the XMLDocument on a TextPane. Restructured some of the code, improved JavaDoc.

18-Sep-2001: Fixed a lot of bugs in the XMLDocument and XMLElementWrapper. Still trying to be able to display something.

19-Sep-2001: Managed to display an XML document. In fact the ParagraphView are quite buggy, using a BoxView was much better. Have started to write event handling in the document, and also allowing to configure the ViewFactory using a simple XML file.

20-Sep-2001: Have created XMLText and XMLTextWrapper. After having many hesitations on wether or not to make this kind of class, I made my decision because when text content changed in an XMLDocument the attached XMLTextWrapper did not follow the change, thus rendering the views useless.

This modification has lead to some "dirty" changes, eg. there are no more String in an XMLDocument, which may be a problem when outputting an XML file. I think it could be solved with simple pre-output processing, eg. converting XMLText objects to Strings.

I have also improved the test suites.

24-Sep-2001: I had to rewrite the TextView Model-View functions, as they were not working correcly. I've redesigned event managment, which is still quite slow (just as text redraw).

I have investigated the use of CSS and think it is a dead-end, as the CSS parsers require a DOM and not a JDOM. Anyway I it is possible to describe styles with XML, and we could even think about an style editor with SPEdit core package.

25-Sep-2001: Ivan just gave me a Linux box. Have installed the Mandrake 8.0 and set up the environment.

26-Sep-2001: Have implemented style management and part of the XML configuration of the editor. I am aiming at having a GUI that will give curators a good glimpse of what the future editor will look like. Have tried CVS, and it really, really, really sucks! I will try to find a solution for using PRCS over a network.

27-Sep-2001: Have been thinking about a way to store style information better than the current one. Have made position managment and improved test cases for the document.

Have continued to work on OrchidéeNoire which now almost has a Petal managment functionalities. There should be a working prototype on sunday to blast the entire website from the SimTex/XML repository.

28-Sep-2001: Added basic padding support for the TextView . There has been a complete redesign of the Stylable interface, plus a really sweet Stylable implementation. I am turning TextView to make use of the new Stylable interface. XML configuration update will not be really difficult... I just hope style access will be fast enough. At least it seems a really promising feature for the editor, as soon as the views will handle the different style aspects.

01-Oct-2001: Implemented Style support in the TextView. Have tried to optimize some stuff, but I am quite demotivated to be working alone on this project, especially when the things get gory...

Anywas, I have updated the XML configuration engine to support the new style interface. The new mechanism is really flexible and powerful.

02-Oct-2001: Implemented part of the PlugIn architecture. Fixed bugs in the Views, made a TableView that still has some bugs. It seems like the Swing views produce really strange behaviour. The only solution I see is to stop the development of views until I have a better information about the caret, which will be made possible as soon as there will be a status bar. My priority is now to get a working prototype that shows the editor possibilities on an entry subset.

In this respect I will interview Stephanie tomorrow, she knows of interesting scenarios for the editor, which will surely help in making a pertinent demo prototype.

03-Oct-2001, Wednesday: Implemented a basic Application architecure, made menu actions to quit, load and save documents. I see a lot of possible optimizations, especially in the following field: - Faster document events/edits - Perception of document events in views (which leads to complexity problem when a lot of views are already present). - View drawing and line wrapping. Instead of redrawing and recalculating everything each time, the algorithms should be made not incremental , which means independant redraw of a isngle character or substring should be made possible. I also made the status bar, which lead me to think about really cool UI improvemts. I also restructured part of the code. I still don't know if I will have to put an app package to put the app thing and move Styleable and Stateable to the ext package.

Prototyping the GUI with Jython is a real pleasure, I have written parts of the gui easily, there does not seem to be any speed issue, especially if I generate a java file from the Jython file. It may be a good idea to keep all the gui stuff in Jython, which is way more flexible than Java.

04-Oct-2001, Thursday: Made my prensentation on Piranhas, which took me almost the whole morning. I then prepared the presentation for the retreat while thinking about a way to express dependencies in XML.

I started to write a RELAX NG schema for the configuration file, I also made some small structural changes to this format.

05-Oct-2001, Friday: Have written a really small XSLT stylesheet to generate a skeleton configuration file for a given XML Schema file. I have continued to think about the expression of dependencies in XML.

I am now doing modification in the XMLViewFactory to support the new XML configuration file.

08-Oct-2001, Monday: Prepearing the retreat, worked on a possibility to do paragraph breaking, but that seems quite difficult.

15-Oct-2001, Monday: Back from the retreat. The decision has been taken to use Python (or any other scripting language that fullfill our requirements) as the language for macros. This is cool!

I have partially managed to use the Swing text API views instead of those that I have developed, but there I many errors that I don't get.

2. Elaboration phase

16-Oct-2001, Tuesday: After a lot of pain I finally managed to use the Swing views with the XMLDocument , which is now a StyledDocument . The new solution is really slow (I mean REALLY slow), so slow that I have no other choice than optimizing. I also improved the Javadoc in source code.

17-Oct-2001, Wednesday: I have reworked a lot of stuff in XMLDocument and XMLElement , not on the API level but on architecture level. I am trying to optimize everything... but in the meantime 6 of the 21 tests fail... I just hope to be able to fix this soon to be able to get benefit of the brand new optimized display engine... this will gonna rock!

18-Oct-2001, Thursday: Have fixed a few things in the architecture, made a revamp of the XMLDocument and finally managed to display everything using the Swing view. I had to drop my optimizations on offsets access in XMLElement, as it was getting really complicated. Switching back did not lead to much performance loss... and it's always reassuring to know it could be faster ;)

19-Oct-2001, Friday: Implemented a WrapperView that should provide CSS-like facilities to any other View. There are still some problems with it, as problems with stylesheet which can be solved but will lead to a HUGE performance loss... this is kinda important.

Have also implemented the left-side navigation tree, but I have problems selecting a node when the user moves the caret. Apart from this small glitch it worked fine without too much effort... I'll have to modify the configuration file to support hiding of elements.

01-Nov-2001, Thursday: It's been a long time since I haven't update this log. The editor has not really advanced much. The WrapperView is implemented, element removal works fine, element insertion almost works fine, there is a possibility to see the XML source. The SwissProt sample configuration and document have also been updated.

From 01-Nov to 07-Nov: Development almost frozen. Have been migrating to MacOS X, installing and configuring tools. Have been thinking about the way everything can be configured, but I am waiting for python to be "officially" admitted in the editor core.

07-Nov-2001, Wednesday: Have improved the element filtering, allowing to strip elements content according to information found in XMLInformation. The whole project has been migrated under ProjectBuilder and CVS, some documentation have been written, other have been reviewed.

Fixed the selection bug, where selection did not occur at the same place where text was displayed. The (known) cause was both the WrapperView and the adjustments made in the custom LabelView ...some tweaking of the GlyphView paint method did it right: the highliter just made the translation twice.

08-Nov-2001, Thursday: Working on a way to make the association between a location on the document pane and the corresponding view. This would allow to make views react to mouse events.

09-nov-2001, Friday: Eventually managed to make the association between location and views. Views can now implement MouseListeners and react to events. This is a really nice improvement toward GUI dynamicity.