blob: fe3566d418ace5fd7cd66559a82e8dcc5016cb66 [file]
/*
* 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.properties;
import org.apache.fop.datatypes.CompoundDatatype;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.expr.PropertyException;
/**
* Superclass for properties that wrap Keep values
*/
public class KeepProperty extends Property implements CompoundDatatype {
private Property withinLine;
private Property withinColumn;
private Property withinPage;
/**
* Inner class for creating instances of KeepProperty
*/
public static class Maker extends CompoundPropertyMaker {
/**
* @param propId the id of the property for which a Maker should be created
*/
public Maker(int propId) {
super(propId);
}
/**
* Create a new empty instance of KeepProperty.
* @return the new instance.
*/
public Property makeNewProperty() {
return new KeepProperty();
}
/**
* @see CompoundPropertyMaker#convertProperty
*/
public Property convertProperty(Property p, PropertyList propertyList, FObj fo)
throws PropertyException
{
if (p instanceof KeepProperty) {
return p;
}
return super.convertProperty(p, propertyList, fo);
}
}
/**
* @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
*/
public void setComponent(int cmpId, Property cmpnValue,
boolean bIsDefault) {
if (cmpId == CP_WITHIN_LINE) {
setWithinLine(cmpnValue, bIsDefault);
} else if (cmpId == CP_WITHIN_COLUMN) {
setWithinColumn(cmpnValue, bIsDefault);
} else if (cmpId == CP_WITHIN_PAGE) {
setWithinPage(cmpnValue, bIsDefault);
}
}
/**
* @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
*/
public Property getComponent(int cmpId) {
if (cmpId == CP_WITHIN_LINE) {
return getWithinLine();
} else if (cmpId == CP_WITHIN_COLUMN) {
return getWithinColumn();
} else if (cmpId == CP_WITHIN_PAGE) {
return getWithinPage();
} else {
return null;
}
}
/**
* @param withinLine withinLine property to set
* @param bIsDefault not used (??)
*/
public void setWithinLine(Property withinLine, boolean bIsDefault) {
this.withinLine = withinLine;
}
/**
* @param withinColumn withinColumn property to set
* @param bIsDefault not used (??)
*/
protected void setWithinColumn(Property withinColumn,
boolean bIsDefault) {
this.withinColumn = withinColumn;
}
/**
* @param withinPage withinPage property to set
* @param bIsDefault not used (??)
*/
public void setWithinPage(Property withinPage, boolean bIsDefault) {
this.withinPage = withinPage;
}
/**
* @return the withinLine property
*/
public Property getWithinLine() {
return this.withinLine;
}
/**
* @return the withinColumn property
*/
public Property getWithinColumn() {
return this.withinColumn;
}
/**
* @return the withinPage property
*/
public Property getWithinPage() {
return this.withinPage;
}
/**
* Not sure what to do here. There isn't really a meaningful single value.
* @return String representation
*/
public String toString() {
return "Keep[" +
"withinLine:" + getWithinLine().getObject() +
", withinColumn:" + getWithinColumn().getObject() +
", withinPage:" + getWithinPage().getObject() + "]";
}
/**
* @return this.keep
*/
public KeepProperty getKeep() {
return this;
}
/**
* @return this.keep cast as Object
*/
public Object getObject() {
return this;
}
}