| 1 |
package |
|---|
| 2 |
{ |
|---|
| 3 |
import flash.events.Event; |
|---|
| 4 |
import mx.controls.CheckBox; |
|---|
| 5 |
import mx.controls.dataGridClasses.DataGridListData; |
|---|
| 6 |
import mx.core.IFlexDisplayObject; |
|---|
| 7 |
import mx.core.mx_internal; |
|---|
| 8 |
/** |
|---|
| 9 |
* CellCheckBox |
|---|
| 10 |
* @author sasa |
|---|
| 11 |
* itemRenderer 用 カスタム CheckBox (※要 Flex 2 SDK ) |
|---|
| 12 |
*/ |
|---|
| 13 |
public class CellCheckBox extends CheckBox |
|---|
| 14 |
{ |
|---|
| 15 |
/** |
|---|
| 16 |
* mValue |
|---|
| 17 |
* @private |
|---|
| 18 |
* クラス内部で保持する selected 値 |
|---|
| 19 |
*/ |
|---|
| 20 |
private var mValue:Boolean; |
|---|
| 21 |
/** |
|---|
| 22 |
* CellCheckBox |
|---|
| 23 |
* コンストラクタ |
|---|
| 24 |
*/ |
|---|
| 25 |
public function CellCheckBox() |
|---|
| 26 |
{ |
|---|
| 27 |
super(); |
|---|
| 28 |
addEventListener(Event.CHANGE, changeHandler, false, 0, true); |
|---|
| 29 |
} |
|---|
| 30 |
/** |
|---|
| 31 |
* value |
|---|
| 32 |
* @private |
|---|
| 33 |
* selected 値の再生成 |
|---|
| 34 |
*/ |
|---|
| 35 |
private function get value():Boolean |
|---|
| 36 |
{ |
|---|
| 37 |
return mValue; |
|---|
| 38 |
} |
|---|
| 39 |
/** |
|---|
| 40 |
* @private |
|---|
| 41 |
*/ |
|---|
| 42 |
private function set value(aValue:Boolean):void |
|---|
| 43 |
{ |
|---|
| 44 |
mValue = aValue; |
|---|
| 45 |
invalidateProperties(); |
|---|
| 46 |
} |
|---|
| 47 |
/** |
|---|
| 48 |
* data |
|---|
| 49 |
* @param aValue itemRenderer の値 |
|---|
| 50 |
* @private |
|---|
| 51 |
* プロパティ CheckBox の selected 値 |
|---|
| 52 |
*/ |
|---|
| 53 |
override public function set data(aValue:Object):void |
|---|
| 54 |
{ |
|---|
| 55 |
super.data = aValue; |
|---|
| 56 |
if(null != aValue) |
|---|
| 57 |
{ |
|---|
| 58 |
value = Boolean(aValue[DataGridListData(listData).dataField]); |
|---|
| 59 |
} |
|---|
| 60 |
} |
|---|
| 61 |
/** |
|---|
| 62 |
* commitProperties |
|---|
| 63 |
* @private |
|---|
| 64 |
* Binding しているプロパティの更新 |
|---|
| 65 |
*/ |
|---|
| 66 |
override protected function commitProperties():void |
|---|
| 67 |
{ |
|---|
| 68 |
selected = mValue; |
|---|
| 69 |
super.commitProperties(); |
|---|
| 70 |
} |
|---|
| 71 |
/** |
|---|
| 72 |
* updateDisplayList |
|---|
| 73 |
* @param aUnscaledWidth 親コンテナにより決定されるコンポーネントの幅 |
|---|
| 74 |
* @param aUnscaledHeight 親コンテナにより決定されるコンポーネントの高さ |
|---|
| 75 |
* @private |
|---|
| 76 |
* CheckBox の再描画と再配置 |
|---|
| 77 |
*/ |
|---|
| 78 |
override protected function updateDisplayList(aUnscaledWidth:Number, aUnscaledHeight:Number):void |
|---|
| 79 |
{ |
|---|
| 80 |
super.updateDisplayList(aUnscaledWidth, aUnscaledHeight); |
|---|
| 81 |
var lObject:IFlexDisplayObject = mx_internal::currentIcon; |
|---|
| 82 |
if(lObject) |
|---|
| 83 |
{ |
|---|
| 84 |
var lIconWidth :uint = lObject.width; |
|---|
| 85 |
var lIndent :uint = (width - lIconWidth) / 2; |
|---|
| 86 |
lObject.x = lIndent; |
|---|
| 87 |
} |
|---|
| 88 |
} |
|---|
| 89 |
/** |
|---|
| 90 |
* changeHandler |
|---|
| 91 |
* @param event Event オブジェクト |
|---|
| 92 |
* @private |
|---|
| 93 |
* CheckBox の change イベント |
|---|
| 94 |
*/ |
|---|
| 95 |
private function changeHandler(event:Event):void |
|---|
| 96 |
{ |
|---|
| 97 |
if (listData) |
|---|
| 98 |
{ |
|---|
| 99 |
value = selected; |
|---|
| 100 |
data[DataGridListData(listData).dataField] = value; |
|---|
| 101 |
} |
|---|
| 102 |
} |
|---|
| 103 |
} |
|---|
| 104 |
} |
|---|