AppleMenuListener.java

package org.microcol.gui;

import org.microcol.gui.event.ExitGameController;
import org.microcol.gui.event.ExitGameEvent;
import org.microcol.gui.event.AboutGameEvent;
import org.microcol.gui.event.AboutGameEventController;

import com.apple.mrj.MRJAboutHandler;
import com.apple.mrj.MRJQuitHandler;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;

/**
 * Methods are called when some Apple main menu specific action occurs.
 * 
 * @author jajir
 *
 */
public class AppleMenuListener implements MRJAboutHandler, MRJQuitHandler {

	private final AboutGameEventController gameEventController;

	private final ExitGameController exitGameController;

	@Inject
	public AppleMenuListener(final AboutGameEventController mainMenuController,
			final ExitGameController exitGameController) {
		this.gameEventController = Preconditions.checkNotNull(mainMenuController);
		this.exitGameController = Preconditions.checkNotNull(exitGameController);
	}

	@Override
	public void handleAbout() {
		gameEventController.fireEvent(new AboutGameEvent());
	}

	@Override
	public void handleQuit() throws IllegalStateException {
		exitGameController.fireEvent(new ExitGameEvent());
	}

}