gmazza      2004/08/15 21:11:42

  Modified:    .        fop.bat
               src/java/org/apache/fop/fo/flow ExternalGraphic.java
                        Float.java Footnote.java FootnoteBody.java
                        InstreamForeignObject.java Leader.java
                        ListBlock.java
               src/java/org/apache/fop/fo/pagination Flow.java
                        StaticContent.java
               src/java/org/apache/fop/layoutmgr AddLMVisitor.java
                        PageNumberCitationLayoutManager.java
  Added:       src/java/org/apache/fop/layoutmgr LeaderLayoutManager.java
  Log:
  1. fo:leader layout initialization logic moved from AddLMVisitor to
  fo.flow.Leader.
  
  2. fo:leader layout logic moved from AddLMVisitor to new
  layoutmgr.LayoutLeaderManager class.
  
  3. validateChildNode() for fo:list-block implemented.
  
  Revision  Changes    Path
  1.20      +1 -1      xml-fop/fop.bat
  
  Index: fop.bat
  ===================================================================
  RCS file: /home/cvs/xml-fop/fop.bat,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- fop.bat   18 Apr 2004 22:39:02 -0000      1.19
  +++ fop.bat   16 Aug 2004 04:11:41 -0000      1.20
  @@ -43,7 +43,7 @@
   set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xalan-2.4.1.jar
   set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\batik.jar
   set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\avalon-framework-4.1.4.jar
  -set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\commons-io-dev-20040206.jar
  +set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\commons-io-1.0.jar
   set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\commons-logging-1.0.3.jar
   set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jimi-1.0.jar
   set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_core.jar
  
  
  
  1.38      +1 -1      xml-fop/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
  
  Index: ExternalGraphic.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/ExternalGraphic.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- ExternalGraphic.java      13 Aug 2004 00:03:49 -0000      1.37
  +++ ExternalGraphic.java      16 Aug 2004 04:11:41 -0000      1.38
  @@ -72,7 +72,7 @@
   
       /**
        * @see org.apache.fop.fo.FObj#addLayoutManager(List)
  -    */
  +     */
       public void addLayoutManager(List list) {
           if (getURL() != null) {
               ExternalGraphicLayoutManager lm = new 
ExternalGraphicLayoutManager(this);
  
  
  
  1.13      +1 -1      xml-fop/src/java/org/apache/fop/fo/flow/Float.java
  
  Index: Float.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/Float.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Float.java        11 Aug 2004 22:56:48 -0000      1.12
  +++ Float.java        16 Aug 2004 04:11:41 -0000      1.13
  @@ -52,7 +52,7 @@
   
       /**
        * Make sure content model satisfied, if so then tell the
  -     * StructureRenderer that we are at the end of the flow.
  +     * FOInputHandler that we are at the end of the flow.
        * @see org.apache.fop.fo.FONode#end
        */
       protected void endOfNode() throws SAXParseException {
  
  
  
  1.22      +1 -1      xml-fop/src/java/org/apache/fop/fo/flow/Footnote.java
  
  Index: Footnote.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/Footnote.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Footnote.java     13 Aug 2004 00:03:49 -0000      1.21
  +++ Footnote.java     16 Aug 2004 04:11:41 -0000      1.22
  @@ -82,7 +82,7 @@
   
       /**
        * Make sure content model satisfied, if so then tell the
  -     * StructureRenderer that we are at the end of the flow.
  +     * FOInputHandler that we are at the end of the flow.
        * @see org.apache.fop.fo.FONode#end
        */
       protected void endOfNode() throws SAXParseException {
  
  
  
  1.19      +1 -1      xml-fop/src/java/org/apache/fop/fo/flow/FootnoteBody.java
  
  Index: FootnoteBody.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/FootnoteBody.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- FootnoteBody.java 13 Aug 2004 12:29:51 -0000      1.18
  +++ FootnoteBody.java 16 Aug 2004 04:11:41 -0000      1.19
  @@ -60,7 +60,7 @@
   
       /**
        * Make sure content model satisfied, if so then tell the
  -     * StructureRenderer that we are at the end of the flow.
  +     * FOInputHandler that we are at the end of the flow.
        * @see org.apache.fop.fo.FONode#end
        */
       protected void endOfNode() throws SAXParseException {
  
  
  
  1.21      +1 -1      
xml-fop/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java
  
  Index: InstreamForeignObject.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- InstreamForeignObject.java        14 Aug 2004 18:36:21 -0000      1.20
  +++ InstreamForeignObject.java        16 Aug 2004 04:11:41 -0000      1.21
  @@ -66,7 +66,7 @@
   
       /**
        * Make sure content model satisfied, if so then tell the
  -     * StructureRenderer that we are at the end of the flow.
  +     * FOInputHandler that we are at the end of the flow.
        * @see org.apache.fop.fo.FONode#end
        */
       protected void endOfNode() throws SAXParseException {
  
  
  
  1.33      +23 -16    xml-fop/src/java/org/apache/fop/fo/flow/Leader.java
  
  Index: Leader.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/Leader.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Leader.java       11 Aug 2004 04:15:25 -0000      1.32
  +++ Leader.java       16 Aug 2004 04:11:41 -0000      1.33
  @@ -18,21 +18,24 @@
   
   package org.apache.fop.fo.flow;
   
  +// Java
  +import java.util.List;
  +
  +// FOP
   import org.apache.fop.datatypes.ColorType;
   import org.apache.fop.datatypes.Length;
   import org.apache.fop.fo.FONode;
  -import org.apache.fop.layoutmgr.AddLMVisitor;
   import org.apache.fop.fo.FObjMixed;
   import org.apache.fop.fo.properties.PercentLength;
   import org.apache.fop.fonts.Font;
  -import org.apache.fop.fo.LMVisited;
  +import org.apache.fop.layoutmgr.LeaderLayoutManager;
   
   /**
  - * Class modelling fo:leader object. See Sec. 6.6.9 of the XSL-FO Standard.
  + * Class modelling fo:leader object.
    * The main property of fo:leader is leader-pattern.
    * The following patterns are treated: rule, space, dots and use-content.
    */
  -public class Leader extends FObjMixed implements LMVisited {
  +public class Leader extends FObjMixed {
   
       private int ruleStyle;
       private int ruleThickness;
  @@ -89,12 +92,14 @@
   
       }
   
  +    /**
  +     * @todo check need for each of these accessors (should be LM instead?)
  +     */
       public int getLength(int propId, int dim) {
           int length;
           Length maxlength = propertyList.get(propId).getLength();
           if (maxlength instanceof PercentLength) {
  -            length = (int)(((PercentLength)maxlength).value()
  -                                      * dim);
  +            length = (int)(((PercentLength)maxlength).value() * dim);
           } else {
               length = maxlength.getValue();
           }
  @@ -121,20 +126,22 @@
           return patternWidth;
       }
   
  -    public String getName() {
  -        return "fo:leader";
  -    }
  -    
       /**
  -     * This is a hook for the AddLMVisitor class to be able to access
  -     * this object.
  -     * @param aLMV the AddLMVisitor object that can access this object.
  +     * @see org.apache.fop.fo.FObj#addLayoutManager(List)
        */
  -    public void acceptVisitor(AddLMVisitor aLMV) {
  +    public void addLayoutManager(List list) {
           setup();
  -        aLMV.serveLeader(this);
  +        LeaderLayoutManager lm = new LeaderLayoutManager(this);
  +        list.add(lm);
       }
  -    
  +
  +    /**
  +     * @see org.apache.fop.fo.FObj#getName()
  +     */
  +    public String getName() {
  +        return "fo:leader";
  +    }
  +
       /**
        * @see org.apache.fop.fo.FObj#getNameId()
        */
  
  
  
  1.24      +33 -11    xml-fop/src/java/org/apache/fop/fo/flow/ListBlock.java
  
  Index: ListBlock.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/ListBlock.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ListBlock.java    11 Aug 2004 04:15:25 -0000      1.23
  +++ ListBlock.java    16 Aug 2004 04:11:41 -0000      1.24
  @@ -23,6 +23,7 @@
   
   // XML
   import org.xml.sax.Attributes;
  +import org.xml.sax.Locator;
   import org.xml.sax.SAXParseException;
   
   // FOP
  @@ -30,12 +31,6 @@
   import org.apache.fop.fo.FONode;
   import org.apache.fop.fo.FObj;
   import org.apache.fop.layoutmgr.list.ListBlockLayoutManager;
  -import org.apache.fop.fo.properties.CommonAccessibility;
  -import org.apache.fop.fo.properties.CommonAural;
  -import org.apache.fop.fo.properties.CommonBackground;
  -import org.apache.fop.fo.properties.CommonBorderAndPadding;
  -import org.apache.fop.fo.properties.CommonMarginBlock;
  -import org.apache.fop.fo.properties.CommonRelativePosition;
   
   /**
    * Class modelling the fo:list-block object. See Sec. 6.8.2 of the XSL-FO
  @@ -54,6 +49,9 @@
       private int spaceAfter;
       private int spaceBetweenListRows = 0;
       private ColorType backgroundColor;
  +    
  +    // used for child node validation
  +    private boolean hasListItem = false;
   
       /**
        * @param parent FONode that is the parent of this object
  @@ -87,6 +85,35 @@
       }
   
       /**
  +     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
  +     * XSL Content Model: marker* (list-item)+
  +     */
  +    protected void validateChildNode(Locator loc, String nsURI, String localName) 
  +        throws SAXParseException {
  +            if (nsURI == FO_URI && localName.equals("marker")) {
  +                if (hasListItem) {
  +                    nodesOutOfOrderError(loc, "fo:marker", "fo:list-item");
  +                }
  +            } else if (nsURI == FO_URI && localName.equals("list-item")) {
  +                hasListItem = true;
  +            } else {
  +                invalidChildError(loc, nsURI, localName);
  +            }
  +    }
  +
  +    /**
  +     * Make sure content model satisfied, if so then tell the
  +     * FOInputHandler that we are at the end of the flow.
  +     * @see org.apache.fop.fo.FONode#end
  +     */
  +    protected void endOfNode() throws SAXParseException {
  +        if (!hasListItem) {
  +            missingChildElementError("marker* (list-item)+");
  +        }
  +        getFOInputHandler().endList(this);
  +    }
  +
  +    /**
        * @return false (ListBlock does not generate inline areas)
        */
       public boolean generatesInlineAreas() {
  @@ -99,11 +126,6 @@
       public void addLayoutManager(List list) {         
           ListBlockLayoutManager lm = new ListBlockLayoutManager(this);
           list.add(lm);         
  -    }
  -
  -    protected void endOfNode() throws SAXParseException {
  -        super.endOfNode();
  -        getFOInputHandler().endList(this);
       }
   
       public String getName() {
  
  
  
  1.27      +2 -2      xml-fop/src/java/org/apache/fop/fo/pagination/Flow.java
  
  Index: Flow.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/Flow.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Flow.java 8 Aug 2004 18:39:25 -0000       1.26
  +++ Flow.java 16 Aug 2004 04:11:42 -0000      1.27
  @@ -86,7 +86,7 @@
   
       /**
        * Make sure content model satisfied, if so then tell the
  -     * StructureRenderer that we are at the end of the flow.
  +     * FOInputHandler that we are at the end of the flow.
        * @see org.apache.fop.fo.FONode#end
        */
       protected void endOfNode() throws SAXParseException {
  
  
  
  1.21      +2 -2      xml-fop/src/java/org/apache/fop/fo/pagination/StaticContent.java
  
  Index: StaticContent.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/StaticContent.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- StaticContent.java        8 Aug 2004 18:39:26 -0000       1.20
  +++ StaticContent.java        16 Aug 2004 04:11:42 -0000      1.21
  @@ -55,7 +55,7 @@
   
       /**
        * Make sure content model satisfied, if so then tell the
  -     * StructureRenderer that we are at the end of the flow.
  +     * FOInputHandler that we are at the end of the flow.
        * @see org.apache.fop.fo.FONode#end
        */
       protected void endOfNode() throws SAXParseException {
  
  
  
  1.57      +1 -111    xml-fop/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java
  
  Index: AddLMVisitor.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- AddLMVisitor.java 14 Aug 2004 18:36:21 -0000      1.56
  +++ AddLMVisitor.java 16 Aug 2004 04:11:42 -0000      1.57
  @@ -21,18 +21,8 @@
   import java.util.List;
   import java.util.ListIterator;
   
  -import org.apache.fop.area.Trait;
  -import org.apache.fop.area.inline.FilledArea;
  -import org.apache.fop.area.inline.InlineArea;
  -import org.apache.fop.area.inline.Space;
  -import org.apache.fop.area.inline.TextArea;
  -import org.apache.fop.datatypes.Length;
  -import org.apache.fop.fo.Constants;
   import org.apache.fop.fo.FObj;
  -import org.apache.fop.fo.flow.Inline;
  -import org.apache.fop.fo.flow.Leader;
   import org.apache.fop.fo.flow.Wrapper;
  -import org.apache.fop.traits.MinOptMax;
   import org.apache.fop.fo.LMVisited;
   
   /**
  @@ -100,104 +90,4 @@
               }
           }
       }
  -
  -     public void serveLeader(final Leader node) {
  -         LeafNodeLayoutManager lm = new LeafNodeLayoutManager(node) {
  -             public InlineArea get(LayoutContext context) {
  -                 return getLeaderInlineArea(node, this);
  -             }
  -
  -             protected MinOptMax getAllocationIPD(int refIPD) {
  -                return getLeaderAllocIPD(node, refIPD);
  -             }
  -
  -             /*protected void offsetArea(LayoutContext context) {
  -                 if(leaderPattern == LeaderPattern.DOTS) {
  -                     curArea.setOffset(context.getBaseline());
  -                 }
  -             }*/
  -         };
  -         lm.setAlignment(node.getProperty(Constants.PR_LEADER_ALIGNMENT).getEnum());
  -         currentLMList.add(lm);
  -     }
  -
  -     public MinOptMax getLeaderAllocIPD(Leader node, int ipd) {
  -         // length of the leader
  -         int opt = node.getLength(Constants.PR_LEADER_LENGTH | 
Constants.CP_OPTIMUM, ipd);
  -         int min = node.getLength(Constants.PR_LEADER_LENGTH | 
Constants.CP_MINIMUM, ipd);
  -         int max = node.getLength(Constants.PR_LEADER_LENGTH | 
Constants.CP_MAXIMUM, ipd);
  -
  -         return new MinOptMax(min, opt, max);
  -     }
  -
  -     private InlineArea getLeaderInlineArea(Leader node, LayoutManager parentLM) {
  -         InlineArea leaderArea = null;
  -
  -         if (node.getLeaderPattern() == Constants.LeaderPattern.RULE) {
  -             org.apache.fop.area.inline.Leader leader = new 
org.apache.fop.area.inline.Leader();
  -             leader.setRuleStyle(node.getRuleStyle());
  -             leader.setRuleThickness(node.getRuleThickness());
  -             leaderArea = leader;
  -         } else if (node.getLeaderPattern() == Constants.LeaderPattern.SPACE) {
  -             leaderArea = new Space();
  -         } else if (node.getLeaderPattern() == Constants.LeaderPattern.DOTS) {
  -             TextArea t = new TextArea();
  -             char dot = '.'; // userAgent.getLeaderDotCharacter();
  -
  -             t.setTextArea("" + dot);
  -             t.addTrait(Trait.FONT_NAME, node.getFontState().getFontName());
  -             t.addTrait(Trait.FONT_SIZE,
  -                              new Integer(node.getFontState().getFontSize()));
  -             // set offset of dot within inline parent
  -             t.setOffset(node.getFontState().getAscender());
  -             int width = node.getFontState().getCharWidth(dot);
  -             Space spacer = null;
  -             if (node.getPatternWidth() > width) {
  -                 spacer = new Space();
  -                 spacer.setWidth(node.getPatternWidth() - width);
  -                 width = node.getPatternWidth();
  -             }
  -             FilledArea fa = new FilledArea();
  -             fa.setUnitWidth(width);
  -             fa.addChild(t);
  -             if (spacer != null) {
  -                 fa.addChild(spacer);
  -             }
  -             fa.setHeight(node.getFontState().getAscender());
  -
  -             leaderArea = fa;
  -         } else if (node.getLeaderPattern() == Constants.LeaderPattern.USECONTENT) {
  -             if (node.getChildNodes() == null) {
  -                 node.getLogger().error("Leader use-content with no content");
  -                 return null;
  -             }
  -             InlineStackingLayoutManager lm;
  -             lm = new InlineStackingLayoutManager(node);
  -             lm.setLMiter(new LMiter(lm, node.getChildNodes()));
  -             lm.initialize();
  -
  -             // get breaks then add areas to FilledArea
  -             FilledArea fa = new FilledArea();
  -
  -             ContentLayoutManager clm = new ContentLayoutManager(fa);
  -             clm.setParent(parentLM);
  -             clm.setUserAgent(node.getUserAgent());
  -             lm.setParent(clm);
  -
  -             clm.fillArea(lm);
  -             int width = clm.getStackingSize();
  -             Space spacer = null;
  -             if (node.getPatternWidth() > width) {
  -                 spacer = new Space();
  -                 spacer.setWidth(node.getPatternWidth() - width);
  -                 width = node.getPatternWidth();
  -             }
  -             fa.setUnitWidth(width);
  -             if (spacer != null) {
  -                 fa.addChild(spacer);
  -             }
  -             leaderArea = fa;
  -         }
  -         return leaderArea;
  -     }
   }
  
  
  
  1.3       +3 -3      
xml-fop/src/java/org/apache/fop/layoutmgr/PageNumberCitationLayoutManager.java
  
  Index: PageNumberCitationLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/PageNumberCitationLayoutManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PageNumberCitationLayoutManager.java      11 Aug 2004 22:56:48 -0000      1.2
  +++ PageNumberCitationLayoutManager.java      16 Aug 2004 04:11:42 -0000      1.3
  @@ -28,7 +28,7 @@
   import org.apache.fop.fonts.Font;
   
   /**
  - * LayoutManager for the fo:basic-link formatting object
  + * LayoutManager for the fo:page-number-citation formatting object
    */
   public class PageNumberCitationLayoutManager extends LeafNodeLayoutManager {
   
  @@ -39,7 +39,7 @@
        * Constructor
        *
        * @param node the formatting object that creates this area
  -     * @todo better null checking font
  +     * @todo better null checking of font object
        */
       public PageNumberCitationLayoutManager(PageNumberCitation node) {
           super(node);
  
  
  
  1.1                  
xml-fop/src/java/org/apache/fop/layoutmgr/LeaderLayoutManager.java
  
  Index: LeaderLayoutManager.java
  ===================================================================
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  /* $Id: LeaderLayoutManager.java,v 1.1 2004/08/16 04:11:42 gmazza Exp $ */
  
  package org.apache.fop.layoutmgr;
  
  import org.apache.fop.area.Trait;
  import org.apache.fop.area.inline.FilledArea;
  import org.apache.fop.area.inline.InlineArea;
  import org.apache.fop.area.inline.Space;
  import org.apache.fop.area.inline.TextArea;
  import org.apache.fop.datatypes.Length;
  import org.apache.fop.fo.Constants;
  import org.apache.fop.fo.flow.Inline;
  import org.apache.fop.fo.flow.Leader;
  import org.apache.fop.fonts.Font;
  import org.apache.fop.traits.MinOptMax;
  
  /**
   * LayoutManager for the fo:leader formatting object
   */
  public class LeaderLayoutManager extends LeafNodeLayoutManager {
  
      Leader ldrNode;
      Font font = null;
      
      /**
       * Constructor
       *
       * @param node the formatting object that creates this area
       * @todo better null checking of font object
       */
      public LeaderLayoutManager(Leader node) {
          super(node);
          ldrNode = node;
          font = node.getFontState();
          setAlignment(node.getProperty(PR_LEADER_ALIGNMENT).getEnum());
      }
  
      public InlineArea get(LayoutContext context) {
          return getLeaderInlineArea();
      }
  
      protected MinOptMax getAllocationIPD(int refIPD) {
          return getLeaderAllocIPD(refIPD);
      }
  
      private MinOptMax getLeaderAllocIPD(int ipd) {
          // length of the leader
          int opt = ldrNode.getLength(PR_LEADER_LENGTH | CP_OPTIMUM, ipd);
          int min = ldrNode.getLength(PR_LEADER_LENGTH | CP_MINIMUM, ipd);
          int max = ldrNode.getLength(PR_LEADER_LENGTH | CP_MAXIMUM, ipd);
          return new MinOptMax(min, opt, max);
      }
  
      private InlineArea getLeaderInlineArea() {
          InlineArea leaderArea = null;
  
          if (ldrNode.getLeaderPattern() == LeaderPattern.RULE) {
              org.apache.fop.area.inline.Leader leader = 
                  new org.apache.fop.area.inline.Leader();
              leader.setRuleStyle(ldrNode.getRuleStyle());
              leader.setRuleThickness(ldrNode.getRuleThickness());
              leaderArea = leader;
          } else if (ldrNode.getLeaderPattern() == LeaderPattern.SPACE) {
              leaderArea = new Space();
          } else if (ldrNode.getLeaderPattern() == LeaderPattern.DOTS) {
              TextArea t = new TextArea();
              char dot = '.'; // userAgent.getLeaderDotCharacter();
  
              t.setTextArea("" + dot);
              t.addTrait(Trait.FONT_NAME, font.getFontName());
              t.addTrait(Trait.FONT_SIZE, new Integer(font.getFontSize()));
              // set offset of dot within inline parent
              t.setOffset(font.getAscender());
              int width = font.getCharWidth(dot);
              Space spacer = null;
              if (ldrNode.getPatternWidth() > width) {
                  spacer = new Space();
                  spacer.setWidth(ldrNode.getPatternWidth() - width);
                  width = ldrNode.getPatternWidth();
              }
              FilledArea fa = new FilledArea();
              fa.setUnitWidth(width);
              fa.addChild(t);
              if (spacer != null) {
                  fa.addChild(spacer);
              }
              fa.setHeight(font.getAscender());
  
              leaderArea = fa;
          } else if (ldrNode.getLeaderPattern() == LeaderPattern.USECONTENT) {
              if (ldrNode.getChildNodes() == null) {
                  ldrNode.getLogger().error("Leader use-content with no content");
                  return null;
              }
              InlineStackingLayoutManager lm;
              lm = new InlineStackingLayoutManager(ldrNode);
              lm.setLMiter(new LMiter(lm, ldrNode.getChildNodes()));
              lm.initialize();
  
              // get breaks then add areas to FilledArea
              FilledArea fa = new FilledArea();
              
              ContentLayoutManager clm = new ContentLayoutManager(fa);
              clm.setParent(this);
              clm.setUserAgent(ldrNode.getUserAgent());
              lm.setParent(clm);
  
              clm.fillArea(lm);
              int width = clm.getStackingSize();
              Space spacer = null;
              if (ldrNode.getPatternWidth() > width) {
                  spacer = new Space();
                  spacer.setWidth(ldrNode.getPatternWidth() - width);
                  width = ldrNode.getPatternWidth();
              }
              fa.setUnitWidth(width);
              if (spacer != null) {
                  fa.addChild(spacer);
              }
              leaderArea = fa;
          }
          return leaderArea;
       }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to