Node Cloning Implementation

  • Krzysztof Kachel

    Hello everyone,

    Thanks Christian and Daniel for looking over my code because  my colleagues only want to look over UML diagrams ;)
    BTW do you find those diagrams useful.

    > 1. It only allows *shallow* cloning, for no clear reasons.

    I had my private reasons. This was my first try on so big project and I wanted simple implementation.
    I recognize that branch cloning would be more attractive but it was too big challenge for me at the time.
    I'm already thinking about possibility of extending this implementation with cloning of branches.

    > 2. Technically, it introduces a plethora of new classes. I do not see that this feature needs anything of the sort. IMHO at most one or two auxiliary classes would be needed to implement the feature.

    I agree completely.
    I introduced four classes: two of them are implementing feature and I added others because I didn't want to modify original files.
    I admit that this wasn't a good idea because of duplicating code in several methods.

    I'm looking over the code of copy and paste actions now and I will probably be able to strongly simplify them.

    > I have created the following page, to provide some links and a summary

    Thanks Daniel for a wiki page :)
    Do you wish me to update this page with my approach on cloning and screenshots?  

    (source: wiki page)
    > There is a third-party implementation of cloning, with imperfections like shallow copying and a failure to copy formatting.

    I would like to inform you as I did Christian that I will implement copying formatting and attributes.
    Please look at the post.

    • Daniel Polansky

      Daniel Polansky - 2008-03-19

      Hello Krzysztof,

      I personally enthusiastically recommend that you document what you did in FreeMind's wiki; please note however that I am not a representative of the FreeMind team. Still, if you risk creating the page, keeping a backup copy of the text elsewhere, I estimate it will be okay with Chris - FreeMind's director. You can do no harm by creating the page AFAIK; at worst, Chris can simply delete the new page.

      If your planned documentation should be longer, I would recommend you to create "Node cloning/Krzysztof" page or similar, using "/" character, to which you add a link from "Node cloning" under the "See also" heading.

      Best regards,

    • Krzysztof Kachel

           Fitting with today's concept of FreeMind

      I've created only two auxiliary classes to implement cloning:
          1) FamilyOfClones
          2) FamiliesOfClonesHashMap

      The rest of classes are created according to FreeMind concept and they are needed to navigate clones like:
          1)PasteCloneAction is needed to add option to toolbar and created like most actions in FreeMind.
          2)UncloneAction was created like most actions in FreeMind too. 
          3)MoveToNextCloneAction was created according to "Move to root" feature.
          4)HideClonesIcons was created according to "Show icons hierarchically".

      All classes are fitting with today's concept of FreeMind :)


Log in to post a comment.