by kokkoras » October 12th, 2006, 12:41 am
I am coming back to issue 14, regarding the addition of a OnSelectionChange event. The are basically 2 ways to select objects:
1. one object at a time
2. many objects at a time
In both cases we don't care if it is a first selection or a modification to a selection.
My suggestion is the following:
Have the TSG fire an OnSelectionChange event when either of the 2 selection methods is used. Then, let the user deside in the OnSelectionChange event handler if the event was handled. If the user says handled=false (which would be the default behaviour) then fire also the OnObjectSelect event for each individual objects selected/deselected.
It is like the behaviour in the onUpdate event handler of TToolBar, in which if the user says that the event was not handled then the onUpdate event handlers of the individual buttons are fired.
Well, Kambiz, what do you think?
16. Add group support.
I can think of the following way to do this: Create a special class of Graph object, say a GraphGroupNode. This will be like an ordinary graph node (that is, it will have a caption, alignment and layout properties, etc.) but will also include a list of the referents of the objects it includes. At the same time, all nodes should have a property defining the group node this node belongs to (if any). In this way, it will be possible to handle the various objects in diffenet ways according to the operation. For example:
>> during selection, objects belonging to a group are not marked as selected.
>> moving a group should mode its internals as well, an so on.
In another approach, maybe it is better to add this ability to the current GraphNode class and not create a GraphGroupNode. If a GraphNode has an emply list of grouped objects then it is not a group. If it belongs to no other graph node then it is an independent node that does not belong to any group.
In either case, being able to add groups inside a group is desirable. Having said this, I think that the 2nd approach proposed above looks more promising.
I understand though that I am only scratching the surface on this issue. It is definitely not so simple to add group support.
Fotis