1
- import button = require( "ui/button" ) ;
1
+ import { View } from "ui/core/view" ;
2
+ import { Button } from "ui/button" ;
2
3
import { StackLayout } from "ui/layouts/stack-layout" ;
4
+ import { GridLayout } from "ui/layouts/grid-layout" ;
5
+
3
6
import utils = require( "utils/utils" ) ;
4
7
import TKUnit = require( "../TKUnit" ) ;
5
8
import def = require( "./layout-helper" ) ;
6
9
7
10
var DELTA = 0.1 ;
8
11
9
- export class NativeButton extends android . widget . Button {
10
-
11
- private owner : MyButton ;
12
+ class NativeButton extends android . widget . Button {
13
+ private owner : def . MeasuredView ;
12
14
13
- constructor ( context : android . content . Context , owner : MyButton ) {
15
+ constructor ( context : android . content . Context , owner : def . MeasuredView ) {
14
16
super ( context ) ;
15
17
this . owner = owner ;
16
18
return global . __native ( this ) ;
17
19
}
18
20
19
21
protected onMeasure ( widthMeasureSpec : number , heightMeasureSpec : number ) : void {
20
22
super . onMeasure ( widthMeasureSpec , heightMeasureSpec ) ;
21
- this . owner . _oldWidthMeasureSpec = widthMeasureSpec ;
22
- this . owner . _oldHeightMeasureSpec = heightMeasureSpec ;
23
+ this . owner . widthMeasureSpec = widthMeasureSpec ;
24
+ this . owner . heightMeasureSpec = heightMeasureSpec ;
25
+ this . owner . measureCount ++ ;
26
+ }
23
27
24
- this . owner . _measureWidth = utils . layout . getMeasureSpecSize ( widthMeasureSpec ) ;
25
- this . owner . _measureHeight = utils . layout . getMeasureSpecSize ( heightMeasureSpec ) ;
28
+ protected onLayout ( changed : boolean , left : number , top : number , right : number , bottom : number ) : void {
29
+ super . onLayout ( changed , left , top , right , bottom ) ;
30
+ this . owner . arrangeCount ++ ;
31
+ }
32
+ }
33
+
34
+ class NativeStackLayout extends org . nativescript . widgets . StackLayout {
35
+ private owner : def . MeasuredView ;
36
+
37
+ constructor ( context : android . content . Context , owner : def . MeasuredView ) {
38
+ super ( context ) ;
39
+ this . owner = owner ;
40
+ return global . __native ( this ) ;
41
+ }
42
+
43
+ protected onMeasure ( widthMeasureSpec : number , heightMeasureSpec : number ) : void {
44
+ super . onMeasure ( widthMeasureSpec , heightMeasureSpec ) ;
45
+ this . owner . widthMeasureSpec = widthMeasureSpec ;
46
+ this . owner . heightMeasureSpec = heightMeasureSpec ;
26
47
this . owner . measureCount ++ ;
27
48
}
28
49
29
50
protected onLayout ( changed : boolean , left : number , top : number , right : number , bottom : number ) : void {
30
- this . owner . _layoutLeft = left ;
31
- this . owner . _layoutTop = top ;
32
- this . owner . _layoutWidth = right - left ;
33
- this . owner . _layoutHeight = bottom - top ;
51
+ super . onLayout ( changed , left , top , right , bottom ) ;
52
+ this . owner . arrangeCount ++ ;
53
+ }
54
+ }
55
+
56
+ class NativeGridLayout extends org . nativescript . widgets . GridLayout {
57
+ private owner : def . MeasuredView ;
58
+
59
+ constructor ( context : android . content . Context , owner : def . MeasuredView ) {
60
+ super ( context ) ;
61
+ this . owner = owner ;
62
+ return global . __native ( this ) ;
63
+ }
64
+
65
+ protected onMeasure ( widthMeasureSpec : number , heightMeasureSpec : number ) : void {
66
+ super . onMeasure ( widthMeasureSpec , heightMeasureSpec ) ;
67
+ this . owner . widthMeasureSpec = widthMeasureSpec ;
68
+ this . owner . heightMeasureSpec = heightMeasureSpec ;
69
+ this . owner . measureCount ++ ;
70
+ }
34
71
72
+ protected onLayout ( changed : boolean , left : number , top : number , right : number , bottom : number ) : void {
35
73
super . onLayout ( changed , left , top , right , bottom ) ;
36
74
this . owner . arrangeCount ++ ;
37
75
}
38
76
}
39
77
40
- export class MyButton extends button . Button implements def . MyButton {
41
- private _layout : NativeButton ;
78
+ export class MyButton extends Button implements def . MyButton {
79
+ private _layout : android . view . View ;
42
80
43
- get android ( ) : NativeButton {
81
+ get android ( ) : android . view . View {
44
82
return this . _layout ;
45
83
}
46
84
47
- get _nativeView ( ) : NativeButton {
85
+ get _nativeView ( ) : android . view . View {
48
86
return this . _layout ;
49
87
}
50
88
@@ -55,16 +93,15 @@ export class MyButton extends button.Button implements def.MyButton {
55
93
public measureCount : number = 0 ;
56
94
public arrangeCount : number = 0 ;
57
95
58
- _oldWidthMeasureSpec : number = Number . NaN ;
59
- _oldHeightMeasureSpec : number = Number . NaN ;
60
-
61
- _layoutLeft ;
62
- _layoutTop ;
63
- _layoutWidth ;
64
- _layoutHeight ;
96
+ public widthMeasureSpec : number = Number . NaN ;
97
+ public heightMeasureSpec : number = Number . NaN ;
65
98
66
- _measureWidth ;
67
- _measureHeight ;
99
+ public get measureWidth ( ) {
100
+ return utils . layout . getMeasureSpecSize ( this . widthMeasureSpec ) ;
101
+ }
102
+ public get measureHeight ( ) {
103
+ return utils . layout . getMeasureSpecSize ( this . heightMeasureSpec ) ;
104
+ }
68
105
69
106
public get measured ( ) : boolean {
70
107
return this . measureCount > 0 ;
@@ -74,100 +111,143 @@ export class MyButton extends button.Button implements def.MyButton {
74
111
return this . arrangeCount > 0 ;
75
112
}
76
113
77
- get measureHeight ( ) : number {
78
- return this . _measureHeight ;
79
- }
80
-
81
- get measureWidth ( ) : number {
82
- return this . _measureWidth ;
83
- }
84
-
85
114
get layoutWidth ( ) : number {
86
- return this . _layoutWidth ;
115
+ return this . _layout . getWidth ( ) ;
87
116
}
88
117
89
118
get layoutHeight ( ) : number {
90
- return this . _layoutHeight ;
119
+ return this . _layout . getHeight ( ) ;
91
120
}
92
-
121
+
93
122
get layoutLeft ( ) : number {
94
- return this . _layoutLeft ;
123
+ return this . _layout . getLeft ( ) ;
95
124
}
96
125
97
126
get layoutTop ( ) : number {
98
- return this . _layoutTop ;
127
+ return this . _layout . getTop ( ) ;
99
128
}
129
+ }
130
+
131
+ export class MyStackLayout extends StackLayout implements def . MyStackLayout {
132
+ private _layout : android . view . View ;
100
133
101
- _getCurrentMeasureSpecs ( ) : { widthMeasureSpec : number ; heightMeasureSpec : number } {
102
- return {
103
- widthMeasureSpec : this . _oldWidthMeasureSpec ,
104
- heightMeasureSpec : this . _oldHeightMeasureSpec
105
- } ;
134
+ get android ( ) : android . view . View {
135
+ return this . _layout ;
106
136
}
107
- }
108
137
109
- export class NativeStackLayout extends org . nativescript . widgets . StackLayout {
110
-
111
- private owner : MyStackLayout ;
138
+ get _nativeView ( ) : android . view . View {
139
+ return this . _layout ;
140
+ }
112
141
113
- constructor ( context : android . content . Context , owner : MyStackLayout ) {
114
- super ( context ) ;
115
- this . owner = owner ;
116
- return global . __native ( this ) ;
142
+ public _createUI ( ) {
143
+ this . _layout = new NativeStackLayout ( this . _context , this ) ;
117
144
}
118
145
119
- protected onMeasure ( widthMeasureSpec : number , heightMeasureSpec : number ) : void {
120
- super . onMeasure ( widthMeasureSpec , heightMeasureSpec ) ;
121
- this . owner . measureCount ++ ;
146
+ public measureCount : number = 0 ;
147
+ public arrangeCount : number = 0 ;
148
+
149
+ public widthMeasureSpec : number = Number . NaN ;
150
+ public heightMeasureSpec : number = Number . NaN ;
151
+
152
+ public get measureWidth ( ) {
153
+ return utils . layout . getMeasureSpecSize ( this . widthMeasureSpec ) ;
154
+ }
155
+ public get measureHeight ( ) {
156
+ return utils . layout . getMeasureSpecSize ( this . heightMeasureSpec ) ;
122
157
}
123
158
124
- protected onLayout ( changed : boolean , left : number , top : number , right : number , bottom : number ) : void {
125
- super . onLayout ( changed , left , top , right , bottom ) ;
126
- this . owner . arrangeCount ++ ;
159
+ public get measured ( ) : boolean {
160
+ return this . measureCount > 0 ;
161
+ }
162
+
163
+ public get arranged ( ) : boolean {
164
+ return this . arrangeCount > 0 ;
165
+ }
166
+
167
+ get layoutWidth ( ) : number {
168
+ return this . _layout . getWidth ( ) ;
169
+ }
170
+
171
+ get layoutHeight ( ) : number {
172
+ return this . _layout . getHeight ( ) ;
173
+ }
174
+
175
+ get layoutLeft ( ) : number {
176
+ return this . _layout . getLeft ( ) ;
177
+ }
178
+
179
+ get layoutTop ( ) : number {
180
+ return this . _layout . getTop ( ) ;
127
181
}
128
182
}
129
183
130
- export class MyStackLayout extends StackLayout implements def . MyStackLayout {
131
- private _layout : NativeStackLayout ;
184
+ export class MyGridLayout extends GridLayout implements def . MyGridLayout {
185
+ private _layout : android . view . View ;
132
186
133
- get android ( ) : NativeStackLayout {
187
+ get android ( ) : android . view . View {
134
188
return this . _layout ;
135
189
}
136
190
137
- get _nativeView ( ) : NativeStackLayout {
191
+ get _nativeView ( ) : android . view . View {
138
192
return this . _layout ;
139
193
}
140
194
141
195
public _createUI ( ) {
142
- this . _layout = new NativeStackLayout ( this . _context , this ) ;
196
+ this . _layout = new NativeGridLayout ( this . _context , this ) ;
143
197
}
144
198
145
199
public measureCount : number = 0 ;
146
200
public arrangeCount : number = 0 ;
147
201
202
+ public widthMeasureSpec : number = Number . NaN ;
203
+ public heightMeasureSpec : number = Number . NaN ;
204
+
205
+ public get measureWidth ( ) {
206
+ return utils . layout . getMeasureSpecSize ( this . widthMeasureSpec ) ;
207
+ }
208
+ public get measureHeight ( ) {
209
+ return utils . layout . getMeasureSpecSize ( this . heightMeasureSpec ) ;
210
+ }
211
+
148
212
public get measured ( ) : boolean {
149
213
return this . measureCount > 0 ;
150
214
}
151
215
152
216
public get arranged ( ) : boolean {
153
217
return this . arrangeCount > 0 ;
154
218
}
219
+
220
+ get layoutWidth ( ) : number {
221
+ return this . _layout . getWidth ( ) ;
222
+ }
223
+
224
+ get layoutHeight ( ) : number {
225
+ return this . _layout . getHeight ( ) ;
226
+ }
227
+
228
+ get layoutLeft ( ) : number {
229
+ return this . _layout . getLeft ( ) ;
230
+ }
231
+
232
+ get layoutTop ( ) : number {
233
+ return this . _layout . getTop ( ) ;
234
+ }
155
235
}
156
236
157
- export function assertMeasure ( btn : MyButton , width : number , height : number , name ?: string ) {
237
+ export function assertMeasure ( view : def . MeasuredView , width : number , height : number , name ?: string ) {
158
238
name = name ? "[" + name + "]" : "" ;
159
239
160
- TKUnit . assertAreClose ( btn . measureWidth , width , DELTA , name + "width" ) ;
161
- TKUnit . assertAreClose ( btn . measureHeight , height , DELTA , name + "height" ) ;
240
+ TKUnit . assertAreClose ( view . measureWidth , width , DELTA , name + "width" ) ;
241
+ TKUnit . assertAreClose ( view . measureHeight , height , DELTA , name + "height" ) ;
162
242
}
163
243
164
- export function assertLayout ( btn : MyButton , left : number , top : number , width : number , height : number , name ?: string ) : void {
244
+ export function assertLayout ( view : def . MeasuredView , left : number , top : number , width : number , height : number , name ?: string ) : void {
165
245
name = name ? "[" + name + "]" : "" ;
166
246
167
- TKUnit . assertAreClose ( btn . layoutLeft , left , DELTA , name + "left" ) ;
168
- TKUnit . assertAreClose ( btn . layoutTop , top , DELTA , name + "top" ) ;
169
- TKUnit . assertAreClose ( btn . layoutWidth , width , DELTA , name + "width" ) ;
170
- TKUnit . assertAreClose ( btn . layoutHeight , height , DELTA , name + "height" ) ;
247
+ TKUnit . assertAreClose ( view . layoutLeft , left , DELTA , name + "left" ) ;
248
+ TKUnit . assertAreClose ( view . layoutTop , top , DELTA , name + "top" ) ;
249
+ TKUnit . assertAreClose ( view . layoutWidth , width , DELTA , name + "width" ) ;
250
+ TKUnit . assertAreClose ( view . layoutHeight , height , DELTA , name + "height" ) ;
171
251
}
172
252
173
253
export function dp ( value : number ) : number {
0 commit comments