[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz ./TODO Documentation/VISION doc/pegboard/bu...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] gzz ./TODO Documentation/VISION doc/pegboard/bu... |
Date: |
Fri, 31 Jan 2003 06:35:52 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Tuomas J. Lukka <address@hidden> 03/01/31 06:35:50
Modified files:
. : TODO
Documentation : VISION
doc/pegboard/buoydesign--tjl: peg.rst
gzz/client : AbstractBinder.java Binder.java
Added files:
gzz/view/buoy : BuoyLinkListener.java BuoyViewMainNode.java
BuoyViewNodeType.java
Log message:
Buoy architecture: finally
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/TODO.diff?tr1=1.541&tr2=1.542&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/Documentation/VISION.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/doc/pegboard/buoydesign--tjl/peg.rst.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/client/AbstractBinder.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/client/Binder.java.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/BuoyLinkListener.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/BuoyViewMainNode.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/BuoyViewNodeType.java?rev=1.1
Patches:
Index: gzz/Documentation/VISION
diff -u gzz/Documentation/VISION:1.11 gzz/Documentation/VISION:1.12
--- gzz/Documentation/VISION:1.11 Thu Jan 16 06:24:36 2003
+++ gzz/Documentation/VISION Fri Jan 31 06:35:50 2003
@@ -10,9 +10,17 @@
Tools for knowledge workers.
-LEGO philosophy: not single things that do lots of things in fixed
-ways but multiple, really simple things that can be used with
-imagination.
+Reproducibility - the philosophy underlying everything we do.
+
+ Any software we make should be available for anyone to
+ play with.
+
+ Any hardware we use should be cheap and commonly available:
+ PC is OK, 3D accelerators are OK, $5000 datagloves and projectors
+ are not.
+
+ --> idea: experiment with building cheap controllers out of
+ mice and LEGOs.
Free software.
- mostly LGPL, most valuable innovations GPL.
@@ -22,6 +30,10 @@
or license these patents; we have an understanding
that they will grant the GPL rights: this does not
undermine their business interests.
+
+LEGO philosophy: not single complicated things that do lots of things
+in fixed ways but multiple, really simple things that can be used with
+imagination.
Computers should be easy to use but powerful.
Index: gzz/TODO
diff -u gzz/TODO:1.541 gzz/TODO:1.542
--- gzz/TODO:1.541 Thu Jan 30 12:25:25 2003
+++ gzz/TODO Fri Jan 31 06:35:49 2003
@@ -160,6 +160,20 @@
Specifically, need to be able to use gzipped S3TC files;
should be a LOT faster to load.
humppake:
+ - fix umltool graphics to be closer to the UML 3amigos books
+ - fix dep directive to be
+
+ dep BuoyViewNode "calls" BuoyLinkListener
+
+ instead of
+
+ dep "calls" BuoyViewNode BuoyLinkListener
+
+ currently. Involves fixing many diagrams! Reason: then can use in
class:
+ class BuoyViewNode
+ dep "calls" BuoyLinkListener
+ because inside class, the class is given as the 1st argument.
+
- umltool paper dl 15.2., but should actually be done in the late Jan
- use drawRoughEdge for focus
- make pegboard to be only a directive, when all reST could be
Index: gzz/doc/pegboard/buoydesign--tjl/peg.rst
diff -u gzz/doc/pegboard/buoydesign--tjl/peg.rst:1.6
gzz/doc/pegboard/buoydesign--tjl/peg.rst:1.7
--- gzz/doc/pegboard/buoydesign--tjl/peg.rst:1.6 Thu Jan 30 12:25:25 2003
+++ gzz/doc/pegboard/buoydesign--tjl/peg.rst Fri Jan 31 06:35:50 2003
@@ -3,8 +3,8 @@
=============================================================
:Author: Tuomas J. Lukka
-:Last-Modified: $Date: 2003/01/30 17:25:25 $
-:Revision: $Revision: 1.6 $
+:Last-Modified: $Date: 2003/01/31 11:35:50 $
+:Revision: $Revision: 1.7 $
:Status: Incomplete
Goals: get the xupdf and pp functionality under one model.
@@ -13,9 +13,38 @@
Issues
======
+- How do we do non-regeneration of vobscenes on mouse events?
+
+ RESOLVED: Pass the old VobScene to the mouse event handler method
+ and use the boolean return value to determine whether
+ regeneration is needed.
+
+ This also fixes the idea that a BuoyViewNode is really a single
+ view in a single VobScene.
+
+- Should we let keystrokes also not-regenerate the vobscene?
+
+- Who creates the nodes? What about when a node contains a link
+ to itself? Are all nodes really the same?
+
+ RESOLVED: A-ha! There was confusion because the first
+ design treated buoy nodes and main nodes the same,
+ when they are not at all the same.
+
+ The buoy nodes know how to render themselves at a given
+ anchor.
+
+ The main node has a cursor and handles events etc.
+
+ The buoy node objects can be static objects; the main node
+ objects must be created for each view.
+
Architecture
============
+The abstract buoy data model
+----------------------------
+
First of all, define the abstract buoyview model as follows:
.. UML:: BuoyviewModel
@@ -47,6 +76,10 @@
and the anchors and links are defined implicitly by
the xanalogical transclusions and xulinks.
+A PDF scrollblock, on the other hand,
+is very different: no cell, no cellview!
+The architecture needs to support all these.
+
.. UML:: BuoyviewModels
class Node
@@ -109,36 +142,81 @@
Anchor.c = DocFragmentAnchor.c + o;
Link.c = TransclusionLink.c + o;
+
+Implementation
+--------------
+
Now, the picture gets clearer: the whole structure of the current buoy view
-can be *defined* by a single facade:
+should be *defined* by a single facade:
+
+
+Important Invariant (a la ZZstructure dimension):
+if node A, anchor A.1 shows a link X to node B anchor B.4,
+hen after B.setFocus(B.4), node B will show the link X as well.
-.. UML:: BuoyviewFacade
+.. UML:: BuoyManagerBasic
- class BuoyView
+ jlinkpackage gzz.view.buoy
- class BuoyViewScheme "interface"
+ class RealBuoyViewManager
+ fields
+ BuoyViewMainNode current
+ inherit BuoyLinkListener
- dep "use"
+ class BuoyLinkListener "interface"
+ jlink
+ methods
+ void link(int dir, int anchorCS, BuoyViewNodeType otherNode, Object
linkId, Object otherAnchor)
+ class BuoyViewMainNode "interface"
+ jlink
+ fields
+ cursor, zoom, coordsystems...
+ methods
+ void renderMain(VobScene vs, int into, BuoyLinkListener l)
+ keystroke(...)
+ mouse(...)
+
+ class BuoyViewNodeType "interface"
+ jlink
+ methods
+ void renderBuoy(VobScene vs, int into, Object linkId, Object anchor)
+ BuoyViewNodeType createMainNode(Object linkId, Object anchor)
+ dep "calls" BuoyViewMainNode BuoyLinkListener
+ dep "use" RealBuoyViewManager BuoyViewNodeType
+ dep "use" RealBuoyViewManager BuoyViewMainNode
+ dep "create" BuoyViewNodeType BuoyViewMainNode
+ ---
-PDF scrollblock very different: no cell, no cellview!
+ vertically(60, zap, BuoyViewMainNode, BuoyViewNodeType);
+ horizontally(100, foo, RealBuoyViewManager, zap);
+ vertically(140, bar, BuoyLinkListener, RealBuoyViewManager);
+
+The linkId passed to BuoyLinkListener must be unique for each node
+and the identifies the link -- it must be the same in both directions.
+The previous invariant in code is an invariant which the BuoyViewNode interface
+must obey::
+
+ buoyviewnode1.renderMain(..., l);
+ // l.link(d, *, nodetype2, L, A) got called as callback
+
+ buoyviewnode2 = nodetype2.createMainNode(L, A)
+ buoyviewnode2.renderMain(..., l);
+ // l.link(-d, *, nodetype1, L, B) MUST GET CALLED
+
+Of course, if the underlying
+data structure is modified between the calls to renderMain,
+the invariant need no longer hold.
+
+The coordsys the main view is being rendered into defines the extent
+by its (modified) unit square; this extent is not binding but more like
+a hint.
-.. UML:: BuoyManagerBasic
+Matcher structure can separate left&right links and know which way
- class BuoyViewManager
- fields
- BuoyViewNode cursor
-
- class BuoyViewNode "interface"
- methods
- void renderMain(VobScene vs, int into, ...)
- class BuoyLink
-Important Invariant (a la ZZstructure dimension):
-if node A, anchor A.1 shows a link X to node B anchor B.4,
-hen after B.setFocus(B.4), node B will show the link X as well.
Index: gzz/gzz/client/AbstractBinder.java
diff -u gzz/gzz/client/AbstractBinder.java:1.4
gzz/gzz/client/AbstractBinder.java:1.5
--- gzz/gzz/client/AbstractBinder.java:1.4 Thu Sep 26 07:54:07 2002
+++ gzz/gzz/client/AbstractBinder.java Fri Jan 31 06:35:50 2003
@@ -38,4 +38,5 @@
}
public void mouse(MouseEvent e) { }
public void windowClosed() { }
+ void timeout(Object id) { }
}
Index: gzz/gzz/client/Binder.java
diff -u gzz/gzz/client/Binder.java:1.11 gzz/gzz/client/Binder.java:1.12
--- gzz/gzz/client/Binder.java:1.11 Wed Oct 16 16:58:38 2002
+++ gzz/gzz/client/Binder.java Fri Jan 31 06:35:50 2003
@@ -36,11 +36,9 @@
*/
public interface Binder {
/** A keystroke.
- * @diagram screen
*/
void keystroke(String s);
/** A mouse event.
- * @diagram screen
*/
void mouse(MouseEvent e);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz ./TODO Documentation/VISION doc/pegboard/bu...,
Tuomas J. Lukka <=