## 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''' : ../LayoutRules || || '''For Feature''' : MIMEditor || || '''Editors''': DavidKane || ## 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 This is perhaps not so much a particular use case, but an explanation of layout constraints that cut across several use cases. == 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... N/A == Visual Aides == ## Provide attachments to images to illustrate the use case (screenshots, mock-ups, storyboards, etc) Multiple Edge Segments: An edge may be broken into any number of segments. Vertical and Horizontal Edges: The primary paths for all edges should align vertically and horizontally. The last edge segment that connect to a node, may be at an angle that deviates from the horizontal or the vertical, as in this example: Crossing Edges: The edges may cross one another at right angles, but may not overlap nor cross where there is a node. Minimum Edge Length: To avoid visual confusion with the symbols for ../TranscriptionInhibitionShorthand and ../TranscriptionShorthand, there should be a minimum segment length, that is longer than the hitches in these symbols. {{attachment:layoutrules1_061121_dwk.png}} Other Angles: There are several places were acute angles as used a part of the notation. These include ../BooleanLogic, ../PathBranching, ../ShowCompetition, and ../StoichiometricConversion. In each of these cases, the user interpretation of the meaning of the acute angle is dependent on the context in which the angle occurs. == 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") TBD == 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"). The layout rules are important for minimizing clutter and reducing ambiguity. == 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"). == Comments == AllanKuchinsky - 2007-01-23 05:12:16   This may be challenging in terms of changes needed for the renderer.  It might require some support for rudimentary constraint handling in the EdgeDetails class.  One issue is how general to make such constraint handling.  Should we keep things simple and implement only that constraint handling that is necessary to support MiMs?  Should it be more general to support other, unanticipated usage?  One hybrid measure to consider is to support a "manhattan" style set of constraints, as is done in some CAD layout systems.  This all requires further study of the renderer internals. ---- AllanKuchinsky - 2007-05-25 10:58:27   One simplifying assumption is that if the acute angles are always at one end of the edge, then they could be implemented via new arrowhead types.