]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Added event TableEventProducer.forceNextColumnNumber when
authorSimon Pepping <spepping@apache.org>
Mon, 19 May 2008 19:02:18 +0000 (19:02 +0000)
committerSimon Pepping <spepping@apache.org>
Mon, 19 May 2008 19:02:18 +0000 (19:02 +0000)
TableFObj.ColumnNumberPropertyMaker forces a zero or negative
column-number property to the next available column, because this is a
FOP extension. Fixed TableFObj.ColumnNumberPropertyMaker.make to
really report a cell overlap event.

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

src/java/org/apache/fop/events/EventFormatter.xml
src/java/org/apache/fop/fo/flow/table/TableEventProducer.java
src/java/org/apache/fop/fo/flow/table/TableFObj.java

index 4bff75f85dc3f38c8fa932973efab3411c1a923f..3e6cc181e17278464713f0daddeccfb045d7efb2 100644 (file)
@@ -65,6 +65,7 @@ Any reference to it will be considered a reference to the first occurrence in th
   <message key="org.apache.fop.fo.flow.table.TableEventProducer.warnImplicitColumns">table-layout=\"fixed\" and column-width unspecified =&gt; falling back to proportional-column-width(1){{locator}}</message>
   <message key="org.apache.fop.fo.flow.table.TableEventProducer.paddingNotApplicable">padding-* properties are not applicable to {elementName}, but a non-zero value for padding was found.{{locator}}</message>
   <message key="org.apache.fop.fo.flow.table.TableEventProducer.cellOverlap">{elementName} overlaps in column {column}.<!-- no locator here, exception will be wrapped --></message>
+  <message key="org.apache.fop.fo.flow.table.TableEventProducer.forceNextColumnNumber">Negative value {propValue} of property column-number of element {elementName} forced into the next available column number {columnNumber}.{{locator}}</message>
   <message key="org.apache.fop.fo.flow.table.TableEventProducer.breakIgnoredDueToRowSpanning">{breakBefore,if,break-before,break-after} ignored on {elementName} because of row spanning in progress (See XSL 1.1, {breakBefore,if,7.20.2,7.20.1}){{locator}}</message>
   <message key="org.apache.fop.events.ResourceEventProducer.imageNotFound">Image not found.[ URI: {uri}.]{{locator}}</message>
   <message key="org.apache.fop.events.ResourceEventProducer.imageError">Image not available.[ URI: {uri}.] Reason:[ {reason}][ {e}]{{locator}}</message>
index 44ddcc038965d0396e61bcb7af23f83821a68465..9c4a82dd67c662d1e585501a2c20d8e9bc1f0f5f 100644 (file)
@@ -144,6 +144,17 @@ public interface TableEventProducer extends EventProducer {
     void cellOverlap(Object source, String elementName, int column,
             Locator loc) throws PropertyException;
 
+    /**
+     * @param source the event source
+     * @param elementName the name of the context node
+     * @param propValue the user-specified value of the column-number property
+     * @param columnNumber the generated value for the column-number property
+     * @param loc the location of the error or null
+     * @event.severity WARN
+     */
+    void forceNextColumnNumber(Object source, String elementName, Number propValue,
+                               int columnNumber, Locator loc);
+
     /**
      * Break ignored due to row spanning.
      * @param source the event source
index 6bc113fd01cd7f368d0ab285fa65559161cab252..016046ae2190e2143f37ff71ffd5bde3712b2363 100644 (file)
@@ -159,9 +159,8 @@ public abstract class TableFObj extends FObj {
             int colSpan = propertyList.get(Constants.PR_NUMBER_COLUMNS_SPANNED)
                                 .getNumeric().getValue();
             
-            int i = columnIndex - 1;
-            int lastIndex = (columnIndex + colSpan) - 1;
-            while (++i < lastIndex) {
+            int lastIndex = columnIndex - 1 + colSpan;
+            for (int i = columnIndex; i <= lastIndex; ++i) {
                 if (columnIndexManager.isColumnNumberUsed(i)) {
                     /* if column-number is already in use by another
                      * cell/column => error!
@@ -195,6 +194,10 @@ public abstract class TableFObj extends FObj {
                         (ColumnNumberManagerHolder) propertyList.getParentFObj();
                     ColumnNumberManager columnIndexManager =  parent.getColumnNumberManager();
                     i = columnIndexManager.getCurrentColumnNumber();
+                    TableEventProducer eventProducer =
+                        TableEventProducer.Provider.get(fo.getUserAgent().getEventBroadcaster());
+                    eventProducer.forceNextColumnNumber(this, propertyList.getFObj().getName(),
+                                                        val, i, fo.getLocator());
                 }
                 return NumberProperty.getInstance(i);
             }