gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] fenfire/org/fenfire demo/buoyoing.py util/Contr...


From: Benja Fallenstein
Subject: [Gzz-commits] fenfire/org/fenfire demo/buoyoing.py util/Contr...
Date: Mon, 23 Jun 2003 14:16:19 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Benja Fallenstein <address@hidden>      03/06/23 14:16:19

Modified files:
        org/fenfire/demo: buoyoing.py 
        org/fenfire/util: ControlBinding.java 
        org/fenfire/view/buoy: AbstractMainNode2D.java 
                               FisheyeMainNode2D.java MainNode2D.java 
        org/fenfire/view/lava: FenPDFContext.java 
Added files:
        org/fenfire/demo: actions.py 

Log message:
        small steps in event handling

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/actions.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.78&tr2=1.79&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/FenPDFContext.java.diff?tr1=1.33&tr2=1.34&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.78 
fenfire/org/fenfire/demo/buoyoing.py:1.79
--- fenfire/org/fenfire/demo/buoyoing.py:1.78   Mon Jun 23 08:37:04 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Mon Jun 23 14:16:19 2003
@@ -47,6 +47,8 @@
 
 from org.nongnu.alph.impl import PageImageScroll
 
+from org.fenfire.demo.actions import *
+
 
 import vob
 w.setCursor('wait')
@@ -112,6 +114,105 @@
     ppAct.assocNotes(noteHome, 1, noteA1)
 
 
+
+
+
+
+
+ctrl = ff.util.ControlBinding()
+ctrl.add(MovePanFast(), -1, ctrl.WHEEL, 7,0, ctrl.VERTICAL)
+ctrl.add(MovePanFast(), 1, ctrl.DRAG, 1, 0, ctrl.ALL)
+ctrl.add(MovePanSlow(), 1, ctrl.CLICK)
+ctrl.add(ZoomPan(), 3, ctrl.DRAG, 1, 0, ctrl.VERTICAL)
+ctrl.add(PanSize(), 3, ctrl.DRAG, 1, 0, ctrl.HORIZONTAL)
+ctrl.add(UnSelectNodeOnPlane(), 3, ctrl.CLICK)
+
+node_ctrl = ff.util.ControlBinding()
+node_ctrl.add(SelectNodeOnPlane(), 3, node_ctrl.CLICK)
+node_ctrl.add(MoveNodeOnPlane(), 1, node_ctrl.DRAG)
+
+#        pa(ev)
+        
+#      if hasattr(mngr.geometer, 'mouse') and \
+#                mngr.geometer.mouse(ev, mngr.vs):
+#          return 
+#      x, y = ev.getX(), ev.getY()
+#      cs = mngr.vs.getCSAt(0, x, y, None)
+
+#         if ev.getID() == ev.MOUSE_RELEASED:
+#             w.setCursor('default')
+#             for ctrl in self.controls:
+#                 ctrl.removePressState()
+#             return
+#         if ev.getID() == ev.MOUSE_DRAGGED:
+#             for ctrl in self.controls:
+#                 if ctrl.hasPressState():
+#                     ctrl.handleEvent(None, ev, mngr.vs)
+#                     if ctrl.replaceVS:
+#                         mngr.replaceScene = mngr.vs
+#                  vob.AbstractUpdateManager.setNoAnimation()
+#                     vob.AbstractUpdateManager.chg()
+#                     return
+                
+#         ### If there exist a buoy jump over there
+#      for single in mngr.singles:
+#          link = single.cs.get(cs, None)
+#          if link != None:
+#                 # pa("IN CS: ",cs, link)
+#                 if hasattr(mngr.geometer, 'buoyMouse') and \
+#                    mngr.geometer.buoyMouse(mngr, ev, single, link):
+#                     return
+                
+#              if ev.getID() != ev.MOUSE_CLICKED:
+#                  return
+#              single.followLink(link)
+#              vob.AbstractUpdateManager.chg()
+#              return
+
+#      ### Fall through if no link - need main node
+#      for i in range(0, len(mngr.singles)):
+#          if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
+#                 self.context.setMainNodeIndex(i)
+#                 self.lastIndex = i
+
+#                 ### See if there's somtehing on a plane.
+#                 obj = mngr.singles[i].mainNode.getNodeOnPlane(mngr.vs, x,y)
+#                 if obj != None and \
+#                        self.controlNodesOnMain.hasBinding(ev):
+#                     if self.controlNodesOnMain.handleEvent( \
+#                         Pair(mngr.singles[i].mainNode, obj), ev, mngr.vs):
+#                         # can't replace vobscene!!
+#                         #  mngr.replaceScene = mngr.vs
+#                         vob.AbstractUpdateManager.setNoAnimation()
+#                     vob.AbstractUpdateManager.chg()
+#                     return
+
+#                 if self.controlMains.handleEvent(mngr.singles[i].mainNode, 
ev, mngr.vs):
+#                  mngr.replaceScene = mngr.vs
+#                  vob.AbstractUpdateManager.setNoAnimation()
+#              vob.AbstractUpdateManager.chg()
+#              return
+
+#         # ...then see context
+#         if ev.getID() != ev.MOUSE_CLICKED:
+#             return
+#         self.context.setMainNodeIndex(self.lastIndex)
+#         planes = []
+#         for single in mngr.singles:
+#             planes.append(single.getMainNode())
+#         newPlanes = self.context.doMouse(ev, mngr.vs, planes)
+#         if newPlanes != None and planes != newPlanes:
+#             for i in range(0, len(newPlanes)):
+#                 mngr.singles[i] = vob.buoy.buoymanager.SingleFocusManager(
+#                     newPlanes[i],
+#                     mngr.connectors)
+#             vob.AbstractUpdateManager.chg()
+        
+
+
+
+
+
 textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
 textnodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
 pagenodeview = ff.view.PageNodeView(fen.txtfunc)
@@ -128,7 +229,7 @@
 ff.view.buoy.NodeType2D.effigy = 0
 ff.view.buoy.NodeType2DFull.effigy = 0
 
-context = ff.view.lava.FenPDFContext(fen, ppAct, nodeview)
+context = ff.view.lava.FenPDFContext(fen, ppAct, nodeview, ctrl)
 context.initMainNodes(2)
 nodeview.setContext(context)
 textnodeview.setContext(context)
@@ -151,15 +252,15 @@
 plane = Nodes.get(paperA)
 planeHome = Nodes.get(paperHome)
 
-mainNode = ff.view.buoy.MainNode2D(plane, irregu)
-mainNode2 = ff.view.buoy.MainNode2D(planeHome, irregu)
-#mainNode = ff.view.buoy.MainNode2D(plane, paperview)
+mainNode = ff.view.buoy.MainNode2D(plane, irregu, ctrl)
+mainNode2 = ff.view.buoy.MainNode2D(planeHome, irregu, ctrl)
+#mainNode = ff.view.buoy.MainNode2D(plane, paperview, ctrl)
 
 #connector = ff.view.buoy.PPConnector(fen, paperviewonly)
 #connector.hackForTesting = 1
 
 ppconnector = ff.view.buoy.PPConnector(fen, irregu, 
-                       ff.view.buoy.MainNode2D.MainNode2DFactory(1),
+                       ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl),
                                        nodeview)
 tconnector = ff.view.buoy.TransclusionConnector(fen, nodeview)
 
@@ -169,8 +270,8 @@
 pagescroll2d = ff.view.PageScrollView2D()
 
 tconnector.normalNodeNodeType = ff.view.buoy.NodeType2D(irregu,
-                       ff.view.buoy.MainNode2D.MainNode2DFactory(1))
-tconnector.pageImageScrollNodeType = ff.view.buoy.NodeType2DFull(pagescroll2d, 
ff.view.buoy.FisheyeMainNode2D.FisheyeMainNode2DFactory())
+                       ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl))
+tconnector.pageImageScrollNodeType = ff.view.buoy.NodeType2DFull(pagescroll2d, 
ff.view.buoy.FisheyeMainNode2D.FisheyeMainNode2DFactory(ctrl))
 
 
 class DoubleGeometer:
@@ -322,178 +423,9 @@
        vob.buoy.buoymanager.MultiBuoyManager.__init__(self, 
                [mainNode, mainNode2], [ppconnector, tconnector],
                DoubleGeometer(self),
-                FenPDFActions(context, 2), context)
+                context=context)
         w.setCursor('default')
 
-
-######## Actions to control pan of main nodes etc.
-
-class MovePanFast(ff.util.ControlBinding.AbstractController):
-    def isChangeable(self): return 1
-    def change(self, x, y):
-        f = self.obj.getFocus()
-        fX, fY = f.getPanX(), f.getPanY()
-        f.setPan( fX-x/f.getZoom(),fY-y/f.getZoom())
-        self.obj.chgFast(self.oldVS)
-
-class MovePanSlow(ff.util.ControlBinding.AbstractController):
-    def isChangeable(self): return 0
-    def controlPoint(self, x, y, scale):
-        self.obj.moveToPoint(int(x),int(y), self.oldVS)
-
-class ZoomPan(ff.util.ControlBinding.AbstractController):
-    def isChangeable(self): return 1
-    def change(self, x, y):
-        self.obj.changeZoom(x+y)
-        # because of PanSize() - do not call
-        #self.obj.chgFast(self.oldVS)
-
-class PanSize(ff.util.ControlBinding.AbstractController):
-    def isChangeable(self): return 1
-    def change(self, x, y):
-        self.obj.changeSize(x+y)
-        self.obj.chgFast(self.oldVS)
-
-class AbstractContextController(ff.util.ControlBinding.AbstractController):
-    def __init__(self, context):
-        self.context = context
-
-class UnSelectNodeOnPlane(AbstractContextController):
-    def isChangeable(self): return 0
-    def controlPoint(self, x, y, scale):
-        self.context.setAccursed(None)
-        
-
-####### Actions to control nodes on main node plane
-
-class SelectNodeOnPlane(AbstractContextController):
-    def isChangeable(self): return 0
-    def controlPoint(self, x, y, scale):
-        self.context.setAccursed(self.obj.second)
-
-class MoveNodeOnPlane(AbstractContextController):
-    def isChangeable(self): return 1
-    def change(self, x,y):
-        f = self.obj.first.getFocus()
-        node = self.obj.second
-        if not self.context.isAccursed(node): return 
-
-        fX, fY = f.getPanX(), f.getPanY()
-        f.setPan( fX+x*.5/f.zoom,fY+y*.5/f.zoom)
-
-        g = fen.graph
-        ox = ff.util.RDFUtil.getInt(g, node, CANVAS2D.x)
-        oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
-        ppAct.moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
-
-    
-class FenPDFActions:
-    def __init__(self, context, mainNodes):
-        self.context = context
-        self.context.initMainNodes(mainNodes)
-        self.lastIndex = 0
-
-        c = self.controlMains = ff.util.ControlBinding()
-        c.add(MovePanFast(), -1, c.WHEEL, 7,0, c.VERTICAL)
-        c.add(MovePanFast(), 1, c.DRAG, 1.3, 0, c.ALL)
-        c.add(MovePanSlow(), 1, c.CLICK)
-        c.add(ZoomPan(), 3, c.DRAG, 1, 0, c.VERTICAL)
-        c.add(PanSize(), 3, c.DRAG, 1, 0, c.HORIZONTAL)
-        c.add(UnSelectNodeOnPlane(context), 3, c.CLICK)
-
-        c = self.controlNodesOnMain = ff.util.ControlBinding()
-        c.replaceVS = 0
-        c.add(SelectNodeOnPlane(context), 3, c.CLICK)
-        c.add(MoveNodeOnPlane(context), 1, c.DRAG)
-        
-
-        #c.dbg=1
-        self.controls = [ self.controlMains, self.controlNodesOnMain ]
-     
-    def key(self, mngr, key):
-        index = self.lastIndex
-        self.context.setMainNodeIndex(index)
-       mngr.singles[index].mainNode.keystroke(key)
-       vob.AbstractUpdateManager.chg()
-
-    def mouse(self, mngr, ev):
-#        pa(ev)
-        
-       if hasattr(mngr.geometer, 'mouse') and \
-               mngr.geometer.mouse(ev, mngr.vs):
-           return 
-       x, y = ev.getX(), ev.getY()
-       cs = mngr.vs.getCSAt(0, x, y, None)
-
-        if ev.getID() == ev.MOUSE_RELEASED:
-            w.setCursor('default')
-            for ctrl in self.controls:
-                ctrl.removePressState()
-            return
-        if ev.getID() == ev.MOUSE_DRAGGED:
-            for ctrl in self.controls:
-                if ctrl.hasPressState():
-                    ctrl.handleEvent(None, ev, mngr.vs)
-                    if ctrl.replaceVS:
-                        mngr.replaceScene = mngr.vs
-                   vob.AbstractUpdateManager.setNoAnimation()
-                    vob.AbstractUpdateManager.chg()
-                    return
-                
-        ### If there exist a buoy jump over there
-       for single in mngr.singles:
-           link = single.cs.get(cs, None)
-           if link != None:
-                # pa("IN CS: ",cs, link)
-                if hasattr(mngr.geometer, 'buoyMouse') and \
-                   mngr.geometer.buoyMouse(mngr, ev, single, link):
-                    return
-                
-               if ev.getID() != ev.MOUSE_CLICKED:
-                   return
-               single.followLink(link)
-               vob.AbstractUpdateManager.chg()
-               return
-
-       ### Fall through if no link - need main node
-       for i in range(0, len(mngr.singles)):
-           if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
-                self.context.setMainNodeIndex(i)
-                self.lastIndex = i
-
-                ### See if there's somtehing on a plane.
-                obj = mngr.singles[i].mainNode.getNodeOnPlane(mngr.vs, x,y)
-                if obj != None and \
-                       self.controlNodesOnMain.hasBinding(ev):
-                    if self.controlNodesOnMain.handleEvent( \
-                        Pair(mngr.singles[i].mainNode, obj), ev, mngr.vs):
-                        # can't replace vobscene!!
-                        #  mngr.replaceScene = mngr.vs
-                        vob.AbstractUpdateManager.setNoAnimation()
-                    vob.AbstractUpdateManager.chg()
-                    return
-
-                if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev, 
mngr.vs):
-                   mngr.replaceScene = mngr.vs
-                   vob.AbstractUpdateManager.setNoAnimation()
-               vob.AbstractUpdateManager.chg()
-               return
-
-        # ...then see context
-        if ev.getID() != ev.MOUSE_CLICKED:
-            return
-        self.context.setMainNodeIndex(self.lastIndex)
-        planes = []
-        for single in mngr.singles:
-            planes.append(single.getMainNode())
-        newPlanes = self.context.doMouse(ev, mngr.vs, planes)
-        if newPlanes != None and planes != newPlanes:
-            for i in range(0, len(newPlanes)):
-                mngr.singles[i] = vob.buoy.buoymanager.SingleFocusManager(
-                    newPlanes[i],
-                    mngr.connectors)
-            vob.AbstractUpdateManager.chg()
-        
 
 currentScene = Scene()
 
Index: fenfire/org/fenfire/util/ControlBinding.java
diff -u fenfire/org/fenfire/util/ControlBinding.java:1.5 
fenfire/org/fenfire/util/ControlBinding.java:1.6
--- fenfire/org/fenfire/util/ControlBinding.java:1.5    Mon Jun 23 08:30:42 2003
+++ fenfire/org/fenfire/util/ControlBinding.java        Mon Jun 23 14:16:19 2003
@@ -56,7 +56,6 @@
 
     static private boolean FAST = true;
     static private boolean ANIMATE = false;
-    public boolean replaceVS = true;
     
     // -- Methods to handle events wisely.
 
@@ -84,7 +83,10 @@
         if (event.getID() == event.MOUSE_PRESSED) {
             pressState = event;
             return FAST;
-        }
+        } else if(event.getID() == event.MOUSE_RELEASED) {
+           removePressState();
+           return FAST;
+       }
 
         float x = event.getX();
         float y = event.getY();
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.24 
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.25
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.24  Mon Jun 23 
08:25:52 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java       Mon Jun 23 
14:16:19 2003
@@ -26,8 +26,9 @@
 
 package org.fenfire.view.buoy;
 import org.fenfire.view.*;
-
 import org.fenfire.view.View2D;
+import org.fenfire.util.ControlBinding;
+
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.impl.DefaultVobMatcher;
 import org.nongnu.libvob.buoy.*;
@@ -47,6 +48,9 @@
     protected Object plane;
     public Object getPlane() { return plane; }
 
+    /** The controller associated with this main node. */
+    protected ControlBinding controller;
+
     /** An object representing a focus on a 2D plane.
      *  The SimpleFocus implementation below just stores
      *  an X and Y coordinate, but other implementations
@@ -105,9 +109,9 @@
     protected float boxw, boxh;
 
     public AbstractMainNode2D(Object plane, View2D view2d,
-                             Focus focus) {
+                             Focus focus, ControlBinding controller ) {
        this.plane = plane; this.view2d = view2d;
-       this.focus = focus;
+       this.focus = focus; this.controller = controller;
     }
 
 
@@ -235,7 +239,7 @@
 
 
     public boolean mouse(MouseEvent e, VobScene oldVobScene) {
-       //return controller.mouse(e, oldVobScene);
+       /*return*/ controller.handleEvent(this, e, oldVobScene);
        return false;
     }
 
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.9 
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.10
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.9    Sun Jun 22 
12:15:35 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java        Mon Jun 23 
14:16:19 2003
@@ -26,6 +26,8 @@
 
 package org.fenfire.view.buoy;
 import org.fenfire.view.View2D;
+import org.fenfire.util.ControlBinding;
+
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.view.FisheyeState;
 import org.nongnu.libvob.impl.DefaultVobMatcher;
@@ -42,11 +44,15 @@
 
 
     static public class FisheyeMainNode2DFactory implements Factory {
-       public float zoom;
+       protected ControlBinding controller;
+       public FisheyeMainNode2DFactory(ControlBinding controller) {
+           this.controller = controller;
+       }
        public AbstractMainNode2D create(Object plane, View2D view2d,
                                         float panx, float pany) {
            return new FisheyeMainNode2D(plane, view2d,
-                                        new SimpleFocus(panx, pany));
+                                        new SimpleFocus(panx, pany),
+                                        controller);
        }
     }
 
@@ -55,8 +61,8 @@
     /** Create a main node with a given plane, pan.
      */
     public FisheyeMainNode2D(Object plane, View2D view2d,
-                            Focus focus) {
-       super(plane, view2d, focus);
+                            Focus focus, ControlBinding controller) {
+       super(plane, view2d, focus, controller);
         focus.setZoom(1);
     }
 
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.27 
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.28
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.27  Mon Jun 23 08:25:52 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java       Mon Jun 23 14:16:19 2003
@@ -27,6 +27,8 @@
  */
 package org.fenfire.view.buoy;
 import org.fenfire.view.View2D;
+import org.fenfire.util.ControlBinding;
+
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.impl.DefaultVobMatcher;
 import org.nongnu.libvob.buoy.*;
@@ -44,29 +46,36 @@
 
     static public class MainNode2DFactory implements Factory {
        public float zoom;
-       public MainNode2DFactory(float zoom) {
+       protected ControlBinding controller;
+       public MainNode2DFactory(float zoom, 
+                                ControlBinding controller) {
            this.zoom = zoom;
+           this.controller = controller;
        }
        public AbstractMainNode2D create(Object plane, View2D view2d,
                                         float panx, float pany) {
            return new MainNode2D(plane, view2d, 
-                                 new SimpleFocus(panx, pany), zoom);
+                                 new SimpleFocus(panx, pany), zoom,
+                                 controller);
        }
     }
 
     /** Create a main node with a given plane, pan, and zoom.
      */
     public MainNode2D(Object plane, View2D view2d,
-                  Focus focus, float zoom) {
-       super(plane, view2d, focus);
+                     Focus focus, float zoom, 
+                     ControlBinding controller) {
+       super(plane, view2d, focus, controller);
         focus.setZoom(zoom);
        this.zoom = zoom;
     }
     
     /** Create a main node focused the center of a given plane.
      */
-    public MainNode2D(Object plane, View2D view2d) {
-       this(plane, view2d, new SimpleFocus(0, 0), 1);
+    public MainNode2D(Object plane, View2D view2d,
+                     ControlBinding controller) {
+       this(plane, view2d, new SimpleFocus(0, 0), 1,
+            controller);
        view2d.getSize(plane, tmp);
        if(tmp[0] >= 0) {
            focus.setPan(tmp[0] / 2f, tmp[1] / 2f);
Index: fenfire/org/fenfire/view/lava/FenPDFContext.java
diff -u fenfire/org/fenfire/view/lava/FenPDFContext.java:1.33 
fenfire/org/fenfire/view/lava/FenPDFContext.java:1.34
--- fenfire/org/fenfire/view/lava/FenPDFContext.java:1.33       Mon Jun 23 
07:09:35 2003
+++ fenfire/org/fenfire/view/lava/FenPDFContext.java    Mon Jun 23 14:16:19 2003
@@ -75,11 +75,14 @@
     private AlphContent alphContent;
     private PPActions ppAct;
     private NodeFunction nodef;
-    public FenPDFContext(Fen fen, PPActions act, NodeFunction nodef) {
+    private ControlBinding controller;
+    public FenPDFContext(Fen fen, PPActions act, NodeFunction nodef,
+                        ControlBinding controller) {
        this.fen = fen;
        this.ppAct = act;
        this.nodef = nodef;
        this.alphContent = new AlphContent(fen);
+       this.controller = controller;
     }
 
 
@@ -250,7 +253,8 @@
                // mainNodes[1] can never hold articles, can't put there
                mainNodes[0]= new 
                     FisheyeMainNode2D(sc, new PageScrollView2D(), 
-                           new AbstractMainNode2D.SimpleFocus(0,0));
+                           new AbstractMainNode2D.SimpleFocus(0,0),
+                                     controller);
                 return mainNodes;
            }
            else if (key.equals("LINK")) {
@@ -259,7 +263,8 @@
            else if (key.equals("NEW_PAPER")) {
                String paper = ppAct.newPaper();
                mainNodes[CURR] = new MainNode2D(Nodes.get(paper), 
-                                                ppView, new 
MainNode2D.SimpleFocus(0,0),1);
+                                                ppView, new 
MainNode2D.SimpleFocus(0,0),1,
+                                                controller);
                 return mainNodes;
            }
            else if (key.equals("SAVE")) {
@@ -306,13 +311,15 @@
                     if (fen.graph.find1_11X(plane, RDF.type) == 
                         CANVAS2D.Canvas) {
                         mainNodes[i] = new MainNode2D(plane, 
-                                                      ppView, new 
MainNode2D.SimpleFocus(0,0),1);
+                                                      ppView, new 
MainNode2D.SimpleFocus(0,0),1,
+                                                     controller);
                         p("mainNode");
                     } else {
                         mainNodes[i] = new 
                             FisheyeMainNode2D(plane, 
                                               new PageScrollView2D(),
-                               new AbstractMainNode2D.SimpleFocus(0,0));
+                               new AbstractMainNode2D.SimpleFocus(0,0),
+                                             controller);
                         p("fishNode");
                     }
                     i++;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]