Hi Dimitry,

the longer I think about your proposal, I see that it is contratictory
to what I has as goals in my development and what I want to achive.
So here some more comments:

    * Who says, that a small kernel is the right for an application like
      FreeMind? Only as the linux kernel is built like this?
    * An empty interface for extensions means that the main program
      can't help the extension to achive its goals. The extension is
      completely alone and responsible to do every work needed for it.
      This contradicts my main goal, that it should be easy to write
      extensions and that the main application should do the standard
      work like registering at the menus and to give signals, when
      important things happen.
    * Where is the problem that the MindMapController is long? It is a
      facade (see GOF) and offers all possible actions on the model in a
      reliable and undoable way. So, it is clear that every change
      action like setBold and setText is done via the MindMapController
      derived from MindMapActions.
      This is design by purpose as it is now clear what to do to change
      the map. Before, this was difficult and the change methods were
      spread all over the application.
      The facade would be removed by your design proposal.
    * I tried to make the MindMapController smaller by taking a map with
      String->Action pairs. But every access involved a casting then and
      I rolled the changes back.
    * I started to implement the storage of notes inside the plugin.
      Later, I saw that a lot of places need to change or to read the
      notes texts and it was absolutely clear, that the notes content
      must be available for everybody in the public model.
      You are about to remove the items from the model. Thus, they are
      not so easy to access.

So, let me state again my design goals:

    * It should be absolutely clear, how to change items in the model.
    * It should be easy to implement extensions. Extensions typically
      combine existing functionality in new ways users need them.
    * It should be clear, how things/responsibilitys are divided. (Like
      now, as the MindMapController is responsible to change/store the
      model and the model is responsible to hold it).

Summarizing, I see it very critical to have such a generic design setup
as you proposed.

Best regards, Chris
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freemind-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freemind-developer

Reply via email to