Hi,
I second this. We need to decouple the main classes for sure.
Thanks from Chris
Ray Benjamin schrieb:
>
> This is exactly the kind of discussion I think needs to happen before
> a design is settled on.
>
> As Christian points out, Facades are usually quite large. The question
> becomes, is there unneeded functionality in the MindMapController that
> should be moved out of it?
>
> The biggest problem I've run into, when trying to create the new
> format module, is that I can't create an independent MindMap because
> of the interrelationships between so many of the top classes. It might
> be best to think about taking the refactoring in steps.
>
> The current design has served for some time. It has problems:
> * You can't have 2 models open and displayed at the same time.
> * High cohesion between modules makes it easy to introduce bugs -
> the same cohesion makes it harder for new programmers to learn the
> program.
> * It is difficult to add new features to the program.
> * Groovy, our chosen scripting language, has universal access to
> the code, so it presents as security risk.
>
> I'm sure there are others that the rest can come up with. Perhaps we
> need to identify the areas that are causing us the most grief, and use
> those to guide us in choosing an appropriate design.
>
> Ray
>
> Christian Foltin (GMX) wrote:
>> 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
>>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> 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
>
-------------------------------------------------------------------------
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