~eda-qa/dhlib/main

« back to all changes in this revision

Viewing changes to lib/ui/Button.mhx

  • Committer: edA-qa mort-ora-y
  • Date: 2010-04-03 10:34:57 UTC
  • Revision ID: eda-qa@disemia.com-20100403103457-ro7xslj1ct0wpnm1
adding common button base

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 * A button is a clickable element on the screen, which performs an action
19
19
 * when clicked.
20
20
 */
21
 
class Button extends Sprite, implements Widget
 
21
class Button extends ButtonBase, implements Widget
22
22
{
23
 
        var down : Bool;
24
 
        var over : Bool;
25
23
        var tf : StaticText;
26
24
                
27
25
        var filtersUp : Array<BitmapFilter>;
31
29
                
32
30
        var bevelSize : Float;
33
31
        
34
 
        var event : Action;
35
32
        var color : Color;
36
33
        
37
34
        var flat : Bool;
43
40
        
44
41
        private function new( event : Action )
45
42
        {
46
 
                super();
47
 
                MixinWidget();
 
43
                super( event );
48
44
                
49
 
                enabled = true;
50
45
                flat = false;
51
46
                transparent = false;
52
 
                down = false;
53
 
                over = false;
54
 
                this.event = event;
55
47
                
56
48
                //a color is always needed...
57
49
                color = Theme.current.buttonColor;
68
60
                bf = new BevelFilter( bevelSize, 180 + 45);
69
61
                bf.highlightAlpha = 0;
70
62
                filtersDown.push( bf );
71
 
                
72
 
                
73
 
                buttonMode = true;
74
 
                useHandCursor = true;   //look clickable
75
 
                mouseChildren = false;  //so added images don't change cursor
76
 
                
77
 
                addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, true /*weak*/ );
78
 
                addEventListener( MouseEvent.MOUSE_UP, onMouseUp,false, 0, true /*weak*/ );
79
 
                addEventListener( MouseEvent.MOUSE_OVER, onMouseOver,false, 0, true /*weak*/ );
80
 
                addEventListener( MouseEvent.MOUSE_OUT, onMouseOut,false, 0, true /*weak*/ );
81
63
        }
82
64
        
83
65
        static public function plain( event : Action, text : String, ?color : Color )
153
135
                update();
154
136
        }
155
137
                        
156
 
        function onMouseDown( evt : MouseEvent )
157
 
        {
158
 
                evt.stopPropagation();  //we hide this from our visual ancestors
159
 
                if( !enabled )
160
 
                        return;
161
 
                        
162
 
                down = true;
163
 
                update();
164
 
                
165
 
        }
166
 
        
167
 
        function onMouseUp( evt : MouseEvent )
168
 
        {
169
 
                evt.stopPropagation();  //we hide this from our visual ancestors
170
 
                if( !enabled )
171
 
                        return;
172
 
                        
173
 
                var wasDown = down;
174
 
                down = false;
175
 
                update();
176
 
                
177
 
                //only handle if we were actually down, to prevent spurious half-events from activating
178
 
                if( wasDown )
179
 
                        Action.handle( this, event );
180
 
        }
181
 
        
182
 
        function onMouseOver( evt : MouseEvent )
183
 
        {
184
 
                over = true;
185
 
                down = evt.buttonDown;
186
 
                
187
 
                if( !enabled )
188
 
                        return;
189
 
                        
190
 
                update();
191
 
        }
192
 
        
193
 
        function onMouseOut( evt : MouseEvent )
194
 
        {
195
 
                over = false;
196
 
                down = false;
197
 
                
198
 
                if( !enabled )
199
 
                        return;
200
 
                        
201
 
                update();
202
 
        }
203
 
        
204
 
        function _resize( w : Float, h : Float )
 
138
        override function _resize( w : Float, h : Float )
205
139
        {
206
140
                //setup in case disabled
207
141
                if( !enabled && filtersDisabled == null )
272
206
                        filters = filtersDisabled;
273
207
        }
274
208
        
275
 
        public function getPrefWidth() : SizeType
 
209
        override public function getPrefWidth() : SizeType
276
210
        {
277
211
                if( useActor != null )
278
212
                        return useActor.getPrefWidth();
279
213
                return SizeType.Sum( tf.getPrefWidth(), SizeType.Fixed( 2 * bevelSize ) );
280
214
        }
281
215
        
282
 
        public function getPrefHeight() : SizeType
 
216
        override public function getPrefHeight() : SizeType
283
217
        {
284
218
                if( useActor != null )
285
219
                        return useActor.getPrefHeight();
286
220
                return SizeType.Sum( tf.getPrefHeight(), SizeType.Fixed( 2 * bevelSize ) );
287
221
        }
288
222
 
289
 
        public function getCenter() : mathx.Point2
 
223
        override public function getCenter() : mathx.Point2
290
224
        {
291
225
                if( useActor != null )
292
226
                        return useActor.getCenter();
293
227
                return mathx.Point2.at( 0.5, 0.5 );
294
228
        }
295
 
        
296
 
        define(`NoSizing',`')
297
 
        define(`NoCenter',`')
298
 
        include(`MixinWidget.ihx')
299
229
}
 
 
b'\\ No newline at end of file'