1   /**
2    * Distribution License:
3    * BibleDesktop is free software; you can redistribute it and/or modify it under
4    * the terms of the GNU General Public License, version 2 as published by
5    * the Free Software Foundation. This program is distributed in the hope
6    * that it will be useful, but WITHOUT ANY WARRANTY; without even the
7    * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8    * See the GNU General Public License for more details.
9    *
10   * The License is available on the internet at:
11   *       http://www.gnu.org/copyleft/gpl.html
12   * or by writing to:
13   *      Free Software Foundation, Inc.
14   *      59 Temple Place - Suite 330
15   *      Boston, MA 02111-1307, USA
16   *
17   * Copyright: 2005
18   *     The copyright to this program is held by it's authors.
19   *
20   * ID: $Id: ProxyBookDataDisplay.java 2115 2011-03-12 20:29:39Z dmsmith $
21   */
22  package org.crosswire.bibledesktop.display;
23  
24  import java.awt.Component;
25  import java.beans.PropertyChangeEvent;
26  
27  import org.crosswire.bibledesktop.passage.KeyChangeListener;
28  import org.crosswire.jsword.book.Book;
29  import org.crosswire.jsword.passage.Key;
30  
31  /**
32   * An implementation of BookDataDisplay that simply proxies all requests to an
33   * underlying BookDataDisplay.
34   * <p>
35   * Useful for chaining a few BookDataDisplays together to add functionality
36   * component by component.
37   * </p>
38   * 
39   * @see gnu.gpl.License for license details.<br>
40   *      The copyright to this program is held by it's authors.
41   * @author Joe Walker [joe at eireneh dot com]
42   */
43  public class ProxyBookDataDisplay implements BookDataDisplay {
44      /**
45       * Setup the proxy
46       */
47      public ProxyBookDataDisplay(BookDataDisplay proxy) {
48          this.proxy = proxy;
49      }
50  
51      /**
52       * Accessor for the proxy
53       * 
54       * @return Returns the proxy.
55       */
56      protected BookDataDisplay getProxy() {
57          return proxy;
58      }
59  
60      /* (non-Javadoc)
61       * @see org.crosswire.bibledesktop.display.BookDataDisplay#addKeyChangeListener(org.crosswire.bibledesktop.passage.KeyChangeListener)
62       */
63      public void addKeyChangeListener(KeyChangeListener listener) {
64          proxy.addKeyChangeListener(listener);
65      }
66  
67      /* (non-Javadoc)
68       * @see org.crosswire.bibledesktop.display.BookDataDisplay#removeKeyChangeListener(org.crosswire.bibledesktop.passage.KeyChangeListener)
69       */
70      public void removeKeyChangeListener(KeyChangeListener listener) {
71          proxy.removeKeyChangeListener(listener);
72      }
73  
74      /* (non-Javadoc)
75       * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
76       */
77      public void propertyChange(PropertyChangeEvent evt) {
78          proxy.propertyChange(evt);
79      }
80  
81      /* (non-Javadoc)
82       * @see org.crosswire.bibledesktop.display.BookDataDisplay#addURIEventListener(org.crosswire.bibledesktop.display.URIEventListener)
83       */
84      public void addURIEventListener(URIEventListener listener) {
85          proxy.addURIEventListener(listener);
86      }
87  
88      /* (non-Javadoc)
89       * @see org.crosswire.bibledesktop.display.BookDataDisplay#removeURIEventListener(org.crosswire.bibledesktop.display.URIEventListener)
90       */
91      public void removeURIEventListener(URIEventListener listener) {
92          proxy.removeURIEventListener(listener);
93      }
94  
95      /* (non-Javadoc)
96       * @see org.crosswire.bibledesktop.display.BookDataDisplay#copy()
97       */
98      public void copy() {
99          proxy.copy();
100     }
101 
102     /* (non-Javadoc)
103      * @see org.crosswire.bibledesktop.display.BookDataDisplay#getComponent()
104      */
105     public Component getComponent() {
106         return proxy.getComponent();
107     }
108 
109     /* (non-Javadoc)
110      * @see org.crosswire.bibledesktop.display.BookDataDisplay#clearBookData()
111      */
112     public void clearBookData() {
113         setBookData(null, null);
114     }
115 
116     /* (non-Javadoc)
117      * @see org.crosswire.bibledesktop.display.BookDataDisplay#setBookData(org.crosswire.jsword.book.Book[], org.crosswire.jsword.passage.Key)
118      */
119     public void setBookData(Book[] books, Key key) {
120         proxy.setBookData(books, key);
121     }
122 
123     /* (non-Javadoc)
124      * @see org.crosswire.bibledesktop.display.BookDataDisplay#setCompareBooks(boolean)
125      */
126     public void setCompareBooks(boolean compare) {
127         proxy.setCompareBooks(compare);
128     }
129 
130     /* (non-Javadoc)
131      * @see org.crosswire.bibledesktop.display.BookDataDisplay#refresh()
132      */
133     public void refresh() {
134         proxy.refresh();
135     }
136 
137     /* (non-Javadoc)
138      * @see java.lang.Object#toString()
139      */
140     @Override
141     public String toString() {
142         return proxy.toString();
143     }
144 
145     /* (non-Javadoc)
146      * @see org.crosswire.bibledesktop.display.BookDataDisplay#getKey()
147      */
148     public Key getKey() {
149         return getProxy().getKey();
150     }
151 
152     /* (non-Javadoc)
153      * @see org.crosswire.bibledesktop.display.BookDataDisplay#getBooks()
154      */
155     public Book[] getBooks() {
156         return getProxy().getBooks();
157     }
158 
159     /* (non-Javadoc)
160      * @see org.crosswire.bibledesktop.display.BookDataDisplay#getFirstBook()
161      */
162     public Book getFirstBook() {
163         return getProxy().getFirstBook();
164     }
165 
166     /**
167      * The component to which we proxy
168      */
169     private BookDataDisplay proxy;
170 }
171