gzz-commits
[Top][All Lists]
Advanced

[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);
 




reply via email to

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