Changes between Version 23 and Version 24 of PAGE_ELEMENT_GROUPING_R0


Ignore:
Timestamp:
05/21/09 15:47:59 (16 years ago)
Author:
kyli
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PAGE_ELEMENT_GROUPING_R0

    v23 v24  
    6969 
    7070 * Rename the  interface PageElement to '''GroupElement'''. Add the following methods: 
    71    * GroupElement getParent(), providing the parent container of this element. 
     71   * GroupContainer getParent(), providing the parent container of this element. 
    7272 * Define an interface '''GroupContainer''' which contains Groups. It will have the following methods: 
    73   * GroupContainer getParent(), providing the parent GroupContainer of the class implementing it.  
    74   * RwListProp<PageElement> elements(), all the elements this container owns. They can be other groups. 
     73  * GroupContainer getParent(), providing the parent GroupContainer of it.  
     74  * RwListProp<ResourceRef<PageElement>> elements(), all the elements this container owns. They can be other groups. 
    7575 * The '''Page''' will implement GroupContainer - it will have GroupElements. Page will not have a parentContainer - it will be initially set to null. The Group whose parent container is a Page is a root group.  
    7676 * The '''Frame''' will implement GroupElement - it will have parent GroupContainer. 
    7777 * Define class '''Group''' which will handle grouping, ungrouping and group navigation. It will implement the GroupContainer, GroupElement and will extend Resource. The Group class should have two static methods which will do exactly what is supposed for grouping of elements: 
    78   * public static Group createGroup(Page page, List<GroupElement> elements) - which will create a Group from given elements. 
     78  * public static Group createGroup(List<GroupElement> elements) - which will create a Group from given elements. The grouping should find the common parent of the both elements and move them with their subtrees to a new group. If they do not have a common parent, they should not be grouped. 
    7979  * public static void deleteGroup(Group group) - which will ungroup a previously created group. 
    80   * void enterGroup() - which will set the current group to this one and view it as a root group. 
     80  * void enterGroup() - which will set the current group to this one. 
    8181  * void exitGroup() - which will go one level up in the group tree. If the current group is a root one, does nothing. 
    82  * Clicking on either frame of a group should select all the group. 
     82  * This class must provide functionalities for moving, resizing, rotating. It is different from the multi_select operations, since rotating a group does not rotate every element inside the group, but the elements altogether. 
     83 * Clicking on either frame of a group should select all the group. For this, create a property currentGroup() in the PageWorkArea and watch for it in the PageElementLogic. 
    8384 * The actual grouping control will be done through the '''HaloButtons''' created for this. 
    84   * Selected elements will be able to be grouped. The grouping should find the common parent of the both groups and move them with their subtrees to a new group. If they do not have a common parent, they should not be grouped. 
     85  * Selected elements will be able to be grouped.  
    8586  * Selected group will be able to be ungrouped. 
    8687  * Both halo buttons will appear on selecting more than one frame.