Revision: 3604
          http://vexi.svn.sourceforge.net/vexi/?rev=3604&view=rev
Author:   clrg
Date:     2009-08-14 13:40:53 +0000 (Fri, 14 Aug 2009)

Log Message:
-----------
jsdoc/reference updates:
- add support for documentation in .java files
- move Surface reference to Surface.java
- some trivial clean up, improvement of Box docs
- use some stylistic css from XWT reference

Modified Paths:
--------------
    trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
    trunk/core/org.vexi.core/src/org/vexi/core/Surface.java
    trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
    trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/JSDoc.java
    trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/Scraper.java
    trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/VexiPath.java
    trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/page.ftl
    trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/style.css
    trunk/tools/vexitools.jsdoc/src_dev/vexi/jsdoc/RunOnVexi.java

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2009-08-13 23:00:06 UTC 
(rev 3603)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2009-08-14 13:40:53 UTC 
(rev 3604)
@@ -90,16 +90,24 @@
  * </dl>
  * 
  * <h4>Placing</h4>
+ * <p>The width of a box is assigned width according to the following 
rules:</p>
+ * <ol><li>It's width is never greater than its maxwidth</li>
+ *     <li>It's width is never less than its contentwidth, with the exception 
of #4</li>
+ *     <li>If a box is shrunk, the will always be set to contentwidth, with 
the exception of #4</li>
+ *     <li>If a box's maxwidth is less than it's contentwidth, the maxwidth is 
used</li></ol>
+ * 
  * <p>Boxes are placed in order in the space allocated to them by the parent 
box:</p>
  * <dl>
  *   <dt><code>"place"</code> or <code>"layer"</code></dt>
  *   <dd><p>A box is offset by the value of it's x and y properties from the 
alignment point of
- *     the parent. A box will be as wide as</p></dd>
+ *     the parent. A box will be as wide as the space between it's offset x 
coordinate
+ *     and the parents rightmost edge.</p></dd>
  *   <dt><code>"layer"</code> or <code>"pack"</code> with 
<code>"vertical"</code> orient</dt>
  *   <dd><p>The maximum of the constrained child widths</p></dd>
  *   <dt><code>"pack"</code> with <code>"horizontal"</code> orient</dt>
  *   <dd><p>The accumulation of the constrained child widths</p></dd>
  * </dl>
+ * 
  * <h4Rendering</h4>
  * <p>A box tree is rendered in a depth-first pre-order traversal, starting 
with the root box.</p>
  * <ol>
@@ -135,7 +143,7 @@
  *      </li>
  *  </ol>
  *
- *  <p>The combination of the first two passes is the <i>reflow</i>
+ *  <p>The combination of the first two passes is the <em>reflow</em>
  *     phase.  Reflowing is done in a seperate pass since changes to
  *     frame widths/heights trigger an abort of the rendering process
  *     through Surface.abort; if rendering were done in the same pass,
@@ -1161,6 +1169,7 @@
         
         int i;
         boolean interrupted = false;
+        
         // absolute layout - allows for interruption by overlaying siblings
         if (!test(PACK)) {
             for (Box b = getChild(i=treeSize()-1); b != null; b = 
getChild(--i)) {
@@ -1329,18 +1338,18 @@
              * object's properties.</p>
              * 
              * <p>Note that every time you use the Box.distanceto(Box) 
function, it creates a
-             * different object. </p>
+             * different object.</p>
              * */
             /* The originating box. @type(Box)  */
             case "from": return from;
             /* The target box. @type(Box) */
             case "to": return to;
             /* <em>Read only</em> property representing the horizontal 
distance between target
-             * box�s (0,0) coordinate and the originating box�s (0,0) 
coordinate. 
+             * box's (0,0) coordinate and the originating box's (0,0) 
coordinate. 
              * @type(Number) */
             case "x": return JSU.N(localToGlobalX(to, 0) - 
localToGlobalX(from, 0));
             /* <em>Read only</em> property representing the vertical  distance 
between target
-             * box�s (0,0) coordinate and the originating box�s (0,0) 
coordinate. 
+             * box's (0,0) coordinate and the originating box's (0,0) 
coordinate. 
              * @type(Number) */
             case "y": return JSU.N(localToGlobalY(to, 0) - 
localToGlobalY(from, 0));
             //#end
@@ -1523,7 +1532,7 @@
          * @initial_value(N/A,code=false)
          * @type(Box)
          */
-        //also "<i>numeric properties</i>":
+        //also "<em>numeric properties</em>":
 
         /* <p>The layout strategy for a box - how it lays out it's 
children.</p>
          * 
@@ -1563,11 +1572,20 @@
          * @type(Box)
          * */
         case "redirect": return redirect == null ? null : redirect == this ? 
JSU.T : redirect.getAndTriggerTraps(SC_redirect);
-        /* 
+        /* <p>Add a new child to the end of the box's children It is the 
equivalent of the
+         * following VexiScript:</p>
+         * <pre>box[box.numchildren] = child;</pre>
+         * 
+         * @method
+         * @param(b)
          * @return(null)
          * */
         case "add": return METHOD;
-        /* 
+        /* <p>Clears a box of its children:</p>
+         * <pre>while (box.numchildren) box[0] = null;</pre>
+         * 
+         * @method
+         * @param()
          * @return(null)
          * */
         case "clear": return METHOD;
@@ -1579,12 +1597,11 @@
          * @return(Number)
          * */
         case "indexof": return redirect == this ? METHOD : 
redirect.getAndTriggerTraps(SC_indexof);
-        /* <p>The Children property is a <span 
class="emphasis"><em>meta-property</em></span> 
-         * representing a gateway for accessing the children of a box.</p>
+        /* <p>The Children property is a <em>meta-property</em>  representing 
a gateway for
+         * accessing the children of a box.</p>
          * 
          * <p>Placing a trap on this lets a box receive notification when a 
child is accessed
-         * using a numeric index - see <span class="emphasis"><em>numeric 
properties</em></span>.
-         * </p>
+         * using a numeric index - see <em>numeric properties</em>.</p>
          * 
          * <p>In a read or write trap placed on the Children property, the 
index is accessible as
          * arguments.trapname and modifying this value will cascade a new 
index up the trap chain.
@@ -1607,7 +1624,7 @@
          * </p>
          * 
          * @initial_value(N/A,code=false)
-         * @type(<i>N/A</i>)
+         * @type(<em>N/A</em>)
          * */
         //also "Children": 
         
@@ -1645,8 +1662,7 @@
          * */
         case "vshrink": return JSU.B(test(VSHRINK));
         
-        /* 
-         * <p>If a box is a surface, this is the (x, y) coordinates of the 
surface.</p>
+        /* <p>If a box is a surface, this is the (x, y) coordinates of the 
surface.</p>
          * 
          * <p>Otherwise it is the distance between a parent's alignment point 
and the box's
          * alignment point.</p>
@@ -1659,6 +1675,7 @@
          * */
         case "x": return JSU.N(x);
         case "y": return JSU.N(y);
+        
         /* <p>When read, this is the width and height of a box.</p>
          * 
          * <p>Putting to <code>width</code> or <code>height</code is the 
equivalent of putting the
@@ -1670,8 +1687,8 @@
          * */
         case "width": return (minwidth==maxwidth) ? JSU.N(minwidth) : 
JSU.N(width);
         case "height": return (minheight==maxheight) ? JSU.N(minheight) : 
JSU.N(height);
-        /* <p>The <span class="emphasis"><em>minimum</em></span> width and 
height a box may be in
-         * pixels.</p>
+        
+        /* <p>The <em>minimum</em> width and height a box may be in pixels.</p>
          * 
          * <p>A box will never be smaller than its min-dimension properties 
with the exception of
          * when the corresponding max-dimension property is set to a lower 
value.</p>
@@ -1682,8 +1699,8 @@
          * */
         case "minwidth": return JSU.N(minwidth);
         case "minheight": return JSU.N(minheight);
-        /* <p>The <span class="emphasis"><em>maximum</em></span> width and 
height a box may be in
-         * pixels.</p>
+        
+        /* <p>The <em>maximum</em> width and height a box may be in pixels.</p>
          * 
          * <p>A box will never be larger than its max-dimension 
properties.</p> 
          * 
@@ -1715,8 +1732,7 @@
          * @initial_value(true)
          * */
         case "display": return JSU.B(test(DISPLAY));
-        /* <p><span class="emphasis"><em>Read only</em></span> property 
describing the visible
-         * status of this box.</p>
+        /* <p><em>Read only</em> property describing the visible status of 
this box.</p>
          * 
          * <p>Reads <code>false</code> if an ascendent box has its 
<code>display</code> property
          * set to <code>false</code> or if the root box is not attached to a 
surface. Otherwise it
@@ -1727,7 +1743,6 @@
          * */
         case "visible": return JSU.B(test(DISPLAY) && (parent!=null ? 
parent.isVisible() : Surface.fromBox(this)!=null));
         
-       
         
         
         
/*****************************************************************************************/
@@ -1757,12 +1772,12 @@
         /* @constructor @notmethod @jpp(Box) */
         case "mouse": return getSurface() == null ? null : new Mouse();
         case "sendEvent": return METHOD; 
-        /* <p> If a box has a parent, this property returns parent.surface; 
otherwise it returns 
+        /* <p>If a box has a parent, this property returns parent.surface; 
otherwise it returns 
          * null. This property is a simple building block that the widget 
library uses to implement
          * more complex functionality such as focus control and popups.</p>
          * 
          * @initial_value(null)
-         * @type(<i>varies</i>)
+         * @type(<em>varies</em>)
          */
         case "surface": return getSurfaceObject(parent);
         /* Returns a reference of a box to itself. If <code>null</code> is 
written to this
@@ -1978,6 +1993,8 @@
         case "sendEvent":   isReadOnly(name);
         case "indexof":     isReadOnly(name);
         case "distanceto":  isReadOnly(name);
+        case "add":         isReadOnly(name);
+        case "clear":       isReadOnly(name);
         case "mouse":       isReadOnly(name);
         case "cursor":
             super.put(name, value);

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Surface.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Surface.java     2009-08-13 
23:00:06 UTC (rev 3603)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Surface.java     2009-08-14 
13:40:53 UTC (rev 3604)
@@ -19,8 +19,24 @@
 import org.vexi.plat.Platform;
 import org.vexi.util.DirtyList;
 
-/** 
- *  A Surface, as described in the Vexi Reference.
+/*...@page(concept=Surfaces)
+ * 
+ * <p>Each top-level window in a Vexi UI is called a <i>surface</i>. There are 
two kinds of
+ * surfaces: <i>frames</i>, which usually have a platform-specific titlebar 
and border, and
+ * <i>windows</i>, which never have any additional platform-specific 
decorations.</p>
+ * 
+ * <p>Whenever we refer to the size or position of a surface, we are referring 
to the size or
+ * position of the UI-accessible portion of the surface; this does not include 
any
+ * platform-specific decorations. This means that if you set the position of a 
frame to (0,0), the
+ * platform-specific titlebar will actually be off the screen on most 
platforms (it will be above
+ * and to the left of the top-left corner of the screen).</p>
+ * 
+ * <p>Surfaces are not actual JavaScript objects; you cannot obtain a 
reference to a surface. 
+ * However, each surface is uniquely identified by its <i>root box</i>.</p>
+ * 
+ */
+
+/** A Surface, as described in the Vexi Reference.
  *
  *  Platform subclasses should include an inner class subclass of
  *  Surface to return from the Platform._createSurface() method
@@ -231,8 +247,7 @@
         }
     };
 
-    /**
-     *  Notify Vexi that the mouse has moved. If the mouse leaves the
+    /** Notify Vexi that the mouse has moved. If the mouse leaves the
      *  surface, but the host windowing system does not provide its new
      *  position (for example, a Java MouseListener.mouseExited()
      *  message), the subclass should use (-1,-1).
@@ -276,7 +291,7 @@
         public Object run(Object o) throws Exception {
             // no preevent JS means a single trigger on the root box
             if (preevent==null) {
-                JS ret = Main.SCHEDULER.justTriggerTraps(surface.root,event, 
value);
+                JS ret = surface.root.justTriggerTraps(event, value);
                 if (Interpreter.CASCADE_PREVENTED != ret && (event==SC_Close))
                     surface.dispose(true);
                 eventstack.push(this);
@@ -374,7 +389,7 @@
         }
     };
 
-    /** Notify Vexi that the surface (ie frame or window) has moved */
+    /** notify Vexi that the surface (ie frame or window) has moved */
     protected final void PosChange(int x, int y) {
         if (this.x == x && this.y == y) return;
         this.x = x;
@@ -430,8 +445,8 @@
 
     // Core Surface Logic 
///////////////////////////////////////////////////////////////////////////////
 
-    /** refresh handles interacting with the scheduler - it needs
-     * to be synchronized to prevent scheduled 
+    /** Refresh handles interacting with the scheduler - it needs
+     *  to be synchronized to prevent scheduled 
      */
     private boolean scheduled = false;
     final public synchronized void Refresh() {
@@ -521,23 +536,23 @@
         if (firevisible && trapchain!=null) trapchain.finishTraps();
         
         // handle frame-specific box properties
-        JS title = Main.SCHEDULER.getAndTriggerTraps(b,SC_frametitle);
+        JS title = b.getAndTriggerTraps(SC_frametitle);
         if (title == null || JSU.toString(title).trim().equals(""))
             surface.setTitleBarText("Vexi Application");
         else surface.setTitleBarText(JSU.toString(title));
         
-        JS icon = Main.SCHEDULER.getAndTriggerTraps(b,SC_frameicon);
+        JS icon = b.getAndTriggerTraps(SC_frameicon);
         surface.setIcon(icon);
         
-        JS align = Main.SCHEDULER.getAndTriggerTraps(b,SC_framealign);
+        JS align = b.getAndTriggerTraps(SC_framealign);
         surface.setAlign(align == null ? null : JSU.toString(align));
         
         Rectangle s = Platform.getScreenBounds();
         
-        JS framewidth = Main.SCHEDULER.getAndTriggerTraps(b,SC_framewidth);
+        JS framewidth = b.getAndTriggerTraps(SC_framewidth);
         int w = framewidth != null ? JSU.toInt(framewidth) : s.width/2;
         
-        JS frameheight = Main.SCHEDULER.getAndTriggerTraps(b,SC_frameheight);
+        JS frameheight = b.getAndTriggerTraps(SC_frameheight);
         int h = frameheight != null ? JSU.toInt(frameheight) : s.height/2;
         surface.setSize(w, h);
         
@@ -583,7 +598,10 @@
             final int rheight = root.height;
             final int scar_y = rheight-scarImage.height;
             for (int i = 0; dirt != null && i < numregions; i++) {
+                // DirtyList indicates invalid dirty rects (4 consecutive
+                // ints in dirt) by marking the first coordinate -1
                 if (dirt[4*i]<0) continue;
+                // extract dirty area coordinates
                 int x = dirt[4*i], y = dirt[4*i+1], w = dirt[4*i+2], h = 
dirt[4*i+3];
                 if (x < 0) x = 0;
                 if (y < 0) y = 0;
@@ -700,7 +718,7 @@
     
     static int counter=0;
     int id=counter++;
-    public String toString(){
+    public String toString() {
         return "Surface " + id;
     }
 }

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2009-08-13 23:00:06 UTC 
(rev 3603)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2009-08-14 13:40:53 UTC 
(rev 3604)
@@ -110,16 +110,14 @@
  *   </dl>
  *   
  *  <h3><a name="Acknowledgements"/>Acknowledgements</h3> 
- *  <h4>Charles Goodwin</h4>
- *    <a href="http://www.webenableit.com/"; target="_top">Web Enable IT Ltd</a>
- *    <br>&lt;<a 
href="mailto:[email protected]";>[email protected]</a>&gt;</code>
- *  <h4>Adam Megacz</h4>
- *    <p>Inspired by and contains modified portions of the XWT Reference 
authored by Adam Megacz.</p>
- *  <h4>Adam Andrews</h4>
- *    <p>Contains modified portions of the Vexi 1.0 Function Reference 
authored by Adam Andrews.</p>
- *    <a href="http://www.rocketlogic.com/"; target="_top">Rocket Logic Inc</a>
- *    
- *    <br><br><p>Copyright \xA9 2009 The Vexi Project</p>
+ *  <h4>Charles Goodwin &lt;<a 
href="mailto:[email protected]";>[email protected]</a>&gt;</h4>
+ *    <p><a href="http://www.webenableit.com/"; target="_top">Web Enable IT 
Ltd</a></p>
+ *    <p><a href="http://www.charlesgoodwin.co.uk"; 
target="_top">www.charlesgoodwin.co.uk</a></p>
+ *  <h4>Adam Megacz (<a href="http://www.megacz.com"; 
target="_top">www.megacz.com</a>)</h4>
+ *    <p><a href="http://xwt.org";>XWT Project</a></p>
+ *    <p>Inspired by and contains modified portions of the XWT Reference 
authored by Adam Megacz</p>
+ *  <h4>Adam Andrews (<a href="http://www.aftinc.net/"; target="_top">AFT, 
Inc.</a>)</h4>
+ *    <p>Contains modified portions of the Vexi 1.0 Function Reference 
authored by Adam Andrews</p>
  *   
  * */
 
@@ -150,27 +148,10 @@
  * 
  * */
 
-/*...@page(concept=Surfaces)
- * 
- * <p>Each top-level window in a Vexi UI is called a <i>surface</i>. There are 
two kinds of
- * surfaces: <i>frames</i>, which usually have a platform-specific titlebar 
and border, and
- * <i>windows</i>, which never have any additional platform-specific 
decorations. </p>
- * 
- * <p>Whenever we refer to the size or position of a surface, we are referring 
to the size or
- * position of the UI-accessible portion of the surface; this does not include 
any
- * platform-specific decorations. This means that if you set the position of a 
frame to (0,0), the
- * platform-specific titlebar will actually be off the screen on most 
platforms (it will be above
- * and to the left of the top-left corner of the screen).</p>
- * 
- * <p>Surfaces are not actual JavaScript objects; you cannot obtain a 
reference to a surface. 
- * However, each surface is uniquely identified by its <i>root box</i>.</p>
- * 
- */
 
 
 
 
-
 /*...@page(concept=Templates)
  * 
  *   <p>Reusable widgets can be created in Vexi by defining them in templates. 
 Templates are plain
@@ -182,27 +163,29 @@
  *   used for creating documentation which is ignored by the parser - thus can 
contain
  *   non-resolving references in XML and textual content that is not 
VexiScript.</p>
  *   <pre>
+ *   <!-- root tag is always &lt;vexi&gt; and it contains any namespace 
definitions -->
  *   &lt;vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" 
xmlns="vexi.widget"&gt;
  *        &lt;meta:doc&gt;This is for documenting the template&lt;/meta:doc&gt;
  *        
  *        // static content may go here
+ *        static.defaulticon = "default";
  *        
  *        // preapply followed by template
  *        &lt;button /&gt;
  *        &lt;ui:box&gt;
- *        // template content begins here
- *        &lt;icon id="icon" /&gt;
- *        &lt;label id="label" /&gt;
+ *            // template content begins here
+ *            &lt;icon id="icon" /&gt;
+ *            &lt;label id="label" /&gt;
  *        
- *        // JS code here
- *        icon ++= function(v) { $icon.icon = v; cascade = v; }
- *        text ++= function(v) { $label.text = v; return; }
+ *            // JS code here
+ *            icon ++= function(v) { $icon.icon = v==null ? static.defaulticon 
: v; cascade = v; }
+ *            text ++= function(v) { $label.text = v; return; }
  *        
  *        &lt;ui:box&gt;
  *        
  *        // static content may go here
  *        
- *        &lt;/vexi&gt;
+ *    &lt;/vexi&gt;
  *   </pre>
  *   
  * 
@@ -397,10 +380,10 @@
         case "ui.mouse": return getSub(name);
         /* <p>Current mouse button pressed.</p>
          * <ul>
-         *   <li><p>0 \x96 None</p></li>
-         *   <li><p>1 \x96 Left</p></li>
-         *   <li><p>2 \x96 Right</p></li>
-         *   <li><p>3 \x96 Middle</p></li>
+         *   <li><p>0 � None</p></li>
+         *   <li><p>1 � Left</p></li>
+         *   <li><p>2 � Right</p></li>
+         *   <li><p>3 � Middle</p></li>
          * </ul> 
          * @type(Number) */
         case "ui.mouse.button":

Modified: trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/JSDoc.java
===================================================================
--- trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/JSDoc.java     
2009-08-13 23:00:06 UTC (rev 3603)
+++ trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/JSDoc.java     
2009-08-14 13:40:53 UTC (rev 3604)
@@ -78,7 +78,7 @@
                        Location loc = todo.remove();
                        Page page = null; 
                        if(loc.jppfile!=null){
-                               Reader r = path.findJpp(loc.jppfile);
+                               Reader r = path.findSourceFile(loc.jppfile);
                                Scraper scraper = new Scraper(this,r,loc);
                                System.err.println("* processing: 
"+loc.jppfile+" "+loc.longname());
                                page = scraper.process();

Modified: trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/Scraper.java
===================================================================
--- trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/Scraper.java   
2009-08-13 23:00:06 UTC (rev 3603)
+++ trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/Scraper.java   
2009-08-14 13:40:53 UTC (rev 3604)
@@ -233,7 +233,7 @@
                        }
                        if(jpp.indexOf('.')==-1) 
                                jpp = lookingFor.package_()+"."+jpp;
-                       Reader r = jsdoc.path.getJpp(jpp) ;
+                       Reader r = jsdoc.path.getJavaOrJpp(jpp) ;
                        if(r==null) err.newWarning("Could not find referenced 
jpp '"+jpp+"' for '"+key+"'");
                        else{
                                String longname = lookingFor.longname()+"."+key;

Modified: trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/VexiPath.java
===================================================================
--- trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/VexiPath.java  
2009-08-13 23:00:06 UTC (rev 3603)
+++ trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/VexiPath.java  
2009-08-14 13:40:53 UTC (rev 3604)
@@ -17,9 +17,9 @@
                projects.add(p);
        }
        
-       private String fileOf(String jpp){
-               StringBuilder r = new StringBuilder(jpp.length()+4);
-               String[] ss = jpp.split("\\.");
+       private String fileOf(String sourceclass){
+               StringBuilder r = new StringBuilder(sourceclass.length()+4);
+               String[] ss = sourceclass.split("\\.");
                boolean first = true;
                for(String s: ss){
                        if(first) first = false;
@@ -29,22 +29,23 @@
                                break;
                        }
                }
-               r.append(".jpp");
                return r.toString();
        }
        
-       public Reader getJpp(String name) throws FileNotFoundException{
+       public Reader getJavaOrJpp(String name) throws FileNotFoundException{
                
                String path = fileOf(name);
                for(File p: projects){
-                       File f = new File(p,"src/"+path);
-                       if(f.exists()) return new FileReader(f);
+                       File jpp = new File(p,"src/"+path+".jpp");
+                       if(jpp.exists()) return new FileReader(jpp);
+                       File java = new File(p,"src/"+path+".java");
+                       if(java.exists()) return new FileReader(java);
                }
                return null;
        }
        
-       public Reader findJpp(String name) throws FileNotFoundException{
-               Reader r = getJpp(name);
+       public Reader findSourceFile(String name) throws FileNotFoundException{
+               Reader r = getJavaOrJpp(name);
                if(r==null) throw new RuntimeException("No such jpp: "+name);
                return r;
        }

Modified: trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/page.ftl
===================================================================
--- trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/page.ftl       
2009-08-13 23:00:06 UTC (rev 3603)
+++ trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/page.ftl       
2009-08-14 13:40:53 UTC (rev 3604)
@@ -10,7 +10,7 @@
   <#if s.desc?exists><p>${s.desc}</p></#if>
   <#--+++++ PROPS +++++++-->
   <#if s.props?size!=0>
-  <table summary="${s.name} Properties" border="1">
+  <table class="reftable" cellspacing="0" summary="${s.name} Properties" 
border="1">
   <colgroup><col><col><col><col></colgroup>
   <thead>
     <tr>
@@ -34,7 +34,8 @@
   </#if>
   <#--+++++ FUNCS +++++++-->
   <#if s.funcs?size!=0>
-  <table summary="${s.name} Functions" border="1">
+  <h3>${s.name} Methods</h3>
+  <table class="reftable" cellspacing="0" summary="${s.name} Functions" 
border="1">
   <colgroup><col><col><col></colgroup>
   <thead>
     <tr>
@@ -54,7 +55,8 @@
   </#if>
   <#--+++++ CONSTRUCTORS +++++++-->
   <#if s.constructors?size!=0>
-  <table summary="${s.name} Constructors" border="1">
+  <h3>${s.name} Constructors</h3>
+  <table class="reftable" cellspacing="0" summary="${s.name} Constructors" 
border="1">
   <colgroup><col><col><col></colgroup>
   <thead>
     <tr>

Modified: trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/style.css
===================================================================
--- trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/style.css      
2009-08-13 23:00:06 UTC (rev 3603)
+++ trunk/tools/vexitools.jsdoc/src/org/vexi/tools/jsdoc/style.css      
2009-08-14 13:40:53 UTC (rev 3604)
@@ -1,8 +1,24 @@
 body {
   font-family: helvetica, verdana, arial, sans-serif;
-  font-size:medium;
+  font-size: 12px;
+  padding: 1em;
 }
+th, td, p, li {
+  font-family: helvetica, verdana, arial, sans-serif;
+  font-size: 12px;
+  text-decoration: none; 
+}
 
-p { margin-left:1em; }
+code { fontsize:medium; }
+p { margin-left:0.5em; }
 dl { margin-left:2em; }
-dt { clear:left; font-weight:bold; }
\ No newline at end of file
+dt { clear:left; font-weight:bold; }
+
+table { border-collapse:seperate; }
+table,td,th { border: none; }
+table.reftable td, table.reftable th {
+  border-top: 1px dotted;
+  padding: 5px;
+  text-align: left;
+  vertical-align:top;
+}
\ No newline at end of file

Modified: trunk/tools/vexitools.jsdoc/src_dev/vexi/jsdoc/RunOnVexi.java
===================================================================
--- trunk/tools/vexitools.jsdoc/src_dev/vexi/jsdoc/RunOnVexi.java       
2009-08-13 23:00:06 UTC (rev 3603)
+++ trunk/tools/vexitools.jsdoc/src_dev/vexi/jsdoc/RunOnVexi.java       
2009-08-14 13:40:53 UTC (rev 3604)
@@ -26,7 +26,7 @@
                jsdoc.addConcept("Cloning", null);
                jsdoc.addConcept("Special Variables", 
"org.ibex.js.Interpreter");
                jsdoc.addConcept("Streams", "org.vexi.core.Vexi");
-               jsdoc.addConcept("Surfaces", "org.vexi.core.Vexi");
+               jsdoc.addConcept("Surfaces", "org.vexi.core.Surface");
                jsdoc.addConcept("Templates", "org.vexi.core.Vexi");
                jsdoc.addConcept("Threading", "org.vexi.core.Vexi");
                jsdoc.addConcept("Traps", null);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to