You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by pb...@apache.org on 2004/07/24 19:01:50 UTC
cvs commit: xml-fop/src/java/org/apache/fop/area SpacesRectangle.java
pbwest 2004/07/24 10:01:50
Modified: src/java/org/apache/fop/area Tag: FOP_0-20-0_Alt-Design
SpacesRectangle.java
Log:
Added registerAreaListener() and notifyListeners to allow AllocationRectangle objects to register interest in size modifications to spaces
Override setContents() to call notifyListeners() to update any dependent AllocationRectangles
Revision Changes Path
No revision
No revision
1.1.2.6 +40 -2 xml-fop/src/java/org/apache/fop/area/Attic/SpacesRectangle.java
Index: SpacesRectangle.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/Attic/SpacesRectangle.java,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -r1.1.2.5 -r1.1.2.6
--- SpacesRectangle.java 14 Jun 2004 08:53:46 -0000 1.1.2.5
+++ SpacesRectangle.java 24 Jul 2004 17:01:50 -0000 1.1.2.6
@@ -21,6 +21,9 @@
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+
+import org.apache.fop.area.Area.AreaGeometry;
/**
* @author pbw
@@ -51,5 +54,40 @@
BorderRectangle contents, Point2D contentOffset) {
super(area, rect, contents, contentOffset);
}
+
+ public void setContents(AreaGeometry contents) {
+ super.setContents(contents);
+ notifyListeners(this);
+ }
+
+ /** Initial size of the <code>listeners</code> array */
+ private static final int INITIAL_SPACES_LISTENER_SIZE = 1;
+ /** Array of registered <code>AreaListener</code>s */
+ private ArrayList listeners = null;
+ /**
+ * Registers a listener to be notified on any change of dimension in the
+ * <code>spaces</code> <code>AreaFrame</code>.
+ * @param listener to be notified
+ */
+ public void registerAreaListener(AreaListener listener) {
+ synchronized (this) {
+ if (listeners == null) {
+ listeners = new ArrayList(INITIAL_SPACES_LISTENER_SIZE);
+ }
+ listeners.add(listener);
+ }
+ }
+
+ /**
+ * Notifies any registered listener of a change of dimensions in the
+ * <code>Rectangle2D</code> content
+ */
+ protected void notifyListeners(Area.AreaGeometry geometry) {
+ for (int i = 0; i < listeners.size(); i++) {
+ synchronized (this) {
+ ((AreaListener)(listeners.get(i))).setDimensions(geometry);
+ }
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org