View Javadoc

1   package cz.cuni.amis.pogamut.base.communication.command.react;
2   
3   import cz.cuni.amis.pogamut.base.communication.command.IAct;
4   import cz.cuni.amis.pogamut.base.communication.messages.CommandMessage;
5   
6   /**
7    * This abstract class allows you to easily hook a specific event-handling behavior. It automatically
8    * register a listener for a specified {@link IWorldCommand} for you and calls {@link CommandReactOnce#react(IWorldCommand)}
9    * method automatically. The {@link CommandReactOnce#react(IWorldCommand)} will be called only once (upon first event received).
10   * <p><p>
11   * If you need to react every time, use {@link CommandReact}.
12   * <p><p>
13   * <p><p>
14   * Use {@link CommandReactOnce#enable()} and {@link CommandReactOnce#disable()} to enable react / disable react. The reaction is enabled
15   * as default.
16   * <b>WARNING:</b>Use as anonymous class, but <b>save it as a field</b> of your class! Note, that we're using weak-references to 
17   * listeners and if you do not save pointer to the object, it will be gc()ed!
18   * 
19   * @author Jimmy
20   *
21   * @param <COMMAND>
22   */
23  public abstract class CommandReactOnce<COMMAND extends CommandMessage> extends CommandReact<COMMAND> {
24  
25  	public CommandReactOnce(Class<COMMAND> commandClass, IAct act) {
26  		super(commandClass, act);
27  	}
28  	
29  	/**
30  	 * Disables the reaction.
31  	 */
32  	@Override
33  	protected void postReact(COMMAND event) {
34  		super.postReact(event);
35  		disable();
36  	}
37  
38  }