Cytoscape APIs
Cytoscape Provided Services
Plugin Implemented Services
The APIs for these services are defined as interfaces in Cytoscape. The interfaces are as follows:
UI Services
Interactive - provide an option to bring up before or after action has run Action to create panel Action to be triggered by the panel
- Control Tab
- Results Tab
- Dialog
// the service interface interface UIPanel { JPanel getJPanel(); } // in the plugin // meta data defining where/how to use the panel Hashtable dict = new HashTable(); dict.put("panel.location","control"); dict.put("panel.name","hello world"); dict.put("service.pid","myuipanel.persistent.id"); bundleContext.registerService(UIPanel.class.getName(), new MyUIPanel(), dict);
Single Action
- Menu Item
- Button On Toolbar
// The factory is the service. The factory will return individual action objects // that can store internal state. If we didn't have a factory, then the individual // actions wouldn't be able to store their state because they'd persist as services. interface CytoscapeActionFactory { CytoscapeAction createAction(context of some sort); } interface CytoscapeAction { void run(); } // meta data defining where/how to use the action Hashtable dict = new HashTable(); dict.put("preferred.menu","whereever/submenu"); dict.put("action.panel","myuipanel.persistent.id"); // so that it can get the exact panel dict.put(" bundleContext.registerService(CytoscapeActionFactory.class.getName(), new MyCyActionFactory(), dict);
Or
- Specify tunables.
- Provide suggestions on where to put it (Tab, menu item).
Action Services
An action gets current context (network, view, etc.). Then the action does "something". The action should be independent of the UI. Make the actions chainable.