Author: kono
Date: 2012-06-15 18:08:25 -0700 (Fri, 15 Jun 2012)
New Revision: 29594

Added:
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/ClearBypassTask.java
Modified:
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
Log:
fixes #1118 From this version, bypass menu has two sub menus: clear and set.

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
     2012-06-16 00:32:04 UTC (rev 29593)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
     2012-06-16 01:08:25 UTC (rev 29594)
@@ -64,22 +64,20 @@
                final VisualLexiconNode nodeRootNode = 
lexicon.getVisualLexiconNode(nodeRoot);
                final VisualLexiconNode edgeRootNode = 
lexicon.getVisualLexiconNode(edgeRoot);
 
-               
                registerResetTask(CyNode.class);
                registerResetTask(CyEdge.class);
                depthFirst(PARENT_MENU_ITEM, nodeRootNode);
                depthFirst(PARENT_MENU_ITEM, edgeRootNode);
-               
-               
+
        }
 
        public void removeBypass(RenderingEngineFactory<?> factory, Map props) {
                // TODO: implement this
        }
-       
+
        private void registerResetTask(Class<? extends CyIdentifiable> type) {
                final Properties vpProp = new Properties();
-               
+
                if (type.equals(CyNode.class)) {
                        vpProp.put(ServiceProperties.PREFERRED_MENU, 
PARENT_MENU_ITEM + ".Reset All Node Bypass");
                        final NodeViewTaskFactory ntf = new 
ResetNodeBypassTaskFactory(appManager);
@@ -92,14 +90,14 @@
        }
 
        private void depthFirst(String menuText, final VisualLexiconNode node) {
-               
-               double menu_gravity = 1.0;              
+
+               double menu_gravity = 1.0;
                HashMap<String, String> vpMap = new HashMap<String, String>();
                Vector<String> vp_names = new Vector<String>();
-               
+
                final Collection<VisualLexiconNode> children = 
node.getChildren();
-               
-               //get the list of VP
+
+               // get the list of VP
                for (VisualLexiconNode child : children) {
                        final VisualProperty<?> vp = child.getVisualProperty();
 
@@ -111,18 +109,18 @@
                                // Leaf
                                vp_names.add(vp.getDisplayName());
                        }
-               }       
-               
+               }
+
                // do sorting
                Object[] names = vp_names.toArray();
                java.util.Arrays.sort(names);
-               
-               //Assign the menu_gravity for each VP
-               for (int i =0; i< names.length; i++){
+
+               // Assign the menu_gravity for each VP
+               for (int i = 0; i < names.length; i++) {
                        menu_gravity += 1.0;
                        vpMap.put(names[i].toString(), 
Double.toString(menu_gravity));
                }
-               
+
                //
                for (VisualLexiconNode child : children) {
                        final VisualProperty<?> vp = child.getVisualProperty();
@@ -131,28 +129,45 @@
                        if (PropertySheetUtil.isCompatible(vp) == false)
                                continue;
 
-                       final String newMenu = menuText + "." + 
vp.getDisplayName();
+                       final String baseString = menuText + "." + 
vp.getDisplayName();
                        if (child.getChildren().size() == 0) {
+                               final String newMenu = baseString + ".Set 
Value";
+                               final String clearMenu = baseString + ".Clear";
                                // Leaf
                                final Properties vpProp = new Properties();
                                vpProp.put(ServiceProperties.PREFERRED_MENU, 
newMenu);
                                vpProp.put("useCheckBoxMenuItem", "true");
                                vpProp.put("targetVP", vp.getIdString());
                                vpProp.put(MENU_GRAVITY, 
vpMap.get(vp.getDisplayName()));
-                               
+
+                               final Properties clearProp = new Properties();
+                               clearProp.put(ServiceProperties.PREFERRED_MENU, 
clearMenu);
+                               // clearProp.put("useCheckBoxMenuItem", "true");
+                               clearProp.put("targetVP", vp.getIdString());
+                               clearProp.put(MENU_GRAVITY, 
vpMap.get(vp.getDisplayName()));
+
                                if 
(vp.getTargetDataType().equals(CyNode.class)) {
                                        final NodeViewTaskFactory ntf = new 
NodeBypassMenuTaskFactory(null, vp,
-                                                       
editorManager.getValueEditor(vp.getRange().getType()), vmm);
+                                                       
editorManager.getValueEditor(vp.getRange().getType()), vmm, false);
                                        registrar.registerService(ntf, 
NodeViewTaskFactory.class, vpProp);
+
+                                       final NodeViewTaskFactory clearNtf = 
new NodeBypassMenuTaskFactory(null, vp,
+                                                       
editorManager.getValueEditor(vp.getRange().getType()), vmm, true);
+                                       registrar.registerService(clearNtf, 
NodeViewTaskFactory.class, clearProp);
+
                                } else if 
(vp.getTargetDataType().equals(CyEdge.class)) {
                                        final EdgeViewTaskFactory etf = new 
EdgeBypassMenuTaskFactory(null, vp,
-                                                       
editorManager.getValueEditor(vp.getRange().getType()), vmm);
+                                                       
editorManager.getValueEditor(vp.getRange().getType()), vmm, false);
                                        registrar.registerService(etf, 
EdgeViewTaskFactory.class, vpProp);
+
+                                       final EdgeViewTaskFactory clearEtf = 
new EdgeBypassMenuTaskFactory(null, vp,
+                                                       
editorManager.getValueEditor(vp.getRange().getType()), vmm, true);
+                                       registrar.registerService(clearEtf, 
EdgeViewTaskFactory.class, clearProp);
                                }
-                               
+
                                logger.debug("Bypass context menu registered: " 
+ vp.getDisplayName());
                        } else {
-                               depthFirst(newMenu, child);
+                               depthFirst(baseString, child);
                        }
                }
        }

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
        2012-06-16 00:32:04 UTC (rev 29593)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
        2012-06-16 01:08:25 UTC (rev 29594)
@@ -1,17 +1,26 @@
 package org.cytoscape.view.vizmap.gui.internal.bypass;
 
+import static org.cytoscape.work.ServiceProperties.MENU_GRAVITY;
+
 import java.awt.Component;
+import java.util.Properties;
 
 import javax.swing.SwingUtilities;
 
+import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyRow;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.EdgeViewTaskFactory;
+import org.cytoscape.task.NodeViewTaskFactory;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.View;
 import org.cytoscape.view.model.VisualProperty;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
 import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.ServiceProperties;
 import org.cytoscape.work.TaskMonitor;
 
 /**
@@ -57,14 +66,8 @@
        }
 
        private final void update(final boolean lock) {
-               if (!lock) {
-                       final Object newValue = editor.showEditor(parent, 
view.getVisualProperty(vp));
-                       view.setLockedValue(vp, newValue);
-               } else {
-                       // Unlock it
-                       view.clearValueLock(vp);
-               }
-
+               final Object newValue = editor.showEditor(parent, 
view.getVisualProperty(vp));
+               view.setLockedValue(vp, newValue);
                final CyRow row = 
networkView.getModel().getRow(view.getModel());
                vmm.getCurrentVisualStyle().apply(row, view);
                networkView.updateView();

Added: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/ClearBypassTask.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/ClearBypassTask.java
                           (rev 0)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/ClearBypassTask.java
   2012-06-16 01:08:25 UTC (rev 29594)
@@ -0,0 +1,34 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+
+public class ClearBypassTask extends AbstractTask {
+
+       private final View<? extends CyIdentifiable> view;
+       private final VisualProperty<Object> vp;
+
+       private final CyNetworkView networkView;
+
+       public ClearBypassTask(final VisualProperty<?> vp, final View<? extends 
CyIdentifiable> view,
+                       final CyNetworkView networkView) {
+               this.view = view;
+               this.vp = (VisualProperty<Object>) vp;
+               this.networkView = networkView;
+       }
+
+       @Override
+       public void run(TaskMonitor taskMonitor) throws Exception {
+
+               final boolean lock = view.isValueLocked(vp);
+               if (lock) {
+                       view.clearValueLock(vp);
+                       networkView.updateView();
+               }
+       }
+
+}
\ No newline at end of file

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
 2012-06-16 00:32:04 UTC (rev 29593)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
 2012-06-16 01:08:25 UTC (rev 29594)
@@ -18,17 +18,22 @@
 
        private final Component parent;
        private final VisualMappingManager vmm;
+       private final boolean clearOnly;
 
        public EdgeBypassMenuTaskFactory(final Component parent, final 
VisualProperty<?> vp, final ValueEditor<?> editor,
-                       final VisualMappingManager vmm) {
+                       final VisualMappingManager vmm, final boolean 
clearOnly) {
                this.vp = vp;
                this.editor = editor;
                this.parent = parent;
                this.vmm = vmm;
+               this.clearOnly = clearOnly;
        }
 
        @Override
        public TaskIterator createTaskIterator(View<CyEdge> edgeView, 
CyNetworkView netView) {
-               return new TaskIterator(new BypassTask<CyEdge>(parent, editor, 
vp, edgeView, netView, vmm));
+               if(clearOnly)
+                       return new TaskIterator(new ClearBypassTask(vp, 
edgeView, netView));
+               else
+                       return new TaskIterator(new BypassTask<CyEdge>(parent, 
editor, vp, edgeView, netView, vmm));
        }
 }

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
 2012-06-16 00:32:04 UTC (rev 29593)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
 2012-06-16 01:08:25 UTC (rev 29594)
@@ -18,17 +18,24 @@
 
        private final Component parent;
        private final VisualMappingManager vmm;
+       
+       final boolean clearOnly;
 
        NodeBypassMenuTaskFactory(final Component parent, final 
VisualProperty<?> vp, final ValueEditor<?> editor,
-                       final VisualMappingManager vmm) {
+                       final VisualMappingManager vmm, final boolean 
clearOnly) {
                this.vp = vp;
                this.editor = editor;
                this.parent = parent;
                this.vmm = vmm;
+
+               this.clearOnly = clearOnly;
        }
 
        @Override
        public TaskIterator createTaskIterator(View<CyNode> nodeView, 
CyNetworkView netView) {
-               return new TaskIterator(new BypassTask<CyNode>(parent, editor, 
vp, nodeView, netView, vmm));
+               if(clearOnly) {
+                       return new TaskIterator(new ClearBypassTask(vp, 
nodeView, netView));
+               } else
+                       return new TaskIterator(new BypassTask<CyNode>(parent, 
editor, vp, nodeView, netView, vmm));
        }
 }

-- 
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