Differences between revisions 10 and 15 (spanning 5 versions)
Revision 10 as of 2008-11-22 17:37:55
Size: 4732
Editor: CPE0017f2d98932-CM0011aec92938
Comment:
Revision 15 as of 2009-01-13 15:24:39
Size: 5436
Editor: 142
Comment:
Deletions are marked like this. Additions are marked like this.
Line 30: Line 30:
   6. '''Abstraction''': Plugins should not deal with low-level UI events, e.g. mousePressed, but rather with ''semantic'' events that Cytoscape provides, e.g. ''objectOpened'' instead of mousePressed() with (e.getClickCount == 2).
     * drag/drop may be a special case. What layer of ''semantics'' would Cytoscape want to provide above the Java paradigm of Transferables and Data''''''Flavors?
Line 50: Line 52:
   * [http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html How you've changed!"]    * [http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html How you've changed!]
   * [http://www.osgi.org/wiki/uploads/Links/whiteboard.pdf OSGI White Boarding]
   * [http://cytoscape.org/cgi-bin/moin.cgi/Cytoscape_3.0/ModelDiscussions#head-981c3691f1f46b4149fe9f22ab58a2a310b0e787 Previous Discussion on Event Hanlding]
   * [http://wiki.c2b2.columbia.edu/workbench/index.php/Framework geWorkBench framework for event handling]
Line 53: Line 58:
~-''List any issues, conflict, or dependencies raised by this proposal''-~ || item || pro || con ||

RFC Name : Event Handling

Editor(s): BrianTurner

Date: Nov 21 2008

Status: Draft

TableOfContents([2])

Proposal

How the production and consumption of events should be handled; in particular how plugins interact with each other, the model(s), view(s), etc.

Background

Concerns have been raised on several fronts regarding event handling that cannot be addressed by simple (existing) Java patterns, largely because the application is not monolithic but is made up of independently moving parts.

Use Cases

This is less a listing of use cases as it is issues and concerns; an outline of what any solution should attempt to address:

  1. Batching: The case where many events (like the creation of many nodes) could possibly be grouped together as opposed to handling each one discretely.

    • What does batching mean? In Eclipse a batch is defined as set of nested events:

      It is important to note that the broadcast does not necessarily occur immediately after the method completes. This is because a resource changing operation may be nested inside of another operation. In this case, notification only occurs after the top-level operation completes. For example, calling IFile.move may trigger calls to IFile.create to create the new file, and then IFile.delete to remove the old file. Since the creation and deletion operations are nested inside the move operation, there will only be one notification.

  2. Transactions: Plugins should leave the model in a valid state, and conflicting changes by different plugins prevented. However not all plugins are about editing. Some plugins maybe passive, providing a view like an outline, in which case they should not have to concern themselves with the added complexities implied by participating in a transaction. In Eclipse a contributor to a perspective extends/implements either IViewPart or IEditorPart to help make this distinction in roles.

  3. Mode: Event handling needs to take into account modes of running like headless.

  4. Event Object: What information should the event object contain? Using another eclipse example:

    • The resource it corresponds to.
    • The kind of modification (added, removed, or changed).
    • The precise nature of the change (the change flags).
    • A summary of what markers changed on the resource.
    • Deltas for any added, removed, or changed children.
  5. OSGI: Event handling should reflect and build on the architecture of OSGI, and may therefore be implemented using the concept of a white board.

  6. Abstraction: Plugins should not deal with low-level UI events, e.g. mousePressed, but rather with semantic events that Cytoscape provides, e.g. objectOpened instead of mousePressed() with (e.getClickCount == 2).

    • drag/drop may be a special case. What layer of semantics would Cytoscape want to provide above the Java paradigm of Transferables and DataFlavors?

Implementation Plan

Outline and describe the process and major issues related to implementing this proposal. Illustrate your plan when possible. Try this free online tool for making diagrams -> [http://www.best4c.com/editor/NetMapApplication.jsp Best4c] (draw; save; then insert hyperlink into this page)

Project Management

Project Timeline

Provide a timeline for implementation. Insert a graphic if you can. Try this free online tool for making project timelines -> [http://www.helpuplan.com/index.asp Help-u-Plan] (create a new chart; modify; right-click to save gif; then attach to this page)

Tasks and Milestones

Outline the major milestones and tasks involved in implementation.

  1. Milestone 1: …

    1. Task 1: ...
    2. Task 2: ...
  2. Milestone 2: …

Project Dependencies

Outline and projects that depend on this project, link to relevant RFC's and note at what point dependent projects could be started.

Link to other related RFCs

Issues

item

pro

con

Comments

  • Add comment here…

How to Comment

Edit the page and add your comments under the provided header. 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. 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.

Outdated_Cytoscape_3.0/EventHandling (last edited 2011-02-24 16:27:51 by PietMolenaar)

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