]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
1.) validateChildNode() implemented for fo:multi-properties.
authorGlen Mazza <gmazza@apache.org>
Sat, 21 Aug 2004 19:48:00 +0000 (19:48 +0000)
committerGlen Mazza <gmazza@apache.org>
Sat, 21 Aug 2004 19:48:00 +0000 (19:48 +0000)
2.) fo:multi-properties disconnected from ToBeImplementedElement.

3.) increased usage of FObj.getPropString() throughout application.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197885 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/flow/Character.java
src/java/org/apache/fop/fo/flow/ExternalGraphic.java
src/java/org/apache/fop/fo/flow/MultiCase.java
src/java/org/apache/fop/fo/flow/MultiProperties.java
src/java/org/apache/fop/fo/flow/PageNumberCitation.java
src/java/org/apache/fop/fo/flow/RetrieveMarker.java
src/java/org/apache/fop/fo/pagination/PageSequence.java
src/java/org/apache/fop/fo/pagination/PageSequenceMaster.java
src/java/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java
src/java/org/apache/fop/layoutmgr/ExternalGraphicLayoutManager.java
src/java/org/apache/fop/render/mif/MIFHandler.java

index 32f9206cdaf80292eb1c846f56c175b20b1c1206..8ec5fdeed683f2a8013379e134ff1c80fcfcf9ef 100644 (file)
@@ -83,7 +83,7 @@ public class Character extends FObj {
      * @see org.apache.fop.fo.FObj#addLayoutManager(List)
      */
     public void addLayoutManager(List list) {   
-        String str = getProperty(PR_CHARACTER).getString();
+        String str = getPropString(PR_CHARACTER);
         if (str.length() == 1) {
             CharacterLayoutManager lm = new CharacterLayoutManager(this);
             list.add(lm);
index fd449e9461ce9885e5211990b5b1401835af5903..fac67bf5a5743886bd630812a55059adc61e41b4 100644 (file)
@@ -37,7 +37,6 @@ import org.apache.fop.layoutmgr.ExternalGraphicLayoutManager;
  * inline area that can be added to the area tree.
  */
 public class ExternalGraphic extends FObj {
-    private String url;
 
     /**
      * Create a new External graphic node.
@@ -63,19 +62,14 @@ public class ExternalGraphic extends FObj {
      */
     protected void addProperties(Attributes attlist) throws SAXParseException {
         super.addProperties(attlist);
-        url = this.propertyList.get(PR_SRC).getString();
         getFOInputHandler().image(this);
     }
 
-    public String getURL() {
-        return url;
-    }
-
     /**
      * @see org.apache.fop.fo.FObj#addLayoutManager(List)
      */
     public void addLayoutManager(List list) {
-        if (getURL() != null) {
+        if (getPropString(PR_SRC) != null) {
             ExternalGraphicLayoutManager lm = new ExternalGraphicLayoutManager(this);
             list.add(lm);
         }
index 2a5b24e0f189476e6a83647695e72057e77c1bc7..1283d6901b479b89358d5f181e5f3147b2d5cae8 100644 (file)
@@ -35,6 +35,9 @@ public class MultiCase extends ToBeImplementedElement {
         super(parent);
     }
 
+    /**
+     * @see org.apache.fop.fo.FObj#getName()
+     */
     public String getName() {
         return "fo:multi-case";
     }
index 130dda6f06f478d421002c729bc6dcef1389fa1f..3e95defb7b6d98e969ec5a488a3371d9adb81de2 100644 (file)
 
 package org.apache.fop.fo.flow;
 
+// XML
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXParseException;
+
 // FOP
 import org.apache.fop.fo.FONode;
-import org.apache.fop.fo.ToBeImplementedElement;
+import org.apache.fop.fo.FObj;
 
 /**
  * Class modelling the fo:multi-properties object. See Sec. 6.9.6 of the XSL-FO
  * Standard.
  */
-public class MultiProperties extends ToBeImplementedElement {
+public class MultiProperties extends FObj {
+
+    static boolean notImplementedWarningGiven = false;
+
+    // used for input FO validation
+    boolean hasMultiPropertySet = false;
+    boolean hasWrapper = false;
 
     /**
      * @param parent FONode that is the parent of this object
      */
     public MultiProperties(FONode parent) {
         super(parent);
+
+        if (!notImplementedWarningGiven) {
+            getLogger().warn("fo:multi-properties is not yet implemented.");
+            notImplementedWarningGiven = true;
+        }
+    }
+
+    /**
+     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+     * XSL Content Model: (multi-property-set+, wrapper)
+     */
+    protected void validateChildNode(Locator loc, String nsURI, String localName) 
+        throws SAXParseException {
+            if (nsURI == FO_URI && localName.equals("multi-property-set")) {
+                if (hasWrapper) {
+                    nodesOutOfOrderError(loc, "fo:multi-property-set", "fo:wrapper");
+                } else {
+                    hasMultiPropertySet = true;
+                }
+            } else if (nsURI == FO_URI && localName.equals("wrapper")) {
+                if (hasWrapper) {
+                    tooManyNodesError(loc, "fo:wrapper");
+                } else {
+                    hasWrapper = 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 (!hasMultiPropertySet || !hasWrapper) {
+            missingChildElementError("(multi-property-set+, wrapper)");
+        }
+    }
+
+    /**
+     * @see org.apache.fop.fo.FObj#getName()
+     */
     public String getName() {
         return "fo:multi-properties";
     }
index 57bb11d25b7b6846a55b591ab5e038fe32c17ada..ff06b1b02cf5fd853ff286efeab3965e280d0c2b 100644 (file)
@@ -81,7 +81,7 @@ public class PageNumberCitation extends FObj {
         this.blue = c.getBlue();
 
         this.wrapOption = this.propertyList.get(PR_WRAP_OPTION).getEnum();
-        this.refId = this.propertyList.get(PR_REF_ID).getString();
+        this.refId = getPropString(PR_REF_ID);
 
         if (this.refId.equals("")) {
             //throw new FOPException("page-number-citation must contain \"ref-id\"");
index 041e0cff6151015a57e73c35784de302afb2fac8..30526a7ac8712baa009853d43f5ea95166f7a2b5 100644 (file)
@@ -57,8 +57,7 @@ public class RetrieveMarker extends FObjMixed {
      */
     protected void addProperties(Attributes attlist) throws SAXParseException {
         super.addProperties(attlist);
-        this.retrieveClassName =
-            this.propertyList.get(PR_RETRIEVE_CLASS_NAME).getString();
+        this.retrieveClassName = getPropString(PR_RETRIEVE_CLASS_NAME);
         this.retrievePosition =
             this.propertyList.get(PR_RETRIEVE_POSITION).getEnum();
         this.retrieveBoundary =
index 5f1631ee359d14b379d0abc0405c9f8596a14f87..9fbd12eba0e5f745792116afdf44e8db1196dd32 100644 (file)
@@ -242,7 +242,7 @@ public class PageSequence extends FObj {
 
         // we are now on the first page of the page sequence
         thisIsFirstPage = true;
-        ipnValue = this.propertyList.get(PR_INITIAL_PAGE_NUMBER).getString();
+        ipnValue = getPropString(PR_INITIAL_PAGE_NUMBER);
 
         if (ipnValue.equals("auto")) {
             pageNumberType = AUTO;
@@ -261,7 +261,7 @@ public class PageSequence extends FObj {
             }
         }
 
-        String masterName = this.propertyList.get(PR_MASTER_REFERENCE).getString();
+        String masterName = getPropString(PR_MASTER_REFERENCE);
         this.simplePageMaster =
                 this.layoutMasterSet.getSimplePageMaster(masterName);
         if (this.simplePageMaster == null) {
index 043ca817647596fea329f5b90667166c09050cec..31629edf8a1e5d631a8f2f968245248d2504a0d4 100644 (file)
@@ -95,7 +95,7 @@ public class PageSequenceMaster extends FObj {
         subSequenceSpecifiers = new java.util.ArrayList();
         if (parent.getName().equals("fo:layout-master-set")) {
             this.layoutMasterSet = (LayoutMasterSet)parent;
-            masterName = this.propertyList.get(Constants.PR_MASTER_NAME).getString();
+            masterName = getPropString(PR_MASTER_NAME);
             if (masterName == null) {
                 getLogger().warn("page-sequence-master does not have "
                                        + "a master-name and so is being ignored");
index 8f6ae241a97e0fe3f325175b02bff86ba77b422e..0e6223e549dde265a1cb344babc703b5c314107d 100644 (file)
@@ -62,7 +62,7 @@ public class RepeatablePageMasterReference extends PageMasterReference
      */
     protected void addProperties(Attributes attlist) throws SAXParseException {
         super.addProperties(attlist);
-        String mr = getProperty(PR_MAXIMUM_REPEATS).getString();
+        String mr = getPropString(PR_MAXIMUM_REPEATS);
         if (mr.equals("no-limit")) {
             this.maximumRepeats = INFINITE;
         } else {
index 73698e1f2286602ad476895dc3024131f1ed98ed..d60ec040c84a69586433e2867ae5c1fac9babcc8 100644 (file)
@@ -74,7 +74,7 @@ public class ExternalGraphicLayoutManager extends LeafNodeLayoutManager {
      * @todo see if can simplify property handling logic
      */
     private void setup() {
-        url = ImageFactory.getURL(graphic.getURL());
+        url = ImageFactory.getURL(graphic.getPropString(PR_SRC));
 
         // assume lr-tb for now and just use the .optimum value of the range
         Length ipd = graphic.getPropertyList().get(PR_INLINE_PROGRESSION_DIMENSION).
@@ -215,7 +215,7 @@ public class ExternalGraphicLayoutManager extends LeafNodeLayoutManager {
       * @return the viewport containing the image area
       */
      public InlineArea getExternalGraphicInlineArea() {
-         Image imArea = new Image(graphic.getURL());
+         Image imArea = new Image(graphic.getPropString(PR_SRC));
          Viewport vp = new Viewport(imArea);
          vp.setWidth(viewWidth);
          vp.setHeight(viewHeight);
index 09f2b6fd1bdb805bdfdc300fc62619dfb41168c7..16b0ba3574dc261a593653be1c7dc429433c7efe 100644 (file)
@@ -115,7 +115,7 @@ public class MIFHandler extends FOInputHandler {
     public void startPageSequence(PageSequence pageSeq) {
         // get the layout master set
         // setup the pages for this sequence
-        String name = pageSeq.getProperty(Constants.PR_MASTER_REFERENCE).getString();
+        String name = pageSeq.getPropString(Constants.PR_MASTER_REFERENCE);
         SimplePageMaster spm = pageSeq.getLayoutMasterSet().getSimplePageMaster(name);
         if (spm == null) {
             PageSequenceMaster psm = pageSeq.getLayoutMasterSet().getPageSequenceMaster(name);