Re: [NOF-Contrib] SWT viewer
Brought to you by:
rcmatthews
From: Dan H. <dkh...@gm...> - 2010-06-16 06:28:19
|
Hi Dave, Thinking further, I've changed my mind: I think it might be best for you to press on with a simple SWT viewer, rather than resurrect my RCP viewer. I say this because it's probably best for you to dive into NO (which as you say is all gonna be new to you) with a toolkit you're comfortable with, rather than have to learn a brand new one such as RCP. The OSGi issue could also be a long detour, and I wouldn't want it to sap your enthusiasm! Once you get an SWT viewer going, you might then be in a position to go round the loop and "do over" using RCP. Some ideas to help you structure your work: 1. you might remember, I did put up some "user stories" for writing viewers; you might want to use them as a way of plan the order of implementation. They are at http://danhaywood.com/resources/viewer-stories/. 2. At the highest level, our generic OOUIs render one of three things: an object, a collection of objects, or an action parameter. In Wicket Objects these correspond to different page types. In my old RCP viewer the action parameter was in an accordion view on the LHS, and I used an editor to display either objects or collection of objects. You'll need to figure out what they will be in your viewer. 3. can I strongly suggest that you use a chain of responsibility pattern to build up the GUI piece by piece. Both Rob's DnD viewer and my Wicket Objects viewer do this. Basically you have a registry of view factories, and ask each one to whether it can render the object, or the part of the object (a property, a collection, an action, an action parameter etc). Doing it this way opens up the possibility of customizing the views for objects (eg a google maps mashup). 4. have an applib, a metamodel and a viewer child modules (like in Wicket Objects). The idea of the applib is that it allows viewer-specific annotations to be defined. The metamodel module is then used to provide facet factories so that Naked Objects can pick up these annotations to expose in the NO metamodel for your viewer. The viewer is where the bulk of the work goes. Initially both applib and metamodel can be empty, but you'll probably think of a few little cute things you'd like to add eventually. (I just added a @WizardPageDescription annotation in Wicket Objects, for example). Cheers Dan |