Browse Source

Move code to where it belongs: if it only applies to RetrieveTableMarker, it does not belong in FObj

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1722725 13f79535-47bb-0310-9956-ffa450edef68
pull/39/head
Andreas L. Delmelle 8 years ago
parent
commit
731893c37a

+ 2
- 9
src/java/org/apache/fop/fo/FObj.java View File

@@ -21,7 +21,6 @@ package org.apache.fop.fo;

import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -36,7 +35,6 @@ import org.apache.xmlgraphics.util.QName;
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.extensions.ExtensionAttachment;
import org.apache.fop.fo.flow.Marker;
import org.apache.fop.fo.flow.table.TableCell;
import org.apache.fop.fo.properties.Property;
import org.apache.fop.fo.properties.PropertyMaker;

@@ -327,7 +325,7 @@ public abstract class FObj extends FONode implements Constants {
* at the passed-in node (= first call to iterator.next() will
* return childNode)
* @param childNode First node in the iterator
* @return A ListIterator or null if childNode isn't a child of
* @return A FONodeIterator or null if childNode isn't a child of
* this FObj.
*/
public FONodeIterator getChildNodes(FONode childNode) {
@@ -372,7 +370,7 @@ public abstract class FObj extends FONode implements Constants {
String mcname = marker.getMarkerClassName();
if (firstChild != null) {
// check for empty childNodes
for (Iterator<FONode> iter = getChildNodes(); iter.hasNext();) {
for (FONodeIterator iter = getChildNodes(); iter.hasNext();) {
FONode node = iter.next();
if (node instanceof FObj
|| (node instanceof FOText
@@ -553,11 +551,6 @@ public abstract class FObj extends FONode implements Constants {
int found = 1;
FONode temp = getParent();
while (temp != null) {
if (temp instanceof TableCell && (ancestorID == FO_TABLE_HEADER || ancestorID == FO_TABLE_FOOTER)) {
// note that if the retrieve-table-marker is not in a table-header/footer an exception is
// thrown, so no need to reset this flag in that case
((TableCell) temp).flagAsHavingRetrieveTableMarker();
}
if (temp.getNameId() == ancestorID) {
return found;
}

+ 28
- 0
src/java/org/apache/fop/fo/flow/RetrieveTableMarker.java View File

@@ -25,6 +25,7 @@ import org.xml.sax.Locator;
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.flow.table.TableCell;

/**
* Class modelling the <a href="http://www.w3.org/TR/xsl/#fo_retrieve-table-marker">
@@ -80,6 +81,33 @@ public class RetrieveTableMarker extends AbstractRetrieveMarker {
getFOEventHandler().endRetrieveTableMarker(this);
}

/**
* Overridden to flag the ancestor table-cell.
*
* @param ancestorID ID of node name to check for (e.g., FO_ROOT)
* @return number of levels above FO where ancestor exists,
* -1 if not found
*/
@Override
protected int findAncestor(int ancestorID) {
int found = 1;
FONode temp = getParent();
while (temp != null) {
if (temp instanceof TableCell
&& (ancestorID == FO_TABLE_HEADER || ancestorID == FO_TABLE_FOOTER)) {
// note that if the retrieve-table-marker is not in a table-header/footer an exception is
// thrown, so no need to reset this flag in that case
((TableCell) temp).flagAsHavingRetrieveTableMarker();
}
if (temp.getNameId() == ancestorID) {
return found;
}
found += 1;
temp = temp.getParent();
}
return -1;
}

/**
* Return the value for the <code>retrieve-position-within-table</code>
* property

Loading…
Cancel
Save