View Javadoc

1   /*
2    * File:    Event.java
3    * Created: 22.10.2006 17:11:19
4    *
5    * Copyright 2006 Michal Burda.
6    *
7    * This program is free software; you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as published by
9    * the Free Software Foundation; either version 2 of the License, or
10   * (at your option) any later version.
11   *
12   * This program 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
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with this program; if not, write to the Free Software
19   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20   */
21  
22  package net.sf.webmancer.base;
23  
24  /**
25   * @author Michal Burda
26   */
27  public class Event {
28      /**
29       * Target object name or <code>null</code>, if the event is broadcast.
30       */
31      private String target;
32  
33      /**
34       * <code>true</code> if the event is handled already.
35       */
36      private boolean handled;
37  
38      /**
39       * Creates new event that is adressed to target object <code>target</code>. A <code>null</code> target means a broadcast event.
40       * 
41       * @param target The target object identification or <code>null</code> for broadcast event.
42       */
43      public Event(final String target) {
44          this.target = target;
45          this.handled = false;
46      }
47  
48      /**
49       * Creates new broadcast event.
50       */
51      public Event() {
52          this(null);
53      }
54  
55      /**
56       * Returns <code>true</code> if the event has been handled already. Broadcast events return always <code>false</code>.
57       * 
58       * @return <code>true</code> if the event has been handled already.
59       */
60      public boolean isHandled() {
61          return this.handled;
62      }
63  
64      /**
65       * Returns <code>true</code> if the current event is a broadcast event. Broadcast events do not have any concrete target.
66       * 
67       * @return <code>true</code> if the current event is a broadcast event. 
68       */
69      public boolean isBroadcast() {
70          return this.target == null;
71      }
72  
73      /**
74       * Return the target object's name or <code>null</code>, if the current event is broadcast.
75       * 
76       * @return the target object's name
77       */
78      public String getTarget() {
79          return this.target;
80      }
81  
82      /**
83       * Set the handled flag to the event. Broadcast events cannot be set to handled.
84       * 
85       * @param handled the handled flag
86       * @throws IllegalStateException if setting handled for a broadcast event
87       */
88      public void setHandled(final boolean handled) {
89          if (handled && isBroadcast()) {
90              throw new IllegalStateException("Broadcast event cannot be set to handled by any widget");
91          }
92          this.handled = handled;
93      }
94  
95      /**
96       * @see java.lang.Object#toString()
97       */
98      @Override
99      public String toString() {
100         StringBuilder sb = new StringBuilder();
101         sb.append(this.getClass().getName());
102         sb.append("{target=");
103         sb.append(this.target);
104         sb.append(", handled=");
105         sb.append(this.handled);
106         sb.append("}");
107         return sb.toString();
108     }
109 
110     
111 }