// ASAP classes
import org.asapframework.management.movie.*;
import org.asapframework.ui.buttons.EventButtonEvent;
// project classes
import data.AppData;
import events.NavigationEvent;
import ui.SimpleButton;
import data.State;
class controllers.MenuController extends LocalController {
private static var BUTTON_HOME_NAME:String = "home";
private static var BUTTON_GALLERY_NAME:String = "gallery";
private var mSelectedButton:SimpleButton;
/**
*/
public static function main (inTimeline:MovieClip) : Void {
// create new controller
var controller:MenuController = new MenuController(inTimeline);
// store controller on timeline
inTimeline.localController = controller;
}
/**
Retrieves the current state from State and selects the corresponding button.
*/
public function update () : Void {
if (State.movieName != undefined) {
setSelectedButton(State.movieName);
}
}
// PRIVATE METHODS
/**
*/
private function MenuController (inTimeLine:MovieClip) {
super(inTimeLine);
// let MovieManager know initialization is done
notifyMovieInitialized();
// if the menu is loaded after the state has been set in AppController,
// update the buttons now
update();
}
/**
Sets the current selected button.
*/
private function setSelectedButton (inButtonName:String) : Void {
mSelectedButton.deselect();
mSelectedButton.setEnabled(true);
mSelectedButton = mTimeline[inButtonName];
mSelectedButton.select();
mSelectedButton.setEnabled(false);
}
// EVENT HANDLERS
/**
Events sent by SimpleButton instances (because SimpleButton is a subclass of EventButton, events are automatically received in the LocalController, without manually subscribing to each EventButton).
Changes the clicked button state and passes the new (requested) state to StateManager.
*/
public function onEventButtonRelease (inEvent:EventButtonEvent) : Void {
switch (inEvent.buttonName) {
case BUTTON_HOME_NAME :
setSelectedButton(BUTTON_HOME_NAME);
dispatchEvent(new NavigationEvent(
NavigationEvent.EVENT_NAVIGATION,
AppData.HOME_NAME,
this
));
break;
case BUTTON_GALLERY_NAME :
setSelectedButton(BUTTON_GALLERY_NAME);
dispatchEvent(new NavigationEvent(
NavigationEvent.EVENT_NAVIGATION,
AppData.GALLERY_NAME,
this
));
break;
}
}
}