Author: kono
Date: 2011-01-28 17:46:05 -0800 (Fri, 28 Jan 2011)
New Revision: 23923

Added:
   
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
   
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
   
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
   
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
Log:
Bypass classes.

Added: 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
===================================================================
--- 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
                                (rev 0)
+++ 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
        2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,95 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.EdgeViewTaskFactory;
+import org.cytoscape.task.NodeViewTaskFactory;
+import org.cytoscape.view.model.VisualLexicon;
+import org.cytoscape.view.model.VisualLexiconNode;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.presentation.RenderingEngineFactory;
+import org.cytoscape.view.presentation.property.TwoDVisualLexicon;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.view.vizmap.gui.editor.EditorManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BypassManager {
+
+       private static final Logger logger = LoggerFactory
+                       .getLogger(BypassManager.class);
+
+       // TODO: how can we display compatible VP only?
+       private static final String DEF_RENDERER = "ding";
+
+       // TODO: this should be a public string or enum managed in swing app.
+       private static final String MENU_KEY = "preferredMenu";
+
+       private static final String PARENT_MENU_ITEM = "Visual Bypass";
+
+       private final CyServiceRegistrar registrar;
+       
+       private final EditorManager editorManager;
+       
+       private final SelectedVisualStyleManager selectedManager;
+
+       public BypassManager(final CyServiceRegistrar registrar, final 
EditorManager editorManager, final SelectedVisualStyleManager selectedManager) {
+               this.registrar = registrar;
+               this.editorManager = editorManager;
+               this.selectedManager = selectedManager;
+       }
+
+       public void addBypass(RenderingEngineFactory<?> factory, Map props) {
+               if (props.containsValue("ding") == false)
+                       return;
+
+               final VisualLexicon lexicon = factory.getVisualLexicon();
+
+               final VisualProperty<?> nodeRoot = TwoDVisualLexicon.NODE;
+               final VisualProperty<?> edgeRoot = TwoDVisualLexicon.EDGE;
+
+               // Tree traversal
+               final VisualLexiconNode nodeRootNode = lexicon
+                               .getVisualLexiconNode(nodeRoot);
+               final VisualLexiconNode edgeRootNode = lexicon
+                               .getVisualLexiconNode(edgeRoot);
+               depthFirst(PARENT_MENU_ITEM, nodeRootNode);
+               depthFirst(PARENT_MENU_ITEM, edgeRootNode);
+       }
+
+       private void depthFirst(String menuText, final VisualLexiconNode node) {
+               final Collection<VisualLexiconNode> children = 
node.getChildren();
+               for (VisualLexiconNode child : children) {
+                       final VisualProperty<?> vp = child.getVisualProperty();
+                       final String newMenu = menuText + "." + 
vp.getDisplayName();
+                       if (child.getChildren().size() == 0) {
+                               // Leaf
+                               final Dictionary<String, String> vpProp = new 
Hashtable<String, String>();
+                               vpProp.put(MENU_KEY, newMenu);
+
+                               if 
(vp.getTargetDataType().equals(CyNode.class)) {
+                                       final NodeViewTaskFactory ntf = new 
NodeBypassMenuTaskFactory(null, vp, 
editorManager.getValueEditor(vp.getRange().getType()), selectedManager);
+                                       registrar.registerService(ntf, 
NodeViewTaskFactory.class, vpProp);
+                               } else if 
(vp.getTargetDataType().equals(CyEdge.class)) {
+                                       final EdgeViewTaskFactory etf = new 
EdgeBypassMenuTaskFactory();
+                                       registrar.registerService(etf, 
EdgeViewTaskFactory.class, vpProp);
+                               }
+                               logger.debug("Bypass context menu registered: " 
+ vp.getDisplayName());
+                       } else {
+                               depthFirst(newMenu, child);
+                       }
+               }
+       }
+
+       public void removeBypass(RenderingEngineFactory<?> factory, Map props) {
+               // TODO: implement this
+       }
+
+}

Added: 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
===================================================================
--- 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
                           (rev 0)
+++ 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
   2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,66 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import java.awt.Component;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.model.events.EdgeViewChangeMicroListener;
+import org.cytoscape.view.model.events.NodeViewChangeMicroListener;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+
+/**
+ * Task to execute visual style bypass.
+ * 
+ * @param <T>
+ */
+public class BypassTask<T extends CyTableEntry> extends AbstractTask {
+
+       // Target view object. Node or Edge.
+       private final View<T> view;
+       private final VisualProperty<Object> vp;
+       private final ValueEditor<Object> editor;
+
+       private final Component parent;
+       private final CyNetworkView networkView;
+       
+       private final SelectedVisualStyleManager selectedManager;
+
+       public BypassTask(Component parent, ValueEditor<?> editor,
+                       final VisualProperty<?> vp, final View<T> view,
+                       final CyNetworkView networkView, final 
SelectedVisualStyleManager selectedManager) {
+               this.view = view;
+               this.vp = (VisualProperty<Object>) vp;
+               this.editor = (ValueEditor<Object>) editor;
+               this.parent = parent;
+
+               this.networkView = networkView;
+               this.selectedManager = selectedManager;
+       }
+
+       @Override
+       public void run(TaskMonitor taskMonitor) throws Exception {
+
+               final boolean lock = view.isValueLocked(vp);
+
+               if (!lock) {
+                       final Object newValue = editor.showEditor(parent,
+                                       view.getVisualProperty(vp));
+                       view.setLockedValue(vp, newValue);
+               } else {
+                       // Unlock it
+                       view.clearValueLock(vp);
+               }
+               
+               selectedManager.getCurrentVisualStyle().apply(networkView);
+               networkView.updateView();
+       }
+
+}

Added: 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
===================================================================
--- 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
                            (rev 0)
+++ 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
    2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,14 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.task.AbstractEdgeViewTaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class EdgeBypassMenuTaskFactory extends AbstractEdgeViewTaskFactory {
+
+       @Override
+       public TaskIterator getTaskIterator() {
+               return null;
+               //return new TaskIterator(new BypassTask<CyEdge>(edgeView));
+       }
+}

Added: 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
===================================================================
--- 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
                            (rev 0)
+++ 
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
    2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,35 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import java.awt.Component;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.task.AbstractNodeViewTaskFactory;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
+import org.cytoscape.work.TaskIterator;
+
+public class NodeBypassMenuTaskFactory extends AbstractNodeViewTaskFactory {
+       
+       private final VisualProperty<?> vp;
+       private final ValueEditor<?> editor;
+
+       private final Component parent;
+       
+       private final SelectedVisualStyleManager selectedManager;
+               
+       NodeBypassMenuTaskFactory(final Component parent, final 
VisualProperty<?> vp, final ValueEditor<?> editor, final 
SelectedVisualStyleManager selectedManager) {
+               this.vp = vp;
+               this.editor = editor;
+               
+               this.parent = parent;
+               this.selectedManager = selectedManager;
+       }
+
+       @Override
+       public TaskIterator getTaskIterator() {
+               return new TaskIterator(new BypassTask<CyNode>(parent, editor, 
vp, nodeView, netView, selectedManager));
+       }
+
+}

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to