Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2006-01-26 13:42:55
Size: 1661
Editor: scsiapat1
Comment:
Revision 11 as of 2006-01-26 16:46:49
Size: 3645
Editor: scsiapat1
Comment:
Deletions are marked like this. Additions are marked like this.
Line 27: Line 27:
##The sections below may be useful when creating an RFC, delete the ones that are not Define and build an undo manager that handles both ''global'' edits and edits that are
''local'' to a specific network. Build a visual undo manager that shows operations so that users can select actions to undo.
Line 32: Line 34:

A ''local'' edit is one that is done in the context of a single network view, such as adding a new Cy''''''Node to a Cy''''''Network by dragging a shape from the palette in the Cytoscape''''''Editor. A ''global'' edit is and edit that has ramifications across multiple networks and network views, such as editing the value of a node attribute in the Attribute''''''Browser.

To support undo and redo, a component must remember each edit that occurs, the order of edits, and what it takes to undo and redo each edit. A component uses an instance of the Undo''''''Manager class to manage its list of undoable edits. The Undo''''''Manager manages the list by keeping a stack of undoable edits and a pointer to the {{{indexOfNextAdd}}}. This is described in more detail in Sun's Java tutorial at http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#undoableedits.

The way things are currently is that Cytoscape has an Undo''''''Manager that keeps one stack of undoable edits. Thus, if a user switches network views while going through a series of undo operations, then undo operations may be performed on networks other than the one that is currently visible. This is counter-intuitive. The undo operations should be managed on a per network view basis. This is done in tools such as Microsoft Word and Power''''''Point, where undo/redo operations are managed on a per network basis.

{{{ more to follow }}}
Line 38: Line 49:

 * what granuarity of operations should have undo/redo support. Certainly operations such as adding and deleting nodes and edges should be supported, but what about operations such as moving or resizing a node, or operations performed by automatic layout routines?

 * what level of depth for undo/redo should be supported?

 * what are the performance tradeoffs for the various undo/redo options?

RFC Name : UndoManager RFC

Editor(s): Allan Kuchinsky

TableOfContents([2])

About this document

This is an official Request for Comment (RFC) for UndoManager

For details on RFCs in general, check out the [http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Request+for+Comments&gwp=8&curtab=2222_1&linktext=Request%20for%20Comments Wikipedia Entry: Request for Comments (RFCs)]

Status

January 24, 2005: "Not yet completely written"

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

Define and build an undo manager that handles both global edits and edits that are local to a specific network. Build a visual undo manager that shows operations so that users can select actions to undo.

Biological Questions / Use Cases

General Notes

A local edit is one that is done in the context of a single network view, such as adding a new CyNode to a CyNetwork by dragging a shape from the palette in the CytoscapeEditor. A global edit is and edit that has ramifications across multiple networks and network views, such as editing the value of a node attribute in the AttributeBrowser.

To support undo and redo, a component must remember each edit that occurs, the order of edits, and what it takes to undo and redo each edit. A component uses an instance of the UndoManager class to manage its list of undoable edits. The UndoManager manages the list by keeping a stack of undoable edits and a pointer to the indexOfNextAdd. This is described in more detail in Sun's Java tutorial at http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#undoableedits.

The way things are currently is that Cytoscape has an UndoManager that keeps one stack of undoable edits. Thus, if a user switches network views while going through a series of undo operations, then undo operations may be performed on networks other than the one that is currently visible. This is counter-intuitive. The undo operations should be managed on a per network view basis. This is done in tools such as Microsoft Word and PowerPoint, where undo/redo operations are managed on a per network basis.

 more to follow 

Requirements

Deferred Items

Open Issues

  • what granuarity of operations should have undo/redo support. Certainly operations such as adding and deleting nodes and edges should be supported, but what about operations such as moving or resizing a node, or operations performed by automatic layout routines?
  • what level of depth for undo/redo should be supported?
  • what are the performance tradeoffs for the various undo/redo options?

Backward Compatibility

Expected growth and plan for growth

References

Implementation Plan

  • ["/Implementation Plan"]

UndoManager_RFC (last edited 2009-02-12 01:03:51 by localhost)

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux