fenfire-commits
[Top][All Lists]
Advanced

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

[ff-cvs] fenfire/org/fenfire Fen.java bin/fenpdf10.py fe...


From: Tuomas J. Lukka
Subject: [ff-cvs] fenfire/org/fenfire Fen.java bin/fenpdf10.py fe...
Date: Wed, 10 Sep 2003 09:00:50 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Tuomas J. Lukka <address@hidden>        03/09/10 09:00:49

Modified files:
        org/fenfire    : Fen.java 
        org/fenfire/bin: fenpdf10.py 
        org/fenfire/fenmm: WhiteNodeView.java 
        org/fenfire/fenpdf: demospace.py fenpdf.py fenpdfcontext.py 
        org/fenfire/fenpdf/appearance: views.py 
        org/fenfire/index/impl: SpaceXuIndexer.java 
        org/fenfire/modules/pp: PPActionsImpl.java 
        org/fenfire/modules/pp/lava: RSTActions.java RSTActionsImpl.java 
                                     RSTUtil.java RSTUtilImpl.java 
        org/fenfire/swamp: MultiplexerNodeFunction.java Nodes.java 
                           observablegraphtest.py 
        org/fenfire/util: AlphContent.java SuperLazyBase.java 
        org/fenfire/view: CanvasView2D.java DispatchingNodeView.java 
                          PageNodeView.java 
                          PageScroll2LayoutPureFunction.java 
                          PageScrollView2D.java TextNodeView.java 
                          VobWrapperFunction.java 
        org/fenfire/view/buoy: PPConnector.java 
                               TransclusionConnector.java 
        org/fenfire/view/buoy/lava: MindMapConnector.java 
        org/fenfire/view/lava: Cursor.java 
Added files:
        org/fenfire/functional: CachedNodeFunction.java 
                                CachedPureNodeFunction.java 
                                DirectFunctional.java 
                                FunctionInstance.java Functional.java 
                                FunctionalTest.java NodeFunction.java 
                                PureNodeFunction.java 
                                SuperFunctional1.java 
                                SuperLazyPureNodeFunction.java 
                                __init__.py directfunctional.test 
                                functionaltest.py superfunctional1.test 
                                superlazy.test 
        org/fenfire/structure: Ff.java ff.test 
        org/fenfire/util: PaperMillFunction.java 
Removed files:
        org/fenfire    : NodeContent.java 
        org/fenfire/impl: SimpleNodeContent.java simplenodecontent.test 
        org/fenfire/lava: DirectFunctional.java Functional.java 
                          FunctionalTest.java __init__.py 
                          directfunctional.test functionaltest.py 
        org/fenfire/swamp: CachedNodeFunction.java 
                           CachedPureNodeFunction.java NodeFunction.java 
                           PureNodeFunction.java 
                           SuperLazyPureNodeFunction.java superlazy.test 
        org/fenfire/util: Function.java FunctionCacheEntry.java 
                          SuperLazyPureFunction.java 

Log message:
        Merge functional branch. See arch for detailed changelogs

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/Fen.java.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/bin/fenpdf10.py.diff?tr1=1.80&tr2=1.81&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenmm/WhiteNodeView.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/demospace.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/fenpdf.py.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/fenpdfcontext.py.diff?tr1=1.32&tr2=1.33&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/appearance/views.py.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/CachedNodeFunction.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/CachedPureNodeFunction.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/DirectFunctional.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/FunctionInstance.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/Functional.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/FunctionalTest.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/NodeFunction.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/PureNodeFunction.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/SuperFunctional1.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/SuperLazyPureNodeFunction.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/__init__.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/directfunctional.test?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/functionaltest.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/superfunctional1.test?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/functional/superlazy.test?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/index/impl/SpaceXuIndexer.java.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/modules/pp/PPActionsImpl.java.diff?tr1=1.37&tr2=1.38&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/modules/pp/lava/RSTActions.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/modules/pp/lava/RSTActionsImpl.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/modules/pp/lava/RSTUtil.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/modules/pp/lava/RSTUtilImpl.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/structure/Ff.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/structure/ff.test?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/MultiplexerNodeFunction.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/Nodes.java.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/observablegraphtest.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/PaperMillFunction.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/AlphContent.java.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/SuperLazyBase.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/CanvasView2D.java.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/DispatchingNodeView.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageNodeView.java.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageScroll2LayoutPureFunction.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageScrollView2D.java.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/TextNodeView.java.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/VobWrapperFunction.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/PPConnector.java.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/TransclusionConnector.java.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/Cursor.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/Fen.java
diff -u fenfire/org/fenfire/Fen.java:1.11 fenfire/org/fenfire/Fen.java:1.12
--- fenfire/org/fenfire/Fen.java:1.11   Mon Aug 11 08:09:54 2003
+++ fenfire/org/fenfire/Fen.java        Wed Sep 10 09:00:45 2003
@@ -37,14 +37,6 @@
      */
     public org.fenfire.swamp.ConstGraph constgraph;
 
-    /** The NodeFunction implementation by the NodeContent.
-     */
-    public org.fenfire.swamp.NodeFunction txtfunc;
-
-    /** The object managing the enfilade content for nodes.
-     */
-    public NodeContent txt;
-    
     /** The transclusion index.
      */
     public org.fenfire.index.Index enfiladeOverlap;
Index: fenfire/org/fenfire/bin/fenpdf10.py
diff -u fenfire/org/fenfire/bin/fenpdf10.py:1.80 
fenfire/org/fenfire/bin/fenpdf10.py:1.81
--- fenfire/org/fenfire/bin/fenpdf10.py:1.80    Thu Aug 28 04:20:45 2003
+++ fenfire/org/fenfire/bin/fenpdf10.py Wed Sep 10 09:00:45 2003
@@ -142,12 +142,12 @@
 else:
     fen.graph = fen.constgraph = ff.swamp.impl.HashGraph()
 
-fen.txt = ff.impl.SimpleNodeContent(fen, myalph)
-fen.txtfunc = fen.txt.getNodeFunction()
-fen.enfiladeOverlap = fen.txt.getTransclusionIndex()
+structure_ff = ff.structure.Ff.create(fen.graph, myalph)
+
+fen.enfiladeOverlap = structure_ff.getTransclusionIndex()
 fen.alph = myalph
 
-ppActions = ff.modules.pp.PPActionsImpl(fen)
+ppActions = ff.modules.pp.PPActionsImpl(fen, structure_ff)
 treetime = ff.structure.TreeTime(TREETIME.follows)
 ppActions.treeTime = treetime
 
@@ -164,9 +164,11 @@
 if not do_load_graph:
     val = java.lang.System.getProperty("fenpdf.demo")
     if val != None and java.lang.Integer.parseInt(val) != 0:
-       ff.fenpdf.demospace.createDemoSpace(fen, myalph, treetime, ppActions)
+       ff.fenpdf.demospace.createDemoSpace(fen, myalph, treetime, ppActions,
+               structure_ff)
     else:
-       ff.fenpdf.demospace.createEmptySpace(fen, myalph, treetime, ppActions)
+       ff.fenpdf.demospace.createEmptySpace(fen, myalph, treetime, ppActions,
+               structure_ff)
 
 # Default controls for main view
 ## see 
http://himalia.it.jyu.fi/ffdoc/fenfire/pegboard/fenpdf_v1_spec_1--tjl/peg.gen.html
 and 'Bindings'
@@ -195,7 +197,7 @@
 
 
 
-fenPDF = ff.fenpdf.fenpdf.FenPDF(fen, treetime)
+fenPDF = ff.fenpdf.fenpdf.FenPDF(fen, treetime, structure_ff)
 fenPDF.window = w
 fenPDF.events.buttons = ff.fenpdf.events.buttons.ActionButtons()
 fenPDF.events.buttons.fenPDF = fenPDF
@@ -225,7 +227,8 @@
 fenPDF.views = views
 fenPDF.views.background = 
ff.fenpdf.appearance.background.FancyBlueBackground1()
 
-context.states.cursor = ff.fenpdf.fenpdfcontext.Cursor(fen, 
views.getMultiplexerNodeContentFunction())
+context.states.cursor = 
ff.fenpdf.fenpdfcontext.Cursor(fenPDF.structure.alphContent, 
+               views.getMultiplexerNodeContentFunction())
 context.states.fenPDF = fenPDF
 fenPDF.uistate.cursor = context.states.cursor
 
@@ -247,6 +250,7 @@
 fenPDF.events.key.fenPDF = fenPDF
 
 fenPDF.actions.key.fenPDF = fenPDF
+
 
        
 
Index: fenfire/org/fenfire/fenmm/WhiteNodeView.java
diff -u fenfire/org/fenfire/fenmm/WhiteNodeView.java:1.3 
fenfire/org/fenfire/fenmm/WhiteNodeView.java:1.4
--- fenfire/org/fenfire/fenmm/WhiteNodeView.java:1.3    Tue Aug 19 05:34:24 2003
+++ fenfire/org/fenfire/fenmm/WhiteNodeView.java        Wed Sep 10 09:00:46 2003
@@ -2,7 +2,7 @@
 
 package org.fenfire.fenmm;
 
-import org.fenfire.swamp.PureNodeFunction;
+import org.fenfire.functional.PureNodeFunction;
 import org.fenfire.swamp.ConstGraph;
 import org.nongnu.libvob.lava.placeable.TextPlaceable;
 import org.nongnu.libvob.VobScene;
Index: fenfire/org/fenfire/fenpdf/appearance/views.py
diff -u fenfire/org/fenfire/fenpdf/appearance/views.py:1.22 
fenfire/org/fenfire/fenpdf/appearance/views.py:1.23
--- fenfire/org/fenfire/fenpdf/appearance/views.py:1.22 Mon Sep  1 06:20:57 2003
+++ fenfire/org/fenfire/fenpdf/appearance/views.py      Wed Sep 10 09:00:46 2003
@@ -11,7 +11,7 @@
 def p(*s):
     print 'appearance.views.py:: ',s
 
-class Views(ff.ObjObs):
+class Views(ff.Obs):
     """Encapsulate the creation of the immutable views and connectors used in 
FenPDF.
 
     STRICT ENCAPSULATION: NO MEMBERS SHOULD BE ACCESSED
@@ -39,6 +39,31 @@
        self.update()
 
     def update(self):
+
+       self.functional = ff.functional.SuperFunctional1(
+           self.fenPDF.fen.constgraph,
+           vob.AbstractUpdateManager.getInstance()
+           )
+       self.functional.addSuperLazyObs(self)
+
+       self.functional.cache(
+           "node2scrollBlockAnchor", 1000);
+       self.functional.cache(
+           "AccursedDispatching", 10);
+       self.functional.cache(
+           "NormalDispatching", 500);
+       self.functional.cache(
+           "PageNodeView", 200, 1, 10); # superlazy cache as it *is* slow.
+       self.functional.cache(
+           "PageScroll2Layout", 200, 10); # superlazy cache as it *is* slow.
+
+
+       self.textFunction = self.functional.createFunctionInstance(
+           "ContentFunction",
+           ff.structure.Ff.ContentFunction,
+           [ self.fenPDF.structure.ff ])
+
+
        self.papers.update()
        # XXX Figure out get & create stuffs
        # We are essentially creating a DAG of objects and want to allow
@@ -80,6 +105,8 @@
 
        self.transclusionConnector = ff.view.buoy.TransclusionConnector(
                    self.fen, 
+                   self.functional,
+                   self.textFunction,
                    self.multiplexerNodeFunction)
 
        self.transclusionConnector.normalNodeNodeType = \
@@ -201,31 +228,67 @@
     def createAccursedNodeContentFunction(self):
 
        # accursed text
-       accursed_text = ff.view.TextNodeView(
-                       self.fen.txtfunc, 
-                       self.getTextStyle(), java.awt.Color.red)
-       accursed_dispatcher = ff.view.DispatchingNodeView(
-                       self.fen.txtfunc, accursed_text, 
-                       self.createPageNodeView(java.awt.Color.red))
-       return ff.swamp.CachedNodeFunction(
-                       10, self.fen.constgraph, accursed_dispatcher)
+       accursed_text = self.functional.createFunctionInstance(
+               "AccursedTextNodeView",
+               ff.view.TextNodeView,
+               [
+                       self.textFunction, 
+                       self.getTextStyle(), java.awt.Color.red
+               ])
+
+       accursed_page = self.functional.createFunctionInstance(
+           "AccursedPage",
+           ff.view.VobWrapperFunction,
+           [
+                   self.pageFunc,
+               vob.vobs.ContinuousLineVob(2,
+                   [0,0,0 , 1,0,0 , 1,1,0 , 0,1,0], 1, 100, java.awt.Color.red)
+           ])
+
+       accursed_dispatcher = self.functional.createFunctionInstance(
+           "AccursedDispatching",
+           ff.view.DispatchingNodeView,
+           [
+                       self.textFunction, accursed_text, 
+                       accursed_page
+           ])
+       return accursed_dispatcher
 
     def createNormalNodeContentFunction(self):
 
        # normal text
-       normal_text = ff.view.TextNodeView(
-                       self.fen.txtfunc, self.getTextStyle(), 
-                       java.awt.Color.black)
-       normal_dispatcher = ff.view.DispatchingNodeView(
-                       self.fen.txtfunc, normal_text, 
-                       self.createPageNodeView(java.awt.Color.black))
-       return ff.swamp.CachedNodeFunction(
-                       5000, self.fen.constgraph, normal_dispatcher)
+       normal_text = self.functional.createFunctionInstance(
+               "NormalTextNodeView",
+               ff.view.TextNodeView,
+               [
+                       self.textFunction, 
+                       self.getTextStyle(), java.awt.Color.black
+               ])
+
+       normal_page = self.functional.createFunctionInstance(
+           "AccursedPage",
+           ff.view.VobWrapperFunction,
+           [
+                   self.pageFunc,
+               vob.vobs.ContinuousLineVob(2,
+                   [0,0,0 , 1,0,0 , 1,1,0 , 0,1,0], 1, 100, 
java.awt.Color.black)
+           ])
+
+
+       normal_dispatcher = self.functional.createFunctionInstance(
+           "NormalDispatching",
+           ff.view.DispatchingNodeView,
+           [
+                       self.textFunction, normal_text, 
+                       normal_page
+           ])
+
+       return normal_dispatcher
 
     def createMultiplexerNodeContentFunction(self):
        return ff.swamp.MultiplexerNodeFunction(
-           self.normalNodeContentFunction,
-           self.accursedNodeContentFunction)
+           self.normalNodeContentFunction.getCallableFunction(),
+           self.accursedNodeContentFunction.getCallableFunction())
 
     def createCanvasView2D(self):
        canvasview2d = ff.view.CanvasView2D(
@@ -241,19 +304,12 @@
             irregu.debugFlags ^= ff.view.IrregularViewportView2D.DEBUG_CHILD
        return irregu
 
-    def createPageNodeView(self, color):
-
-        return ff.view.VobWrapperFunction(self.pageFunc,
-            vob.vobs.ContinuousLineVob(2,
-                [0,0,0 , 1,0,0 , 1,1,0 , 0,1,0], 1, 100, color))
                                                                     
 
-    def chg(self, object):
+    def chg(self):
        """Implement ObjObs for PageNodeFunction.
        We clear Accursed and NodeContent caches for the given entry.
        """
-       self.normalNodeContentFunction.flush(object)
-       self.accursedNodeContentFunction.flush(object)
        self.fenPDF.animation.regenerateVS(0)
        vob.AbstractUpdateManager.chgAfter(400)
        vob.AbstractUpdateManager.setNoAnimation()
@@ -265,34 +321,27 @@
            vob.vobs.RectBgVob(java.awt.Color.red), 200, 200)
        priorityOffset = 10
 
-       pview = ff.view.PageNodeView.Pure(self.fen.txtfunc, 
-                   self.papers.getSpanImageFactory())
-       pview = ff.swamp.SuperLazyPureNodeFunction(
-               400, self.fen.constgraph, pview,
-               placeholder, 
-               vob.util.PrioritizeBackground(
-                   vob.AbstractUpdateManager.getInstance(),
-                   priorityOffset),
-               self)
+       pview = self.functional.createFunctionInstance(
+           "PageNodeView",
+           ff.view.PageNodeView,
+           [
+               self.textFunction, 
+               self.papers.getSpanImageFactory()
+           ])
 
-       # XXX super-lazy cache
        return pview
 
     def createPageScrollView2D(self):
 
        priorityOffset = 11
-       function = ff.view.PageScroll2LayoutPureFunction(
-                       self.papers.getSpanImageFactory())
-       # super-lazy cache
-       function = ff.util.SuperLazyPureFunction(
-               200, function,
-               None, 
-               vob.util.PrioritizeBackground(
-                   vob.AbstractUpdateManager.getInstance(),
-                   priorityOffset),
-               self) # Wrong obj but doesn't matter
+       function = self.functional.createFunctionInstance(
+           "PageScroll2Layout",
+           ff.view.PageScroll2LayoutPureFunction,
+           [
+                       self.papers.getSpanImageFactory()
+           ])
 
-       pagescrollview2d = ff.view.PageScrollView2D(function)
+       pagescrollview2d = 
ff.view.PageScrollView2D(function.getCallableFunction())
 
        return ff.view.AreaSelectingView2D(pagescrollview2d)
 
Index: fenfire/org/fenfire/fenpdf/demospace.py
diff -u fenfire/org/fenfire/fenpdf/demospace.py:1.2 
fenfire/org/fenfire/fenpdf/demospace.py:1.3
--- fenfire/org/fenfire/fenpdf/demospace.py:1.2 Thu Aug 14 06:55:38 2003
+++ fenfire/org/fenfire/fenpdf/demospace.py     Wed Sep 10 09:00:46 2003
@@ -4,7 +4,7 @@
 from org.fenfire.vocab import RDF, CANVAS2D
 
 
-def createDemoSpace(fen, myAlph, treetime, ppActions):
+def createDemoSpace(fen, myAlph, treetime, ppActions, structure_ff):
     """Create a small space using a transclusion and structlinks.
     """
     paperA = "urn:urn-5:P7OMBN+yp3-m-AkulZN-NeaJV9Sl:_1"
@@ -36,7 +36,7 @@
     ppActions.assocNotes(noteA1, 1, noteA2);
 
     span = sc.getCurrent().getPage(0).subArea(100, 100, 300, 200);
-    fen.txt.set(noteA3, fen.enfMaker.makeEnfilade(span))
+    structure_ff.setContent(noteA3, fen.enfMaker.makeEnfilade(span))
 
 
     noteB1 = Nodes.get(ppActions.newNote(paperB, 1000,500, 'This is an another 
test!'))
@@ -61,6 +61,6 @@
     ppActions.assocNotes(noteA4, 1, noteC2)
     
 
-def createEmptySpace(fen, myAlph, treetime, ppActions):
+def createEmptySpace(fen, myAlph, treetime, ppActions, structure_ff):
     paper = ppActions.newPaper()
     ppActions.newNote(paper, 0, 0, "HOME")
Index: fenfire/org/fenfire/fenpdf/fenpdf.py
diff -u fenfire/org/fenfire/fenpdf/fenpdf.py:1.12 
fenfire/org/fenfire/fenpdf/fenpdf.py:1.13
--- fenfire/org/fenfire/fenpdf/fenpdf.py:1.12   Mon Sep  1 06:20:57 2003
+++ fenfire/org/fenfire/fenpdf/fenpdf.py        Wed Sep 10 09:00:46 2003
@@ -113,6 +113,7 @@
        alphContent
        canvas2d
        treeTime
+       ff -- org.fenfire.structure.Ff
 
     window -- the GraphicsAPI.window object
 
@@ -137,7 +138,7 @@
     not be used by anyone else.
     """
 
-    def __init__(self, fen, treeTime):
+    def __init__(self, fen, treeTime, structure_ff):
        self.fen = fen
 
        self.events = _Empty()
@@ -148,8 +149,9 @@
        self.uistate.menu = UIState_Menu()
 
 
+       self.structure.ff = structure_ff
        self.structure.structLink = ff.structure.StructLink.create(fen.graph)
-       self.structure.alphContent = ff.util.AlphContent(fen)
+       self.structure.alphContent = ff.util.AlphContent(fen, structure_ff)
        self.structure.canvas2d = ff.structure.Canvas2D.create(fen.graph)
        self.structure.treeTime = treeTime
 
Index: fenfire/org/fenfire/fenpdf/fenpdfcontext.py
diff -u fenfire/org/fenfire/fenpdf/fenpdfcontext.py:1.32 
fenfire/org/fenfire/fenpdf/fenpdfcontext.py:1.33
--- fenfire/org/fenfire/fenpdf/fenpdfcontext.py:1.32    Fri Sep  5 06:13:32 2003
+++ fenfire/org/fenfire/fenpdf/fenpdfcontext.py Wed Sep 10 09:00:46 2003
@@ -32,8 +32,8 @@
 global w
 
 class Cursor(ff.view.lava.Cursor):
-    def __init__(self, fen, multiplexer):
-        ff.view.lava.Cursor.__init__(self, fen)
+    def __init__(self, alphContent, multiplexer):
+        ff.view.lava.Cursor.__init__(self, alphContent)
         self.multiplexer = multiplexer
     def setAccursed(self, node):
         ff.view.lava.Cursor.setAccursed(self, node)
Index: fenfire/org/fenfire/index/impl/SpaceXuIndexer.java
diff -u fenfire/org/fenfire/index/impl/SpaceXuIndexer.java:1.9 
fenfire/org/fenfire/index/impl/SpaceXuIndexer.java:1.10
--- fenfire/org/fenfire/index/impl/SpaceXuIndexer.java:1.9      Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/index/impl/SpaceXuIndexer.java  Wed Sep 10 09:00:46 2003
@@ -26,9 +26,9 @@
 
 package org.fenfire.index.impl;
 import org.fenfire.*;
-import org.fenfire.impl.*;
 import org.fenfire.swamp.*;
 import org.fenfire.vocab.*;
+import org.fenfire.structure.Ff;
 import org.fenfire.util.*;
 import org.fenfire.index.*;
 import org.nongnu.alph.*;
@@ -38,18 +38,20 @@
 /** An index of xanadu links stored in a space.
  */
 public class SpaceXuIndexer implements XuIndexer {
-public static final String rcsid = "$Id: SpaceXuIndexer.java,v 1.9 2003/06/11 
17:00:24 tjl Exp $";
+public static final String rcsid = "$Id: SpaceXuIndexer.java,v 1.10 2003/09/10 
13:00:46 tjl Exp $";
     public static final boolean dbg = true;
     protected static void pa(String s) { System.out.println(s); }
 
     protected Fen fen;
+    protected Ff ff;
 
     protected MyIndex forwardIndex = new MyIndex(1),
                       backwardIndex = new MyIndex(2);
 
 
-    public SpaceXuIndexer(Fen fen) {
+    public SpaceXuIndexer(Fen fen, Ff ff) {
         this.fen = fen;
+       this.ff = ff;
     }
 
     protected class MyIndex implements Index {
@@ -108,17 +110,17 @@
     }
     */
 
-    /**                                      ,--ALPH:xuLinkFrom -> enfilade 
-     *      ALPH.xuType <--RDF:type --- id--<
+    /**         
+     *                                       ,--ALPH:xuLinkFrom -> enfilade 
+     *      ALPH.xuType <--RDF:type --- id--.
      *                                       '--ALPH:xuLinkTo-> enfilade
+     * 
      */
     public void add(XuLink l) {
        Object idnode = RDFUtil.N(fen.graph, CONTENTLINK.Link);
 
-       Literal from = ((org.fenfire.impl.SimpleNodeContent)fen.txt)
-                           .literalFromEnfilade(l.from);
-       Literal to = ((org.fenfire.impl.SimpleNodeContent)fen.txt)
-                           .literalFromEnfilade(l.to);
+       Literal from = ff.literalFromEnfilade(l.from);
+       Literal to = ff.literalFromEnfilade(l.to);
 
        fen.graph.add(idnode, CONTENTLINK.from, from);
        fen.graph.add(idnode, CONTENTLINK.to, to);
Index: fenfire/org/fenfire/modules/pp/PPActionsImpl.java
diff -u fenfire/org/fenfire/modules/pp/PPActionsImpl.java:1.37 
fenfire/org/fenfire/modules/pp/PPActionsImpl.java:1.38
--- fenfire/org/fenfire/modules/pp/PPActionsImpl.java:1.37      Thu Aug 21 
14:08:31 2003
+++ fenfire/org/fenfire/modules/pp/PPActionsImpl.java   Wed Sep 10 09:00:47 2003
@@ -29,6 +29,7 @@
 import org.fenfire.vocab.*;
 import org.fenfire.util.*;
 import org.fenfire.swamp.*;
+import org.fenfire.structure.Ff;
 import java.io.IOException;
 import java.rmi.*;
 import java.rmi.server.*;
@@ -36,7 +37,6 @@
 import java.util.ArrayList;
 
 import org.nongnu.alph.impl.*;
-import org.fenfire.impl.*;
 
 /** The implementation of PPActions.
  *  XXX Apparently there is a bug in UnicastRemoteObject
@@ -47,15 +47,15 @@
  *  @deprecated See org.fenfire.structure.StructLink and others
  */
 public class PPActionsImpl /*extends UnicastRemoteObject*/ implements 
PPActions {
-public static final String rcsid = "$Id: PPActionsImpl.java,v 1.37 2003/08/21 
18:08:31 tjl Exp $";
+public static final String rcsid = "$Id: PPActionsImpl.java,v 1.38 2003/09/10 
13:00:47 tjl Exp $";
     public static boolean dbg = false;
     protected static void p(String s) { System.out.println("PPActionsImpl: 
"+s); }
 
     private Fen fen = null;
     private AlphContent alphContent;
-    public void setFen(Fen fen) { 
+    public void setFen(Fen fen, Ff ff) { 
        this.fen = fen; 
-       this.alphContent = new AlphContent(fen);
+       this.alphContent = new AlphContent(fen, ff);
     }
 
     public org.fenfire.structure.TreeTime treeTime;
@@ -63,10 +63,10 @@
        return treeTime;
     }
 
-    public PPActionsImpl(Fen fen)  throws RemoteException {
+    public PPActionsImpl(Fen fen, Ff ff)  throws RemoteException {
        super();
        if(dbg) p("UnicastRemoteObject created");
-       setFen(fen);
+       setFen(fen, ff);
     }
 
     // --- Utilities
Index: fenfire/org/fenfire/modules/pp/lava/RSTActions.java
diff -u fenfire/org/fenfire/modules/pp/lava/RSTActions.java:1.2 
fenfire/org/fenfire/modules/pp/lava/RSTActions.java:1.3
--- fenfire/org/fenfire/modules/pp/lava/RSTActions.java:1.2     Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/modules/pp/lava/RSTActions.java Wed Sep 10 09:00:47 2003
@@ -25,7 +25,7 @@
  */
 
 package org.fenfire.modules.pp.lava;
-import org.fenfire.swamp.NodeFunction;
+import org.fenfire.functional.NodeFunction;
 
 import java.io.IOException;
 import java.rmi.RemoteException;
Index: fenfire/org/fenfire/modules/pp/lava/RSTActionsImpl.java
diff -u fenfire/org/fenfire/modules/pp/lava/RSTActionsImpl.java:1.3 
fenfire/org/fenfire/modules/pp/lava/RSTActionsImpl.java:1.4
--- fenfire/org/fenfire/modules/pp/lava/RSTActionsImpl.java:1.3 Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/modules/pp/lava/RSTActionsImpl.java     Wed Sep 10 
09:00:47 2003
@@ -36,12 +36,11 @@
 import java.util.Iterator;
 
 import org.nongnu.libvob.lava.placeable.Placeable;
-import org.fenfire.impl.*;
 
 /** The implementation of RSTActions.
  */
 public class RSTActionsImpl extends UnicastRemoteObject implements RSTActions {
-public static final String rcsid = "$Id: RSTActionsImpl.java,v 1.3 2003/06/11 
17:00:24 tjl Exp $";
+public static final String rcsid = "$Id: RSTActionsImpl.java,v 1.4 2003/09/10 
13:00:47 tjl Exp $";
     public static final boolean dbg = false;
     protected static void p(String s) { System.out.println("RSTActionsImpl: 
"+s); }
 
Index: fenfire/org/fenfire/modules/pp/lava/RSTUtil.java
diff -u fenfire/org/fenfire/modules/pp/lava/RSTUtil.java:1.2 
fenfire/org/fenfire/modules/pp/lava/RSTUtil.java:1.3
--- fenfire/org/fenfire/modules/pp/lava/RSTUtil.java:1.2        Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/modules/pp/lava/RSTUtil.java    Wed Sep 10 09:00:47 2003
@@ -25,7 +25,7 @@
  */
 
 package org.fenfire.modules.pp.lava;
-import org.fenfire.swamp.NodeFunction;
+import org.fenfire.functional.NodeFunction;
 
 import java.io.IOException;
 import java.rmi.RemoteException;
Index: fenfire/org/fenfire/modules/pp/lava/RSTUtilImpl.java
diff -u fenfire/org/fenfire/modules/pp/lava/RSTUtilImpl.java:1.3 
fenfire/org/fenfire/modules/pp/lava/RSTUtilImpl.java:1.4
--- fenfire/org/fenfire/modules/pp/lava/RSTUtilImpl.java:1.3    Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/modules/pp/lava/RSTUtilImpl.java        Wed Sep 10 
09:00:47 2003
@@ -29,6 +29,7 @@
 import org.fenfire.vocab.*;
 import org.fenfire.vocab.lava.RST;
 import org.fenfire.util.*;
+import org.fenfire.functional.*;
 import org.fenfire.swamp.*;
 import java.io.IOException;
 import java.rmi.*;
@@ -39,12 +40,10 @@
 
 import org.nongnu.alph.*;
 
-import org.fenfire.impl.*;
-
 /** The implementation of RSTActions.
  */
 public class RSTUtilImpl extends UnicastRemoteObject implements RSTUtil {
-public static final String rcsid = "$Id: RSTUtilImpl.java,v 1.3 2003/06/11 
17:00:24 tjl Exp $";
+public static final String rcsid = "$Id: RSTUtilImpl.java,v 1.4 2003/09/10 
13:00:47 tjl Exp $";
     public static boolean dbg = false;
     protected static void p(String s) { System.out.println("RSTUtilImpl: "+s); 
}
 
@@ -141,7 +140,8 @@
                    x += p.getWidth();
                    p("x: "+x+", w: "+p.getWidth()+" x+w: "+(x+p.getWidth()));
 
-                   p("content: `"+((Enfilade1D)fen.txtfunc.f(fen.constgraph, 
node)).makeString()+"`");
+                   // XXX Needs to be adjusted for new APIs
+                   // p("content: 
`"+((Enfilade1D)fen.txtfunc.f(fen.constgraph, node)).makeString()+"`");
 
                    node = fen.graph.find1_11X(node, RST.nextNode);
                }
Index: fenfire/org/fenfire/swamp/MultiplexerNodeFunction.java
diff -u fenfire/org/fenfire/swamp/MultiplexerNodeFunction.java:1.3 
fenfire/org/fenfire/swamp/MultiplexerNodeFunction.java:1.4
--- fenfire/org/fenfire/swamp/MultiplexerNodeFunction.java:1.3  Mon Sep  1 
06:20:58 2003
+++ fenfire/org/fenfire/swamp/MultiplexerNodeFunction.java      Wed Sep 10 
09:00:48 2003
@@ -26,6 +26,7 @@
 
 
 package org.fenfire.swamp;
+import org.fenfire.functional.*;
 import org.nongnu.libvob.*;
 import java.util.*;
 
Index: fenfire/org/fenfire/swamp/Nodes.java
diff -u fenfire/org/fenfire/swamp/Nodes.java:1.7 
fenfire/org/fenfire/swamp/Nodes.java:1.8
--- fenfire/org/fenfire/swamp/Nodes.java:1.7    Sat Sep  6 08:40:49 2003
+++ fenfire/org/fenfire/swamp/Nodes.java        Wed Sep 10 09:00:48 2003
@@ -27,6 +27,22 @@
 package org.fenfire.swamp;
 import org.fenfire.util.URN5Namespace;
 
+/** Mapping between URI strings and RDF nodes.
+ * One of swamp's main goals is efficiency, both in time and space.
+ * Space efficiency is not possible if we fix the node representation
+ * to be strings, as there may be a lot of nodes with long URIs.
+ * Therefore, nodes are currently opaque Objects (for best extensibility).
+ * <p>
+ * The implementation may change in the future without changing the Nodes API.
+ * <p>
+ * The following guarantees are given about RDF Nodes returned from
+ * the get() or N() methods of this class:
+ * <ul>
+ * <li> They can be compared using the == operator.
+ * <li> Their hash code will be the same as of the URI string and is therefore
+ *      stable between invocations.
+ * </ul>
+ */
 public class Nodes {
        public static Object get(String res) {
            return res.intern();
Index: fenfire/org/fenfire/swamp/observablegraphtest.py
diff -u fenfire/org/fenfire/swamp/observablegraphtest.py:1.9 
fenfire/org/fenfire/swamp/observablegraphtest.py:1.10
--- fenfire/org/fenfire/swamp/observablegraphtest.py:1.9        Mon Sep  1 
06:20:58 2003
+++ fenfire/org/fenfire/swamp/observablegraphtest.py    Wed Sep 10 09:00:48 2003
@@ -24,7 +24,8 @@
 from __future__ import nested_scopes
 
 import org
-from org.fenfire.swamp import Nodes, NodeFunction, CachedNodeFunction
+from org.fenfire.swamp import Nodes
+from org.fenfire.functional import NodeFunction, CachedNodeFunction
 
 _uriMaker = org.fenfire.util.URN5Namespace()
 _node = [Nodes.get(_uriMaker.generateId()) for i in range(0,20)]
Index: fenfire/org/fenfire/util/AlphContent.java
diff -u fenfire/org/fenfire/util/AlphContent.java:1.14 
fenfire/org/fenfire/util/AlphContent.java:1.15
--- fenfire/org/fenfire/util/AlphContent.java:1.14      Mon Jul  7 18:56:06 2003
+++ fenfire/org/fenfire/util/AlphContent.java   Wed Sep 10 09:00:48 2003
@@ -26,42 +26,41 @@
 
 package org.fenfire.util;
 import org.fenfire.*;
+import org.fenfire.structure.Ff;
 import org.nongnu.alph.*;
 import org.nongnu.alph.xml.*;
 
 import java.util.*;
 import java.io.*;
 
-
 /** Help class to work with Alph
  */
 public class AlphContent {
-public static final String rcsid = "$Id: AlphContent.java,v 1.14 2003/07/07 
22:56:06 mudyc Exp $";
+public static final String rcsid = "$Id: AlphContent.java,v 1.15 2003/09/10 
13:00:48 tjl Exp $";
     public static boolean dbg = false;
     private static void pa(String s) { System.out.println("AlphContent:: "+s); 
}
 
 
     private Fen fen;
-    public AlphContent( Fen fen) {
+    private Ff ff;
+    public AlphContent( Fen fen, Ff ff  ) {
        this.fen = fen;
+       this.ff = ff;
     }
 
     public String getText(Object node) {
-       return this.getText(fen.graph, node);
-    }
-    public String getText(org.fenfire.swamp.ConstGraph graph, Object node) {
-       Enfilade1D enf = (Enfilade1D)fen.txtfunc.f(graph, node);
+       Enfilade1D enf = (Enfilade1D)ff.getContent(node);
        return enf.makeString();
     }
 
     public void setText(Object node, String s, boolean user) {
-       fen.txt.set(node, fen.enfMaker.makeEnfilade(
+       ff.setContent(node, fen.enfMaker.makeEnfilade(
                (user ? fen.userSpanMaker : fen.fakeSpanMaker)
                        .makeTextSpan(s)));
     }
 
     public void insertText(Object node, int ind, String s, boolean user) {
-       Enfilade1D old = (Enfilade1D)fen.txtfunc.f(fen.constgraph, node);
+       Enfilade1D old = (Enfilade1D)ff.getContent(node);
 
        Enfilade1D enf = old.sub(0, ind);
        enf = enf.plus(
@@ -69,15 +68,15 @@
                .makeTextSpan(s));
        enf = enf.plus(old.sub(ind));
 
-       fen.txt.set(node, enf);
+       ff.setContent(node, enf);
     }
 
     public void deleteText(Object node, int begin, int end) {
-       Enfilade1D old = (Enfilade1D)fen.txtfunc.f(fen.constgraph, node);
+       Enfilade1D old = (Enfilade1D)ff.getContent(node);
        Enfilade1D enf = old.sub(0, begin);
        enf = enf.plus(old.sub(end));
 
-       fen.txt.set(node, enf);
+       ff.setContent(node, enf);
     }
 
 }
Index: fenfire/org/fenfire/util/SuperLazyBase.java
diff -u fenfire/org/fenfire/util/SuperLazyBase.java:1.1 
fenfire/org/fenfire/util/SuperLazyBase.java:1.2
--- fenfire/org/fenfire/util/SuperLazyBase.java:1.1     Sun Sep  7 08:55:46 2003
+++ fenfire/org/fenfire/util/SuperLazyBase.java Wed Sep 10 09:00:48 2003
@@ -1,11 +1,12 @@
 // (c) Tuomas J. Lukka
 
-package org.fenfire.util;
+package org.fenfire.functional;
 import java.util.*;
 import org.nongnu.navidoc.util.CachingMap;
 import org.nongnu.libvob.util.Background;
 import org.fenfire.*;
 import org.fenfire.util.*;
+import org.fenfire.functional.*;
 
 /** A base class for superlazy caches.
  */
Index: fenfire/org/fenfire/view/CanvasView2D.java
diff -u fenfire/org/fenfire/view/CanvasView2D.java:1.29 
fenfire/org/fenfire/view/CanvasView2D.java:1.30
--- fenfire/org/fenfire/view/CanvasView2D.java:1.29     Mon Sep  1 06:20:58 2003
+++ fenfire/org/fenfire/view/CanvasView2D.java  Wed Sep 10 09:00:48 2003
@@ -31,6 +31,7 @@
 import org.fenfire.view.buoy.*;
 import org.fenfire.vocab.*;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.fenfire.util.*;
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.gl.*;
@@ -45,7 +46,7 @@
 /** A View2D of a CANVAS2D, with a given node function.
  */
 public class CanvasView2D extends View2D implements NodedView2D, 
org.fenfire.view.lava.FastView {
-public static final String rcsid = "$Id: CanvasView2D.java,v 1.29 2003/09/01 
10:20:58 tjl Exp $";
+public static final String rcsid = "$Id: CanvasView2D.java,v 1.30 2003/09/10 
13:00:48 tjl Exp $";
     public static boolean dbg = false;
     private static void p(String s) { System.out.println("CanvasView2D:: "+s); 
}
     
Index: fenfire/org/fenfire/view/DispatchingNodeView.java
diff -u fenfire/org/fenfire/view/DispatchingNodeView.java:1.3 
fenfire/org/fenfire/view/DispatchingNodeView.java:1.4
--- fenfire/org/fenfire/view/DispatchingNodeView.java:1.3       Mon Sep  1 
06:20:58 2003
+++ fenfire/org/fenfire/view/DispatchingNodeView.java   Wed Sep 10 09:00:48 2003
@@ -27,6 +27,7 @@
  */
 package org.fenfire.view;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.nongnu.alph.*;
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.vobs.*;
@@ -34,7 +35,7 @@
 /** A node view dispatching to different other
  *  node views depending on a node content's type.
  */
-public class DispatchingNodeView implements NodeFunction {
+public class DispatchingNodeView implements PureNodeFunction {
 
     final NodeFunction nodeContent;
     final NodeFunction textView, pageView;
Index: fenfire/org/fenfire/view/PageNodeView.java
diff -u fenfire/org/fenfire/view/PageNodeView.java:1.6 
fenfire/org/fenfire/view/PageNodeView.java:1.7
--- fenfire/org/fenfire/view/PageNodeView.java:1.6      Mon Sep  1 06:20:58 2003
+++ fenfire/org/fenfire/view/PageNodeView.java  Wed Sep 10 09:00:48 2003
@@ -28,6 +28,7 @@
 package org.fenfire.view;
 import org.fenfire.spanimages.*;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.nongnu.alph.*;
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.vobs.*;
@@ -36,17 +37,10 @@
 /** A node function returning a vob that shows
  *  the given node as a pageimage or sequence of pages.
  */
-public class PageNodeView implements NodeFunction {
+public class PageNodeView implements PureNodeFunction {
 
     final NodeFunction nodeContent;
     final SpanImageFactory spanImageFactory;
-
-    public static class Pure extends PageNodeView implements PureNodeFunction {
-       public Pure(PureNodeFunction nodeContent,
-                   SpanImageFactory spanImageFactory) {
-           super(nodeContent, spanImageFactory);
-       }
-    }
 
     public PageNodeView(NodeFunction nodeContent,
                        SpanImageFactory spanImageFactory) {
Index: fenfire/org/fenfire/view/PageScroll2LayoutPureFunction.java
diff -u fenfire/org/fenfire/view/PageScroll2LayoutPureFunction.java:1.1 
fenfire/org/fenfire/view/PageScroll2LayoutPureFunction.java:1.2
--- fenfire/org/fenfire/view/PageScroll2LayoutPureFunction.java:1.1     Mon Sep 
 1 06:20:58 2003
+++ fenfire/org/fenfire/view/PageScroll2LayoutPureFunction.java Wed Sep 10 
09:00:48 2003
@@ -3,7 +3,7 @@
 package org.fenfire.view;
 import org.nongnu.alph.*;
 import org.fenfire.spanimages.*;
-import org.fenfire.util.PureFunction;
+import org.fenfire.functional.PureFunction;
 
 /** A (non-node)function which takes a PageScrollBlock and returns
  * a PageSpanLayout.
Index: fenfire/org/fenfire/view/PageScrollView2D.java
diff -u fenfire/org/fenfire/view/PageScrollView2D.java:1.11 
fenfire/org/fenfire/view/PageScrollView2D.java:1.12
--- fenfire/org/fenfire/view/PageScrollView2D.java:1.11 Mon Sep  1 06:20:58 2003
+++ fenfire/org/fenfire/view/PageScrollView2D.java      Wed Sep 10 09:00:48 2003
@@ -26,7 +26,7 @@
  */
 package org.fenfire.view;
 import org.fenfire.spanimages.*;
-import org.fenfire.util.Function;
+import org.fenfire.functional.Function;
 import org.nongnu.libvob.VobScene;
 import org.nongnu.alph.*;
 import org.fenfire.swamp.*;
Index: fenfire/org/fenfire/view/TextNodeView.java
diff -u fenfire/org/fenfire/view/TextNodeView.java:1.21 
fenfire/org/fenfire/view/TextNodeView.java:1.22
--- fenfire/org/fenfire/view/TextNodeView.java:1.21     Mon Aug 18 09:05:11 2003
+++ fenfire/org/fenfire/view/TextNodeView.java  Wed Sep 10 09:00:48 2003
@@ -27,6 +27,7 @@
  */
 package org.fenfire.view;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.nongnu.alph.*;
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.linebreaking.*;
@@ -40,7 +41,7 @@
  * The maximum size of a single line is determined by <pre>width</pre>.
  */
 public class TextNodeView implements PureNodeFunction {
-    public static final String rcsid = "$Id: TextNodeView.java,v 1.21 
2003/08/18 13:05:11 humppake Exp $";
+    public static final String rcsid = "$Id: TextNodeView.java,v 1.22 
2003/09/10 13:00:48 tjl Exp $";
 
     public static boolean dbg = false;
     private static void pa(String s) { System.out.println("TextNodeView::"+s); 
}
Index: fenfire/org/fenfire/view/VobWrapperFunction.java
diff -u fenfire/org/fenfire/view/VobWrapperFunction.java:1.5 
fenfire/org/fenfire/view/VobWrapperFunction.java:1.6
--- fenfire/org/fenfire/view/VobWrapperFunction.java:1.5        Mon Sep  1 
06:20:58 2003
+++ fenfire/org/fenfire/view/VobWrapperFunction.java    Wed Sep 10 09:00:48 2003
@@ -2,6 +2,7 @@
 
 package org.fenfire.view;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.nongnu.libvob.*;
 import org.nongnu.libvob.vobs.*;
 
Index: fenfire/org/fenfire/view/buoy/PPConnector.java
diff -u fenfire/org/fenfire/view/buoy/PPConnector.java:1.21 
fenfire/org/fenfire/view/buoy/PPConnector.java:1.22
--- fenfire/org/fenfire/view/buoy/PPConnector.java:1.21 Wed Aug 20 12:34:33 2003
+++ fenfire/org/fenfire/view/buoy/PPConnector.java      Wed Sep 10 09:00:48 2003
@@ -27,6 +27,7 @@
 package org.fenfire.view.buoy;
 import org.fenfire.*;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.fenfire.view.*;
 import org.fenfire.view.buoy.*;
 import org.fenfire.util.*;
@@ -40,7 +41,7 @@
 /** Make the kinds of links familiar from PP structure.
  */
 public class PPConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: PPConnector.java,v 1.21 2003/08/20 
16:34:33 tjl Exp $";
+public static final String rcsid = "$Id: PPConnector.java,v 1.22 2003/09/10 
13:00:48 tjl Exp $";
     public static boolean dbg = false;
     private static void p(String s) { System.out.println("PPConnector:: "+s); }
 
Index: fenfire/org/fenfire/view/buoy/TransclusionConnector.java
diff -u fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.25 
fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.26
--- fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.25       Mon Sep 
 1 06:20:58 2003
+++ fenfire/org/fenfire/view/buoy/TransclusionConnector.java    Wed Sep 10 
09:00:48 2003
@@ -32,6 +32,7 @@
 import org.nongnu.alph.*;
 import org.fenfire.*;
 import org.fenfire.swamp.*;
+import org.fenfire.functional.*;
 import org.fenfire.view.*;
 import org.fenfire.view.buoy.*;
 import org.fenfire.util.*;
@@ -44,7 +45,7 @@
 /** Hang transclusion buoys.
  */
 public class TransclusionConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: TransclusionConnector.java,v 1.25 
2003/09/01 10:20:58 tjl Exp $";
+public static final String rcsid = "$Id: TransclusionConnector.java,v 1.26 
2003/09/10 13:00:48 tjl Exp $";
     public static boolean dbg = false;
     private static void p(String s) { 
System.out.println("TransclusionConnector:: "+s); }
 
@@ -55,11 +56,16 @@
     public AbstractNodeType2D normalNodeNodeType;
 
     protected NodeFunction nodeView;
+    protected Function textFunction;
 
-    // Function: node -> pair(scrollblock, View2D.Anchor)
-    private class SB4Node implements PureNodeFunction {
+    // Function: node -> View2D.Anchor on the scrollblock node
+    public static class SB4Node implements PureNodeFunction {
+       NodeFunction txtfunc;
+       public SB4Node(NodeFunction txtfunc) {
+           this.txtfunc = txtfunc;
+       }
        public Object f(ConstGraph g, Object node) {
-           Enfilade1D enf = (Enfilade1D)fen.txtfunc.f(g, node);
+           Enfilade1D enf = (Enfilade1D)txtfunc.f(g, node);
            List l = enf.getList();
            if(l.size() < 1) return null;
 
@@ -112,13 +118,31 @@
 
     }
 
-    NodeFunction scrollBlockForNode ;
+    Function scrollBlockForNode ;
 
 
-    public TransclusionConnector(Fen fen, NodeFunction nodeView) {
+    /** Create a new TransclusionConnector.
+     * @param functional The Functional instance to use for
+     *                         creating functions needed inside this class
+     * @param textFunction The node function: node to enfilade
+     *                         for getting the contents of nodes.
+     * @param nodeView A NodeFunction: node to placeable, for getting
+     *                         the real sizes of nodes. 
+     */
+    public TransclusionConnector(Fen fen, Functional functional,
+           FunctionInstance textFunction,
+           NodeFunction nodeView) {
        this.fen = fen;
-       this.scrollBlockForNode = new CachedPureNodeFunction(1000,
-                   fen.constgraph, new SB4Node());
+       this.textFunction = textFunction.getCallableFunction();
+
+       this.scrollBlockForNode = 
+           functional.createFunctionInstance(
+                   "node2scrollBlockAnchor",
+                   SB4Node.class,
+                   new Object[] {
+                       textFunction
+                   }).getCallableFunction();
+
        this.nodeView = nodeView;
     }
 
@@ -138,7 +162,7 @@
             for(Iterator i=m.getKeys(containerCS).iterator(); i.hasNext();) {
                 Object node = i.next();
 
-               View2D.Anchor anchor = 
(View2D.Anchor)this.scrollBlockForNode.f(fen.constgraph, node);
+               View2D.Anchor anchor = 
(View2D.Anchor)this.scrollBlockForNode.f(node);
                if(dbg) p("node: "+node+", anchor: "+anchor);
                if(anchor == null) continue;
 
@@ -170,7 +194,7 @@
 
                    // get all pageimage spans and make anchor cs for them.
                    // dumb version first
-                   Enfilade1D enf = (Enfilade1D)fen.txtfunc.f(fen.graph, node);
+                   Enfilade1D enf = (Enfilade1D)textFunction.f(node);
                    PageImageSpan img = (PageImageSpan)enf.getList().get(0);
                    if (dbg) p("point: "+img.getLocation()+ ", size: 
"+img.getSize());
                    Point p = img.getLocation();
@@ -206,7 +230,8 @@
        float x = RDFUtil.getFloat(fen.graph, node, CANVAS2D.x);
        float y = RDFUtil.getFloat(fen.graph, node, CANVAS2D.y);
        org.nongnu.libvob.lava.placeable.Placeable p = 
-               
(org.nongnu.libvob.lava.placeable.Placeable)nodeView.f(fen.constgraph, node);
+               (org.nongnu.libvob.lava.placeable.Placeable)nodeView.f(
+                                               fen.constgraph, node);
        float w,h;
        if(p != null) {
            w = p.getWidth();
Index: fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java
diff -u fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java:1.5 
fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java:1.6
--- fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java:1.5        Thu Aug 
21 14:31:02 2003
+++ fenfire/org/fenfire/view/buoy/lava/MindMapConnector.java    Wed Sep 10 
09:00:49 2003
@@ -36,6 +36,7 @@
 import org.fenfire.view.buoy.*;
 import org.fenfire.util.*;
 import org.fenfire.vocab.*;
+import org.fenfire.functional.*;
 import org.fenfire.vocab.lava.*;
 
 import java.util.Iterator;
@@ -45,7 +46,7 @@
  * First only canvas perhaps (later more).
  */
 public class MindMapConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: MindMapConnector.java,v 1.5 
2003/08/21 18:31:02 tjl Exp $";
+public static final String rcsid = "$Id: MindMapConnector.java,v 1.6 
2003/09/10 13:00:49 tjl Exp $";
     public static boolean dbg = false;
     private static void p(String s) { System.out.println("MindMapConnector:: 
"+s); }
 
Index: fenfire/org/fenfire/view/lava/Cursor.java
diff -u fenfire/org/fenfire/view/lava/Cursor.java:1.3 
fenfire/org/fenfire/view/lava/Cursor.java:1.4
--- fenfire/org/fenfire/view/lava/Cursor.java:1.3       Sun Aug 17 15:55:02 2003
+++ fenfire/org/fenfire/view/lava/Cursor.java   Wed Sep 10 09:00:49 2003
@@ -38,15 +38,10 @@
  */
 public class Cursor {
 
-    public Cursor(Fen fen) { 
-       setFen(fen);
+    private AlphContent alph;
+    public Cursor(AlphContent alph) { 
+       this.alph = alph;
     }
-
-    private AlphContent alph = null;
-    public void setFen(Fen fen) {
-       alph = new AlphContent(fen);
-    }
-
 
     private int cursorOffset = 0;
 




reply via email to

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