Author: scooter
Date: 2012-07-05 17:10:56 -0700 (Thu, 05 Jul 2012)
New Revision: 29778

Modified:
   
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNode.java
   
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNodeManager.java
   
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/ui/MetanodeSettingsDialog.java
Log:
Some updates to support the bindingDB plugin


Modified: 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNode.java
===================================================================
--- 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNode.java
        2012-07-06 00:09:44 UTC (rev 29777)
+++ 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNode.java
        2012-07-06 00:10:56 UTC (rev 29778)
@@ -79,12 +79,14 @@
        public static final String CHILDREN_ATTR = "NumChildren";
        public static final String DESCENDENTS_ATTR = "NumDescendents";
        public static final String ISMETA_EDGE_ATTR = "__isMetaEdge";
+       public static final String SETTINGS_ATTR = "__metanodeSettings";
 
        private CyLogger logger = null;
        private CyGroup metaGroup = null;
 
        private AttributeManager attributeManager = null;
        private boolean hideMetanode = true;
+       private boolean createMembershipEdges = true;
        private boolean dontExpandEmpty = true;
        private double metanodeOpacity = 0.;
        private boolean useNestedNetworks = false;
@@ -113,8 +115,16 @@
                // This method does most of the work.
                updateMetaEdges(ignoreMetaEdges);
 
+               // Load any parameters we might have set
+               loadSettings();
+
        }
 
+       protected boolean hasSavedSettings() {
+               CyAttributes nodeAttributes = Cytoscape.getNodeAttributes();
+               return 
nodeAttributes.hasAttribute(getGroupNode().getIdentifier(), SETTINGS_ATTR);
+       }
+
        public CyGroup getCyGroup() { return metaGroup; }
 
        public CyNode getGroupNode() { return metaGroup.getGroupNode(); }
@@ -374,6 +384,7 @@
         */
        public void setUseNestedNetworks(boolean nestedNetwork) {
                this.useNestedNetworks = nestedNetwork;
+               updateSettings();
        }
 
        /**
@@ -393,6 +404,7 @@
         */
        public void setDontExpandEmpty(boolean dontExpandEmpty) {
                this.dontExpandEmpty = dontExpandEmpty;
+               updateSettings();
        }
 
        /**
@@ -411,6 +423,7 @@
         */
        public void setMetaNodeOpacity(double opacity) {
                this.metanodeOpacity = opacity;
+               updateSettings();
        }
 
        /**
@@ -429,6 +442,7 @@
         */
        public void setNodeChartAttribute(String nodeChartAttribute) {
                this.nodeChartAttribute = nodeChartAttribute;
+               updateSettings();
        }
 
        /**
@@ -447,6 +461,7 @@
         */
        public void setChartType(String chartType) {
                this.chartType = chartType;
+               updateSettings();
        }
 
        /**
@@ -465,6 +480,7 @@
         */
        public void setChartColorType(String chartColorType) {
                this.chartColorType = chartColorType;
+               updateSettings();
        }
 
        /**
@@ -477,17 +493,18 @@
        }
 
        /**
-        * Sets whether or not we hide the metnode when we expand the
+        * Sets whether or not we hide the metanode when we expand the
         * network.
         *
         * @param hide if 'true' we hide the metanode upon expansion
         */
        public void setHideMetaNode(boolean hide) {
                this.hideMetanode = hide;
+               updateSettings();
        }
 
        /**
-        * Returns 'true' if we hide the metnode when we expand the
+        * Returns 'true' if we hide the metanode when we expand the
         * network.
         *
         * @return 'true' if we hide the metanode upon expansion
@@ -497,6 +514,29 @@
        }
 
        /**
+        * Sets whether or not we create membership edges if we're
+        * not hiding the metanode.
+        *
+        * @param create if 'true' we create the edges
+        */
+       public void setCreateMembershipEdges(boolean create) {
+               this.createMembershipEdges = create;
+               if (!create) {
+                       membershipEdges = new HashMap<CyNode, CyEdge>();
+               }
+               updateSettings();
+       }
+
+       /**
+        * Returns 'true' if we create the membership edges
+        *
+        * @return 'true' if we create membership edges
+        */
+       public boolean getCreateMembershipEdges() {
+               return createMembershipEdges;
+       }
+
+       /**
         * Set the attribute manager (for attribute aggregation) that
         * we're supposed to use.
         *
@@ -753,9 +793,11 @@
 
        private void createMembershipEdges() {
                membershipEdges = new HashMap<CyNode, CyEdge>();
-               for (CyNode node: metaGroup.getNodes()) {
-                       CyEdge memberEdge = createEdge("member", 
metaGroup.getGroupName(), metaGroup.getGroupNode(), node);
-                       membershipEdges.put(node, memberEdge);
+               if (createMembershipEdges) {
+                       for (CyNode node: metaGroup.getNodes()) {
+                               CyEdge memberEdge = createEdge("member", 
metaGroup.getGroupName(), metaGroup.getGroupNode(), node);
+                               membershipEdges.put(node, memberEdge);
+                       }
                }
        }
 
@@ -833,4 +875,55 @@
                return false;
        }
 
+       /**
+        * Update settings attributes for this metanode
+        */
+       private void updateSettings() {
+               String settings = "";
+               settings += "hideMetanode="+hideMetanode;
+               settings += ";createMembershipEdges="+createMembershipEdges;
+               settings += ";dontExpandEmpty="+dontExpandEmpty;
+               settings += ";metanodeOpacity="+metanodeOpacity;
+               settings += ";useNestedNetworks="+useNestedNetworks;
+               if (nodeChartAttribute != null) {
+                       settings += ";nodeChartAttribute="+nodeChartAttribute;
+                       settings += ";chartType="+chartType;
+                       settings += ";chartColorType="+chartColorType;
+               }
+               CyAttributes nodeAttributes = Cytoscape.getNodeAttributes();
+               nodeAttributes.setAttribute(getGroupNode().getIdentifier(), 
SETTINGS_ATTR, settings);
+               nodeAttributes.setUserVisible(SETTINGS_ATTR, false);
+       }
+
+       /**
+        * Load settings attributes for this metanode
+        */
+       private void loadSettings() {
+               CyAttributes nodeAttributes = Cytoscape.getNodeAttributes();
+               if 
(!nodeAttributes.hasAttribute(getGroupNode().getIdentifier(), SETTINGS_ATTR))
+                       return;
+
+               String settings = 
nodeAttributes.getStringAttribute(getGroupNode().getIdentifier(), 
SETTINGS_ATTR);
+               String[] pairs = settings.split(";");
+               for (String pair: pairs) {
+                       String[] nv = pair.split("=");
+                       if (nv[0].equals("hideMetanode")) {
+                               hideMetanode = Boolean.parseBoolean(nv[1]);
+                       } else if (nv[0].equals("createMembershipEdges")) {
+                               createMembershipEdges = 
Boolean.parseBoolean(nv[1]);
+                       } else if (nv[0].equals("dontExpandEmpty")) {
+                               dontExpandEmpty = Boolean.parseBoolean(nv[1]);
+                       } else if (nv[0].equals("metanodeOpacity")) {
+                               metanodeOpacity = Double.parseDouble(nv[1]);
+                       } else if (nv[0].equals("useNestedNetworks")) {
+                               useNestedNetworks = Boolean.parseBoolean(nv[1]);
+                       } else if (nv[0].equals("nodeChartAttribute")) {
+                               nodeChartAttribute = nv[1];
+                       } else if (nv[0].equals("chartType")) {
+                               chartType = nv[1];
+                       } else if (nv[0].equals("chartColorType")) {
+                               chartColorType = nv[1];
+                       }
+               }
+       }
 }

Modified: 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNodeManager.java
===================================================================
--- 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNodeManager.java
 2012-07-06 00:09:44 UTC (rev 29777)
+++ 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/model/MetaNodeManager.java
 2012-07-06 00:10:56 UTC (rev 29778)
@@ -42,6 +42,7 @@
 import cytoscape.Cytoscape;
 
 import cytoscape.groups.CyGroup;
+import cytoscape.logger.CyLogger;
 import cytoscape.view.CyNetworkView;
 
 import metaNodePlugin2.MetaNodePlugin2;
@@ -58,6 +59,7 @@
        // Static variables
        private static Map<CyNode,MetaNode> metaMap = new HashMap<CyNode, 
MetaNode>();
        protected static boolean hideMetanodeDefault = true;
+       protected static boolean createMembershipEdgesDefault = true;
        protected static double metanodeOpacityDefault = 100.0;
        protected static boolean useNestedNetworksDefault = false;
        protected static boolean dontExpandEmptyDefault = true;
@@ -129,16 +131,27 @@
                if (metaGroup.getNetwork() == null) {
                        metaGroup.setNetwork(Cytoscape.getCurrentNetwork(), 
false);
                }
+
+               
+               CyLogger logger = CyLogger.getLogger(MetaNodeManager.class);
+               logger.debug("Creating metanode for group "+metaGroup);
                MetaNode mn = new MetaNode(metaGroup, ignoreMetaEdges);
+               logger.debug("...done");
 
                metaMap.put(metaGroup.getGroupNode(), mn);
-               mn.setUseNestedNetworks(useNestedNetworksDefault);
-               mn.setDontExpandEmpty(dontExpandEmptyDefault);
-               mn.setHideMetaNode(hideMetanodeDefault);
-               mn.setMetaNodeOpacity(metanodeOpacityDefault);
-               mn.setChartType(chartTypeDefault);
-               mn.setChartColorType(chartColorTypeDefault);
-               mn.setNodeChartAttribute(nodeChartAttributeDefault);
+
+               // Do we have saved values?
+               if (!mn.hasSavedSettings()) {
+                       // No, set the defaults
+                       mn.setUseNestedNetworks(useNestedNetworksDefault);
+                       mn.setDontExpandEmpty(dontExpandEmptyDefault);
+                       mn.setHideMetaNode(hideMetanodeDefault);
+                       
mn.setCreateMembershipEdges(createMembershipEdgesDefault);
+                       mn.setMetaNodeOpacity(metanodeOpacityDefault);
+                       mn.setChartType(chartTypeDefault);
+                       mn.setChartColorType(chartColorTypeDefault);
+                       mn.setNodeChartAttribute(nodeChartAttributeDefault);
+               }
                mn.setAttributeManager(new 
AttributeManager(defaultAttributeManager));
                
mn.getAttributeManager().loadHandlerMappings(metaGroup.getNetwork(), mn);
                return mn;
@@ -249,6 +262,16 @@
        }
 
        /**
+        * Sets whether or not we create membership edges when we're
+        * leaving the metanode.
+        *
+        * @param create if 'true' we create membership edges
+        */
+       static public void setCreateMembershipEdgesDefault(boolean create) {
+               MetaNodeManager.createMembershipEdgesDefault = create;
+       }
+
+       /**
         * Sets the opacity of a metanode if we don't hide on expansion.
         *
         * @param opacity the opacity (between 0 and 100)
@@ -277,6 +300,15 @@
        }
 
        /**
+        * Returns 'true' if we create membership edges.
+        *
+        * @param create if 'true' we create membership edges
+        */
+       static public boolean getCreateMembershipEdgesDefault() {
+               return MetaNodeManager.createMembershipEdgesDefault;
+       }
+
+       /**
         * Sets whether or not we use the nested network viewer
         *
         * @param useNestedNetworks if 'true' we use nested networks when we 
collapse

Modified: 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/ui/MetanodeSettingsDialog.java
===================================================================
--- 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/ui/MetanodeSettingsDialog.java
     2012-07-06 00:09:44 UTC (rev 29777)
+++ 
csplugins/trunk/ucsf/scooter/metaNodePlugin2/src/metaNodePlugin2/ui/MetanodeSettingsDialog.java
     2012-07-06 00:10:56 UTC (rev 29778)
@@ -104,6 +104,7 @@
        private List<Tunable>tunableEnablers = null;
        private List<Tunable>nodeChartEnablers = null;
        private boolean hideMetaNode = true;
+       private boolean createMembershipEdges = true;
        private boolean dontExpandEmpty = true;
   private boolean enableHandling = false;
   private boolean useNestedNetworks = false;
@@ -267,6 +268,14 @@
                        }
 
                        {
+                               Tunable t = new Tunable("createMembershipEdges",
+                                                       "Create membership 
edges when the metanode isn't being hidden",
+                                                       Tunable.BOOLEAN, 
createMembershipEdges, 0);
+                               t.addTunableValueListener(this);
+                               metanodeProperties.add(t);
+                       }
+
+                       {
                                Tunable t = new Tunable("dontExpandEmpty",
                                                        "Don't expand empty 
metanodes",
                                                        Tunable.BOOLEAN, 
dontExpandEmpty, 0);
@@ -726,6 +735,7 @@
 
        private void updateDefaultSettings() {
                MetaNodeManager.setHideMetaNodeDefault(hideMetaNode);
+               
MetaNodeManager.setCreateMembershipEdgesDefault(createMembershipEdges);
                MetaNodeManager.setDefaultAttributeManager(myAttributeManager);
                MetaNodeManager.setDontExpandEmptyDefault(dontExpandEmpty);
                MetaNodeManager.setUseNestedNetworksDefault(useNestedNetworks);
@@ -741,6 +751,8 @@
                t.setValue(enableHandling);
                t = metanodeProperties.get("hideMetanodes");
                t.setValue(hideMetaNode);
+               t = metanodeProperties.get("createMembershipEdges");
+               t.setValue(createMembershipEdges);
                t = metanodeProperties.get("dontExpandEmpty");
                t.setValue(dontExpandEmpty);
                t = metanodeProperties.get("useNestedNetworks");
@@ -760,6 +772,8 @@
        public void tunableChanged(Tunable t) {
                if (t.getName().equals("hideMetanodes")) {
       hideMetaNode = ((Boolean) t.getValue()).booleanValue();
+               } else if (t.getName().equals("createMembershipEdges")) {
+                       createMembershipEdges = ((Boolean) 
t.getValue()).booleanValue();
                } else if (t.getName().equals("dontExpandEmpty")) {
       dontExpandEmpty = ((Boolean) t.getValue()).booleanValue();
                } else if (t.getName().equals("useNestedNetworks")) {

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