package org.jactr.modules.pm.motor.event; /* * default logging */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jactr.core.event.AbstractACTREvent; import org.jactr.modules.pm.motor.IMotorModule; import org.jactr.modules.pm.motor.command.IMovement; import org.jactr.modules.pm.motor.managers.MuscleState; public class MotorModuleEvent extends AbstractACTREvent<IMotorModule, IMotorModuleListener> { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(MotorModuleEvent.class); static public enum Type { PREPARED, STARTED, COMPLETED, ABORTED, RESET, REJECTED, ADDED, REMOVED }; private IMovement _movement; private Type _type; private MuscleState _muscleState; public MotorModuleEvent(IMotorModule source, IMovement movement, Type type) { super(source); _type = type; _movement = movement; } public MotorModuleEvent(IMotorModule source, MuscleState muscleState, Type type) { super(source); _type = type; _muscleState = muscleState; } public Type getType() { return _type; } public MuscleState getMuscleState() { if (_muscleState == null) //extract it from the module _muscleState = getSource().getMuscleManager().getMuscleState(_movement.getMuscleIdentifier()); return _muscleState; } public IMovement getMovement() { return _movement; } @Override public void fire(final IMotorModuleListener listener) { switch (this.getType()) { case PREPARED: listener.movementPrepared(this); break; case STARTED: listener.movementStarted(this); break; case ABORTED: listener.movementAborted(this); break; case COMPLETED: listener.movementCompleted(this); break; case REJECTED: listener.movementRejected(this); break; case ADDED: listener.muscleAdded(this); break; case REMOVED: listener.muscleRemoved(this); break; } } }