RFC Name : ... |
Editor(s): ... |
<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[2]"] (see also the log)>>
About this document
This is an official Request for Comment (RFC) for Layers/Annotation/UI for custom nodes.
For details on RFCs in general, check out the Wikipedia Entry: Request for Comments (RFCs)
Status
May 15, 2007 (not yet completely written)
A proof-of-concept implementation has been created and formed the basis of the BubbleRouter Plugin.
How to Comment
To view/add comments, click on any of 'Comment' links below. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Here is an example to get things started: /Comment.
Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the RFC makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.
Proposal
It has been deemed useful to provide the ability to draw graphical annotations on a network. In this context, annotations are anything one might find or a GenMAPP diagram, ie brackets, brackets, legends, etc.
Requirements
- annotations drawn using Cytoscape editor
- annotations appear above or below network layer (node/edge attributes remain as is)
- selected node(s) should appear above unselected node(s)
- annotations supported: labels, brackets, braces
Implementation (Prototype)
NetworkViewManager creates a JInternalFrame that wraps the newly created CyNetworkView
A new class, InternalFrameComponent is constructed with a reference to both the JInternalFrame and DGraphView (CyNetworkView). This class contains references to DingCanvas(es). The InternalFrameComponent is responsible for setting up the properly z-ordering of the DingCanvas(es) in the JInternalFrame.
DingCanvas is an abstract class that is extended by both the InnerCanvas and a new class, ArbitraryGraphicsCanvas. The former is part of the Ding library and renders network models. The latter is a new class which is responsible for rendering annotations.
Notes
- remove inner canvas listener/event - use contentChanged event
to support selected node(s) above unselected node(s), changes can be limited to GraphRendering class, using 2 pass alpha compositing
need to open up TextRenderingUtils to allow rendering of labels on ArbitraryGraphicsCanvas(es)
Comments
- do we need to consider when and when not to draw annotations? Should we be checking against level of detail in the renderer before drawing annotations? How would this relate to drawing fixed-size annotations such as legends?