/
BaseModifier.java
119 lines (96 loc) · 3.69 KB
/
BaseModifier.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package org.andengine.util.modifier;
import org.andengine.util.adt.list.SmartList;
/**
* (c) 2010 Nicolas Gramlich
* (c) 2011 Zynga Inc.
*
* @author Nicolas Gramlich
* @since 10:47:23 - 03.09.2010
* @param <T>
*/
public abstract class BaseModifier<T> implements IModifier<T> {
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
protected boolean mFinished;
private boolean mAutoUnregisterWhenFinished = true;
private final SmartList<IModifierListener<T>> mModifierListeners = new SmartList<IModifierListener<T>>(2);
// ===========================================================
// Constructors
// ===========================================================
public BaseModifier() {
}
public BaseModifier(final IModifierListener<T> pModifierListener) {
this.addModifierListener(pModifierListener);
}
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public boolean isFinished() {
return this.mFinished;
}
@Override
public final boolean isAutoUnregisterWhenFinished() {
return this.mAutoUnregisterWhenFinished;
}
@Override
public final void setAutoUnregisterWhenFinished(final boolean pAutoUnregisterWhenFinished) {
this.mAutoUnregisterWhenFinished = pAutoUnregisterWhenFinished;
}
@Override
public void addModifierListener(final IModifierListener<T> pModifierListener) {
if(pModifierListener != null) {
this.mModifierListeners.add(pModifierListener);
}
}
@Override
public boolean removeModifierListener(final IModifierListener<T> pModifierListener) {
if(pModifierListener == null) {
return false;
} else {
return this.mModifierListeners.remove(pModifierListener);
}
}
@Override
public abstract IModifier<T> deepCopy() throws DeepCopyNotSupportedException;
// ===========================================================
// Methods
// ===========================================================
protected void onModifierStarted(final T pItem) {
final SmartList<IModifierListener<T>> modifierListeners = this.mModifierListeners;
final int modifierListenerCount = modifierListeners.size();
for(int i = modifierListenerCount - 1; i >= 0; i--) {
modifierListeners.get(i).onModifierStarted(this, pItem);
}
}
protected void onModifierFinished(final T pItem) {
final SmartList<IModifierListener<T>> modifierListeners = this.mModifierListeners;
final int modifierListenerCount = modifierListeners.size();
for(int i = modifierListenerCount - 1; i >= 0; i--) {
modifierListeners.get(i).onModifierFinished(this, pItem);
}
}
protected static final <T> void assertNoNullModifier(final IModifier<T> pModifier) {
if(pModifier == null) {
throw new IllegalArgumentException("Illegal 'null' " + IModifier.class.getSimpleName() + " detected!");
}
}
protected static final <T> void assertNoNullModifier(final IModifier<T> ... pModifiers) {
final int modifierCount = pModifiers.length;
for(int i = 0; i < modifierCount; i++) {
if(pModifiers[i] == null) {
throw new IllegalArgumentException("Illegal 'null' " + IModifier.class.getSimpleName() + " detected at position: '" + i + "'!");
}
}
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}