Small changes, deferred BusAccess assignment to Bus nodes

master
Ondřej Hruška 10 years ago
parent 84e9384bb9
commit 8406146270
  1. 2
      src/mightypork/utils/annotations/Stub.java
  2. 40
      src/mightypork/utils/eventbus/clients/BusNode.java
  3. 29
      src/mightypork/utils/eventbus/clients/RootBusNode.java
  4. 4
      src/mightypork/utils/math/animation/Animator.java
  5. 33
      src/mightypork/utils/math/color/Color.java

@ -18,6 +18,6 @@ import java.lang.annotation.Target;
@Documented @Documented
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@Target(value = { ElementType.METHOD }) @Target(value = { ElementType.METHOD })
public @interface DefaultImpl { public @interface Stub {
// //
} }

@ -5,6 +5,7 @@ import java.util.Collection;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import mightypork.utils.annotations.Stub;
import mightypork.utils.eventbus.BusAccess; import mightypork.utils.eventbus.BusAccess;
import mightypork.utils.eventbus.EventBus; import mightypork.utils.eventbus.EventBus;
@ -17,7 +18,7 @@ import mightypork.utils.eventbus.EventBus;
*/ */
public abstract class BusNode implements BusAccess, ClientHub { public abstract class BusNode implements BusAccess, ClientHub {
private final BusAccess busAccess; private BusAccess busAccess;
private final Set<Object> clients = new LinkedHashSet<>(); private final Set<Object> clients = new LinkedHashSet<>();
private boolean listening = true; private boolean listening = true;
@ -27,9 +28,43 @@ public abstract class BusNode implements BusAccess, ClientHub {
/** /**
* @param busAccess access to bus * @param busAccess access to bus
*/ */
public BusNode(BusAccess busAccess) public BusNode(BusAccess busAccess) {
setBusAccess(busAccess);
}
/**
* Create without a bus access. Bus access should be set using the
* setBusAccess() method.
*/
public BusNode() {
}
/**
* Handler called when bus access first provides a valid bus instance.<br>
* The node may now eg. subscribe to the bus.
*/
@Stub
public void onBusReady()
{
// do stuff
}
/**
* Assign a bus access. If the buss access provides a buss, the onBusReady()
* method will be called.
*
* @param busAccess the assigned bus access
*/
public final void setBusAccess(BusAccess busAccess)
{ {
this.busAccess = busAccess; this.busAccess = busAccess;
if (getEventBus() != null) {
onBusReady();
}
} }
@ -109,6 +144,7 @@ public abstract class BusNode implements BusAccess, ClientHub {
@Override @Override
public EventBus getEventBus() public EventBus getEventBus()
{ {
if(busAccess==null) return null;
return busAccess.getEventBus(); return busAccess.getEventBus();
} }

@ -1,7 +1,7 @@
package mightypork.utils.eventbus.clients; package mightypork.utils.eventbus.clients;
import mightypork.utils.annotations.DefaultImpl; import mightypork.utils.annotations.Stub;
import mightypork.utils.eventbus.BusAccess; import mightypork.utils.eventbus.BusAccess;
import mightypork.utils.interfaces.Destroyable; import mightypork.utils.interfaces.Destroyable;
@ -14,12 +14,25 @@ import mightypork.utils.interfaces.Destroyable;
public abstract class RootBusNode extends BusNode implements Destroyable { public abstract class RootBusNode extends BusNode implements Destroyable {
/** /**
* Create with a bus access.
*
* @param busAccess access to bus * @param busAccess access to bus
*/ */
public RootBusNode(BusAccess busAccess) public RootBusNode(BusAccess busAccess) {
{
super(busAccess); super(busAccess);
}
/**
* Create without a bus access. It should be assigned later.
*/
public RootBusNode() {
}
@Override
public void onBusReady()
{
getEventBus().subscribe(this); getEventBus().subscribe(this);
} }
@ -29,15 +42,17 @@ public abstract class RootBusNode extends BusNode implements Destroyable {
{ {
deinit(); deinit();
getEventBus().unsubscribe(this); if (getEventBus() != null) {
getEventBus().unsubscribe(this);
}
} }
/** /**
* Deinitialize the subsystem<br> * Deinitialize the node (subsystem)<br>
* (called during destruction) * (called during destruction)
*/ */
@DefaultImpl @Stub
protected void deinit() protected void deinit()
{ {
} }

@ -1,7 +1,7 @@
package mightypork.utils.math.animation; package mightypork.utils.math.animation;
import mightypork.utils.annotations.DefaultImpl; import mightypork.utils.annotations.Stub;
import mightypork.utils.interfaces.Pauseable; import mightypork.utils.interfaces.Pauseable;
import mightypork.utils.interfaces.Updateable; import mightypork.utils.interfaces.Updateable;
import mightypork.utils.math.Calc; import mightypork.utils.math.Calc;
@ -120,7 +120,7 @@ public abstract class Animator implements NumBound, Updateable, Pauseable {
} }
@DefaultImpl @Stub
protected abstract void nextCycle(NumAnimated anim); protected abstract void nextCycle(NumAnimated anim);

@ -244,4 +244,37 @@ public abstract class Color {
{ {
return new ColorAlphaAdjuster(this, multiplier); return new ColorAlphaAdjuster(this, multiplier);
} }
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(b());
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(g());
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(r());
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(a());
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj)
{
if (this == obj) return true;
if (obj == null) return false;
if (!(obj instanceof Color)) return false;
Color other = (Color) obj;
if (Double.doubleToLongBits(b()) != Double.doubleToLongBits(other.b())) return false;
if (Double.doubleToLongBits(g()) != Double.doubleToLongBits(other.g())) return false;
if (Double.doubleToLongBits(r()) != Double.doubleToLongBits(other.r())) return false;
if (Double.doubleToLongBits(a()) != Double.doubleToLongBits(other.a())) return false;
return true;
}
} }

Loading…
Cancel
Save