1 /*
2 * Copyright (c) 2003-2008 by Cosylab d. d.
3 *
4 * This file is part of CosyBeans-Common.
5 *
6 * CosyBeans-Common is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * CosyBeans-Common is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with CosyBeans-Common. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package com.cosylab.gui.components.range2;
21
22 import java.util.EventObject;
23
24 /**
25 * This is the event object holding the information about the change in
26 * <code>RangedValue</code>. This implementation notifies about changes in
27 * minimum, maximum, value or policy changes. More than one change can be
28 * carried by this event.
29 *
30 * @author <a href="mailto:ales.pucelj@cosylab.com">Ales Pucelj</a>
31 * @version $id$
32 */
33 public class RangedValueEvent extends EventObject {
34
35 private static final long serialVersionUID = 1L;
36
37 // Bit indicating the minimum has changed
38 public static final int MINIMUM_CHANGED = 1;
39
40 // Bit indicating the maximum has changed
41 public static final int MAXIMUM_CHANGED = 2;
42
43 // Bit indicating the value has changed
44 public static final int VALUE_CHANGED = 4;
45
46 // Bit indicating the value has changed
47 public static final int RAW_VALUE_CHANGED = 8;
48
49 // Bits indicating policies have changed
50 public static final int POLICY_CHANGED = 16;
51
52 private int change;
53
54 /**
55 * Constructor for RangedValueEvent. This constructor initializes the
56 * fields to notify of change in minimum, maximum and/or value.
57 *
58 * @param source
59 * @param min boolean Has minimum changed.
60 * @param max boolean Has maximum changed.
61 * @param val boolean Has value changed.
62 */
63 public RangedValueEvent(
64 Object source,
65 boolean min,
66 boolean max,
67 boolean val,
68 boolean raw) {
69
70 super(source);
71 change = 0;
72
73 setBit(MINIMUM_CHANGED, min);
74 setBit(MAXIMUM_CHANGED, max);
75 setBit(VALUE_CHANGED, val);
76 setBit(RAW_VALUE_CHANGED, raw);
77 }
78
79 /**
80 * Constructor for RangedValueEvent. This constructor initializes the fields
81 * to notify of change in policies.
82 *
83 * @param source Object
84 * @param policyAdded boolean True if policy added, false if removed.
85 */
86 public RangedValueEvent(
87 Object source,
88 boolean policyChanged) {
89 super(source);
90 setBit(POLICY_CHANGED, policyChanged);
91 }
92
93 /**
94 * @param bit int
95 * @param state boolean
96 */
97 protected final void setBit(final int bit, final boolean state) {
98 if (state) {
99 change |= bit;
100 } else {
101 change &= ~bit;
102 }
103 }
104
105 /**
106 * @param bit int
107 * @return boolean
108 */
109 private final boolean bitSet(int bit) {
110 return (change & bit) > 0;
111 }
112
113 /**
114 * Reuturns whether minimum has changed.
115 *
116 * @return boolean
117 */
118 public final boolean isMinimumChanged() {
119 return bitSet(MINIMUM_CHANGED);
120 }
121
122 /**
123 * Returns whether value has changed.
124 *
125 * @return boolean
126 */
127 public final boolean isMaximumChanged() {
128 return bitSet(MAXIMUM_CHANGED);
129 }
130
131 /**
132 * Returns whether value has changed.
133 *
134 * @return boolean
135 */
136 public final boolean isValueChanged() {
137 return bitSet(VALUE_CHANGED);
138 }
139
140 /**
141 * Returns whether value has changed.
142 *
143 * @return boolean
144 */
145 public final boolean isRawValueChanged() {
146 return bitSet(RAW_VALUE_CHANGED);
147 }
148
149 /**
150 * Returns whether minimum and maximum have changed.
151 *
152 * @return boolean
153 */
154 public final boolean isMinMaxChanged() {
155 return isMaximumChanged() && isMinimumChanged();
156 }
157
158 /**
159 * Returns whether minimum or maximum have changed.
160 *
161 * @return boolean
162 */
163 public final boolean isMinOrMaxChanged() {
164 return isMinimumChanged() || isMaximumChanged();
165 }
166
167 /**
168 * Returns whether the policies have changed.
169 *
170 * @return boolean
171 */
172 public final boolean isPolicyChanged() {
173 return bitSet(POLICY_CHANGED);
174 }
175
176 /**
177 * Returns the change mask. This value can be then checked agains the
178 * constants defined by this event to determine which changes have occured.
179 *
180 * @return int
181 */
182 public final int getChange() {
183 return change;
184 }
185
186 }