KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > layoutmgr > ElementListObserver


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 /* $Id: ElementListObserver.java 426576 2006-07-28 15:44:37Z jeremias $ */
19
20 package org.apache.fop.layoutmgr;
21
22 import java.util.Iterator JavaDoc;
23 import java.util.List JavaDoc;
24
25 /**
26  * This class is used to observe Knuth element lists generated within the layout managers. This
27  * is mainly used for the purpose of automated testing. This implementation here does nothing.
28  * Please see the subclass within the test code.
29  */

30 public class ElementListObserver {
31     
32     private static List JavaDoc activeObservers = null;
33     
34     /**
35      * Adds a new Observer to the list.
36      * @param observer the observer implementation
37      */

38     public static void addObserver(Observer observer) {
39         if (!isObservationActive()) {
40             activeObservers = new java.util.ArrayList JavaDoc();
41         }
42         activeObservers.add(observer);
43     }
44     
45     /**
46      * Removes an Observer from the list. This call simply returns if the observer was not on
47      * the list and does nothing.
48      * @param observer the observer to remove
49      */

50     public static void removeObserver(Observer observer) {
51         if (isObservationActive()) {
52             activeObservers.remove(observer);
53         }
54     }
55     
56     /**
57      * Notifies all registered observers about the element list.
58      * @param elementList the Knuth element list
59      * @param category the category for the element list (example: main, static-content, table-cell)
60      * @param id ID for the element list (may be null)
61      */

62     public static void observe(List JavaDoc elementList, String JavaDoc category, String JavaDoc id) {
63         if (isObservationActive()) {
64             if (category == null) {
65                 throw new NullPointerException JavaDoc("category must not be null");
66             }
67             Iterator JavaDoc i = activeObservers.iterator();
68             while (i.hasNext()) {
69                 ((Observer)i.next()).observe(elementList, category, id);
70             }
71         }
72     }
73     
74     /** @return true if observation is active, i.e. Observers are registered. */
75     public static boolean isObservationActive() {
76         return activeObservers != null;
77     }
78
79     /**
80      * Implement this interface to receive notifications on element lists.
81      */

82     public interface Observer {
83         
84         /**
85          * Notifies the observer about the element list.
86          * @param elementList the Knuth element list
87          * @param category the category for the element list (example: main, static-content or
88          * table-cell)
89          * @param id ID for the element list (may be null)
90          */

91         void observe(List JavaDoc elementList, String JavaDoc category, String JavaDoc id);
92         
93     }
94     
95 }
96
Popular Tags