[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire/org/fenfire/view/buoy AbstractMainNode2...
From: |
Matti Katila |
Subject: |
[Gzz-commits] fenfire/org/fenfire/view/buoy AbstractMainNode2... |
Date: |
Wed, 06 Aug 2003 11:55:54 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Matti Katila <address@hidden> 03/08/06 11:55:54
Modified files:
org/fenfire/view/buoy: AbstractMainNode2D.java
FisheyeMainNode2D.java MainNode2D.java
actions.py
org/fenfire/view/buoy/lava: MindMapConnector.java
Log message:
bindings changed to use new api
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.38&tr2=1.39&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.31&tr2=1.32&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/actions.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.38
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.39
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.38 Mon Aug 4
02:02:48 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java Wed Aug 6
11:55:54 2003
@@ -26,7 +26,7 @@
package org.fenfire.view.buoy;
import org.fenfire.view.*;
-import org.fenfire.util.ControlBinding;
+import org.nongnu.libvob.mouse.MouseMultiplexer;
import org.nongnu.libvob.*;
import org.nongnu.libvob.impl.DefaultVobMatcher;
@@ -53,8 +53,8 @@
}
- /** The controller associated with this main node. */
- protected ControlBinding controller;
+ /** The mouse controller associated with this main node. */
+ protected MouseMultiplexer mouseController;
/** An object representing a focus on a 2D plane.
* The SimpleFocus implementation below just stores
@@ -114,16 +114,16 @@
protected float boxw, boxh;
public AbstractMainNode2D(Object plane, View2D view2d,
- Focus focus, ControlBinding controller ) {
+ Focus focus, MouseMultiplexer mouse) {
this.plane = plane; this.view2d = view2d;
- this.focus = focus; this.controller = controller;
+ this.focus = focus; this.mouseController = mouse;
}
/** Render the context into the main node view i.e.,
* text cursor.
*/
- static public Render context = null;
+ static public Context context = null;
public void keystroke(String s) {
throw new Error("Not implemented.");
}
@@ -133,9 +133,10 @@
if (context != null)
context.mainNodeToBeRender(vs, into, this);
}
- public interface Render {
+ public interface Context {
void mainNodeToBeRender(VobScene vs, int into,
AbstractMainNode2D main);
+ boolean changeFastAfterMouseEvent();
}
/** Cause the changes to the zooming and panning variables
@@ -261,7 +262,8 @@
}
public boolean mouse(VobMouseEvent e, VobScene oldVobScene) {
- return controller.handleEvent(this, e, oldVobScene);
+ mouseController.deliverEvent(e);
+ return context.changeFastAfterMouseEvent();
}
public void chgFast(VobScene oldVobScene, int parent) {
@@ -271,11 +273,6 @@
View2D view = getView2D();
while (view != null) {
if (view instanceof org.fenfire.view.lava.FastView)
- /** Jams the machine if called.
- * ''Single Multiple'' views makes things awful.
- *
- * ...working on a better solution.
- */
((org.fenfire.view.lava.FastView)view)
.chgFast(oldVobScene, box2screen);
view = view.getChildView2D();
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.14
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.15
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.14 Sat Aug 2
04:21:47 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java Wed Aug 6
11:55:54 2003
@@ -26,7 +26,7 @@
package org.fenfire.view.buoy;
import org.fenfire.view.View2D;
-import org.fenfire.util.ControlBinding;
+import org.nongnu.libvob.mouse.MouseMultiplexer;
import org.nongnu.libvob.*;
import org.nongnu.libvob.view.FisheyeState;
@@ -43,15 +43,15 @@
static public class FisheyeMainNode2DFactory implements Factory {
- protected ControlBinding controller;
- public FisheyeMainNode2DFactory(ControlBinding controller) {
- this.controller = controller;
+ protected MouseMultiplexer mouseController;
+ public FisheyeMainNode2DFactory(MouseMultiplexer mouse) {
+ this.mouseController = mouse;
}
public AbstractMainNode2D create(Object plane, View2D view2d,
float panx, float pany) {
return new FisheyeMainNode2D(plane, view2d,
new SimpleFocus(panx, pany),
- controller);
+ mouseController);
}
}
@@ -60,8 +60,8 @@
/** Create a main node with a given plane, pan.
*/
public FisheyeMainNode2D(Object plane, View2D view2d,
- Focus focus, ControlBinding controller) {
- super(plane, view2d, focus, controller);
+ Focus focus, MouseMultiplexer mouse) {
+ super(plane, view2d, focus, mouse);
focus.setZoom(1);
}
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.31
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.32
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.31 Tue Jul 1 12:33:33 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java Wed Aug 6 11:55:54 2003
@@ -27,7 +27,7 @@
*/
package org.fenfire.view.buoy;
import org.fenfire.view.View2D;
-import org.fenfire.util.ControlBinding;
+import org.nongnu.libvob.mouse.MouseMultiplexer;
import org.nongnu.libvob.*;
import org.nongnu.libvob.impl.DefaultVobMatcher;
@@ -44,17 +44,17 @@
static public class MainNode2DFactory implements Factory {
public float zoom;
- protected ControlBinding controller;
+ protected MouseMultiplexer mouseController;
public MainNode2DFactory(float zoom,
- ControlBinding controller) {
+ MouseMultiplexer mouse) {
this.zoom = zoom;
- this.controller = controller;
+ this.mouseController = mouse;
}
public AbstractMainNode2D create(Object plane, View2D view2d,
float panx, float pany) {
return new MainNode2D(plane, view2d,
new SimpleFocus(panx, pany), zoom,
- controller);
+ mouseController);
}
}
@@ -62,17 +62,17 @@
*/
public MainNode2D(Object plane, View2D view2d,
Focus focus, float zoom,
- ControlBinding controller) {
- super(plane, view2d, focus, controller);
+ MouseMultiplexer mouse) {
+ super(plane, view2d, focus, mouse);
focus.setZoom(zoom);
}
/** Create a main node focused the center of a given plane.
*/
public MainNode2D(Object plane, View2D view2d,
- ControlBinding controller) {
+ MouseMultiplexer mouse) {
this(plane, view2d, new SimpleFocus(0, 0), 1,
- controller);
+ mouse);
view2d.getSize(plane, tmp);
if(tmp[0] >= 0) {
focus.setPan(tmp[0] / 2f, tmp[1] / 2f);
Index: fenfire/org/fenfire/view/buoy/actions.py
diff -u fenfire/org/fenfire/view/buoy/actions.py:1.1
fenfire/org/fenfire/view/buoy/actions.py:1.2
--- fenfire/org/fenfire/view/buoy/actions.py:1.1 Sat Aug 2 04:44:24 2003
+++ fenfire/org/fenfire/view/buoy/actions.py Wed Aug 6 11:55:54 2003
@@ -33,44 +33,62 @@
def __init__(self, context):
self.context = context
+class AbstractAction:
+ def __init__(self, context):
+ self.context = context
+ def super(self):
+ self.main = self.context.states.mgr.getLastMain()
+ self.oldVS = self.context.states.mgr.getVs()
+
######## Actions to control pan of main nodes etc.
-class MovePanFast(AbstractContextController):
- def isChangeable(self): return 1
- def change(self, x, y):
- if dbg: p('move pan fast')
- f = self.obj.getFocus()
+class PanMover(AbstractAction, vob.mouse.RelativeAdapter,
+ vob.input.RelativeAxisListener):
+ def changedRelative(self, x,y='foo'):
+ # grrr.. pythonism, overloading of own method is sicknes
+ if y=='foo': return self._changedRelative(x)
+ self.super()
+ f = self.main.getFocus()
fX, fY = f.getPanX(), f.getPanY()
- f.setPan( fX-x/f.zoom, fY-y/f.zoom)
- #self.context.chgFast(self.oldVS)
- self.obj.chgFast(self.oldVS, -1)
-
-class MovePanSlow(ff.util.ControlBinding.AbstractController):
- def isChangeable(self): return 0
- def controlPoint(self, x, y, scale):
- if dbg: p('move pan slow')
- self.obj.moveToPoint(int(x),int(y), self.oldVS)
+ f.setPan(fX-x/f.zoom,
+ fY-y/f.zoom)
+ self.main.chgFast(self.oldVS, -1)
+ def _changedRelative(self, d):
+ self.super()
+ f = self.main.getFocus()
+ fY = f.getPanY()
+ f.setPan(0, fY-d/f.zoom)
+ self.main.chgFast(self.oldVS, -1)
+
+class BrowseClick(AbstractAction, vob.mouse.MouseClickListener):
+ def clicked(self, x, y):
+ if 1 or dbg: p('move pan slow')
+ self.super()
+ self.main.moveToPoint(int(x),int(y), self.oldVS)
+ self.context.states.fastChg = 0
+
+class ZoomPan(vob.input.RelativeAxisListener, AbstractAction):
+ def changedRelative(self, x):
+ self.super()
+ self.main.changeZoom(x)
+ self.main.chgFast(self.oldVS, -1)
+ self.context.states.fastChg = 1
+
+class ChangeSize(vob.input.RelativeAxisListener, AbstractAction):
+ def changedRelative(self, x):
+ self.super()
+ self.main.changeSize(x)
+ self.main.chgFast(self.oldVS, -1)
+ self.context.states.fastChg = 1
-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(AbstractContextController):
- def isChangeable(self): return 1
- def change(self, x, y):
- self.obj.changeSize(x+y)
- self.obj.chgFast(self.oldVS, -1)
- #self.context.chgFast(self.oldVS)
+class IfSelectNodeOnPlane(AbstractAction, vob.mouse.MouseClickListener):
+ def click(self, x, y):
-class UnSelectNodeOnPlane(AbstractContextController):
- def isChangeable(self): return 0
- def controlPoint(self, x, y, scale):
self.context.states.cursor.setAccursed(None)
+ self.context.states.fastChg = 0
+#
class ShowMouseMenu(AbstractContextController):
def isChangeable(self): return 0
def controlPoint(self, x, y, scale):
@@ -78,105 +96,61 @@
vob.AbstractUpdateManager.setNoAnimation()
####### Actions to control nodes on main node plane
-
-class SelectNodeOnPlane(AbstractContextController):
- def isChangeable(self): return 0
- def controlPoint(self, x, y, scale):
- self.context.states.cursor.setAccursed(self.obj[1])
-class MoveNodeOnPlane(AbstractContextController):
- def isChangeable(self): return 1
- def change(self, x,y):
- f = self.obj[0].getFocus()
- node = self.obj[1]
- if not self.context.states.cursor.isAccursed(node): return
-
+class NodeMover(AbstractAction, vob.mouse.RelativeAdapter):
+ def set(self, node):
+ self.super()
+ s = self.context.states
+ self.node, self.pp, self.graph = node, s.pp, s.fen.graph
+ def changedRelative(self, x,y):
+ self.super()
+ f = self.main.getFocus()
fX, fY = f.getPanX(), f.getPanY()
- f.setPan( fX+x/f.zoom,fY+y/f.zoom)
-
- g = self.obj[2]
- ox = ff.util.RDFUtil.getFloat(g, node, CANVAS2D.x)
- oy = ff.util.RDFUtil.getFloat(g, node, CANVAS2D.y)
- self.obj[3].moveNote(node, ox+x/f.zoom, oy+y/f.zoom )
- self.obj[0].chgFast(self.oldVS, -1)
+ f.setPan(fX+x/f.zoom,
+ fY+y/f.zoom)
+ g = self.graph
+ ox = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.x)
+ oy = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.y)
+ self.pp.moveNote(self.node, ox+x/f.zoom, oy+y/f.zoom )
+ self.main.chgFast(self.oldVS, -1)
####### Actions to control selection (Ctrl pressed)
-class SelectArea(AbstractContextController):
- def isChangeable(self): return 0
- def tryFast(self): return 1
- def controlPoint(self, x, y, scale):
- if dbg: self.context.states.p()
- xy = self.obj[0].getXYHit(self.oldVS, x,y)
- oldXY = self.context.states.getPressPans()
- self.obj[1].setArea(oldXY[0], oldXY[1], xy[0], xy[1])
- if dbg: p(self.context.states.selection.area)
- self.context.states.selection.area = [oldXY[0], oldXY[1], xy[0], xy[1]]
- self.obj[0].chgFast(self.oldVS, -1)
-
+class SelectArea(AbstractAction, vob.mouse.MouseDragListener,
+ vob.mouse.MousePressListener):
+ def pressed(self, x,y):
+ """ dumb bersion of listener """
+ return self
+ def startDrag(self, x,y):
+ self.super()
+ self.oldxy = self.main.getXYHit(self.oldVS, y, y)
+ p('old', self.oldxy)
+ def drag(self, x, y):
+ v = ff.util.lava.view.getView(self.main, ff.view.AreaSelectingView2D)
+ v.setCurrentPlane(self.main.getPlane())
+ xy = self.main.getXYHit(self.oldVS, x,y)
+ v.setArea(self.oldxy[0], self.oldxy[1], xy[0], xy[1])
+ self.main.chgFast(self.oldVS, -1)
+ self.context.states.fastChg = 1
+ def endDrag(self, x,y):
+ self.drag(x,y)
####### Dispatcher for plane events etc.
-class ControlsDispatcher(ff.util.ControlBinding):
- def __init__(self, main, plane, withCtrl, graph, pp):
- self.m = main
- self.p = plane
- self.c = withCtrl
- self.all = [ main, plane, withCtrl ]
- self.last = main
- self.args = main
- self.graph = graph
- self.pp = pp
-
- def handleEvent(self, main, ev, vs):
- if ev.getType() == ev.MOUSE_DRAGGED:
- if dbg: p('drag')
- return self.last.handleEvent(self.args, ev, vs)
- elif ev.getType() == ev.MOUSE_PRESSED:
- xy = main.getXYHit(vs, ev.getX(), ev.getY())
- self.context.states.setPressPans(xy[0], xy[1])
- if dbg: self.context.states.p()
-
- ### Get node on plane if any
- if dbg: p('event', ev)
- obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY())
- if dbg: p(obj)
-
-
- ### Set selection plane
- v = ff.util.lava.view.getView(main, ff.view.AreaSelectingView2D)
- v.setCurrentPlane(main.getPlane())
- self.selection = v
-
- #### Special case if user has pressed 'Ctrl'
- if self.context.states.hasCtrl():
- self.last = self.c
- self.args = [main, self.selection]
- else:
- if ev.getType() == ev.MOUSE_CLICKED:
- if obj != None and self.p.hasBinding(ev):
- self.last = self.p
- self.args = [main, obj, self.graph, self.pp]
- return self.p.handleEvent(self.args, ev, vs)
-
- ### Drag if something under mouse pointer is accursed!
- if obj != None and self.p.hasBinding(ev) and
self.context.states.cursor.isAccursed(obj):
- self.last = self.p
- self.args = [main, obj, self.graph, self.pp]
- else:
- self.last = self.m
- self.args = main
-
- if 0 and ev.getType() != ev.MOUSE_PRESSED and not
self.last.hasPressState():
- self.removePressState()
- self.last.setPressStateByForce(ev)
- raise 'set press state by force - should not happen!', ev
- return self.last.handleEvent(self.args, ev, vs)
- def removePressState(self):
- for c in self.all:
- c.removePressState()
- def hasPressState(self):
- return self.last.hasPressState()
- def setContext(self, context):
- self.context = context
+class CanvasNodePressListener(vob.mouse.MousePressListener, AbstractAction):
+ def __init__(self, context, nodeMover, panMover):
+ AbstractAction.__init__(self, context)
+ self.nodeMover = nodeMover
+ self.panMover = panMover
+ def pressed(self, x, y):
+ self.super()
+ self.context.states.fastChg = 1
+ obj = self.main.getNodeOnPlane(self.oldVS, x,y)
+
+ if obj != None and obj == self.context.states.cursor.getAccursed():
+ p('accursed!')
+ self.nodeMover.set(obj)
+ return self.nodeMover
+ return self.panMover
+
Index: fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java
diff -u fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java:1.1
fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java:1.2
--- fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java:1.1 Mon Aug
4 02:02:48 2003
+++ fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java Wed Aug 6
11:55:54 2003
@@ -20,7 +20,7 @@
* First only canvas perhaps (later more).
*/
public class MindMapConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: MindMapConnector.java,v 1.1
2003/08/04 06:02:48 mudyc Exp $";
+public static final String rcsid = "$Id: MindMapConnector.java,v 1.2
2003/08/06 15:55:54 mudyc Exp $";
public static boolean dbg = false;
private static void p(String s) { System.out.println("MindMapConnector::
"+s); }
@@ -37,7 +37,7 @@
private NodeFunction mindMapForNode =
new NodeFunction() {
public Object f(ConstGraph a, Object node) {
- p("b: "+node);
+ if (dbg) p("b: "+node);
//return null;
float x=0,y=0, w=100, h=100;
@@ -84,10 +84,10 @@
} else if(mn2d.getView2D() == mindMapNodeType.getView2D()) {
if (dbg) p("mindmap -> outside");
- if (true) return;
-
for(Iterator i=m.getKeys(parentCs).iterator(); i.hasNext();) {
Object key = i.next();
+ p("key: "+key);
+
if(!(key instanceof PageImageSpan)) continue;
PageImageSpan span = (PageImageSpan)key;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] fenfire/org/fenfire/view/buoy AbstractMainNode2...,
Matti Katila <=