Author: laylaoesper
Date: 2010-07-22 16:19:04 -0700 (Thu, 22 Jul 2010)
New Revision: 21004

Modified:
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummary.jar
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
   
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
Log:
Add number exclusion ability.  Also, fix lots of bugs with word exclusion list 
needed to act at the network level.  Also, fixing restore issues when a HashMap 
happened to be empty.

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
      2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
      2010-07-22 23:19:04 UTC (rev 21004)
@@ -170,17 +170,22 @@
                this.selectedNodes = nodeNameList;
                
                //Rebuild CloudWords
-               String value2 = props.get("CloudWords");
-               String[] words = value2.split(WORDDELIMITER);
-               ArrayList<CloudWordInfo> cloudWordList = new 
ArrayList<CloudWordInfo>();
-               for (int i = 0; i < words.length; i++)
+               if (props.containsKey("CloudWords")) //handle the empty case
                {
-                       String wordInfo = words[i];
-                       CloudWordInfo curInfo = new CloudWordInfo(wordInfo);
-                       curInfo.setCloudParameters(this);
-                       cloudWordList.add(curInfo);
+                       String value2 = props.get("CloudWords");
+                       String[] words = value2.split(WORDDELIMITER);
+                       ArrayList<CloudWordInfo> cloudWordList = new 
ArrayList<CloudWordInfo>();
+                       for (int i = 0; i < words.length; i++)
+                       {
+                               String wordInfo = words[i];
+                               CloudWordInfo curInfo = new 
CloudWordInfo(wordInfo);
+                               curInfo.setCloudParameters(this);
+                               cloudWordList.add(curInfo);
+                       }
+                       this.cloudWords = cloudWordList;
                }
-               this.cloudWords = cloudWordList;
+               else
+                       this.cloudWords = new ArrayList<CloudWordInfo>();
        }
                
        
@@ -777,36 +782,40 @@
                else
                        newMap = new HashMap();
                
-               String [] lines = fileInput.split("\n");
+               //Check that we have input
+               if (!fileInput.equals(""))
+               {
+                       String [] lines = fileInput.split("\n");
                
-               for (int i = 0; i < lines.length; i++)
-               {
-                       String line = lines[i];
-                       String [] tokens = line.split("\t");
+                       for (int i = 0; i < lines.length; i++)
+                       {
+                               String line = lines[i];
+                               String [] tokens = line.split("\t");
                        
-                       //the first token is the key and the rest is the object
-                       //Different types have different data
+                               //the first token is the key and the rest is 
the object
+                               //Different types have different data
                        
-                       //Counts
-                       if (type == 1)
-                               newMap.put(tokens[0], 
Integer.parseInt(tokens[1]));
+                               //Counts
+                               if (type == 1)
+                                       newMap.put(tokens[0], 
Integer.parseInt(tokens[1]));
                        
-                       //Mapping
-                       if (type == 2)
-                       {
-                               //Create List
-                               String [] nodes = 
tokens[1].split(NODEDELIMITER);
-                               ArrayList nodeNames = new ArrayList<String>();
-                               for (int j =0; j < nodes.length; j++)
-                                       nodeNames.add(nodes[j]);
+                               //Mapping
+                               if (type == 2)
+                               {
+                                       //Create List
+                                       String [] nodes = 
tokens[1].split(NODEDELIMITER);
+                                       ArrayList nodeNames = new 
ArrayList<String>();
+                                       for (int j =0; j < nodes.length; j++)
+                                               nodeNames.add(nodes[j]);
                                
-                               newMap.put(tokens[0], nodeNames);
-                       }
+                                       newMap.put(tokens[0], nodeNames);
+                               }
                        
-                       //Ratios
-                       if (type == 3)
-                               newMap.put(tokens[0], 
Double.parseDouble(tokens[1]));
-               }//end line loop
+                               //Ratios
+                               if (type == 3)
+                                       newMap.put(tokens[0], 
Double.parseDouble(tokens[1]));
+                       }//end line loop
+               }//end if data exists check
                return newMap;
        }
        

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
    2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
    2010-07-22 23:19:04 UTC (rev 21004)
@@ -151,8 +151,8 @@
                //inputPanel.setNetworkList(params);
                inputPanel.addNewCloud(cloudParams);    
                
-               //Update the list of filter words
-               inputPanel.refreshRemovalCMB();
+               //Update the list of filter words and checkbox
+               inputPanel.refreshNetworkSettings();
                
                //Enable adding of words to exclusion list
                inputPanel.getAddWordTextField().setEditable(true);

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummary.jar
===================================================================
(Binary files differ)

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
    2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
    2010-07-22 23:19:04 UTC (rev 21004)
@@ -47,6 +47,7 @@
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.DefaultListModel;
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JFormattedTextField;
 import javax.swing.JLabel;
@@ -88,9 +89,9 @@
        private JTextField addWordTextField;
        
        //JComboBox
-       JComboBox cmbAttributes;
-       JComboBox cmbRemoval;
-       JComboBox cmbStyle;
+       private JComboBox cmbAttributes;
+       private JComboBox cmbRemoval;
+       private JComboBox cmbStyle;
        
        //JLabels
        private JLabel networkLabel;
@@ -104,6 +105,9 @@
        private JButton removeWordButton;
        private JButton addWordButton;
        
+       //Checkbox
+       private JCheckBox numExclusion;
+       
        //String Constants for Separators in remove word combo box
        private static final String addedSeparator = "--Added Words--";
        private static final String flaggedSeparator = "--Flagged Words--";
@@ -393,8 +397,8 @@
                addWordTextField = new JFormattedTextField();
                addWordTextField.setColumns(15);
                
-               CloudParameters params = 
SemanticSummaryManager.getInstance().getCurCloud();
-               if 
(params.equals(SemanticSummaryManager.getInstance().getNullCloudParameters()))
+               SemanticSummaryParameters networkParams = 
SemanticSummaryManager.getInstance().getCurNetwork();
+               if 
(networkParams.equals(SemanticSummaryManager.getInstance().getNullSemanticSummary()))
                        addWordTextField.setEditable(false);
                else
                        addWordTextField.setEditable(true);
@@ -482,19 +486,24 @@
                gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
                wordPanel.add(removeWordButton, gridBagConstraints);
 
+               refreshRemovalCMB();
                
-               //Export Text Button
-               //JButton exportTextButton = new JButton("txt export");
-               //gridBagConstraints = new GridBagConstraints();
-               //gridBagConstraints.gridy = 2;
-               //gridBagConstraints.gridx = 2;
-               //gridBagConstraints.anchor = GridBagConstraints.EAST;
-               //gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
-               //Comment out for the time being until we decide if this is 
needed
-               //wordPanel.add(exportTextButton, gridBagConstraints);
+               //Number Exclusion Stuff
                
-               refreshRemovalCMB();
+               //Checkbox
+               numExclusion = new JCheckBox("Exclude Numbers");
+               numExclusion.setToolTipText("When selected, causes all words 
that are numbers in the range 0-999 to be excluded");
+               numExclusion.addActionListener(this);
+               numExclusion.setSelected(false);
+               numExclusion.setEnabled(false);
                
+               gridBagConstraints = new GridBagConstraints();
+               gridBagConstraints.gridx = 0;
+               gridBagConstraints.gridy = 2;
+               gridBagConstraints.anchor = GridBagConstraints.WEST;
+               gridBagConstraints.insets = new Insets(5,0,0,0);
+               wordPanel.add(numExclusion, gridBagConstraints);
+               
                //Add components to main panel
                panel.add(wordPanel);
                
@@ -631,19 +640,25 @@
                cmbStyle.setSelectedItem(params.getDisplayStyle());
                addWordTextField.setText("");
                
-               if 
(params.equals(SemanticSummaryManager.getInstance().getNullCloudParameters()))
+               //Get current network
+               SemanticSummaryParameters networkParams = 
SemanticSummaryManager.getInstance().getCurNetwork();
+               
+               if 
(networkParams.equals(SemanticSummaryManager.getInstance().getNullSemanticSummary()))
                        {
                        addWordTextField.setEditable(false);
                        addWordButton.setEnabled(false);
+                       numExclusion.setEnabled(false);
                        }
                else
                {
                        addWordTextField.setEditable(true);
                        addWordButton.setEnabled(true);
+                       numExclusion.setEnabled(true);
                }
                
                SemanticSummaryManager.getInstance().setCurCloud(params);
-               this.refreshRemovalCMB();
+               //this.refreshRemovalCMB();
+               this.refreshNetworkSettings();
        }
        
        
@@ -681,6 +696,8 @@
                maxWordsTextField.setValue(params.getDefaultMaxWords());
                
clusterCutoffTextField.setValue(params.getDefaultClusterCutoff());
                cmbStyle.setSelectedItem(params.getDefaultDisplayStyle());
+               
+               this.refreshNetworkSettings();
                this.updateUI();
        }
        
@@ -693,13 +710,12 @@
                cmb = ((DefaultComboBoxModel)cmbRemoval.getModel());
                cmb.removeAllElements();
                
-               CloudParameters params = 
SemanticSummaryManager.getInstance().getCurCloud();
-               SemanticSummaryParameters networkParams = 
params.getNetworkParams();
+               SemanticSummaryParameters networkParams = 
SemanticSummaryManager.getInstance().getCurNetwork();
                WordFilter curFilter = networkParams.getFilter();
                
-               //Check if we are dealing with the Null CloudParameters
+               //Check if we are dealing with the Null 
SemanticSummaryParameters
                Boolean isNull = false;
-               if 
(params.equals(SemanticSummaryManager.getInstance().getNullCloudParameters()))
+               if 
(networkParams.equals(SemanticSummaryManager.getInstance().getNullSemanticSummary()))
                                isNull = true;
                
                //Added words
@@ -773,8 +789,28 @@
                cmbRemoval.repaint();
        }
        
+       /**
+        * Sets the numExclusion checkbox based on the current network.
+        */
+       private void updateNumExclusionBox()
+       {
+               SemanticSummaryParameters networkParams = 
SemanticSummaryManager.getInstance().getCurNetwork();
+               WordFilter curFilter = networkParams.getFilter();
+               Boolean val = curFilter.getFilterNums();
+               numExclusion.setSelected(val);
+       }
        
        /**
+        * Refreshes everything in the input panel that is on the network level.
+        */
+       public void refreshNetworkSettings()
+       {
+               this.refreshRemovalCMB();
+               this.updateNumExclusionBox();
+       }
+       
+       
+       /**
         * Update the attribute list in the attribute combobox.
         */
        private void updateCMBAttributes()
@@ -820,17 +856,8 @@
        {
                DefaultComboBoxModel cmb;
                
-               /*
                cmb = ((DefaultComboBoxModel)cmbStyle.getModel());
                cmb.removeAllElements();
-               
cmb.addElement(SemanticSummaryManager.getInstance().getNullCloudParameters().getDefaultDisplayStyle());
-               cmb.addElement("Gray Boxes");
-               cmb.addElement("No Clustering");
-               
cmbStyle.setSelectedItem(SemanticSummaryManager.getInstance().getNullCloudParameters().getDefaultDisplayStyle());
-               cmbStyle.repaint();
-               */
-               cmb = ((DefaultComboBoxModel)cmbStyle.getModel());
-               cmb.removeAllElements();
                cmb.addElement(CloudDisplayStyles.CLUSTERED_STANDARD);
                cmb.addElement(CloudDisplayStyles.CLUSTERED_BOXES);
                cmb.addElement(CloudDisplayStyles.NO_CLUSTERING);
@@ -922,6 +949,7 @@
                }//end if combo box
        }
        
+       
        /**
         * Handles button presses in the Input Panel.
         * @param ActionEvent - event that triggered this method.
@@ -946,17 +974,14 @@
                                                        
!selectItem.equalsIgnoreCase(flaggedSeparator) ||
                                                        
!selectItem.equalsIgnoreCase(stopSeparator))
                                        {
-                                               CloudParameters params = 
SemanticSummaryManager.getInstance().getCurCloud();
-                                               SemanticSummaryParameters 
networkParams = params.getNetworkParams();
+                                               SemanticSummaryParameters 
networkParams = SemanticSummaryManager.getInstance().getCurNetwork();
                                                WordFilter curFilter = 
networkParams.getFilter();
                                                
                                                //Remove from filter
                                                curFilter.remove(selectItem);
                                                
-                                               //Reset Flags
-                                               
params.setCountInitialized(false);
-                                               params.setSelInitialized(false);
-                                               
params.setRatiosInitialized(false);
+                                               //Reset flags
+                                               networkParams.networkChanged();
                                                
                                                //Refresh word removal list
                                                this.refreshRemovalCMB();
@@ -972,17 +997,14 @@
                                
                                else if (value.matches("[\\w]*"))
                                { 
-                                       //add value to cloud parameters filter 
and update
-                                       CloudParameters params = 
SemanticSummaryManager.getInstance().getCurCloud();
-                                       SemanticSummaryParameters networkParams 
= params.getNetworkParams();
+                                       //add value to filter and update
+                                       SemanticSummaryParameters networkParams 
= SemanticSummaryManager.getInstance().getCurNetwork();
                                        WordFilter curFilter = 
networkParams.getFilter();
                                        value.toLowerCase();
                                        curFilter.add(value);
                                        
                                        //Reset flags
-                                       params.setCountInitialized(false);
-                                       params.setSelInitialized(false);
-                                       params.setRatiosInitialized(false);
+                                       networkParams.networkChanged();
                                        
                                        //Refresh view
                                        this.refreshRemovalCMB();
@@ -998,10 +1020,26 @@
                                }
                        }
                }//end button   
+               else if (_actionObject instanceof JCheckBox)
+               {
+                       JCheckBox _box = (JCheckBox)_actionObject;
+                       
+                       if (_box == numExclusion)
+                       {
+                               Boolean selected = numExclusion.isSelected();
+                               
+                               //add value to filter and update
+                               SemanticSummaryParameters networkParams = 
SemanticSummaryManager.getInstance().getCurNetwork();
+                               WordFilter curFilter = 
networkParams.getFilter();
+                               curFilter.setFilterNums(selected);
+                               
+                               //Reset flags
+                               networkParams.networkChanged();
+                       }
+               }
        }
        
        
-       
        //Getters and Setters
        public JFormattedTextField getNetWeightTextField()
        {
@@ -1064,7 +1102,17 @@
                return handler;
        }
        
+       public JCheckBox getNumExclusion()
+       {
+               return numExclusion;
+       }
        
+       public void setNumExclusion(JCheckBox box)
+       {
+               numExclusion = box;
+       }
+       
+       
        /**
         * Private Class to ensure that text fields are being set properly
         */

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
       2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
       2010-07-22 23:19:04 UTC (rev 21004)
@@ -248,7 +248,7 @@
                getCloudWindow().clearCloud();
                getInputWindow().setUserDefaults();
                getInputWindow().refreshAttributeCMB();
-               getInputWindow().refreshRemovalCMB();
+               getInputWindow().refreshNetworkSettings();
                
                getInputWindow().loadCurrentCloud(curCloud);
 

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
    2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
    2010-07-22 23:19:04 UTC (rev 21004)
@@ -61,6 +61,7 @@
        //String Delimeters
        private static final String NODEDELIMITER = "SSParamNodeDelimiter";
        
+       //Filter stuff
        private WordFilter filter;
        
        //CONSTRUCTORS
@@ -376,4 +377,5 @@
        {
                filter = aFilter;
        }
+       
 }

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
        2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
        2010-07-22 23:19:04 UTC (rev 21004)
@@ -429,7 +429,7 @@
                                
                        }//end loop through all props files
                        
-                       //Initialize the panel appropriately
+                       //Set current network and Initialize the panel 
appropriately
                        
SemanticSummaryManager.getInstance().setupCurrentNetwork();
                        
                }//end try

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
    2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
    2010-07-22 23:19:04 UTC (rev 21004)
@@ -84,7 +84,7 @@
                CyNetworkView view = Cytoscape.getCurrentNetworkView();
                
                //Update network if necessary
-               if (networkParams.networkHasChanged(network));
+               if (networkParams.networkHasChanged(network))
                        networkParams.updateParameters(network);
                
                //Get set of selected and compare to saved

Modified: 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
===================================================================
--- 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
   2010-07-22 23:16:42 UTC (rev 21003)
+++ 
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
   2010-07-22 23:19:04 UTC (rev 21004)
@@ -57,7 +57,9 @@
        
        private HashSet<String> stopWords = new HashSet<String>(); //Stop words
        private HashSet<String> flaggedWords = new HashSet<String>();//Flagged 
words
-       private HashSet<String> addedWords = new HashSet<String>();
+       private HashSet<String> addedWords = new HashSet<String>(); //User 
added words
+       private HashSet<String> numberWords = new HashSet<String>();
+       private Boolean filterNums = false;
        final static public String stopWordFile = "StopWords.txt";
        final static public String flaggedWordFile = "FlaggedWords.txt";
        final static public String separator = "/";
@@ -82,6 +84,7 @@
                
                this.initialize(stopPath, stopWords);
                this.initialize(flaggedPath, flaggedWords);
+               this.initializeNums();
        }
        
        /**
@@ -141,6 +144,14 @@
                                addedWords.add(curWord);
                        }
                }
+               
+               //Rebuild number list
+               this.initializeNums();
+               value = props.get("FilterNums");
+               if (value != null)
+               {
+                       this.filterNums = Boolean.parseBoolean(value);
+               }
        }
        
        
@@ -160,7 +171,14 @@
                        return true;
                else if (addedWords.contains(aWord))
                        return true;
-               else 
+               else if (filterNums)
+               {
+                       if (numberWords.contains(aWord))
+                               return true;
+                       else
+                               return false;
+               }
+               else
                        return false;
        }
        
@@ -294,9 +312,28 @@
                        filterVariables.append("AddedWords\t" + 
output.toString() + "\n");
                }
                
+               filterVariables.append("FilterNums\t" + filterNums + "\n");
+               
                return filterVariables.toString();
        }
        
+       /**
+        * Builds the hashmap that contains the string values of the numbers 0
+        * to 999 to check for exclusion if this option is set to true.
+        */
+       private void initializeNums()
+       {
+               //Clears old values
+               numberWords = new HashSet<String>();
+               
+               for (int i = 0; i < 1000; i++)
+               {
+                       String value = Integer.toString(i);
+                       numberWords.add(value);
+               }
+       }
+       
+       
        //Getters and Setters
        public HashSet<String> getStopWords()
        {
@@ -312,4 +349,19 @@
        {
                return addedWords;
        }
+       
+       public HashSet<String> getNumWords()
+       {
+               return numberWords;
+       }
+       
+       public Boolean getFilterNums()
+       {
+               return filterNums;
+       }
+       
+       public void setFilterNums(Boolean val)
+       {
+               filterNums = val;
+       }
 }

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