Author: paperwing
Date: 2011-12-16 14:11:18 -0800 (Fri, 16 Dec 2011)
New Revision: 27815

Modified:
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
Log:
coordinator class nearly completed

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
 2011-12-16 21:37:10 UTC (rev 27814)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
 2011-12-16 22:11:18 UTC (rev 27815)
@@ -135,7 +135,7 @@
                } else {
                        registry.get(networkView).add(this);
                }
-       
+               
                keys = new KeyboardMonitor();
                mouse = new MouseMonitor();
 

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
 2011-12-16 21:37:10 UTC (rev 27814)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
 2011-12-16 22:11:18 UTC (rev 27815)
@@ -1,36 +1,59 @@
 package org.cytoscape.paperwing.internal.graphics;
 
+import java.util.LinkedHashMap;
+import java.util.Map;
+
 import org.cytoscape.paperwing.internal.SimpleCamera;
 import org.cytoscape.paperwing.internal.Vector3;
+import org.cytoscape.view.model.CyNetworkView;
 
 public class BirdsEyeViewCoordinator {
-       
+
        private SimpleCamera newMainCamera;
        private SimpleCamera newBirdsEyeCamera;
-       
+
        private boolean mainCameraChanged = false;
        private boolean birdsEyeCameraChanged = false;
-       
+
        private boolean mainClaimed = false;
        private boolean birdsEyeClaimed = false;
+
+       private boolean mainToUnlink = false;
+       private boolean birdsEyeToUnlink = false;
        
-       public BirdsEyeViewCoordinator() {
+       // Assumes 1 CyNetworkView object per main-bird pair
+       private static Map<CyNetworkView, BirdsEyeViewCoordinator> coordinators 
= new LinkedHashMap<CyNetworkView, BirdsEyeViewCoordinator>();
+       
+       // 1:1 relationship between coordinators and networkViews, can use this 
to make an inverse map used to remove coordinators from
+       // the maps
+       private static Map<BirdsEyeViewCoordinator, CyNetworkView> networkViews 
= new LinkedHashMap<BirdsEyeViewCoordinator, CyNetworkView>();
+       
+       // This networkView is only used to differentiate between main camera 
and
+       // birds eye camera pairs
+       public BirdsEyeViewCoordinator(CyNetworkView networkView) {
                newMainCamera = new SimpleCamera();
                newBirdsEyeCamera = new SimpleCamera();
+               
+               coordinators.put(networkView, this);
+               networkViews.put(this, networkView);
        }
        
+       public static BirdsEyeViewCoordinator getCoordinator(CyNetworkView 
networkView) {
+               return coordinators.get(networkView);
+       }
+       
        // Update orientation
        public void updateMainCamera(SimpleCamera mainCamera) {
                newMainCamera.copyOrientation(mainCamera);
                mainCameraChanged = true;
        }
-       
+
        // Update orientation
        public void updateBirdsEyeCamera(SimpleCamera birdsEyeCamera) {
                newBirdsEyeCamera.copyOrientation(birdsEyeCamera);
                birdsEyeCameraChanged = true;
        }
-       
+
        // Get the updated camera
        public SimpleCamera getNewMainCamera() {
                return newMainCamera;
@@ -40,10 +63,10 @@
        public SimpleCamera getNewBirdsEyeCamera() {
                return newBirdsEyeCamera;
        }
-       
+
        public boolean mainCameraChanged() {
                return mainCameraChanged;
-       }       
+       }
 
        public boolean birdsEyeCameraChanged() {
                return birdsEyeCameraChanged;
@@ -52,18 +75,49 @@
        public void updateMainCamera() {
                mainCameraChanged = false;
        }
-       
+
        public void updateBirdsEyeCamera() {
                birdsEyeCameraChanged = false;
        }
-       
+
        // Claim by a main window rendering object
        public void claimMain() {
                mainClaimed = true;
+               mainToUnlink = false;
        }
-       
+
        // Claim by a birds eye view rendering object
        public void claimBirdsEye() {
                birdsEyeClaimed = true;
+               birdsEyeToUnlink = false;
        }
+       
+       // Notify that main will no longer look after this coordinator
+       public void unlinkMain() {
+               mainClaimed = false;
+               mainToUnlink = true;
+               
+               // Both unlinked; prepare to remove this object
+               if (birdsEyeToUnlink) {
+                       CyNetworkView networkView = networkViews.get(this);
+                       
+                       coordinators.remove(networkView);
+                       networkViews.remove(this);
+               }
+       }
+       
+       // Notify that bird's eye view will no longer look after this 
coordinator
+       public void unlinkBirdsEye() {
+               birdsEyeClaimed = false;
+               birdsEyeToUnlink = true;
+               
+               // Both unlinked; prepare to remove this object
+               if (mainToUnlink) {
+                       CyNetworkView networkView = networkViews.get(this);
+                       
+                       coordinators.remove(networkView);
+                       networkViews.remove(this);
+               }
+       }
+       
 }

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