Author: paperwing
Date: 2011-12-21 13:15:55 -0800 (Wed, 21 Dec 2011)
New Revision: 27855

Added:
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
Removed:
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
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/GraphicsData.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
Log:
think last commit did not go through\; this commit marks the beginning of the 
GraphicsHandler interface for main and birds eye view, as well as camera 
movement coordinated with the birds eye view

Added: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
                         (rev 0)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
 2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,62 @@
+package org.cytoscape.paperwing.internal;
+
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
+import org.cytoscape.paperwing.internal.graphics.GraphicsData;
+import org.cytoscape.paperwing.internal.graphics.InputProcessor;
+import org.cytoscape.paperwing.internal.graphics.ShapePicker;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.VisualLexicon;
+
+public class BirdsEyeGraphics implements GraphicsHandler {
+
+       @Override
+       public InputProcessor getInputProcessor() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public ShapePicker getShapePicker() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public BirdsEyeCoordinator getCoordinator(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public CoordinatorProcessor getCoordinatorProcessor() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public void initializeGraphicsProcedures(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void resetSceneForDrawing(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void drawScene(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void setupLighting(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+
+}


Property changes on: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

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-21 18:55:35 UTC (rev 27854)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
 2011-12-21 21:15:55 UTC (rev 27855)
@@ -42,7 +42,8 @@
 import org.cytoscape.model.CyEdge.Type;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNode;
-import org.cytoscape.paperwing.internal.graphics.BirdsEyeViewCoordinator;
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
 import org.cytoscape.paperwing.internal.graphics.GraphicsData;
 import org.cytoscape.paperwing.internal.graphics.InputProcessor;
 import org.cytoscape.paperwing.internal.graphics.ReadOnlyGraphicsProcedure;
@@ -64,7 +65,6 @@
  * @author Paperwing (Yue Dong)
  */
 public class Graphics implements GLEventListener {
-
        
        /** A monitor to keep track of keyboard events */
        private KeyboardMonitor keys;
@@ -76,21 +76,14 @@
        private boolean lowerQuality = false;
        
        private GraphicsData graphicsData;
-       private Map<String, ReadOnlyGraphicsProcedure> renderProcedures;
        
        private InputProcessor inputProcessor;
        private ShapePicker shapePicker;
+       private BirdsEyeCoordinator coordinator;
+       private CoordinatorProcessor coordinatorProcessor;
        
-       private BirdsEyeViewCoordinator coordinator;
+       private GraphicsHandler handler;
        
-       /** A class capable of storing the edge and node indices of edges and 
nodes
-        * that were found to be selected using the shape picking methods
-        */
-       public class PickResults {
-               public Set<Integer> nodeIndices = new LinkedHashSet<Integer>();
-               public Set<Integer> edgeIndices = new LinkedHashSet<Integer>();
-       }
-       
        /** Initialize a singleton that seems to help with JOGL in some 
compatibility
         * aspects
         */
@@ -105,23 +98,14 @@
         * View<CyNetwork> object that we are rendering
         * @param visualLexicon The visual lexicon being used
         */
-       public Graphics(CyNetworkView networkView, VisualLexicon visualLexicon) 
{
+       public Graphics(CyNetworkView networkView, VisualLexicon visualLexicon, 
GraphicsHandler handler) {
                
                keys = new KeyboardMonitor();
                mouse = new MouseMonitor();
-               
-               if (BirdsEyeViewCoordinator.getCoordinator(networkView) != 
null) {
-                       coordinator = 
BirdsEyeViewCoordinator.getCoordinator(networkView);
-               } else {
-                       coordinator = 
BirdsEyeViewCoordinator.createCoordinator(networkView);
-               }
-               
-               System.out.println("coordinator found for default graphics " + 
this);
 
-               renderProcedures = new LinkedHashMap<String, 
ReadOnlyGraphicsProcedure>();
-               renderProcedures.put("nodes", new RenderNodesProcedure());
-               renderProcedures.put("edges", new RenderEdgesProcedure());
-               renderProcedures.put("selectionBox", new 
RenderSelectionBoxProcedure());
+//             renderProcedures.put("nodes", new RenderNodesProcedure());
+//             renderProcedures.put("edges", new RenderEdgesProcedure());
+//             renderProcedures.put("selectionBox", new 
RenderSelectionBoxProcedure());
                
                // TODO: add default constant speeds for camera movement
                graphicsData = new GraphicsData();
@@ -131,8 +115,9 @@
                graphicsData.setNetworkView(networkView);
                graphicsData.setVisualLexicon(visualLexicon);
                
-               shapePicker = new ShapePicker(graphicsData, 
renderProcedures.get("nodes"), renderProcedures.get("edges"));
-               inputProcessor = new InputProcessor();
+               coordinator = handler.getCoordinator(graphicsData);
+               shapePicker = handler.getShapePicker();
+               inputProcessor = handler.getInputProcessor();
        }
        
        /** Attach the KeyboardMonitor and MouseMonitors, which are listeners,
@@ -162,81 +147,23 @@
                graphicsData.setGlContext(gl);
                
                // Check input
-               processInput();
+               inputProcessor.processInput(keys, mouse, graphicsData, 
shapePicker);
 
                // Update data for bird's eye view camera movement
-               checkBevCameraMovement();
+               coordinatorProcessor.extractData(coordinator, graphicsData);
                
                // Reset the scene for drawing
-               resetSceneForDrawing(gl);
+               handler.resetSceneForDrawing(graphicsData);
                
                // Draw the scene
-               drawScene(gl);
+               handler.drawScene(graphicsData);
                
-               
                graphicsData.setFramesElapsed(graphicsData.getFramesElapsed() + 
1);
        }
-       
 
-       /** Obtain input and check for changes in the keyboard and mouse 
buttons,
-        * as well as mouse movement. This method also handles responses
-        * to such events
-        */
-       private void processInput() {
-               inputProcessor.processInput(keys, mouse, graphicsData, 
shapePicker);
-       }
-       
-       
-       // Check for signals from birdsEyeView
-       private void checkBevCameraMovement() {
-               if (coordinator.birdsEyeBoundsChanged()) {
-                       Vector3 newCameraPosition = 
-                               
BirdsEyeViewCoordinator.extractCameraPosition(coordinator, 
-                                               
graphicsData.getCamera().getDirection(), 
-                                               
graphicsData.getCamera().getDistance());
-                       
-                       graphicsData.getCamera().moveTo(newCameraPosition);
-               }
-       }
-       
-       
-       private void resetSceneForDrawing(GL2 gl) {
-               SimpleCamera camera = graphicsData.getCamera();
-               
-               // Reset scene
-               gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
-               gl.glLoadIdentity();
-               
-               Vector3 position = camera.getPosition();
-               Vector3 target = camera.getTarget();
-               Vector3 up = camera.getUp();
-               
-               GLU glu = new GLU();
-               glu.gluLookAt(position.x(), position.y(), position.z(), 
target.x(),
-                               target.y(), target.z(), up.x(), up.y(), up.z());
-       }
-       
-       private void drawScene(GL2 gl) {
-               
-               // Draw selection box
-               if (graphicsData.getSelectionData().isDragSelectMode()) {
-                       
renderProcedures.get("selectionBox").execute(graphicsData);
-               }
-               
-               // Control light positioning
-               float[] lightPosition = { -4.0f, 4.0f, 6.0f, 1.0f };
-               
-               // Code below toggles the light following the camera
-               // gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION,
-               // FloatBuffer.wrap(lightPosition));
-               
-               renderProcedures.get("nodes").execute(graphicsData);
-               renderProcedures.get("edges").execute(graphicsData);
-       }
-       
        @Override
        public void dispose(GLAutoDrawable autoDrawable) {
-
+               coordinatorProcessor.unlinkCoordinator(coordinator);
        }
 
        /** Initialize the Graphics object, performing certain
@@ -257,9 +184,6 @@
 
                gl.glViewport(0, 0, drawable.getWidth(), drawable.getHeight());
 
-               //generateNodes();
-               //generateEdges();
-               
                // Correct lightning for scaling certain models
                gl.glEnable(GL2.GL_NORMALIZE);
                
@@ -272,9 +196,8 @@
                graphicsData.setStartTime(System.nanoTime());
                graphicsData.setGlContext(gl);
                
-               for (ReadOnlyGraphicsProcedure procedure : 
renderProcedures.values()) {
-                       procedure.initialize(graphicsData);
-               }
+               handler.initializeGraphicsProcedures(graphicsData);
+               handler.setupLighting(graphicsData);
        }
 
 

Added: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
                          (rev 0)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
  2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,33 @@
+package org.cytoscape.paperwing.internal;
+
+import java.util.Map;
+
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
+import org.cytoscape.paperwing.internal.graphics.GraphicsData;
+import org.cytoscape.paperwing.internal.graphics.InputProcessor;
+import org.cytoscape.paperwing.internal.graphics.ReadOnlyGraphicsProcedure;
+import org.cytoscape.paperwing.internal.graphics.ShapePicker;
+
+// The GraphicsHandler is read-only for given GraphicsData objects
+public interface GraphicsHandler {
+       
+       public InputProcessor getInputProcessor();
+       public ShapePicker getShapePicker();
+       public BirdsEyeCoordinator getCoordinator(GraphicsData graphicsData);
+       public CoordinatorProcessor getCoordinatorProcessor();
+       
+       // Call procedures' init methods
+       public void initializeGraphicsProcedures(GraphicsData graphicsData);
+       
+       // Clear the scene
+       public void resetSceneForDrawing(GraphicsData graphicsData);
+       
+       // Draw the scene
+       public void drawScene(GraphicsData graphicsData);
+
+       // Setup lighting
+       public void setupLighting(GraphicsData graphicsData);
+}
+
+


Property changes on: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
                             (rev 0)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
     2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,77 @@
+package org.cytoscape.paperwing.internal;
+
+import java.util.Map;
+
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
+import org.cytoscape.paperwing.internal.graphics.GraphicsData;
+import org.cytoscape.paperwing.internal.graphics.InputProcessor;
+import org.cytoscape.paperwing.internal.graphics.ReadOnlyGraphicsProcedure;
+import org.cytoscape.paperwing.internal.graphics.RenderEdgesProcedure;
+import org.cytoscape.paperwing.internal.graphics.RenderNodesProcedure;
+import org.cytoscape.paperwing.internal.graphics.ShapePicker;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.VisualLexicon;
+
+public class MainGraphics implements GraphicsHandler {
+
+       @Override
+       public InputProcessor getInputProcessor() {
+               return new InputProcessor();
+       }
+
+       @Override
+       public void resetSceneForDrawing(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void drawScene(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+               // Control light positioning
+               float[] lightPosition = { -4.0f, 4.0f, 6.0f, 1.0f };
+               
+               // Code below toggles the light following the camera
+               // gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION,
+               // FloatBuffer.wrap(lightPosition));
+               
+       }
+
+       @Override
+       public void setupLighting(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public ShapePicker getShapePicker() {
+               return new ShapePicker(new RenderNodesProcedure(), new 
RenderEdgesProcedure());
+       }
+
+       @Override
+       public BirdsEyeCoordinator getCoordinator(GraphicsData graphicsData) {
+               CyNetworkView networkView = graphicsData.getNetworkView();
+               
+               if (BirdsEyeCoordinator.getCoordinator(networkView) != null) {
+                       return BirdsEyeCoordinator.getCoordinator(networkView);
+               } else {
+                       return 
BirdsEyeCoordinator.createCoordinator(networkView);
+               }
+       }
+
+       @Override
+       public CoordinatorProcessor getCoordinatorProcessor() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public void initializeGraphicsProcedures(GraphicsData graphicsData) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       
+}
\ No newline at end of file


Property changes on: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Deleted: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
      2011-12-21 18:55:35 UTC (rev 27854)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
      2011-12-21 21:15:55 UTC (rev 27855)
@@ -1,13 +0,0 @@
-package org.cytoscape.paperwing.internal;
-
-import org.cytoscape.view.model.CyNetworkView;
-import org.cytoscape.view.model.VisualLexicon;
-
-public class MapGraphics extends Graphics {
-
-       public MapGraphics(CyNetworkView networkView, VisualLexicon 
visualLexicon) {
-               super(networkView, visualLexicon);
-               // TODO Auto-generated constructor stub
-       }
-
-}

Copied: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
 (from rev 27854, 
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/BirdsEyeCoordinator.java
                             (rev 0)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
     2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,147 @@
+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 BirdsEyeCoordinator {
+
+       private SimpleCamera newMainCamera;
+       private Quadrilateral newBirdsEyeBounds;
+
+       private boolean mainCameraChanged = false;
+       private boolean birdsEyeBoundsChanged = false;
+
+       private boolean mainClaimed = false;
+       private boolean birdsEyeClaimed = false;
+
+       private boolean mainToUnlink = false;
+       private boolean birdsEyeToUnlink = false;
+       
+       // Assumes 1 CyNetworkView object per main-bird pair
+       private static Map<CyNetworkView, BirdsEyeCoordinator> coordinators = 
new LinkedHashMap<CyNetworkView, BirdsEyeCoordinator>();
+       
+       // 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<BirdsEyeCoordinator, CyNetworkView> networkViews = 
new LinkedHashMap<BirdsEyeCoordinator, CyNetworkView>();
+       
+       // Camera direction must be a unit vector
+       public static Vector3 extractCameraPosition(BirdsEyeCoordinator 
coordinator, Vector3 cameraDirection, double cameraDistance) {
+               Vector3 offset = cameraDirection.copy();
+               offset.multiplyLocal(cameraDistance);
+               
+               Quadrilateral bounds = coordinator.getNewBirdsEyeBounds();
+               
+               Vector3 position = bounds.getCenterPoint();
+               position.addLocal(offset);
+               
+               return position;
+       }
+       
+       public static Quadrilateral extractBounds(SimpleCamera camera, double 
verticalFov, double aspectRatio) {
+               return 
GraphicsUtility.generateViewingBounds(camera.getPosition(), 
camera.getDirection(), camera.getUp(), 
+                               camera.getDistance(), verticalFov, aspectRatio);
+       }
+       
+       // This networkView is only used to differentiate between main camera 
and
+       // birds eye camera pairs
+       private BirdsEyeCoordinator(CyNetworkView networkView) {
+               newMainCamera = new SimpleCamera();
+               newBirdsEyeBounds = new Quadrilateral();
+       }
+       
+       public static BirdsEyeCoordinator getCoordinator(CyNetworkView 
networkView) {
+               return coordinators.get(networkView);
+       }
+       
+       public static BirdsEyeCoordinator createCoordinator(CyNetworkView 
networkView) {
+               BirdsEyeCoordinator coordinator = new 
BirdsEyeCoordinator(networkView);
+               
+               coordinators.put(networkView, coordinator);
+               networkViews.put(coordinator, networkView);
+               
+               return coordinator;
+       }
+       
+       // Update orientation
+       public void updateMainCamera(SimpleCamera mainCamera) {
+               newMainCamera.copyOrientation(mainCamera);
+               mainCameraChanged = true;
+       }
+
+       // Update orientation
+       public void updateBirdsEyeBounds(Quadrilateral bounds) {
+               newBirdsEyeBounds.set(bounds);
+               birdsEyeBoundsChanged = true;
+       }
+       
+       // Get the updated camera
+       public SimpleCamera getNewMainCamera() {
+               return newMainCamera;
+       }
+
+       // Get the updated camera
+       public Quadrilateral getNewBirdsEyeBounds() {
+               return newBirdsEyeBounds;
+       }
+
+       public boolean mainCameraChanged() {
+               return mainCameraChanged;
+       }
+
+       public boolean birdsEyeBoundsChanged() {
+               return birdsEyeBoundsChanged;
+       }
+
+       public void updateMainCamera() {
+               mainCameraChanged = false;
+       }
+
+       public void updateBirdsEyeBounds() {
+               birdsEyeBoundsChanged = 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);
+               }
+       }
+       
+}


Property changes on: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Deleted: 
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-21 18:55:35 UTC (rev 27854)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
 2011-12-21 21:15:55 UTC (rev 27855)
@@ -1,147 +0,0 @@
-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 Quadrilateral newBirdsEyeBounds;
-
-       private boolean mainCameraChanged = false;
-       private boolean birdsEyeBoundsChanged = false;
-
-       private boolean mainClaimed = false;
-       private boolean birdsEyeClaimed = false;
-
-       private boolean mainToUnlink = false;
-       private boolean birdsEyeToUnlink = false;
-       
-       // 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>();
-       
-       // Camera direction must be a unit vector
-       public static Vector3 extractCameraPosition(BirdsEyeViewCoordinator 
coordinator, Vector3 cameraDirection, double cameraDistance) {
-               Vector3 offset = cameraDirection.copy();
-               offset.multiplyLocal(cameraDistance);
-               
-               Quadrilateral bounds = coordinator.getNewBirdsEyeBounds();
-               
-               Vector3 position = bounds.getCenterPoint();
-               position.addLocal(offset);
-               
-               return position;
-       }
-       
-       public static Quadrilateral extractBounds(SimpleCamera camera, double 
verticalFov, double aspectRatio) {
-               return 
GraphicsUtility.generateViewingBounds(camera.getPosition(), 
camera.getDirection(), camera.getUp(), 
-                               camera.getDistance(), verticalFov, aspectRatio);
-       }
-       
-       // This networkView is only used to differentiate between main camera 
and
-       // birds eye camera pairs
-       private BirdsEyeViewCoordinator(CyNetworkView networkView) {
-               newMainCamera = new SimpleCamera();
-               newBirdsEyeBounds = new Quadrilateral();
-       }
-       
-       public static BirdsEyeViewCoordinator getCoordinator(CyNetworkView 
networkView) {
-               return coordinators.get(networkView);
-       }
-       
-       public static BirdsEyeViewCoordinator createCoordinator(CyNetworkView 
networkView) {
-               BirdsEyeViewCoordinator coordinator = new 
BirdsEyeViewCoordinator(networkView);
-               
-               coordinators.put(networkView, coordinator);
-               networkViews.put(coordinator, networkView);
-               
-               return coordinator;
-       }
-       
-       // Update orientation
-       public void updateMainCamera(SimpleCamera mainCamera) {
-               newMainCamera.copyOrientation(mainCamera);
-               mainCameraChanged = true;
-       }
-
-       // Update orientation
-       public void updateBirdsEyeBounds(Quadrilateral bounds) {
-               newBirdsEyeBounds.set(bounds);
-               birdsEyeBoundsChanged = true;
-       }
-       
-       // Get the updated camera
-       public SimpleCamera getNewMainCamera() {
-               return newMainCamera;
-       }
-
-       // Get the updated camera
-       public Quadrilateral getNewBirdsEyeBounds() {
-               return newBirdsEyeBounds;
-       }
-
-       public boolean mainCameraChanged() {
-               return mainCameraChanged;
-       }
-
-       public boolean birdsEyeBoundsChanged() {
-               return birdsEyeBoundsChanged;
-       }
-
-       public void updateMainCamera() {
-               mainCameraChanged = false;
-       }
-
-       public void updateBirdsEyeBounds() {
-               birdsEyeBoundsChanged = 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);
-               }
-       }
-       
-}

Added: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
                            (rev 0)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
    2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,7 @@
+package org.cytoscape.paperwing.internal.graphics;
+
+public interface CoordinatorProcessor {
+       public void extractData(BirdsEyeCoordinator coordinator, GraphicsData 
graphicsData);
+
+       public void unlinkCoordinator(BirdsEyeCoordinator coordinator);
+}


Property changes on: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
    2011-12-21 18:55:35 UTC (rev 27854)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
    2011-12-21 21:15:55 UTC (rev 27855)
@@ -1,9 +1,11 @@
 package org.cytoscape.paperwing.internal.graphics;
 
+import java.util.Map;
 import java.util.Set;
 
 import javax.media.opengl.GL2;
 
+import org.cytoscape.paperwing.internal.Graphics;
 import org.cytoscape.paperwing.internal.SimpleCamera;
 import org.cytoscape.paperwing.internal.Vector3;
 import org.cytoscape.view.model.CyNetworkView;

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
  2011-12-21 18:55:35 UTC (rev 27854)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
  2011-12-21 21:15:55 UTC (rev 27855)
@@ -95,7 +95,7 @@
                if (graphicsData.isDisableHovering()) {
                        pickResults = shapePicker.new PickResults();
                } else {
-                       pickResults = shapePicker.performPick(mouse.x(), 
mouse.y(), 2, 2, false);
+                       pickResults = shapePicker.performPick(mouse.x(), 
mouse.y(), 2, 2, false, graphicsData);
                }
 
                int newHoverNodeIndex = ShapePicker.NO_INDEX;
@@ -237,7 +237,8 @@
                                                        
(selectionData.getSelectTopLeftX() + selectionData.getSelectBottomRightX()) / 2,
                                                        
(selectionData.getSelectTopLeftY() + selectionData.getSelectBottomRightY()) / 2,
                                                        
Math.abs(selectionData.getSelectTopLeftX() - 
selectionData.getSelectBottomRightX()),
-                                                       
Math.abs(selectionData.getSelectTopLeftY() - 
selectionData.getSelectBottomRightY()), true);
+                                                       
Math.abs(selectionData.getSelectTopLeftY() - 
selectionData.getSelectBottomRightY()), true,
+                                                       graphicsData);
 
                                        CyNode node;
                                        for (Integer nodeIndex : 
results.nodeIndices) {

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
     2011-12-21 18:55:35 UTC (rev 27854)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
     2011-12-21 21:15:55 UTC (rev 27855)
@@ -44,10 +44,8 @@
        private ReadOnlyGraphicsProcedure drawNodesProcedure;
        private ReadOnlyGraphicsProcedure drawEdgesProcedure;
 
-       public ShapePicker(GraphicsData graphicsData,
-                       ReadOnlyGraphicsProcedure drawNodeProcedure,
+       public ShapePicker(ReadOnlyGraphicsProcedure drawNodeProcedure,
                        ReadOnlyGraphicsProcedure drawEdgeProcedure) {
-               this.graphicsData = graphicsData;
                this.drawNodesProcedure = drawNodeProcedure;
                this.drawEdgesProcedure = drawEdgeProcedure;
        }
@@ -73,7 +71,7 @@
         *         object
         */
        public PickResults performPick(int x, int y, int width, int height,
-                       boolean selectAll) {
+                       boolean selectAll, GraphicsData graphicsData) {
                int bufferSize = 1024;
 
                if (selectAll) {

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