Author: rozagh
Date: 2012-04-26 15:07:51 -0700 (Thu, 26 Apr 2012)
New Revision: 29021

Modified:
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
   
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/gui/FilterCytoPanelComponent.java
Log:
Changes applied on the event handlers to run in separate thread. Fixes for bugs 
related to the default filter loading with no networks. 

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
       2012-04-26 22:06:49 UTC (rev 29020)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
       2012-04-26 22:07:51 UTC (rev 29021)
@@ -112,6 +112,8 @@
        
        
        public static boolean hasSuchAttribute(CyNetwork network, String 
pAttribute, int pType) {
+               if (network == null)
+                       return false;
                if (pType == QuickFind.INDEX_NODES) {
                        List<CyNode> nodes = network.getNodeList();
                        if (nodes.size() == 0) {

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
  2012-04-26 22:06:49 UTC (rev 29020)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
  2012-04-26 22:07:51 UTC (rev 29021)
@@ -90,10 +90,10 @@
 import org.cytoscape.model.CyIdentifiable;
 import org.cytoscape.model.events.ColumnNameChangedEvent;
 import org.cytoscape.model.events.ColumnNameChangedListener;
-import org.cytoscape.model.events.NetworkAboutToBeDestroyedEvent;
-import org.cytoscape.model.events.NetworkAboutToBeDestroyedListener;
 import org.cytoscape.model.events.NetworkAddedEvent;
 import org.cytoscape.model.events.NetworkAddedListener;
+import org.cytoscape.model.events.NetworkDestroyedEvent;
+import org.cytoscape.model.events.NetworkDestroyedListener;
 import org.cytoscape.model.events.RowSetRecord;
 import org.cytoscape.model.events.RowsCreatedEvent;
 import org.cytoscape.model.events.RowsCreatedListener;
@@ -109,8 +109,8 @@
 
 @SuppressWarnings("serial")
 public class FilterMainPanel extends JPanel implements ActionListener,
-                                                      ItemListener, 
SetCurrentNetworkListener, NetworkAddedListener,
-                                                      
NetworkAboutToBeDestroyedListener, SessionLoadedListener, 
RowsSetListener,ColumnNameChangedListener,
+                                                      ItemListener, 
SetCurrentNetworkListener, NetworkAddedListener,NetworkDestroyedListener,
+                                                      SessionLoadedListener, 
RowsSetListener,ColumnNameChangedListener,
                                                       RowsCreatedListener, 
FiltersChangedListener {
        
        // String constants used for separator entries in the attribute combobox
@@ -202,116 +202,160 @@
 
                addEventListeners();
        
-               //btnApplyFilter.setVisible(false);
+               btnApplyFilter.setVisible(false);
                
                //Update the status of interactionMenuItems if this panel 
become visible
                MyComponentAdapter cmpAdpt = new MyComponentAdapter();
                addComponentListener(cmpAdpt);
+               
+               this.setEnabled(false);
        }
 
        @Override
-       public void handleEvent(FiltersChangedEvent event) {
-               updateCMBFilters();
-               refreshAttributeCMB();
-       }
-       
-       @Override
-       public void handleEvent(RowsSetEvent e) {
-               // Handle selection events
-               if (this.applicationManager.getCurrentNetwork() == null){
-                       return;
-               }
-               
-               boolean isSelection = true;
-               for (RowSetRecord change : e.getPayloadCollection()) {
-                       if (!change.getColumn().equals(CyNetwork.SELECTED)) {
-                               isSelection = false;
-                               break;
+       public void handleEvent(ColumnNameChangedEvent e) {
+
+               SwingUtilities.invokeLater(new Runnable() {
+
+                       @Override
+                       public void run() {
+
+                               handleAttributesChanged();
+                               logger.warn("A column name has been updated. 
The filter may not be applied on some of the added widgets");
                        }
-               }
-               if (isSelection) {
-                       updateFeedbackTableModel();
-                       return;
-               }
-               
-               handleAttributesChanged();      
-               updateFeedbackTableModel();
-       }
-       
+               });
+       }       
        @Override
-       public void handleEvent(RowsCreatedEvent e) {
-               handleAttributesChanged();
+       public void handleEvent(FiltersChangedEvent event) {
+               SwingUtilities.invokeLater(new Runnable() {
+
+                       @Override
+                       public void run() {
+                               updateCMBFilters();
+                               refreshAttributeCMB();
+                       }});
        }
        
        @Override
-       public void handleEvent(SessionLoadedEvent e) {
-               updateFeedbackTableModel();
-       }
-       
-       public void handleNetworkFocused(final CyNetwork net) {
+       public void handleEvent(final RowsSetEvent e) {
                SwingUtilities.invokeLater(new Runnable() {
+
                        @Override
                        public void run() {
-                               if (net == null) {
+                               // Handle selection events
+                               if (applicationManager.getCurrentNetwork() == 
null){
                                        return;
                                }
-                               
-                               //TODO The current panel check is incorrect.
-                               
-                               // If FilterPanel is not selected, do nothing 
==> ****** ERR this is incorrect *******
-                               if (cmbFilters.getSelectedItem() == null) {
-                                       return;
+
+                               boolean isSelection = true;
+                               for (RowSetRecord change : 
e.getPayloadCollection()) {
+                                       if 
(!change.getColumn().equals(CyNetwork.SELECTED)) {
+                                               isSelection = false;
+                                               break;
+                                       }
                                }
-                               
-                               handleAttributesChanged();
-                                                       
-                               //Refresh indices for UI widgets after network 
switch                   
-                               CompositeFilter selectedFilter = 
(CompositeFilter) cmbFilters.getSelectedItem();
-                               selectedFilter.setNetwork(net);
-                               FilterSettingPanel theSettingPanel= 
filter2SettingPanelMap.get(selectedFilter);
-                               
-                               if (theSettingPanel != null) {
-                                       
theSettingPanel.refreshIndicesForWidgets();
+                               if (isSelection) {
                                        updateFeedbackTableModel();
+                                       return;
                                }
+
+                               handleAttributesChanged();      
+                               updateFeedbackTableModel();
                        }
                });
        }
+       
+       @Override
+       public void handleEvent(RowsCreatedEvent e) {
+               SwingUtilities.invokeLater(new Runnable() {
 
+                       @Override
+                       public void run() {
+                               handleAttributesChanged();
+                       }});
+
+       }
+       
        @Override
-       public void handleEvent(SetCurrentNetworkEvent e) {
-               handleNetworkFocused(e.getNetwork());
+       public void handleEvent(SessionLoadedEvent e) {
+               SwingUtilities.invokeLater(new Runnable() {
+
+                       @Override
+                       public void run() {
+                               updateFeedbackTableModel();
+                       }});
+
        }
-
-       @Override
-       public void handleEvent(NetworkAboutToBeDestroyedEvent e) {
-               CyNetwork network = e.getNetwork();
-               if (!networkManager.networkExists(network.getSUID())) {
+       
+       public void handleNetworkFocused(final CyNetwork net) {
+               if (net == null) {
                        return;
                }
-               
-               enableForNetwork();
-               updateFeedbackTableModel();
+               handleAttributesChanged();
+
+               //Refresh indices for UI widgets after network switch           
        
+               CompositeFilter selectedFilter = (CompositeFilter) 
cmbFilters.getSelectedItem();
+               selectedFilter.setNetwork(net);
+               FilterSettingPanel theSettingPanel= 
filter2SettingPanelMap.get(selectedFilter);
+
+               if (theSettingPanel != null) {
+                       theSettingPanel.refreshIndicesForWidgets();
+                       updateFeedbackTableModel();
+               }
+
        }
 
        @Override
-       public void handleEvent(NetworkAddedEvent e) {
-               CyNetwork network = e.getNetwork();
-               if (!networkManager.networkExists(network.getSUID())) {
-                       return;
-               }
-
-               enableForNetwork();
-               updateFeedbackTableModel();
+       public void handleEvent(final SetCurrentNetworkEvent e) {
                
-               updateIndex();
+               SwingUtilities.invokeLater(new Runnable() {
+                       @Override
+                       public void run() {
+                               enableForNetwork();
+                               handleNetworkFocused(e.getNetwork());
+                               refreshAttributeCMB();
+                       }});
        }
 
+       
+       @Override
+       public void handleEvent(final NetworkDestroyedEvent e) {
+               SwingUtilities.invokeLater(new Runnable() {
+                       @Override
+                       public void run() {
+                               enableForNetwork();
+                               updateFeedbackTableModel();
+                               CyNetwork n = 
applicationManager.getCurrentNetwork();
 
-       public void updateFeedbackTableModel(){         
+                               if ( n == null ) {
+                                       setEnabled(false);
+                                       updateCMBFilters();
+                                       refreshAttributeCMB();
+                                       initCMBFilters();
+                               }
+                       }});
+       }
+       
+       
+       @Override
+       public void handleEvent(NetworkAddedEvent e) {
+               final CyNetwork network = e.getNetwork();
+               
                SwingUtilities.invokeLater(new Runnable() {
                        @Override
                        public void run() {
+                               if (!isEnabled()){
+                                       setEnabled(true);
+                                       initCMBFilters();
+                               }
+                               
+                               updateIndex(network);
+                       }
+               });
+
+       }
+
+
+       private void updateFeedbackTableModel(){
                                String netName = null;
                                String nodeCount = null;
                                String edgeCount = null;
@@ -326,26 +370,28 @@
                                tblFeedBack.getModel().setValueAt(netName, 0, 
0);
                                tblFeedBack.getModel().setValueAt(nodeCount, 0, 
1);
                                tblFeedBack.getModel().setValueAt(edgeCount, 0, 
2);                             
-               }});
        }
        
        /**
         * Enable select/deselect buttons if the current network exists and is 
not null.
         */
-       public void enableForNetwork() {
+       private void enableForNetwork() {
                CyNetwork n = applicationManager.getCurrentNetwork();
 
                if ( n == null ) {
                        this.btnSelectAll.setEnabled(false);
                        this.btnDeSelect.setEnabled(false);
+                       btnApplyFilter.setVisible(false);
                } else {
                        this.btnSelectAll.setEnabled(true);
                        this.btnDeSelect.setEnabled(true);      
+                       btnApplyFilter.setVisible(true);
                }
        }
        
        public void handlePanelSelected() {
-               updateIndex();
+               
+               updateIndex(applicationManager.getCurrentNetwork());
        }
        
        public void refreshFilterSelectCMB() {
@@ -362,19 +408,14 @@
        }
        
        private void handleAttributesChanged() {
-               SwingUtilities.invokeLater(new Runnable() {
-                               @Override
-                                       public void run() {
-                                       refreshAttributeCMB();
-                                       
replaceFilterSettingPanel((CompositeFilter)cmbFilters.getSelectedItem());
-                               
-                                       FilterSettingPanel theSettingPanel= 
filter2SettingPanelMap.get(cmbFilters.getSelectedItem());
-                                       if (theSettingPanel != null) {
-                                               
theSettingPanel.refreshIndicesForWidgets();
-                                       }
-                                       updateFeedbackTableModel();
-                               }
-                       });
+               refreshAttributeCMB();
+               
replaceFilterSettingPanel((CompositeFilter)cmbFilters.getSelectedItem());
+
+               FilterSettingPanel theSettingPanel= 
filter2SettingPanelMap.get(cmbFilters.getSelectedItem());
+               if (theSettingPanel != null) {
+                       theSettingPanel.refreshIndicesForWidgets();
+               }
+               updateFeedbackTableModel();
        }
        
        private void refreshAttributeCMB() {
@@ -545,9 +586,10 @@
                
replaceFilterSettingPanel((CompositeFilter)cmbFilters.getSelectedItem());
        }
 
-       private void updateIndex() {
-               final CyNetwork curNetwork = 
applicationManager.getCurrentNetwork();
-               
+       private void updateIndex(CyNetwork curNetwork) {
+
+               //final CyNetwork curNetwork = 
applicationManager.getCurrentNetwork();
+
                // Update only when current network is available.
                if (curNetwork == null)
                        return;
@@ -555,6 +597,7 @@
                FilterIndexingTaskFactory taskFactory = new 
FilterIndexingTaskFactory(quickFind, curNetwork);
                taskManager.execute(taskFactory.createTaskIterator());
                updateCMBAttributes();
+
        }
        
        private void updateCMBFilters() {
@@ -815,7 +858,8 @@
                // Set customized renderer for attributes/filter combobox
                cmbAttributes.setRenderer(new AttributeFilterRenderer());
                
-               initCMBFilters();
+               
+               //initCMBFilters();
        }// </editor-fold>
 
        // Variables declaration - do not modify
@@ -910,6 +954,7 @@
 
        @Override
        public void actionPerformed(ActionEvent e) {
+
                Object _actionObject = e.getSource();
 
                // handle Button events
@@ -1393,10 +1438,5 @@
                }
        }
 
-       @Override
-       public void handleEvent(ColumnNameChangedEvent e) {
 
-               handleAttributesChanged();
-               logger.warn("A column name has been updated. The filter may not 
be applied on some of the added widgets");
-       }
 }

Modified: 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/gui/FilterCytoPanelComponent.java
===================================================================
--- 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/gui/FilterCytoPanelComponent.java
  2012-04-26 22:06:49 UTC (rev 29020)
+++ 
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/gui/FilterCytoPanelComponent.java
  2012-04-26 22:07:51 UTC (rev 29021)
@@ -3,6 +3,7 @@
 import java.awt.Component;
 
 import javax.swing.Icon;
+import javax.swing.SwingUtilities;
 
 import org.cytoscape.application.swing.CytoPanelComponent;
 import org.cytoscape.application.swing.CytoPanelName;
@@ -39,9 +40,14 @@
        }
 
        @Override
-       public void handleEvent(CytoPanelComponentSelectedEvent e) {
+       public void handleEvent(final CytoPanelComponentSelectedEvent e) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       
+               @Override
+               public void run(){
                if (e.getCytoPanel().getSelectedComponent() == panel) {
                        panel.handlePanelSelected();
                }
+               }});
        }
 }

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