Excellent! I am glad to see you stepping in to do that. We promised this feature so many times that I blush every time somebody asks for it again :-)

As for the Modeler architecture, it is a bit eclectic, as we tried a number of approaches over time, not always fully cleaning up the deprecated stuff (Scope framework use is an example of a leftover).

I can better comment on specifics if we decide on a visual solution first. Since comments can be added to almost any mapping element - [Obj|Db] [Entity|Attribute|Relationship] Query (?), my first thought is to add an info button (same as the one used on relationships panels) to the rest of the mapping elements. This button would pop a dialog showing comments editor. In case of relationships a dialog can have two tabs: one displaying the existing stuff, and another one displaying Comments.

* Look under DbEntityRelationshipTab.java for how the dialog is started.
* Look under 'org.apache.cayenne.modeler.dialog.codegen' for the latest examples of tabbed dialogs.


Now specifically the implementation of panels:

* View layout is done with JGoodies forms, usually on top of Swing BorderLayout, except for the most trivial cases where Swing layout managers can handle the entire view.

* Model and Control layer of each panel is done using two approaches (ignoring deprecated Scope for a moment) that can be mixed in any proportion you'd like:

- A "traditional way" via Swing listeners.

- Via a custom bindings framework (org.apache.cayenne.swing - included in the Modeler sources). E.g. CodeGeneratorController.java and all preferences dialogs use bindings, separating each panel into two classes - controller and bound JComponent-based view.

At the dialog and panel level that's basically it. For this task you won't have to deal with application-level wiring too much - that's a bit messy and is pending the switch to the plugin architecture.

Andrus


On Jan 31, 2007, at 12:07 PM, Malcolm Edgar wrote:
Hi All,

We use Cayenne day in day out for a lot of our work, and the Cayenne
Modeler has a pretty central place in maintaining the database design,
and hence the application design.

Being able to have comments associated with DbEntity attributes and
relationships would be an extremely useful feature, especially with
large teams, where a design is being shared with other members, or
even to simply come back and remember some of the original design
thinking.

This issue has been raised before in:

https://issues.apache.org/cayenne/browse/CAY-56
https://issues.apache.org/cayenne/browse/CAY-400
https://issues.apache.org/cayenne/browse/CAY-659

I would like to contribute some time in moving this forward, before
the next JPA release of Cayenne.  I am pretty good with Swing, but
would like some guidance in how this would best be done in the Cayenne
Modeler architecture.

regards Malcolm Edgar


Reply via email to