source: trunk/fl5/src/com/longtailvideo/jwplayer/view/ControlbarLayoutManager.as @ 393

Revision 393, 3.9 KB checked in by zach, 4 years ago (diff)

Updating UI components

RevLine 
[393]1package com.longtailvideo.jwplayer.view {
2        import flash.display.DisplayObject;
3        import flash.text.TextField;
4       
5       
6        public class ControlbarLayoutManager {
7                protected var _controlbar:ControlBarComponent;
8                protected var _currentLeft:Number;
9                protected var _currentRight:Number;
10               
11               
12                public function ControlbarLayoutManager(controlbar:ControlBarComponent) {
13                        _controlbar = controlbar;
14                }
15               
16               
17                public function resize(width:Number, height:Number):void {
18                        _currentLeft = 0;
19                        _currentRight = width;
20                        var controlbarPattern:RegExp = /\[(.*)\]\[(.*)\]\[(.*)\]/;
21                        var result:Object = controlbarPattern.exec(_controlbar.layout);
22                        positionLeft(result[1]);
23                        positionRight(result[3]);
24                        positionCenter(result[2]);
25                }
26               
27               
28                private function positionLeft(left:String):void {
29                        var dividers:Array = left.split("|");
30                        for (var i:Number = 0; i < dividers.length; i++) {
31                                if (i > 0) {
32                                        placeLeft(_controlbar.getButton("divider"));
33                                }
34                                var spacers:Array = (dividers[i] as String).split(" ");
35                                for (var j:Number = 0; j < spacers.length; j++) {
36                                        var name:String = spacers[j];
37                                        var button:DisplayObject = _controlbar.getButton(spacers[j]);
38                                        placeLeft(_controlbar.getButton(spacers[j]));
39                                }
40                        }
41                }
42               
43               
44                private function placeLeft(displayObject:DisplayObject):void {
45                        if (displayObject) {
46                                if (!_controlbar.contains(displayObject)) {
47                                        _controlbar.addChild(displayObject);
48                                }
49                               
50                                displayObject.x = _currentLeft;
51                                displayObject.y = 0;
52                                                                                       
53                                if (displayObject is TextField) {
54                                        //_currentLeft = _currentLeft + (displayObject as TextField).textWidth;
55                                        _currentLeft = _currentLeft + displayObject.width;
56                                } else {
57                                        _currentLeft = _currentLeft + displayObject.width;
58                                }
59                               
60                        }
61                }
62               
63               
64                private function positionRight(right:String):void {
65                        var dividers:Array = right.split("|");
66                        for (var i:Number = dividers.length - 1; i >= 0; i--) {
67                                if (i < dividers.length - 1) {
68                                        placeRight(_controlbar.getButton("divider"));
69                                }
70                                var spacers:Array = (dividers[i] as String).split(" ");
71                                for (var j:Number = spacers.length - 1; j >= 0; j--) {
72                                        var name:String = spacers[j];
73                                        var button:DisplayObject = _controlbar.getButton(spacers[j]);
74                                        placeRight(_controlbar.getButton(spacers[j]));
75                                }
76                        }
77                }
78               
79               
80                private function placeRight(displayObject:DisplayObject):void {
81                        if (displayObject) {
82                                if (!_controlbar.contains(displayObject)) {
83                                        _controlbar.addChild(displayObject);
84                                }
85                                if (displayObject is TextField) {
86                                        //_currentRight = _currentRight - (displayObject as TextField).textWidth;
87                                        _currentRight = _currentRight - displayObject.width;
88                                } else {
89                                        _currentRight = _currentRight - displayObject.width;
90                                }
91                                displayObject.x = _currentRight;
92                                displayObject.y = 0;
93                        }
94                }
95               
96               
97                private function positionCenter(center:String):void {
98                        var centerPattern:RegExp = /\W/;
99                        var elements:Array = center.split(centerPattern);
100                        var dividers:Array = center.split("|");
101                        var divider:DisplayObject = _controlbar.getButton("divider");
102                        var dividerOffset:Number = 0;
103                        if (divider) {
104                                dividerOffset = divider.width * (dividers.length - 1);
105                        }
106                        var elementWidth:Number = (_currentRight - _currentLeft - dividerOffset) / elements.length;
107                        for (var i:Number = 0; i < dividers.length; i++) {
108                                if (i > 0) {
109                                        placeLeft(divider);
110                                }
111                                var spacers:Array = (dividers[i] as String).split(" ");
112                                for (var j:Number = 0; j < spacers.length; j++) {
113                                        var element:DisplayObject = _controlbar.getButton(spacers[j]);
114                                        if (element) {
115                                                if (element is ComponentButton){
116                                                        (element as ComponentButton).resize(elementWidth, element.height);
117                                                } else if (element is Slider) {
118                                                        (element as Slider).resize(elementWidth, element.height);
119                                                }
120                                                placeLeft(element);
121                                        }
122                                }
123                        }
124                }
125        }
126}
Note: See TracBrowser for help on using the repository browser.