248 lines
6.0 KiB
ActionScript
Executable File
248 lines
6.0 KiB
ActionScript
Executable File
/*
|
|
Copyright (c) 2009 Yahoo! Inc. All rights reserved.
|
|
The copyrights embodied in the content of this file are licensed under the BSD (revised) open source license
|
|
*/
|
|
package com.yahoo.astra.containers.formClasses {
|
|
import com.yahoo.astra.containers.formClasses.FormItemContainer;
|
|
import com.yahoo.astra.containers.formClasses.FormLayoutStyle;
|
|
import com.yahoo.astra.containers.formClasses.IForm;
|
|
import com.yahoo.astra.events.FormLayoutEvent;
|
|
import com.yahoo.astra.layout.LayoutManager;
|
|
import com.yahoo.astra.layout.events.LayoutEvent;
|
|
|
|
import flash.display.Sprite;
|
|
import flash.text.TextField;
|
|
import flash.text.TextFormat;
|
|
|
|
/**
|
|
* <code>FormItemLabel</code> contains a label and required indicator in <code>FormItem</code> .
|
|
*
|
|
* @see com.yahoo.astra.containers.formClasses.FormItem
|
|
* @see com.yahoo.astra.containers.formClasses.FormItemContainer
|
|
* @author kayoh
|
|
*/
|
|
public class FormItemLabel extends FormItemContainer implements IForm {
|
|
|
|
|
|
//--------------------------------------
|
|
// Constructor
|
|
//--------------------------------------
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
public function FormItemLabel() {
|
|
super();
|
|
}
|
|
|
|
//--------------------------------------
|
|
// Properties
|
|
//--------------------------------------
|
|
/**
|
|
* @private
|
|
*/
|
|
private var labelTextField : TextField = null;
|
|
/**
|
|
* @private
|
|
*/
|
|
private var lableText : String = null;
|
|
/**
|
|
* @private
|
|
*/
|
|
private var lableSprite : Sprite = null;
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
private var _actualLabelTextWidth : Number = NaN;
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function get actualLabelTextWidth() : Number {
|
|
return _actualLabelTextWidth;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function set actualLabelTextWidth(value : Number) : void {
|
|
if(_actualLabelTextWidth == value) return;
|
|
_actualLabelTextWidth = value;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
private var _preferredWidth : Number;
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function get preferredLabelWidth() : Number {
|
|
return _preferredWidth;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function set preferredLabelWidth(value : Number) : void {
|
|
if(_preferredWidth == value) return;
|
|
_preferredWidth = value;
|
|
|
|
var tempHeight : Number = (labelTextField) ? labelTextField.height : 0;
|
|
LayoutManager.resize(subItemContainer, value, tempHeight);
|
|
|
|
if(labelAlign) this.alignLabel = labelAlign;
|
|
this.dispatchEvent(new LayoutEvent(LayoutEvent.LAYOUT_CHANGE));
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
private var _preferredLabelTextFormat : TextFormat;
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function get preferredLabelTextFormat() : TextFormat {
|
|
return _preferredLabelTextFormat;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function set preferredLabelTextFormat(value : TextFormat) : void {
|
|
updateTextFields(value as TextFormat);
|
|
_preferredLabelTextFormat = value;
|
|
}
|
|
|
|
|
|
//--------------------------------------
|
|
// Internal Methods
|
|
//--------------------------------------
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
override internal function update_indicatiorLocation(value : String) : void {
|
|
cleanRequiredIndicatorBoxs();
|
|
switch(value) {
|
|
case FormLayoutStyle.INDICATOR_LEFT:
|
|
if(!lableText && labelAlign == FormLayoutStyle.TOP) {
|
|
break;
|
|
return;
|
|
}
|
|
if(required) reqBox_l.showIndicator();
|
|
reqBox_l.makeEmptyGap();
|
|
break;
|
|
|
|
case FormLayoutStyle.INDICATOR_LABEL_RIGHT:
|
|
if(!lableText && labelAlign == FormLayoutStyle.TOP) {
|
|
break;
|
|
return;
|
|
}
|
|
if(required) reqBox_r.showIndicator();
|
|
reqBox_r.makeEmptyGap();
|
|
break;
|
|
}
|
|
}
|
|
|
|
//--------------------------------------
|
|
// Private Methods
|
|
//--------------------------------------
|
|
/**
|
|
* @private
|
|
*/
|
|
override public function update(target : String, value : Object = null) : void {
|
|
switch(target) {
|
|
case FormLayoutEvent.UPDATE_LABEL_FONT_CHANGE:
|
|
if(!preferredLabelTextFormat) updateTextFields(value as TextFormat);
|
|
break;
|
|
case FormLayoutEvent.UPDATE_LABEL_WIDTH:
|
|
this.preferredLabelWidth = Number(value);
|
|
break;
|
|
|
|
case FormLayoutEvent.UPDATE_REQUIRED_ITEM:
|
|
required = Boolean(value);
|
|
break;
|
|
|
|
case FormLayoutEvent.UPDATE_INDICATOR_LOCATION:
|
|
indicatorLocation = String(value);
|
|
break;
|
|
|
|
case FormLayoutEvent.UPDATE_LABEL_ALIGN:
|
|
labelAlign = String(value);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
override internal function set labelAlign(value : String) : void {
|
|
if(this.labelAlign == value) return;
|
|
this.alignLabel = _labelAlign = value;
|
|
update_indicatiorLocation(indicatorLocation);
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
internal function attLabel(lableTxt : String) : void {
|
|
|
|
lableSprite = new Sprite();
|
|
if(lableTxt is String && lableTxt != "" ) {
|
|
lableText = lableTxt;
|
|
if(!labelTextField) labelTextField = FormLayoutStyle.labelTextField;
|
|
labelTextField.htmlText = lableText;
|
|
actualLabelTextWidth = labelTextField.width;
|
|
labelTextField.x = 0;
|
|
lableSprite.addChild(labelTextField);
|
|
} else {
|
|
lableText = null;
|
|
actualLabelTextWidth = 0;
|
|
}
|
|
|
|
|
|
this.dispatchEvent(new FormLayoutEvent(FormLayoutEvent.LABEL_ADDED));
|
|
|
|
this.addItem(lableSprite);
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
override protected function updateTextFields(textformat : TextFormat) : void {
|
|
if(!labelTextField) return;
|
|
actualLabelTextWidth = NaN;
|
|
|
|
var textFieldToChg : TextField = labelTextField;
|
|
var str : String = textFieldToChg.htmlText;
|
|
textFieldToChg.htmlText = str;
|
|
// trace("updateTextFields", textformat, str)
|
|
textFieldToChg.setTextFormat(textformat);
|
|
actualLabelTextWidth = textFieldToChg.width;
|
|
this.dispatchEvent(new FormLayoutEvent(FormLayoutEvent.LABEL_ADDED));
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
|
|
private function set alignLabel(value : String) : void {
|
|
if(!lableText) return;
|
|
switch(value) {
|
|
case FormLayoutStyle.TOP:
|
|
labelTextField.x = 0;
|
|
break;
|
|
case FormLayoutStyle.RIGHT:
|
|
labelTextField.x = (preferredLabelWidth) ? preferredLabelWidth - actualLabelTextWidth : 0;
|
|
break;
|
|
case FormLayoutStyle.LEFT:
|
|
labelTextField.x = 0;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|