| /* |
| * 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.layoutmgr; |
| |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| |
| import org.apache.fop.traits.MinOptMax; |
| |
| /** |
| * This class represents an unresolved list element element with a (conditional) length. This |
| * is the base class for spaces, borders and paddings. |
| */ |
| public abstract class UnresolvedListElementWithLength extends UnresolvedListElement { |
| |
| /** Logger instance */ |
| protected static final Log log = LogFactory.getLog(UnresolvedListElementWithLength.class); |
| |
| private MinOptMax length; |
| private boolean conditional; |
| private RelSide side; |
| private boolean isFirst; |
| private boolean isLast; |
| |
| /** |
| * Main constructor |
| * @param position the Position instance needed by the addAreas stage of the LMs. |
| * @param length the length of the element |
| * @param side the side to which this element applies |
| * @param conditional true if it's a conditional element (conditionality=discard) |
| * @param isFirst true if this is a space-before of the first area generated. |
| * @param isLast true if this is a space-after of the last area generated. |
| */ |
| public UnresolvedListElementWithLength(Position position, MinOptMax length, |
| RelSide side, |
| boolean conditional, boolean isFirst, boolean isLast) { |
| super(position); |
| this.length = length; |
| this.side = side; |
| this.conditional = conditional; |
| this.isFirst = isFirst; |
| this.isLast = isLast; |
| } |
| |
| /** {@inheritDoc} */ |
| public boolean isConditional() { |
| return this.conditional; |
| } |
| |
| /** @return the space as resolved MinOptMax instance */ |
| public MinOptMax getLength() { |
| return this.length; |
| } |
| |
| /** @return the side this element was generated for */ |
| public RelSide getSide() { |
| return this.side; |
| } |
| |
| /** @return true if this is a space-before of the first area generated. */ |
| public boolean isFirst() { |
| return this.isFirst; |
| } |
| |
| /** @return true if this is a space-after of the last area generated. */ |
| public boolean isLast() { |
| return this.isLast; |
| } |
| |
| /** |
| * Called to notify the affected layout manager about the effective length after resolution. |
| * This method is called once before each call to the layout manager's addAreas() method. |
| * @param effectiveLength the effective length after resolution (may be null which equals to |
| * zero effective length) |
| */ |
| public abstract void notifyLayoutManager(MinOptMax effectiveLength); |
| |
| /** {@inheritDoc} */ |
| public String toString() { |
| StringBuffer sb = new StringBuffer(); |
| sb.append(getSide().getName()).append(", "); |
| sb.append(this.length.toString()); |
| if (isConditional()) { |
| sb.append("[discard]"); |
| } else { |
| sb.append("[RETAIN]"); |
| } |
| if (isFirst()) { |
| sb.append("[first]"); |
| } |
| if (isLast()) { |
| sb.append("[last]"); |
| } |
| return sb.toString(); |
| } |
| |
| } |