]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
updated keep handling to properly handle the keep value
authorKeiron Liddle <keiron@apache.org>
Wed, 3 Jan 2001 23:14:37 +0000 (23:14 +0000)
committerKeiron Liddle <keiron@apache.org>
Wed, 3 Jan 2001 23:14:37 +0000 (23:14 +0000)
distinguishes between the int values and the auto, always

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

src/org/apache/fop/datatypes/KeepValue.java [new file with mode: 0644]
src/org/apache/fop/fo/flow/TableBody.java
src/org/apache/fop/fo/flow/TableRow.java

diff --git a/src/org/apache/fop/datatypes/KeepValue.java b/src/org/apache/fop/datatypes/KeepValue.java
new file mode 100644 (file)
index 0000000..3f1e06d
--- /dev/null
@@ -0,0 +1,78 @@
+/*-- $Id$ -- 
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+    Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+ 4. The names "Fop" and  "Apache Software Foundation"  must not be used to
+    endorse  or promote  products derived  from this  software without  prior
+    written permission. For written permission, please contact
+    apache@apache.org.
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation and was  originally created by
+ James Tauber <jtauber@jtauber.com>. For more  information on the Apache 
+ Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.datatypes;
+
+/**
+ * Keep Value
+ * Stores the different types of keeps in a single convenient format.
+ */
+public class KeepValue {
+    public static final String KEEP_WITH_ALWAYS = "KEEP_WITH_ALWAYS";
+    public static final String KEEP_WITH_AUTO = "KEEP_WITH_AUTO";
+    public static final String KEEP_WITH_VALUE = "KEEP_WITH_VALUE";
+    private String type = KEEP_WITH_AUTO;
+    private int value = 0;
+
+    public KeepValue(String type, int val) {
+        this.type = type;
+        this.value = val;
+    }
+
+    public int getValue()
+    {
+        return value;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+}
index dbd1c1296e715edf88d6257474504408357925ed..0b80318ce80e3495b1316917aee07a06e4a804c3 100644 (file)
@@ -188,7 +188,7 @@ public class TableBody extends FObj {
 
             row.setColumns(columns);
             row.doSetup(areaContainer);
-            if (row.getKeepWithPrevious() != 0 && lastRow != null &&
+            if (row.getKeepWithPrevious().getType() != KeepValue.KEEP_WITH_AUTO && lastRow != null &&
                     keepWith.indexOf(lastRow) == -1) {
                 keepWith.addElement(lastRow);
             }
@@ -250,7 +250,7 @@ public class TableBody extends FObj {
             } else if (status.getCode() == Status.KEEP_WITH_NEXT) {
                 keepWith.addElement(row);
             } else {
-                if (keepWith.size() > 0 && row.getKeepWithPrevious() == 0) {
+                if (keepWith.size() > 0 && row.getKeepWithPrevious().getType() == KeepValue.KEEP_WITH_AUTO) {
                     keepWith = new Vector();
                 }
             }
index 92a5a967c8a5edf0cc223f536484ae39beda83a8..fdb7f2a8b022112c563a07fdc9316e9e57771f02 100644 (file)
@@ -99,8 +99,8 @@ public class TableRow extends FObj {
     int paddingBottom;
     int paddingLeft;
     int paddingRight;
-    int keepWithNext;
-    int keepWithPrevious;
+    KeepValue keepWithNext;
+    KeepValue keepWithPrevious;
 
     int widthOfCellsSoFar = 0;
     int largestCellHeight = 0;
@@ -251,7 +251,7 @@ public class TableRow extends FObj {
         this.columns = columns;
     }
 
-    public int getKeepWithPrevious() {
+    public KeepValue getKeepWithPrevious() {
         return keepWithPrevious;
     }
 
@@ -335,12 +335,20 @@ public class TableRow extends FObj {
         setup = true;
     }
 
-    private int getKeepValue(String sPropName) {
+    private KeepValue getKeepValue(String sPropName) {
         Property p= this.properties.get(sPropName);
         Number n = p.getNumber();
         if (n != null)
-            return n.intValue();
-        else return p.getEnum();
+            return new KeepValue(KeepValue.KEEP_WITH_VALUE, n.intValue());
+        switch(p.getEnum()) {
+            case 2:
+                return new KeepValue(KeepValue.KEEP_WITH_ALWAYS, 0);
+            //break;
+            case 1:
+            default:
+                return new KeepValue(KeepValue.KEEP_WITH_AUTO, 0);
+            //break;
+        }
     }
 
     public Status layout(Area area) throws FOPException {
@@ -573,7 +581,7 @@ public class TableRow extends FObj {
         if (someCellDidNotLayoutCompletely) {
             return new Status(Status.AREA_FULL_SOME);
         } else {
-            if (keepWithNext != 0) {
+            if (keepWithNext.getType() != KeepValue.KEEP_WITH_AUTO) {
                 return new Status(Status.KEEP_WITH_NEXT);
             }
             return new Status(Status.OK);