// ASAP classes
import org.asapframework.ui.buttons.SelectableButton;
import org.asapframework.util.actionqueue.ActionQueue;
import org.asapframework.util.actionqueue.AQPulse;
import events.ProjectButtonEvent;
import util.TextFieldUtils;
class ui.ProjectButton extends SelectableButton {
private var mHasWebsite:Boolean = false;
private var mRollOverWebButton:Boolean = false;
private var mPulseQueue:ActionQueue;
private var project_label_mc:MovieClip;
private var client_label_mc:MovieClip;
private var web_button_mc:MovieClip;
private var bg_mc:MovieClip;
private var hitarea_mc:MovieClip;
/**
*/
private function init () : Void {
super.init();
setSendEventOnPress(true); // let the button send events on onPress
setSendEventOnRoll(true); // let the button send events on onRollOver
indelay = .15; // DelayButton property: when rolled over, onRollOver is called after .15 seconds
web_button_mc._visible = false;
bg_mc._visible = false;
hitArea = hitarea_mc;
}
/**
*/
public function setHasWebsite (inState:Boolean) : Void {
mHasWebsite = inState;
}
/**
*/
public function setProjectLabel (inLabel:String) : Void {
project_label_mc.label_tf.text = inLabel;
TextFieldUtils.trimTextFieldText(project_label_mc.label_tf, project_label_mc._width, "...");
}
/**
*/
public function setClientLabel (inLabel:String) : Void {
client_label_mc.label_tf.text = inLabel.toUpperCase();
TextFieldUtils.trimTextFieldText(client_label_mc.label_tf, client_label_mc._width, "...");
}
/**
*/
public function doRollOver () {
if (mHasWebsite) {
web_button_mc._visible = true;
startMouseMove();
}
super.doRollOver();
}
/**
*/
public function doRollOut () {
if (mHasWebsite) {
web_button_mc._visible = false;
stopMouseMove();
}
super.doRollOut();
}
/**
*/
public function doRelease () {
if (mRollOverWebButton) {
web_button_mc.gotoAndStop("over");
dispatchEvent(new ProjectButtonEvent(ProjectButtonEvent.WEB_BUTTON_HIT, this, mId));
stopMouseMove();
drawOverState();
}
super.doRelease();
}
/**
*/
public function doPress () {
if (mRollOverWebButton) {
web_button_mc.gotoAndStop("selected");
return;
}
super.doPress();
}
// PRIVATE METHODS
private function drawUpState () : Void {
gotoAndStop("up");
bg_mc._visible = false;
if (mHasWebsite) {
web_button_mc._visible = false;
stopMouseMove();
}
}
/**
*/
private function drawOverState () : Void {
gotoAndStop("over");
// pulsate background
bg_mc._visible = true;
bg_mc._alpha = 100;
mPulseQueue.quit();
mPulseQueue = new ActionQueue();
mPulseQueue.addPause(.4);
var count:Number = null; // not used
var frequency:Number = .6;
var maxAlpha:Number = 95;
var minAlpha:Number = 30;
var startAlpha:Number = bg_mc._alpha;
var duration:Number = 0; // loop
mPulseQueue.addAction( AQPulse.change, bg_mc, "_alpha", count, frequency, maxAlpha, minAlpha, startAlpha, duration );
mPulseQueue.run();
}
/**
*/
private function drawSelectedState () : Void {
gotoAndStop("selected");
mPulseQueue.quit();
bg_mc._visible = true;
bg_mc._alpha = 100;
if (mHasWebsite) {
web_button_mc._visible = true;
startMouseMove();
}
}
/**
Track for mouse over on web button
*/
private function doMouseMove () : Void {
if (web_button_mc.hitTest(_level0._xmouse, _level0._ymouse)) {
if (!mRollOverWebButton) {
if (!enabled && mSelected) {
enabled = true;
}
mRollOverWebButton = true;
web_button_mc.gotoAndStop("over");
drawSelectedState();
}
} else {
if (mRollOverWebButton) {
if (enabled && mSelected) {
enabled = false;
}
mRollOverWebButton = false;
web_button_mc.gotoAndStop("up");
drawOverState();
}
}
}
/**
Start tracking mouse for web button rollover.
*/
private function startMouseMove () : Void {
onMouseMove = doMouseMove;
}
/**
Stop tracking mouse for web button rollover.
*/
private function stopMouseMove () : Void {
onMouseMove = null;
}
}