1 package net.systemeD.potlatch2.mapfeatures.editors {
4 import mx.containers.*;
6 import flash.display.*;
11 public class ChoiceComboBox extends ComboBox {
13 protected var textInputReplacement:UIComponent;
15 override protected function createChildren():void {
16 super.createChildren();
18 if ( !textInputReplacement ) {
19 if ( itemRenderer != null ) {
20 //remove the default textInput
21 removeChild(textInput);
23 //create a new itemRenderer to use in place of the text input
24 textInputReplacement = itemRenderer.newInstance();
25 IDataRenderer(textInputReplacement).data = selectedItem;
26 textInputReplacement.mouseChildren = false;
27 textInputReplacement.mouseEnabled = false;
28 addChild(textInputReplacement);
33 override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
34 super.updateDisplayList(unscaledWidth, unscaledHeight);
36 if ( textInputReplacement ) {
37 IDataRenderer(textInputReplacement).data = selectedItem;
39 var arrowWidth:Number = getStyle("arrowButtonWidth");
\r
40 var itemHeight:Number = textInputReplacement.getExplicitOrMeasuredHeight();
\r
41 var itemWidth:Number = textInputReplacement.getExplicitOrMeasuredWidth();
\r
43 if (isNaN(arrowWidth))
\r
46 var bm:EdgeMetrics = borderMetrics;
48 textInputReplacement.setActualSize(unscaledWidth - arrowWidth, itemHeight);
\r
49 textInputReplacement.move(bm.left, bm.top);
53 override protected function measure():void {
56 if ( textInputReplacement ) {
57 IDataRenderer(textInputReplacement).data = selectedItem;
59 var arrowWidth:Number = getStyle("arrowButtonWidth");
\r
60 var itemHeight:Number = textInputReplacement.getExplicitOrMeasuredHeight();
\r
61 var itemWidth:Number = textInputReplacement.getExplicitOrMeasuredWidth();
\r
63 if (isNaN(arrowWidth))
\r
66 var bm:EdgeMetrics = borderMetrics;
67 itemHeight += bm.top + bm.bottom;
\r
68 itemWidth += bm.left + bm.right + arrowWidth;
\r
70 measuredMinHeight = measuredHeight = Math.max(measuredHeight, itemHeight);
\r
71 measuredMinWidth = measuredWidth = Math.max(measuredWidth, itemWidth);
\r