MoveUnitController.java

package org.microcol.gui.event;

import java.util.ArrayList;
import java.util.List;

import org.microcol.model.event.ShipMovedEvent;

import com.google.common.base.Preconditions;

/**
 * Controller allows to register unit moving listeners and fire events.
 * 
 */
//TODO JJ split to separate event classes use AbstractEventController
public class MoveUnitController {

	private final List<Listener<ShipMovedEvent>> listeners = new ArrayList<>();

	private final List<Listener<String>> listenersStartMove = new ArrayList<>();

	public void addMoveUnitListener(final Listener<ShipMovedEvent> listener) {
		Preconditions.checkNotNull(listener);
		listeners.add(listener);
	}

	public void addStartMovingListener(final Listener<String> listener) {
		Preconditions.checkNotNull(listener);
		listenersStartMove.add(listener);
	}

	public void fireUnitMovedEvent(final ShipMovedEvent event) {
		Preconditions.checkNotNull(event);
		listeners.forEach(listener -> {
			listener.onEvent(event);
		});
	}

	public void fireStartMoveEvent() {
		listenersStartMove.forEach(listener -> {
			listener.onEvent("");
		});

	}

}