Author: clopes
Date: 2012-02-17 11:37:01 -0800 (Fri, 17 Feb 2012)
New Revision: 28314

Modified:
   
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactory.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactory.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/SessionHandler.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeListModel.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
Log:
Fixes #688 : Selection and z-index of network views are not restored from saved 
sessions:
    - Now UI components (networks tab, table browser) do not set the current 
network to CyApplicationManager when networks/views are added--the network 
creation tasks are responsible for it.

Modified: 
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
===================================================================
--- 
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
    2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
    2012-02-17 19:37:01 UTC (rev 28314)
@@ -93,6 +93,7 @@
                this.currentRenderer = null;
        }
 
+       @Override
        public void handleEvent(final NetworkAboutToBeDestroyedEvent event) {
                final CyNetwork toBeDestroyed = event.getNetwork();
                boolean changed = false;
@@ -133,6 +134,7 @@
                }
        }
 
+       @Override
        public void handleEvent(final NetworkViewAboutToBeDestroyedEvent event) 
{
                final CyNetworkView toBeDestroyed = event.getNetworkView();
                boolean changed = false;
@@ -172,10 +174,12 @@
                }
        }
 
+       @Override
        public synchronized CyNetwork getCurrentNetwork() {
                return currentNetwork;
        }
 
+       @Override
        public void setCurrentNetwork(final CyNetwork network) {
                final long networkId = network.getSUID();
                boolean changed = false;
@@ -204,10 +208,12 @@
                }
        }
 
+       @Override
        public synchronized CyNetworkView getCurrentNetworkView() {
                return currentNetworkView;
        }
 
+       @Override
        public void setCurrentNetworkView(final CyNetworkView view) {
                if (view == null) {
                        logger.warn("View was null - not setting current 
network view.");
@@ -240,10 +246,12 @@
                }
        }
 
+       @Override
        public synchronized List<CyNetworkView> getSelectedNetworkViews() {
                return new ArrayList<CyNetworkView>(selectedNetworkViews);
        }
 
+       @Override
        public void setSelectedNetworkViews(final List<CyNetworkView> 
networkViews) {
                if (networkViews == null)
                        return;
@@ -263,10 +271,12 @@
                                                                         new 
ArrayList<CyNetworkView>(selectedNetworkViews)));
        }
 
+       @Override
        public synchronized List<CyNetwork> getSelectedNetworks() {
                return new ArrayList<CyNetwork>(selectedNetworks);
        }
 
+       @Override
        public void setSelectedNetworks(final List<CyNetwork> networks) {
                if (networks == null)
                        return;
@@ -285,10 +295,12 @@
                                                                     new 
ArrayList<CyNetwork>(selectedNetworks)));
        }
 
+       @Override
        public RenderingEngine<CyNetwork> getCurrentRenderingEngine() {
                return currentRenderer;
        }
 
+       @Override
        public void setCurrentRenderingEngine(RenderingEngine<CyNetwork> 
engine) {
                this.currentRenderer = engine;
 

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-02-17 19:37:01 UTC (rev 28314)
@@ -194,8 +194,8 @@
                UnHideAllTaskFactory unHideAllTaskFactory = new 
UnHideAllTaskFactory(undoSupportServiceRef,cyEventHelperRef);
                UnHideAllNodesTaskFactory unHideAllNodesTaskFactory = new 
UnHideAllNodesTaskFactory(undoSupportServiceRef,cyEventHelperRef);
                UnHideAllEdgesTaskFactory unHideAllEdgesTaskFactory = new 
UnHideAllEdgesTaskFactory(undoSupportServiceRef,cyEventHelperRef);
-               NewEmptyNetworkTaskFactory newEmptyNetworkTaskFactory = new 
NewEmptyNetworkTaskFactory(cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,synchronousTaskManagerServiceRef);
-               CloneNetworkTaskFactory cloneNetworkTaskFactory = new 
CloneNetworkTaskFactory(cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,visualMappingManagerServiceRef,cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkNamingServiceRef,cyEventHelperRef);
+               NewEmptyNetworkTaskFactory newEmptyNetworkTaskFactory = new 
NewEmptyNetworkTaskFactory(cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,synchronousTaskManagerServiceRef,cyApplicationManagerServiceRef);
+               CloneNetworkTaskFactory cloneNetworkTaskFactory = new 
CloneNetworkTaskFactory(cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,visualMappingManagerServiceRef,cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkNamingServiceRef,cyApplicationManagerServiceRef);
                NewNetworkSelectedNodesEdgesTaskFactory 
newNetworkSelectedNodesEdgesTaskFactory = new 
NewNetworkSelectedNodesEdgesTaskFactory(undoSupportServiceRef,cyRootNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,visualMappingManagerServiceRef,cyApplicationManagerServiceRef,cyEventHelperRef);
                NewNetworkSelectedNodesOnlyTaskFactory 
newNetworkSelectedNodesOnlyTaskFactory = new 
NewNetworkSelectedNodesOnlyTaskFactory(undoSupportServiceRef,cyRootNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,visualMappingManagerServiceRef,cyApplicationManagerServiceRef,cyEventHelperRef);
                DestroyNetworkTaskFactory destroyNetworkTaskFactory = new 
DestroyNetworkTaskFactory(cyNetworkManagerServiceRef);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
    2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
    2012-02-17 19:37:01 UTC (rev 28314)
@@ -33,7 +33,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
@@ -65,19 +65,19 @@
        private final CyNetworkFactory netFactory;
        private final CyNetworkViewFactory netViewFactory;
        private final CyNetworkNaming naming;
-       private final CyEventHelper eventHelper;
+       private final CyApplicationManager appMgr;
 
        public CloneNetworkTask(final CyNetwork net, final CyNetworkManager 
netmgr,
                        final CyNetworkViewManager networkViewManager, final 
VisualMappingManager vmm,
                        final CyNetworkFactory netFactory, final 
CyNetworkViewFactory netViewFactory, final CyNetworkNaming naming,
-                       final CyEventHelper eventHelper) {
+                       final CyApplicationManager appMgr) {
                super(net, netmgr, networkViewManager);
 
                this.vmm = vmm;
                this.netFactory = netFactory;
                this.netViewFactory = netViewFactory;
                this.naming = naming;
-               this.eventHelper = eventHelper;
+               this.appMgr = appMgr;
        }
 
        public void run(TaskMonitor tm) {
@@ -92,13 +92,21 @@
                networkManager.addNetwork(newNet);
                tm.setProgress(0.6);
 
+               CyNetworkView newView = null;
+               
                if (origView != null)
-                       copyView(newNet, origView);
+                       newView = copyView(newNet, origView);
+               
                tm.setProgress(0.9);
 
                orig2NewNodeMap.clear();
                orig2NewNodeMap = null;
                
+               if (newView != null)
+                       appMgr.setCurrentNetworkView(newView);
+               else
+                       appMgr.setCurrentNetwork(newNet);
+               
                logger.debug("Cloning finished in " + 
(System.currentTimeMillis() - start) + " msec.");
                tm.setProgress(1.0);
        }
@@ -169,7 +177,7 @@
         * Copy Visual Properties to the new network view.
         * 
         */
-       private void copyView(final CyNetwork newNet, final CyNetworkView 
origView) {
+       private CyNetworkView copyView(final CyNetwork newNet, final 
CyNetworkView origView) {
                final CyNetworkView newView = 
netViewFactory.createNetworkView(newNet);
 
                // Copy node locations since this is controlled outside of 
visual style.
@@ -189,5 +197,7 @@
                vmm.getVisualStyle(origView).apply(newView);
                networkViewManager.addNetworkView(newView);
                newView.fitContent();
+               
+               return newView;
        }
 }

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactory.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactory.java
     2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactory.java
     2012-02-17 19:37:01 UTC (rev 28314)
@@ -29,6 +29,7 @@
  */
 package org.cytoscape.task.internal.creation;
 
+import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNetworkManager;
@@ -40,29 +41,29 @@
 import org.cytoscape.work.TaskIterator;
 
 public class CloneNetworkTaskFactory extends AbstractNetworkTaskFactory {
-    private final CyNetworkManager networkManager;
-    private final CyNetworkViewManager networkViewManager;
+    private final CyNetworkManager networkMgr;
+    private final CyNetworkViewManager networkViewMgr;
     private final VisualMappingManager vmm;
     private final CyNetworkFactory netFactory;
     private final CyNetworkViewFactory netViewFactory;
     private final CyNetworkNaming naming;
-    private final CyEventHelper eventHelper;
+    private final CyApplicationManager appMgr;
 
-    public CloneNetworkTaskFactory(final CyNetworkManager networkManager,
-           final CyNetworkViewManager networkViewManager, final 
VisualMappingManager vmm,
-           final CyNetworkFactory netFactory, final CyNetworkViewFactory 
netViewFactory, final CyNetworkNaming naming,
-           final CyEventHelper eventHelper) {
-       this.networkManager = networkManager;
-       this.networkViewManager = networkViewManager;
-       this.vmm = vmm;
-       this.netFactory = netFactory;
-       this.netViewFactory = netViewFactory;
-       this.naming = naming;
-       this.eventHelper = eventHelper;
+    public CloneNetworkTaskFactory(final CyNetworkManager networkMgr, final 
CyNetworkViewManager networkViewMgr, 
+               final VisualMappingManager vmm, final CyNetworkFactory 
netFactory, 
+               final CyNetworkViewFactory netViewFactory, final 
CyNetworkNaming naming, 
+               final CyApplicationManager appMgr) {
+       this.networkMgr = networkMgr;
+               this.networkViewMgr = networkViewMgr;
+               this.vmm = vmm;
+               this.netFactory = netFactory;
+               this.netViewFactory = netViewFactory;
+               this.naming = naming;
+               this.appMgr = appMgr;
     }
 
     public TaskIterator createTaskIterator() {
-       return new TaskIterator(new CloneNetworkTask(network, networkManager, 
networkViewManager, vmm, netFactory,
-               netViewFactory, naming, eventHelper));
+       return new TaskIterator(new CloneNetworkTask(network, networkMgr, 
networkViewMgr, vmm, netFactory, 
+                       netViewFactory, naming, appMgr));
     }
 }

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
 2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
 2012-02-17 19:37:01 UTC (rev 28314)
@@ -30,6 +30,7 @@
 package org.cytoscape.task.internal.creation;
 
 
+import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNetworkManager;
@@ -53,17 +54,20 @@
        private final CyNetworkNaming namingUtil; 
        private final CyNetworkManager networkManager;
        private final CyNetworkViewManager networkViewManager;
+       private final CyApplicationManager appManager; 
        private boolean cancel = false;
 
-       private CyNetworkView view; 
+       private CyNetworkView view;
 
        public NewEmptyNetworkTask(CyNetworkFactory cnf, CyNetworkViewFactory 
cnvf, CyNetworkManager netmgr,
-                                  final CyNetworkViewManager 
networkViewManager, final CyNetworkNaming namingUtil) {
+                                  final CyNetworkViewManager 
networkViewManager, final CyNetworkNaming namingUtil,
+                                  final CyApplicationManager appManager) {
                this.networkManager = netmgr;
                this.networkViewManager = networkViewManager;
                this.cnf = cnf;
                this.cnvf = cnvf;
                this.namingUtil = namingUtil;
+               this.appManager = appManager;
        }
 
        public void run(TaskMonitor tm) {
@@ -77,6 +81,8 @@
                networkManager.addNetwork(newNet);
                tm.setProgress(0.8);
                networkViewManager.addNetworkView(view);
+               tm.setProgress(0.9);
+               appManager.setCurrentNetworkView(view);
                tm.setProgress(1.0);
        }
 

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactory.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactory.java
  2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactory.java
  2012-02-17 19:37:01 UTC (rev 28314)
@@ -29,6 +29,7 @@
  */
 package org.cytoscape.task.internal.creation;  
 
+import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.TaskIterator;
@@ -43,25 +44,29 @@
 public class NewEmptyNetworkTaskFactory implements TaskFactory, 
NewEmptyNetworkViewFactory {
        private final CyNetworkFactory cnf;
        private final CyNetworkViewFactory cnvf;
-       private final CyNetworkManager netmgr;
-       private final CyNetworkViewManager networkViewManager;
+       private final CyNetworkManager netMgr;
+       private final CyNetworkViewManager networkViewMgr;
        private final CyNetworkNaming namingUtil;
-       private final SynchronousTaskManager syncTaskMgr;
+       private final SynchronousTaskManager<?> syncTaskMgr;
+       private final CyApplicationManager appMgr;
 
-       private NewEmptyNetworkTask task; 
+       private NewEmptyNetworkTask task;
 
-       public NewEmptyNetworkTaskFactory(final CyNetworkFactory cnf, final 
CyNetworkViewFactory cnvf, final CyNetworkManager netmgr, final 
CyNetworkViewManager networkViewManager, final CyNetworkNaming namingUtil, 
final SynchronousTaskManager syncTaskMgr)
-       {
+       public NewEmptyNetworkTaskFactory(final CyNetworkFactory cnf, final 
CyNetworkViewFactory cnvf, 
+                       final CyNetworkManager netMgr, final 
CyNetworkViewManager networkViewManager, 
+                       final CyNetworkNaming namingUtil, final 
SynchronousTaskManager<?> syncTaskMgr,
+                       final CyApplicationManager appMgr) {
                this.cnf = cnf;
                this.cnvf = cnvf;
-               this.netmgr = netmgr;
-               this.networkViewManager = networkViewManager;
+               this.netMgr = netMgr;
+               this.networkViewMgr = networkViewManager;
                this.namingUtil = namingUtil;
                this.syncTaskMgr = syncTaskMgr;
+               this.appMgr = appMgr;
        }
 
        public TaskIterator createTaskIterator() {
-               task = new NewEmptyNetworkTask(cnf, cnvf, netmgr, 
networkViewManager,namingUtil);
+               task = new NewEmptyNetworkTask(cnf, cnvf, netMgr, 
networkViewMgr, namingUtil, appMgr);
                return new TaskIterator(task);
        } 
 

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
     2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
     2012-02-17 19:37:01 UTC (rev 28314)
@@ -5,6 +5,7 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
+import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.ding.NetworkViewTestSupport;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkFactory;
@@ -34,6 +35,8 @@
        private CyNetworkViewManager networkViewManager;
        @Mock
        private CyNetworkNaming namingUtil;
+       @Mock
+       private CyApplicationManager appManager;
 
        @Before
        public void initMocks() {
@@ -43,7 +46,7 @@
        @Test
        public void testNewEmptyNetworkTask() throws Exception {
 
-               final NewEmptyNetworkTask task = new NewEmptyNetworkTask(cnf, 
cnvf, netmgr, networkViewManager, namingUtil);
+               final NewEmptyNetworkTask task = new NewEmptyNetworkTask(cnf, 
cnvf, netmgr, networkViewManager, namingUtil, appManager);
                final TaskMonitor taskMonitor = mock(TaskMonitor.class);
                task.run(taskMonitor);
 

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
       2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
       2012-02-17 19:37:01 UTC (rev 28314)
@@ -122,7 +122,6 @@
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.work.SynchronousTaskManager;
 import org.cytoscape.work.TaskFactory;
-import org.cytoscape.work.TaskManager;
 import org.cytoscape.work.swing.DialogTaskManager;
 import org.cytoscape.work.swing.PanelTaskManager;
 import org.cytoscape.work.swing.SubmenuTaskManager;
@@ -232,6 +231,7 @@
                SessionStateIO sessStateIO = new SessionStateIO();
                SessionHandler sessionHandler = new 
SessionHandler(cytoscapeDesktop,
                                                                                
                                   cyNetworkManagerServiceRef,
+                                                                               
                                   cyApplicationManagerServiceRef,
                                                                                
                                   networkViewManager,
                                                                                
                                   synchronousTaskManagerServiceRef,
                                                                                
                                   saveTaskFactoryServiceRef,

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/SessionHandler.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/SessionHandler.java
    2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/SessionHandler.java
    2012-02-17 19:37:01 UTC (rev 28314)
@@ -44,6 +44,7 @@
 import javax.swing.JInternalFrame;
 import javax.swing.JOptionPane;
 
+import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.application.events.CyShutdownEvent;
 import org.cytoscape.application.events.CyShutdownListener;
 import org.cytoscape.application.swing.CytoPanel;
@@ -76,6 +77,7 @@
        
        private final CytoscapeDesktop desktop;
        private final CyNetworkManager netMgr;
+       private final CyApplicationManager appManager;
        private final NetworkViewManager netViewMgr;
        private final SynchronousTaskManager<?> syncTaskMgr;
        private final TaskFactory saveTaskFactory;
@@ -87,12 +89,14 @@
        
        public SessionHandler(final CytoscapeDesktop desktop,
                                                  final CyNetworkManager netMgr,
+                                                 final CyApplicationManager 
appManager,
                                                  final NetworkViewManager 
netViewMgr,
                                                  final 
SynchronousTaskManager<?> syncTaskMgr,
                                                  final TaskFactory 
saveTaskFactory,
                                                  final SessionStateIO 
sessionStateIO) {
                this.desktop = desktop;
                this.netMgr = netMgr;
+               this.appManager = appManager;
                this.netViewMgr = netViewMgr;
                this.syncTaskMgr = syncTaskMgr;
                this.saveTaskFactory = saveTaskFactory;
@@ -226,7 +230,8 @@
        private void setNetworkFrameLocations(final NetworkFrames frames, final 
CySession sess) {
                if (frames != null) {
                        final List<NetworkFrame> framesList = 
frames.getNetworkFrame();
-
+                       CyNetworkView currentNetView = null;
+                       
                        for (NetworkFrame nf : framesList) {
                                final String oldIdStr = nf.getNetworkViewID(); 
// ID in the original session--it's probably different now
                                CyNetworkView view = null;
@@ -243,16 +248,30 @@
                                if (view != null) {
                                        final JInternalFrame iframe = 
netViewMgr.getInternalFrame(view);
                                        
-                                       if (iframe != null && nf.getX() != null 
&& nf.getY() != null) {
-                                               int x = nf.getX().intValue();
-                                               int y = nf.getY().intValue();
-                                               iframe.setLocation(x, y);
+                                       if (iframe != null) {
+                                               iframe.moveToBack(); // In 
order to restore its z-index
+                                               
+                                               if (nf.getX() != null && 
nf.getY() != null) {
+                                                       int x = 
nf.getX().intValue();
+                                                       int y = 
nf.getY().intValue();
+                                                       iframe.setLocation(x, 
y);
+                                               }
                                        }
+                                       
+                                       // The first frame should be the 
current one
+                                       if (currentNetView == null) {
+                                               currentNetView = view;
+                                       }
                                } else {
                                        logger.warn("Cannot restore network 
frame's position: Network View not found for former ID \""
                                                        + oldIdStr + "\".");
                                }
                        }
+                       
+                       // Restore the current network view
+                       if (currentNetView != null) {
+                               
appManager.setCurrentNetworkView(currentNetView);
+                       }
                }
        }
        

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-02-17 19:37:01 UTC (rev 28314)
@@ -455,8 +455,9 @@
        public void handleEvent(final NetworkViewAboutToBeDestroyedEvent nde) {
                SwingUtilities.invokeLater( new Runnable() {
                        public void run() {
-                               logger.debug("Network view about to be 
destroyed " + nde.getNetworkView().getModel().getSUID());
-                               
treeNodeMap.get(nde.getNetworkView().getModel().getSUID()).setNodeColor(Color.red);
+                               final CyNetworkView netView = 
nde.getNetworkView();
+                               logger.debug("Network view about to be 
destroyed " + netView.getModel().getSUID());
+                               
treeNodeMap.get(netView.getModel().getSUID()).setNodeColor(Color.red);
                                treeTable.getTree().updateUI();
                        }
                });
@@ -466,22 +467,19 @@
        public void handleEvent(final NetworkViewAddedEvent nde) {
                SwingUtilities.invokeLater( new Runnable() {
                        public void run() {
-                               logger.debug("Network view added to 
NetworkPanel: " + nde.getNetworkView().getModel().getSUID());
-
-                               // Set current network view to the new one.
-                               
appManager.setCurrentNetworkView(nde.getNetworkView());
-                               
treeNodeMap.get(nde.getNetworkView().getModel().getSUID()).setNodeColor(Color.black);
+                               final CyNetworkView netView = 
nde.getNetworkView();
+                               logger.debug("Network view added to 
NetworkPanel: " + netView.getModel().getSUID());
+                               
treeNodeMap.get(netView.getModel().getSUID()).setNodeColor(Color.black);
                                treeTable.getTree().updateUI();
                        }
                });
        }
 
-       private void addNetwork(final Long network_id) {
-               // first see if it exists
-               if (getNetworkNode(network_id) == null) {
+       private void addNetwork(final Long networkID) {
+               // first see if it is not in the tree already
+               if (getNetworkNode(networkID) == null) {
+                       final CyNetwork network = netmgr.getNetwork(networkID);
 
-                       final CyNetwork network = netmgr.getNetwork(network_id);
-
                        NetworkTreeNode parentTreeNode = null;
                        CyRootNetwork parentNetwork = null;
                        // In current version, ALL networks are created as 
Subnetworks.
@@ -495,8 +493,14 @@
                                parentTreeNode = new NetworkTreeNode("", null);
 
                        // Actual tree node for this network
-                       NetworkTreeNode dmtn = new 
NetworkTreeNode(network.getRow(network).get(CyTableEntry.NAME, String.class),
-                                       network);
+                       String netName = 
network.getRow(network).get(CyTableEntry.NAME, String.class);
+                       
+                       if (netName == null) {
+                               logger.error("Network name is null--SUID=" + 
network.getSUID());
+                               netName = "? (SUID: " + network.getSUID() + ")";
+                       }
+                       
+                       NetworkTreeNode dmtn = new NetworkTreeNode(netName, 
network);
 
                        parentTreeNode.add(dmtn);
 
@@ -507,7 +511,7 @@
                        if (parentNetwork != null)
                                this.treeNodeMap.put(parentNetwork.getSUID(), 
parentTreeNode);
 
-                       if(networkViewManager.viewExists(network))
+                       if (networkViewManager.viewExists(network))
                                dmtn.setNodeColor(Color.black);
                        
                        this.treeNodeMap.put(network.getSUID(), dmtn);
@@ -520,11 +524,6 @@
                        treeTable.getTree().expandPath(path);
                        treeTable.getTree().scrollPathToVisible(path);
                        treeTable.doLayout();
-
-                       // this is necessary because valueChanged is not fired 
above
-                       focusNetworkNode(network_id);
-               } else {
-                       // already in the table.
                }
        }
 

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   2012-02-17 19:37:01 UTC (rev 28314)
@@ -219,7 +219,9 @@
                        return;
 
                final RenderingEngine<CyNetwork> currentEngine = 
applicationManager.getCurrentRenderingEngine();
-               applicationManager.setCurrentNetworkView(view);
+               
+               if (!view.equals(applicationManager.getCurrentNetworkView()))
+                       applicationManager.setCurrentNetworkView(view);
 
                if (currentEngine == null || currentEngine.getViewModel() != 
view)
                        
applicationManager.setCurrentRenderingEngine(presentationMap.get(view));

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
  2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
  2012-02-17 19:37:01 UTC (rev 28314)
@@ -96,12 +96,14 @@
         * Returns the Component to be added to the CytoPanel.
         * @return The Component to be added to the CytoPanel.
         */
+       @Override
        public Component getComponent() { return this; }
 
        /**
         * Returns the name of the CytoPanel that this component should be 
added to.
         * @return the name of the CytoPanel that this component should be 
added to.
         */
+       @Override
        public CytoPanelName getCytoPanelName() {
                return CytoPanelName.SOUTH;
        }
@@ -110,11 +112,13 @@
         * Returns the title of the tab within the CytoPanel for this component.
         * @return the title of the tab within the CytoPanel for this component.
         */
+       @Override
        public String getTitle() { return tabTitle; }
 
        /**
         * @return null
         */
+       @Override
        public Icon getIcon() { return null; }
        
        synchronized void showSelectedTable() {

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeListModel.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeListModel.java
    2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeListModel.java
    2012-02-17 19:37:01 UTC (rev 28314)
@@ -99,10 +99,12 @@
 
                attributeNames = new ArrayList<String>();
                final CyTable attributes = browserTableModel.getAttributes();
+               
                for (final String attrName : 
browserTableModel.getVisibleAttributeNames()) {
                        if 
(validAttrTypes.contains(attributes.getColumn(attrName).getType()))
                                attributeNames.add(attrName);
                }
+               
                Collections.sort(attributeNames);
                browserTableModel.setVisibleAttributeNames(attributeNames);
 

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
   2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
   2012-02-17 19:37:01 UTC (rev 28314)
@@ -14,6 +14,7 @@
 import javax.swing.JList;
 import javax.swing.JToggleButton;
 import javax.swing.ListCellRenderer;
+import javax.swing.SwingUtilities;
 
 import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.application.events.SetCurrentNetworkEvent;
@@ -36,7 +37,8 @@
 import org.cytoscape.util.swing.OpenBrowser;
 import org.cytoscape.work.swing.DialogTaskManager;
 
-public class DefaultTableBrowser extends AbstractTableBrowser implements 
SetCurrentNetworkListener, NetworkAddedListener, 
NetworkAboutToBeDestroyedListener {
+public class DefaultTableBrowser extends AbstractTableBrowser implements 
SetCurrentNetworkListener,
+               NetworkAddedListener, NetworkAboutToBeDestroyedListener {
 
        private static final long serialVersionUID = 627394119637512735L;
 
@@ -45,7 +47,8 @@
        private final JComboBox networkChooser;
        private final Class<? extends CyTableEntry> objType;
 
-       private boolean rowSelectionMode = false;
+       private boolean rowSelectionMode;
+       private boolean ignoreSetCurrentNetwork;
        
 
        public DefaultTableBrowser(String tabTitle, Class<? extends 
CyTableEntry> objType, CyTableManager tableManager,
@@ -91,56 +94,87 @@
                rowSelectionMode = selectionModeButton.isSelected();
                getCurrentBrowserTableModel().setShowAll(rowSelectionMode);
                getCurrentBrowserTableModel().updateShowAll();
-
        }
        
        @Override
        public void actionPerformed(final ActionEvent e) {
+               if (ignoreSetCurrentNetwork)
+                       return;
+                       
                final CyNetwork currentNetwork = 
this.applicationManager.getCurrentNetwork();
                final CyNetwork network = (CyNetwork) 
networkChooser.getSelectedItem();
-               if (network == null || currentNetwork == network)
-                       return;
                
-               applicationManager.setCurrentNetwork(network);
+               if (network != null && !network.equals(currentNetwork) && 
networkManager.networkExists(network.getSUID())) {
+                       applicationManager.setCurrentNetwork(network);
+               }
        }
 
        @Override
        public void handleEvent(final SetCurrentNetworkEvent e) {
                final CyNetwork currentNetwork = e.getNetwork();
-               final CyNetwork selectedNetwork = (CyNetwork) 
networkChooser.getSelectedItem();
                
-               
-               if (objType == CyNode.class) {
-                       currentTable = currentNetwork.getDefaultNodeTable();
-               } else if (objType == CyEdge.class) {
-                       currentTable = currentNetwork.getDefaultEdgeTable();
-               } else {
-                       currentTable = currentNetwork.getDefaultNetworkTable();
+               if (currentNetwork != null) {
+                       if (objType == CyNode.class) {
+                               currentTable = 
currentNetwork.getDefaultNodeTable();
+                       } else if (objType == CyEdge.class) {
+                               currentTable = 
currentNetwork.getDefaultEdgeTable();
+                       } else {
+                               currentTable = 
currentNetwork.getDefaultNetworkTable();
+                       }
                }
                
-               networkChooser.setSelectedItem(currentNetwork);
-
                getCurrentBrowserTableModel().setShowAll(rowSelectionMode);
                showSelectedTable();
+               
+               SwingUtilities.invokeLater(new Runnable() {
+                       public void run() {
+                               final CyNetwork selectedNetwork = (CyNetwork) 
networkChooser.getSelectedItem();
+
+                               if ((currentNetwork == null && selectedNetwork 
!= null) || !currentNetwork.equals(selectedNetwork)) {
+                                       
networkChooser.setSelectedItem(currentNetwork);
+                               }
+                       }
+               });
        }
 
        @Override
        public void handleEvent(NetworkAddedEvent e) {
                final CyNetwork network = e.getNetwork();
-               this.networkChooser.addItem(network);
-               this.networkChooser.setSelectedItem(network);
                
-               if(networkChooser.isEnabled() == false)
-                       networkChooser.setEnabled(true);
+               SwingUtilities.invokeLater(new Runnable() {
+                       public void run() {
+                               ignoreSetCurrentNetwork = true;
+                               
+                               try {
+                                       networkChooser.addItem(network);
+                                       
+                                       if (networkChooser.isEnabled() == false)
+                                               networkChooser.setEnabled(true);
+                               } finally {
+                                       ignoreSetCurrentNetwork = false;
+                               }
+                       }
+               });
        }
 
        @Override
        public void handleEvent(NetworkAboutToBeDestroyedEvent e) {
                final CyNetwork network = e.getNetwork();
-               this.networkChooser.removeItem(network);
                
-               if(networkChooser.getItemCount() == 0)
-                       networkChooser.setEnabled(false);
+               SwingUtilities.invokeLater(new Runnable() {
+                       public void run() {
+                               ignoreSetCurrentNetwork = true;
+                               
+                               try {
+                                       networkChooser.removeItem(network);
+                                       
+                                       if (networkChooser.getItemCount() == 0)
+                                               
networkChooser.setEnabled(false);
+                               } finally {
+                                       ignoreSetCurrentNetwork = false;
+                               }
+                       }
+               });
        }
        
        private static final class NetworkChooserCustomRenderer extends JLabel 
implements ListCellRenderer {
@@ -166,7 +200,5 @@
                        
this.setText(network.getRow(network).get(CyTableEntry.NAME, String.class));
                        return this;
                }
-
        }
-
 }

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2012-02-17 18:58:56 UTC (rev 28313)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2012-02-17 19:37:01 UTC (rev 28314)
@@ -67,6 +67,7 @@
                add(attributeBrowserToolBar, BorderLayout.NORTH);
        }
 
+       @Override
        public void actionPerformed(final ActionEvent e) {
 
                final CyTable table = (CyTable) tableChooser.getSelectedItem();

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