Author: pwang
Date: 2010-02-04 14:09:08 -0800 (Thu, 04 Feb 2010)
New Revision: 19186

Modified:
   coreplugins/trunk/browser/src/browser/AttributeBrowserPlugin.java
Log:
Save/restore column widths into/from session

Modified: coreplugins/trunk/browser/src/browser/AttributeBrowserPlugin.java
===================================================================
--- coreplugins/trunk/browser/src/browser/AttributeBrowserPlugin.java   
2010-02-04 22:07:50 UTC (rev 19185)
+++ coreplugins/trunk/browser/src/browser/AttributeBrowserPlugin.java   
2010-02-04 22:09:08 UTC (rev 19186)
@@ -51,8 +51,10 @@
 
 import cytoscape.logger.CyLogger;
 import cytoscape.plugin.CytoscapePlugin;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import java.util.HashMap;
 
-
 /**
  * Attribute browser's main class.<br>
  *
@@ -151,6 +153,10 @@
                        final List<String> edgeAttrSelected = new 
ArrayList<String>();
                        final List<String> networkAttrSelected = new 
ArrayList<String>();
 
+                       List<String> nodeAttrColumnWidth = new 
ArrayList<String>();;
+                       List<String> edgeAttrColumnWidth = new 
ArrayList<String>();;
+                       List<String> networkAttrColumnWidth = new 
ArrayList<String>();;
+                       
                        final List<String> nodeKeys = new ArrayList<String>();
                        final List<String> edgeKeys = new ArrayList<String>();
                        final List<String> networkKeys = new 
ArrayList<String>();
@@ -166,31 +172,85 @@
                                        nodeKeys.add(key);
                                else if (key.contains("edge"))
                                        edgeKeys.add(key);
-                               else
+                               else if (key.contains("network"))
                                        networkKeys.add(key);
+                               else {
+                                       System.out.println("Something wrong in 
the attribute browser property file");
+                               }
                        }
 
                        Collections.sort(nodeKeys);
                        Collections.sort(edgeKeys);
                        Collections.sort(networkKeys);
 
-                       for (String targetKey : nodeKeys)
-                               
nodeAttrSelected.add(prop.getProperty(targetKey));
+                       for (String targetKey : nodeKeys) {
+                               String value = prop.getProperty(targetKey);
+                               String [] items = value.split("\t");
+                               nodeAttrSelected.add(items[0]);
+                               
+                               if (items.length>1){
+                                       nodeAttrColumnWidth.add(items[1]);
+                               }
+                       }
 
-                       for (String targetKey : edgeKeys)
-                               
edgeAttrSelected.add(prop.getProperty(targetKey));
+                       for (String targetKey : edgeKeys) {
+                               String value = prop.getProperty(targetKey);
+                               String [] items = value.split("\t");
+                               edgeAttrSelected.add(items[0]);
+                               
+                               if (items.length>1){
+                                       edgeAttrColumnWidth.add(items[1]);
+                               }
+                       }
 
-                       for (String targetKey : networkKeys)
-                               
networkAttrSelected.add(prop.getProperty(targetKey));
+                       for (String targetKey : networkKeys) {
+                               String value = prop.getProperty(targetKey);
+                               String [] items = value.split("\t");
+                               networkAttrSelected.add(items[0]);
+                               
+                               if (items.length>1){
+                                       networkAttrColumnWidth.add(items[1]);
+                               }                               
+                       }
 
                        
nodeAttributeBrowser.setSelectedAttributes(nodeAttrSelected);
                        
edgeAttributeBrowser.setSelectedAttributes(edgeAttrSelected);
                        
networkAttributeBrowser.setSelectedAttributes(networkAttrSelected);
+                       
+                       // recover the column width
+                       restoreTableColumnWidth(NODES, nodeAttrColumnWidth);
+                       restoreTableColumnWidth(EDGES, edgeAttrColumnWidth);
+                       restoreTableColumnWidth(NETWORK, 
networkAttrColumnWidth);
+                                               
                } catch (IOException e) {
                        logger.error("Could not restore browser state.  Use 
defaults...", e);
                }
        }
 
+       private void restoreTableColumnWidth(DataObjectType pObjectType, 
List<String> attrColumnWidth){
+               
+               AttributeBrowser attBrowser = null;
+               if (pObjectType == NODES){
+                       attBrowser = nodeAttributeBrowser;
+               } else if (pObjectType == EDGES){
+                       attBrowser = edgeAttributeBrowser;                      
+               } else if (pObjectType == NETWORK){
+                       attBrowser = networkAttributeBrowser;                   
+               }
+               
+               if (attrColumnWidth != null && attrColumnWidth.size() > 0){
+                       
+                       HashMap<String, Integer> attributeColumnWidthMap = 
attBrowser.getattributeTable().getColumnWidthMap();
+                       TableColumnModel colModel = 
attBrowser.getattributeTable().getColumnModel();
+                       for (int i=0; i< colModel.getColumnCount(); i++){
+                               colModel.getColumn(i).setPreferredWidth(new 
Integer(attrColumnWidth.get(i)).intValue());
+                               // It's important to save this value to the map 
to prevent it to be overwritten by other event
+                               
attributeColumnWidthMap.put(colModel.getColumn(i).getIdentifier().toString(), 
new Integer(attrColumnWidth.get(i)).intValue());
+                       }                                                       
+               }
+       }
+       
+               
        /**
         *  DOCUMENT ME!
         *
@@ -206,7 +266,11 @@
                        List<String> nodeAttr = 
nodeAttributeBrowser.getSelectedAttributes();
 
                        for (String name : nodeAttr) {
-                               
prop.setProperty("attributeBrowser.node.selectedAttr" + idx, name);
+                               TableColumnModel colModel = 
nodeAttributeBrowser.getattributeTable().getColumnModel();
+                               int colIndex = colModel.getColumnIndex(name);
+                               Integer widthObj = new 
Integer(colModel.getColumn(colIndex).getWidth());
+                               
+                               
prop.setProperty("attributeBrowser.node.selectedAttr" + idx, name + "\t" + 
widthObj.toString());                                
                                idx++;
                        }
 
@@ -215,14 +279,25 @@
                        List<String> edgeAttr = 
edgeAttributeBrowser.getSelectedAttributes();
 
                        for (String name : edgeAttr) {
-                               
prop.setProperty("attributeBrowser.edge.selectedAttr" + idx, name);
+                               TableColumnModel colModel = 
edgeAttributeBrowser.getattributeTable().getColumnModel();
+                               int colIndex = colModel.getColumnIndex(name);
+                               Integer widthObj = new 
Integer(colModel.getColumn(colIndex).getWidth());
+                               
+                               
prop.setProperty("attributeBrowser.edge.selectedAttr" + idx, name + "\t" + 
widthObj.toString());                                
+                               
//prop.setProperty("attributeBrowser.edge.selectedAttr" + idx, name);
                                idx++;
                        }
 
                        idx = 0;
 
                        for (String name : 
networkAttributeBrowser.getSelectedAttributes()) {
-                               
prop.setProperty("attributeBrowser.network.selectedAttr" + idx, name);
+                               
+                               TableColumnModel colModel = 
networkAttributeBrowser.getattributeTable().getColumnModel();
+                               int colIndex = colModel.getColumnIndex(name);
+                               Integer widthObj = new 
Integer(colModel.getColumn(colIndex).getWidth());
+                               
+                               
prop.setProperty("attributeBrowser.network.selectedAttr" + idx, name + "\t" + 
widthObj.toString());                             
+                               
//prop.setProperty("attributeBrowser.network.selectedAttr" + idx, name);
                                idx++;
                        }
 

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