Revision: 7874
http://svn.sourceforge.net/foray/?rev=7874&view=rev
Author: victormote
Date: 2006-09-03 14:32:08 -0700 (Sun, 03 Sep 2006)
Log Message:
-----------
More cleanup of state logic in pagination classes, moving the logic and related variables to inner wrapper classes in PageMasterResolver.
Modified Paths:
--------------
trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/PageMasterResolver.java
trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMAlternatives.java
trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMReference.java
Modified: trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/PageMasterResolver.java
===================================================================
--- trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/PageMasterResolver.java 2006-09-03 21:21:31 UTC (rev 7873)
+++ trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/PageMasterResolver.java 2006-09-03 21:32:08 UTC (rev 7874)
@@ -133,10 +133,18 @@
return new SinglePageMRWrapper((SinglePageMasterReference)
specifier);
}
+ if (specifier instanceof RepeatablePMReference) {
+ return new RepeatablePMRefWrapper((RepeatablePMReference)
+ specifier);
+ }
+ if (specifier instanceof RepeatablePMAlternatives) {
+ return new RepeatablePMAltWrapper((RepeatablePMAlternatives)
+ specifier);
+ }
return null;
}
-/******************************************************************************/
+/* ************************************************************************** */
/**
* Private inner abstract superclass for all sub-sequence specifier
@@ -149,7 +157,7 @@
}
-/******************************************************************************/
+/* ************************************************************************** */
/**
* Private inner class wrapping a {@link SinglePageMasterReference}
@@ -175,4 +183,64 @@
}
+/* ************************************************************************** */
+
+ /**
+ * Private inner class wrapping a {@link RepeatablePMReference} instance.
+ */
+ private class RepeatablePMRefWrapper extends SubSequenceWrapper {
+
+ private RepeatablePMReference wrapped;
+ private int numberConsumed = 0;
+
+ RepeatablePMRefWrapper(final RepeatablePMReference wrapped) {
+ this.wrapped = wrapped;
+ }
+
+ public String getNextPageMasterName(final boolean isOddPage,
+ final boolean isFirstPage, final boolean isEmptyPage) {
+ if (numberConsumed < wrapped.traitMaximumRepeats()) {
+ numberConsumed++;
+ } else {
+ return null;
+ }
+ return wrapped.traitMasterName();
+ }
+
+ }
+
+/* ************************************************************************** */
+
+ /**
+ * Private inner class wrapping a {@link RepeatablePMAlternatives} instance.
+ */
+ private class RepeatablePMAltWrapper extends SubSequenceWrapper {
+
+ private RepeatablePMAlternatives wrapped;
+ private int numberConsumed = 0;
+
+ RepeatablePMAltWrapper(final RepeatablePMAlternatives wrapped) {
+ this.wrapped = wrapped;
+ }
+
+ public String getNextPageMasterName(final boolean isOddPage,
+ final boolean isFirstPage, final boolean isEmptyPage) {
+ if (numberConsumed < wrapped.traitMaximumRepeats()) {
+ numberConsumed++;
+ } else {
+ return null;
+ }
+
+ for (int i = 0; i < wrapped.getChildCount(); i++) {
+ final ConditionalPageMasterReference cpmr =
+ (ConditionalPageMasterReference) wrapped.getChildAt(i);
+ if (cpmr.isValid(isOddPage, isFirstPage, isEmptyPage)) {
+ return cpmr.traitMasterReference();
+ }
+ }
+ return null;
+ }
+
+ }
+
}
Modified: trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMAlternatives.java
===================================================================
--- trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMAlternatives.java 2006-09-03 21:21:31 UTC (rev 7873)
+++ trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMAlternatives.java 2006-09-03 21:32:08 UTC (rev 7874)
@@ -43,11 +43,6 @@
public class RepeatablePMAlternatives extends FObj
implements SubSequenceSpecifier {
- /* TODO: This state information should probably be stored in
- * PageSequenceMaster, with a unique value for each occurrence used within
- * each PageSequence. */
- private int numberConsumed = 0;
-
public RepeatablePMAlternatives(final FObj parent,
final PropertyList propertyList, final String systemId,
final int line, final int column) {
@@ -96,28 +91,6 @@
return "repeatable-page-master-alternatives";
}
- public String getNextPageMasterName(final boolean isOddPage,
- final boolean isFirstPage, final boolean isEmptyPage) {
- if (numberConsumed < traitMaximumRepeats()) {
- numberConsumed++;
- } else {
- return null;
- }
-
- for (int i = 0; i < this.children.size(); i++) {
- final ConditionalPageMasterReference cpmr =
- (ConditionalPageMasterReference)this.children.get(i);
- if (cpmr.isValid(isOddPage, isFirstPage, isEmptyPage)) {
- return cpmr.traitMasterReference();
- }
- }
- return null;
- }
-
- public void reset() {
- this.numberConsumed = 0;
- }
-
public Namespace getNamespace() {
return this.getFOTreeBuilder().getFONamespace();
}
Modified: trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMReference.java
===================================================================
--- trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMReference.java 2006-09-03 21:21:31 UTC (rev 7873)
+++ trunk/foray/foray-fotree/src/java/org/foray/fotree/fo/obj/RepeatablePMReference.java 2006-09-03 21:32:08 UTC (rev 7874)
@@ -43,11 +43,6 @@
public class RepeatablePMReference extends FObj
implements SubSequenceSpecifier {
- /* TODO: This state information should probably be stored in
- * PageSequenceMaster, with a unique value for each occurrence used within
- * each PageSequence. */
- private int numberConsumed = 0;
-
public RepeatablePMReference(final FObj parent,
final PropertyList propertyList, final String systemId,
final int line, final int column) {
@@ -101,20 +96,6 @@
return "repeatable-page-master-reference";
}
- public String getNextPageMasterName(final boolean isOddPage,
- final boolean isFirstPage, final boolean isEmptyPage) {
- if (numberConsumed < traitMaximumRepeats()) {
- numberConsumed++;
- } else {
- return null;
- }
- return traitMasterName();
- }
-
- public void reset() {
- this.numberConsumed = 0;
- }
-
public Namespace getNamespace() {
return this.getFOTreeBuilder().getFONamespace();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|