01: /*
02: * $Id: ErrorSupport.java,v 1.1 2006/04/28 18:28:19 joshy Exp $
03: *
04: * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,
05: * Santa Clara, California 95054, U.S.A. All rights reserved.
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20: */
21:
22: package org.jdesktop.swingx.error;
23:
24: import java.util.ArrayList;
25: import java.util.List;
26: import javax.swing.SwingUtilities;
27: import org.jdesktop.swingx.*;
28:
29: /**
30: * ErrorSupport provides support for managing error listeners.
31: * @author Joshua Marinacci joshua.marinacci@sun.com
32: * @see ErrorListener
33: * @see ErrorEvent
34: */
35: public class ErrorSupport {
36: private List<ErrorListener> listeners;
37: private Object source;
38:
39: /**
40: * Creates a new instance of <CODE>ErrorSupport</CODE>
41: * @param source The object which will fire the <CODE>ErrorEvent</CODE>s
42: */
43: public ErrorSupport(Object source) {
44: this .source = source;
45: listeners = new ArrayList<ErrorListener>();
46: }
47:
48: /**
49: * Add an ErrorListener
50: * @param listener the listener to add
51: */
52: public void addErrorListener(ErrorListener listener) {
53: listeners.add(listener);
54: }
55:
56: /**
57: * Remove an error listener
58: * @param listener the listener to remove
59: */
60: public void removeErrorListener(ErrorListener listener) {
61: listeners.remove(listener);
62: }
63:
64: /**
65: * Returns an array of all the listeners which were added to the
66: * <CODE>ErrorSupport</CODE> object with <CODE>addErrorListener()</CODE>.
67: * @return all of the <CODE>ErrorListener</CODE>s added or an empty array if no listeners have been
68: * added.
69: */
70: public ErrorListener[] getErrorListeners() {
71: return listeners.toArray(null);
72: }
73:
74: /**
75: * Report that an error has occured
76: * @param throwable The <CODE>{@link Error}</CODE> or <CODE>{@link Exception}</CODE> which occured.
77: */
78: public void fireErrorEvent(final Throwable throwable) {
79: final ErrorEvent evt = new ErrorEvent(throwable, source);
80: SwingUtilities.invokeLater(new Runnable() {
81: public void run() {
82: for (ErrorListener el : listeners) {
83: el.errorOccured(evt);
84: }
85: }
86: });
87: }
88:
89: }
|