/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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$ */ package org.apache.fop.fo.flow.table; import org.xml.sax.Locator; import org.apache.fop.events.EventBroadcaster; import org.apache.fop.events.EventProducer; import org.apache.fop.fo.ValidationException; import org.apache.fop.fo.expr.PropertyException; /** * Event producer interface for table-specific XSL-FO validation messages. */ public interface TableEventProducer extends EventProducer { /** Provider class for the event producer. */ static final class Provider { private Provider() { } /** * Returns an event producer. * @param broadcaster the event broadcaster to use * @return the event producer */ public static TableEventProducer get(EventBroadcaster broadcaster) { return broadcaster.getEventProducerFor(TableEventProducer.class); } } /** * A value other than "auto" has been specified on fo:table. * @param source the event source * @param loc the location of the error or null * @event.severity WARN */ void nonAutoBPDOnTable(Object source, Locator loc); /** * Padding on fo:table is ignored if the collapsing border model is active. * @param source the event source * @param loc the location of the error or null * @event.severity WARN */ void noTablePaddingWithCollapsingBorderModel(Object source, Locator loc); /** * No mixing of table-rows and table-cells is allowed for direct children of table-body. * @param source the event source * @param elementName the name of the context node * @param loc the location of the error or null * @throws ValidationException the validation error provoked by the method call * @event.severity FATAL */ void noMixRowsAndCells(Object source, String elementName, Locator loc) throws ValidationException; /** * The table-footer was found after the table-body. FOP cannot recover with collapsed border * model. * @param source the event source * @param elementName the name of the context node * @param loc the location of the error or null * @throws ValidationException the validation error provoked by the method call * @event.severity FATAL */ void footerOrderCannotRecover(Object source, String elementName, Locator loc) throws ValidationException; /** * starts-row/ends-row for fo:table-cells non-applicable for children of an fo:table-row * @param source the event source * @param loc the location of the error or null * @event.severity WARN */ void startEndRowUnderTableRowWarning(Object source, Locator loc); /** * Column-number or number of cells in the row overflows the number of fo:table-column * specified for the table. * @param source the event source * @param loc the location of the error or null * @throws ValidationException the validation error provoked by the method call * @event.severity FATAL */ void tooManyCells(Object source, Locator loc) throws ValidationException; /** * Property value must be 1 or bigger. * @param source the event source * @param propName the property name * @param actualValue the actual value * @param loc the location of the error or null * @throws PropertyException the property error provoked by the method call * @event.severity FATAL */ void valueMustBeBiggerGtEqOne(Object source, String propName, int actualValue, Locator loc) throws PropertyException; /** * table-layout=\"fixed\" and column-width unspecified * => falling back to proportional-column-width(1) * @param source the event source * @param loc the location of the error or null * @event.severity WARN */ void warnImplicitColumns(Object source, Locator loc); /** * padding-* properties are not applicable. * @param source the event source * @param elementName the name of the context node * @param loc the location of the error or null * @event.severity WARN */ void paddingNotApplicable(Object source, String elementName, Locator loc); /** * Cell overlap. * @param source the event source * @param elementName the name of the context node * @param column the column index of the overlapping cell * @param loc the location of the error or null * @throws PropertyException the property error provoked by the method call * @event.severity FATAL */ 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 * @param elementName the name of the context node * @param breakBefore true for "break-before", false for "break-after" * @param loc the location of the error or null * @event.severity WARN */ void breakIgnoredDueToRowSpanning(Object source, String elementName, boolean breakBefore, Locator loc); }