## These are wiki comments - leave them in so that people can see them when editing the page ## This template may be useful for documenting use cases ## Developed in response to a hackathon request for formalized, detailed use cases ## to help direct implementation proposals || '''Use Case Name''' : Groups of Graphical Elements || || '''For Feature''' : Groups || || '''Editors''': Kristina Hanspers || ## EXAMPLE: ## Use Case Name: Representation of Protein Complex ## For Feature: Grouping Function ## Editors: Mr. Knowitall <> == Summary == ## Provide a one paragraph description of the use case To facilitate pathway editing, grouping of graphics lets the user move around a set of graphics that have already been optimally aligned, to avoid having to move each graphic separately. It also effectively enables the user to create custom graphics, by combining various graphics. This should be very similar to how grouping works in Powerpoint. This implementation of Groups will not necessarily use collapse and expand. == Step-by-Step User Action == ## Provide a step-by-step account of how the user would execute the use case. For example: (1) right click on node, (2) choose "expand" from context menu, (3) new view is created, etc... Creating a New Grouping of Graphics 1. Select two or more graphics 1. Choose "Group” from a context menu, main menu or toolbar 1. Be able to move the group around the canvas 1. Be able to un-group (destroy) the individual graphics to move them separately or delete particular graphics in the group == Visual Aides == ## Provide attachments to images to illustrate the use case (screenshots, mock-ups, storyboards, etc) The below figure shows and example from GenMAPP where a number of separate graphical objects (lines, arcs, rectangles) are joined to form a larger custom graphic, in this case an illustration of a striated muscle fiber. {{attachment:GroupAPI_UseCase10A.jpg}} == Requirements for Cytoscape == ## List the components/functions already in Cytoscape that are relevant to the use case and possible implementations (e.g., "current context menus can be used accomplish step 2 above") ## Also list components/functions that are needed in Cytoscape to execute the use case (e.g., "cytoscape needs to allow for multiple views of the same network for this to work") * The Group API can handle this one in terms of create and destroy * A simple GUI for create and destroy should be sufficient. * Need to support the storage of groups in a pathway file format. xGMML and GenMAPP's GPML? == Importance == ## Describe whether this use case is critical and how frequently users would come across it. Describe common work flows that might involve the use case (e.g., "this use case comes up regularly, on a weekly basis, whenever we want to analyze our protein superfamily networks"). Using a grouping feature, users will be able to create much more sophisticated custom graphics by joining existing simpler graphics together. Handling groups of graphics is important for effective pathway editing. == Other Examples == ## List other applications or relevant examples outside of Cytoscape that provide some or all of the desired functionality (e.g., "You can do this using the group function in PowerPoint"). * Illustrator and other such programs have a grouping function that mimics the restriction on children once a group is formed. You cannot move the children relative to each other, for example. If you want to treat them independently, you have to ungroup. == Comments == AllanKuchinsky - 2006-11-27 16:18:03   How would one add a child to a group?  Would you need to destroy the group then build a new group that includes the new member? Can groups be nested?