View Javadoc

1   package com.jpeterson.virtlcd.swing;
2   
3   import javax.swing.event.ChangeEvent;
4   import javax.swing.event.ChangeListener;
5   import javax.swing.event.EventListenerList;
6   
7   /**
8    * Default implementation of the <code>DotMatrixModel</code>.
9    * 
10   * @author Jesse Peterson
11   */
12  public class DefaultDotMatrixModel implements DotMatrixModel {
13  
14  	/**
15  	 * The default character is a "space" character.
16  	 */
17  	public static final char DEFAULT_CHAR = ' ';
18  
19  	private char c = DEFAULT_CHAR;
20  
21  	protected EventListenerList listenerList = new EventListenerList();
22  
23  	public char getChar() {
24  		return c;
25  	}
26  
27  	public void setChar(char c) {
28  		if (this.c != c) {
29  			this.c = c;
30  			fireStateChanged();
31  		}
32  	}
33  
34  	public void addChangeListener(ChangeListener l) {
35  		listenerList.add(ChangeListener.class, l);
36  	}
37  
38  	public void removeChangeListener(ChangeListener l) {
39  		listenerList.remove(ChangeListener.class, l);
40  	}
41  
42  	/**
43  	 * Runs each <code>ChangeListener</code>'s <code>stateChanged</code>
44  	 * method.
45  	 */
46  	protected void fireStateChanged() {
47  		ChangeEvent event = new ChangeEvent(this);
48  		Object[] listeners = listenerList.getListenerList();
49  		for (int i = listeners.length - 2; i >= 0; i -= 2) {
50  			if (listeners[i] == ChangeListener.class) {
51  				((ChangeListener) listeners[i + 1]).stateChanged(event);
52  			}
53  		}
54  	}
55  
56  	/**
57  	 * Returns an array of all the change listeners registered on this
58  	 * <code>DefaultBoundedRangeModel</code>.
59  	 * 
60  	 * @return all of this model's <code>ChangeListener</code>s or an empty
61  	 *         array if no change listeners are currently registered
62  	 * 
63  	 * @see #addChangeListener
64  	 * @see #removeChangeListener
65  	 */
66  	public ChangeListener[] getChangeListeners() {
67  		return (ChangeListener[]) listenerList
68  				.getListeners(ChangeListener.class);
69  	}
70  }