Hi Sascha,

Ich könnte natürlich alle GUI-Elemente public machen, aber ich
dachte, die private-Deklaration wird schon ihren Sinn haben...
Access to the GUI elements is initially private to hide as much as possible. If you need to access the GUI elements from other classes then it is in our opinion ok to change the access to public. The other option (which we do not recommend) would be to add all controller code to the GUI class.

Wie ist bei einem so komplexen hierarchischen Aufbau von View und
Controllern das übliche Vorgehen?
When creating a controller, pass on the corresponding view and the model (all the data required by the view). So, first create the view and the model, then create the controller passing on the view and the model. The controller then configures the view (e.g., setting models like TableModels) and registers itself as listener to events (e.g., as ActionListener on buttons).

If the view has subviews and the controller has subcontrollers: After configuring its part, the controller creates its subcontrollers and passes on the subviews and the submodels. The following code illustrates the idea, there is still room for more abstraction (e.g., abstract super class for all controllers, including templates methods to overwrite, ...).

public class XXXController {
   public XXXController(XXXView view, XXXModel model) {
       configureView(view, model);
       registerListeners(view, model);
       createSubControllers(view, model);
   }

   private void createSubControllers(XXXView view, XXXModel model) {
YYYController yyyController = new YYYController(view.getYYYView(), model.getYYYModel()); ZZZController zzzController = new ZZZController(view.getZZZView(), model.getZZZModel());
   }

   ...
}

You might also take a look at the Presentation Model pattern
(http://www.martinfowler.com/eaaDev/PresentationModel.html).


Regards Dany

PS: Please post your future questions to one of the official support mailing lists (see http://www.canoo.com/ulc/products/support.html).


-----Original Message-----

Regards Dany



-----Original Message-----
From: Sascha Raubal [mailto:[EMAIL PROTECTED]
Sent: Montag, 30. April 2007 10:59
To: [EMAIL PROTECTED]
Subject: Frage zum MVC in Canoo


Grüß Gott, Herr Pfenninger!

Ich rätsele gerade über das sinnvollste Vorgehen beim Design von
Views und Controllern.
Da interne Diskussionen mich nicht weiterbringen, bin ich so frei
mich schon mal mit einer Frage an Sie zu wenden.
...

Folgendes Problem:

Ich baue die GUI des DataWizard relativ feingranular auf.

Also, als oberstes Panel dient z.B. ein TabbedPane, darin liegt unter
Anderem ein CardPane, die einzelnen "Karten" sind wieder eigene
Klassen, das geht bis auf kleine Panels innerhalb derselben Anzeige
hinunter. Die einzelnen Panels kann ich ja im Visual Editor schon den
CardPanes oder TabbedPanes usw. hinzufügen.

Und nun kommen die Controller dran. Die müßten - vielleicht nicht
ganz so feingranular - die selbe Hierarchie abbilden.
Man könnte also im Großen und Ganzen sagen, jedes Panel hat seinen
eigenen Controller.

Nun müssen sich einerseits die Controller gegenseitig kennen (um z.B.
Informationen nach oben und unten durchzureichen), andererseits
müssen die Controller ihre Panels und die Panels ihre Controller
kennen. Diese Panels (und alle anderen GUI-Elemente) werden vom
Visual Editor übrigens ständig private deklariert. Soll man also von
außen gar nicht auf Unterpanels zugreifen?

Mein Dilemma - oder meine Frage - ist:
Wie gehe ich am sinnvollsten vor?
Soll ich immer im Controller das entsprechend Panel anlegen (new ...)
und die "Unter-Controller", die dann wiederum die Unterpanels anlegen?
Die GUI-Elemente sind ja, wie gesagt, vom Visual Editor als private
deklariert, da käme ich erst mal von außen nicht dran.
Oder sollen die Controller Inner Classes der Panels sein, und diese
erzeugen sich ihren Controller selbst? Dann wäre die private-
Deklaration sinnvoll.
Dann muß ich aber immer noch dafür sorgen, daß sich die Controller
untereinander kennen.
Ich könnte natürlich alle GUI-Elemente public machen, aber ich
dachte, die private-Deklaration wird schon ihren Sinn haben...

Wie ist bei einem so komplexen hierarchischen Aufbau von View und
Controllern das übliche Vorgehen?

Vielen Dank im Voraus,

   S.Raubal

--------------------------------
Sascha Raubal
Entwicklung

Lobster GmbH
Hauptstr. 67
82327 Tutzing

Tel: +49  (8158) 9 0766 - 0
Fax: +49 (8158) 9 0766 - 99

[EMAIL PROTECTED]
http://www.lobster.de
-------------------------------
E/B/D Integration ist jetzt Lobster GmbH.
Besuchen Sie unseren neuen Web-Auftritt.

HRB 35416
Geschäftsführung: Dr. Martin Fischer

_______________________________________________
ULC-developer mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/ulc-developer

Reply via email to