org.apache.fop.fo.flow.ChangeBar Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.fop Show documentation
Show all versions of org.apache.fop Show documentation
The core maven build properties
The newest version!
/*
* 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;
import java.awt.Color;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.apache.fop.apps.FOPException;
import org.apache.fop.datatypes.Length;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.StaticPropertyList;
import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.SpaceProperty;
/**
* Common change bar base class. Handles change bar properties and validates child nodes.
*/
public abstract class ChangeBar extends FObj {
/**
* Constructs a ChangeBar element with common parts for both begin and end change bars.
*
* @param parent The parent node
*/
public ChangeBar(FONode parent) {
super(parent);
}
/**
* The change bar class (required).
*/
protected String changeBarClass;
/**
* The change bar color.
*/
protected Color color;
/**
* The change bar offset.
*/
protected Length offset;
/**
* The change bar placement.
*/
protected int placement = -1;
/**
* The change bar style.
*/
protected int style = -1;
/**
* The change bar width.
*/
protected Length width;
/**
* The actual line height.
*/
protected SpaceProperty lineHeight;
/** {@inheritDoc} */
public void bind(PropertyList pList) throws FOPException {
super.bind(pList);
changeBarClass = pList.get(PR_CHANGE_BAR_CLASS).getString();
color = pList.get(PR_CHANGE_BAR_COLOR).getColor(getUserAgent());
offset = pList.get(PR_CHANGE_BAR_OFFSET).getLength();
placement = pList.get(PR_CHANGE_BAR_PLACEMENT).getEnum();
style = pList.get(PR_CHANGE_BAR_STYLE).getEnum();
width = pList.get(PR_CHANGE_BAR_WIDTH).getLength();
lineHeight = pList.get(PR_LINE_HEIGHT).getSpace();
}
/** {@inheritDoc} */
protected void validateChildNode(
Locator loc,
String namespaceURI,
String localName) throws ValidationException {
// no children allowed
invalidChildError(loc, namespaceURI, localName);
}
/** {@inheritDoc} */
public void processNode(String elementName, Locator locator,
Attributes attlist, PropertyList pList) throws FOPException {
super.processNode(elementName, locator, attlist, pList);
if (inMarker()) {
PropertyList newPList = new StaticPropertyList(this, null);
newPList.addAttributesToList(attlist);
bind(newPList);
}
if (changeBarClass == null || changeBarClass.isEmpty()) {
missingPropertyError("change-bar-class");
}
if (findAncestor(FO_FLOW) == -1
&& findAncestor(FO_STATIC_CONTENT) == -1) {
getFOValidationEventProducer().changeBarWrongAncestor(this, getName(), locator);
}
}
/**
* Adds the current change bar to the active change bar list.
*/
protected void push() {
getRoot().getLastPageSequence().pushChangeBar(this);
}
/**
* Removes the starting counterpart of the current change bar from the active change bar list.
*/
protected void pop() {
getRoot().getLastPageSequence().popChangeBar(this);
}
/**
* Returns the starting counterpart of the current (ending) change bar.
*
* @return The starting counterpart of the current (ending) change bar
*/
protected ChangeBar getChangeBarBegin() {
return getRoot().getLastPageSequence().getChangeBarBegin(this);
}
/**
* Returns the change bar class.
*
* @return The change bar class
*/
public String getChangeBarClass() {
return changeBarClass;
}
/**
* Returns the change bar color.
*
* @return The change bar color
*/
public Color getColor() {
return color;
}
/**
* Returns the change bar offset.
*
* @return The change bar offset
*/
public Length getOffset() {
return offset;
}
/**
* Returns the change bar placement.
*
* @return The change bar placement
*/
public int getPlacement() {
return placement;
}
/**
* Returns the change bar style.
*
* @return The change bar style
*/
public int getStyle() {
return style;
}
/**
* Returns the change bar width.
*
* @return The change bar width
*/
public Length getWidth() {
return width;
}
/**
* Returns the line height.
*
* @return The line height
*/
public SpaceProperty getLineHeight() {
return lineHeight;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy