@@ -242,7 +242,7 @@ interface TNSSpinner extends android.widget.Spinner {
242242 itemSelectedListener ;
243243
244244 /*tslint:disable-next-line no-misused-new*/
245- new ( owner : WeakRef < DropDown > ) : TNSSpinner ;
245+ new ( owner : WeakRef < DropDown > ) : TNSSpinner ;
246246
247247 /** onDetachedFromWindow is protected so public version renamed */
248248 onDetachedFromWindowX ( ) ;
@@ -251,213 +251,213 @@ interface TNSSpinner extends android.widget.Spinner {
251251let TNSSpinner : TNSSpinner ;
252252
253253function initializeTNSSpinner ( ) {
254- if ( TNSSpinner ) {
255- return ;
256- }
257-
258- class TNSSpinnerImpl extends android . widget . Spinner {
259- private _isOpenedIn = false ;
260-
261- constructor ( private owner : WeakRef < DropDown > ) {
262- super ( owner . get ( ) . _context ) ;
263- return global . __native ( this ) ;
254+ if ( TNSSpinner ) {
255+ return ;
264256 }
265257
266- public performClick ( ) {
267- const owner = this . owner . get ( ) ;
268-
269- this . _isOpenedIn = true ;
258+ class TNSSpinnerImpl extends android . widget . Spinner {
259+ private _isOpenedIn = false ;
270260
271- owner . notify ( {
272- eventName : DropDownBase . openedEvent ,
273- object : owner
274- } ) ;
261+ constructor ( private owner : WeakRef < DropDown > ) {
262+ super ( owner . get ( ) . _context ) ;
263+ return global . __native ( this ) ;
264+ }
275265
276- return super . performClick ( ) ;
277- }
266+ public performClick ( ) {
267+ const owner = this . owner . get ( ) ;
278268
279- public onWindowFocusChanged ( hasWindowFocus : boolean ) {
280- super . onWindowFocusChanged ( hasWindowFocus ) ;
269+ this . _isOpenedIn = true ;
281270
282- if ( this . _isOpenedIn && hasWindowFocus ) {
283- const owner = this . owner . get ( ) ;
284271 owner . notify ( {
285- eventName : DropDownBase . closedEvent ,
272+ eventName : DropDownBase . openedEvent ,
286273 object : owner
287274 } ) ;
275+
276+ return super . performClick ( ) ;
277+ }
278+
279+ public onWindowFocusChanged ( hasWindowFocus : boolean ) {
280+ super . onWindowFocusChanged ( hasWindowFocus ) ;
281+
282+ if ( this . _isOpenedIn && hasWindowFocus ) {
283+ const owner = this . owner . get ( ) ;
284+ owner . notify ( {
285+ eventName : DropDownBase . closedEvent ,
286+ object : owner
287+ } ) ;
288+ }
288289 }
289- }
290290
291- public onDetachedFromWindowX ( ) : void {
292- super . onDetachedFromWindow ( ) ;
291+ public onDetachedFromWindowX ( ) : void {
292+ super . onDetachedFromWindow ( ) ;
293+ }
293294 }
294- }
295295
296- TNSSpinner = TNSSpinnerImpl as any ;
296+ TNSSpinner = TNSSpinnerImpl as any ;
297297}
298298/* TNSSpinner END */
299299
300300/* A snapshot-friendly, lazy-loaded class for DropDownAdpater BEGIN */
301301interface DropDownAdapter extends android . widget . BaseAdapter , android . widget . ISpinnerAdapter {
302302 /*tslint:disable-next-line no-misused-new*/
303- new ( owner : WeakRef < DropDown > ) : DropDownAdapter ;
303+ new ( owner : WeakRef < DropDown > ) : DropDownAdapter ;
304304}
305305
306306let DropDownAdapter : DropDownAdapter ;
307307
308308function initializeDropDownAdapter ( ) {
309- if ( DropDownAdapter ) {
310- return ;
311- }
312-
313- class DropDownAdapterImpl extends android . widget . BaseAdapter implements android . widget . ISpinnerAdapter {
314- constructor ( private owner : WeakRef < DropDown > ) {
315- super ( ) ;
316-
317- return global . __native ( this ) ;
309+ if ( DropDownAdapter ) {
310+ return ;
318311 }
319312
320- public isEnabled ( i : number ) {
321- return i !== 0 ;
322- }
313+ class DropDownAdapterImpl extends android . widget . BaseAdapter implements android . widget . ISpinnerAdapter {
314+ constructor ( private owner : WeakRef < DropDown > ) {
315+ super ( ) ;
323316
324- public getCount ( ) {
325- const owner = this . owner . get ( ) ;
326- return ( owner && owner . items ? owner . items . length : 0 ) + 1 ; // +1 for the hint
327- }
317+ return global . __native ( this ) ;
318+ }
328319
329- public getItem ( i : number ) {
330- const owner = this . owner . get ( ) ;
320+ public isEnabled ( i : number ) {
321+ return i !== 0 ;
322+ }
331323
332- if ( i === 0 ) {
333- return owner . hint ;
324+ public getCount ( ) {
325+ const owner = this . owner . get ( ) ;
326+ return ( owner && owner . items ? owner . items . length : 0 ) + 1 ; // +1 for the hint
334327 }
335328
336- const realIndex = i - 1 ;
337- return owner . _getItemAsString ( realIndex ) ;
338- }
329+ public getItem ( i : number ) {
330+ const owner = this . owner . get ( ) ;
339331
340- public getItemId ( i : number ) {
341- return long ( i ) ;
342- }
332+ if ( i === 0 ) {
333+ return owner . hint ;
334+ }
343335
344- public hasStableIds ( ) : boolean {
345- return true ;
346- }
336+ const realIndex = i - 1 ;
337+ return owner . _getItemAsString ( realIndex ) ;
338+ }
347339
348- public getView ( index : number , convertView : android . view . View , parent : android . view . ViewGroup ) : android . view . View {
349- return this . _generateView ( index , convertView , parent , RealizedViewType . ItemView ) ;
350- }
340+ public getItemId ( i : number ) {
341+ return long ( i ) ;
342+ }
351343
352- public getDropDownView ( index : number , convertView : android . view . View , parent : android . view . ViewGroup ) : android . view . View {
353- return this . _generateView ( index , convertView , parent , RealizedViewType . DropDownView ) ;
354- }
344+ public hasStableIds ( ) : boolean {
345+ return true ;
346+ }
355347
356- private _generateView ( index : number , convertView : android . view . View , parent : android . view . ViewGroup , realizedViewType : RealizedViewType ) : android . view . View {
357- const owner = this . owner . get ( ) ;
348+ public getView ( index : number , convertView : android . view . View , parent : android . view . ViewGroup ) : android . view . View {
349+ return this . _generateView ( index , convertView , parent , RealizedViewType . ItemView ) ;
350+ }
358351
359- if ( ! owner ) {
360- return null ;
352+ public getDropDownView ( index : number , convertView : android . view . View , parent : android . view . ViewGroup ) : android . view . View {
353+ return this . _generateView ( index , convertView , parent , RealizedViewType . DropDownView ) ;
361354 }
362355
363- const view = owner . _getRealizedView ( convertView , realizedViewType ) ;
356+ private _generateView ( index : number , convertView : android . view . View , parent : android . view . ViewGroup , realizedViewType : RealizedViewType ) : android . view . View {
357+ const owner = this . owner . get ( ) ;
364358
365- if ( view ) {
366- if ( ! view . parent ) {
367- owner . _addView ( view ) ;
368- convertView = view . android ;
359+ if ( ! owner ) {
360+ return null ;
369361 }
370362
371- const label = view . getViewById < Label > ( LABELVIEWID ) ;
372- label . text = this . getItem ( index ) ;
363+ const view = owner . _getRealizedView ( convertView , realizedViewType ) ;
373364
374- // Copy root styles to view
375- if ( owner . style . color ) {
376- label . style . color = owner . style . color ;
377- }
378- label . style . textDecoration = owner . style . textDecoration ;
379- label . style . textAlignment = owner . style . textAlignment ;
380- label . style . fontInternal = owner . style . fontInternal ;
381- if ( owner . style . fontSize ) {
382- label . style . fontSize = owner . style . fontSize ;
383- }
384- view . style . backgroundColor = owner . style . backgroundColor ;
385- view . style . padding = owner . style . padding ;
386- view . style . height = owner . style . height ;
365+ if ( view ) {
366+ if ( ! view . parent ) {
367+ owner . _addView ( view ) ;
368+ convertView = view . android ;
369+ }
387370
388- if ( realizedViewType === RealizedViewType . DropDownView ) {
389- view . style . opacity = owner . style . opacity ;
390- }
371+ const label = view . getViewById < Label > ( LABELVIEWID ) ;
372+ label . text = this . getItem ( index ) ;
373+
374+ // Copy root styles to view
375+ if ( owner . style . color ) {
376+ label . style . color = owner . style . color ;
377+ }
378+ label . style . textDecoration = owner . style . textDecoration ;
379+ label . style . textAlignment = owner . style . textAlignment ;
380+ label . style . fontInternal = owner . style . fontInternal ;
381+ if ( owner . style . fontSize ) {
382+ label . style . fontSize = owner . style . fontSize ;
383+ }
384+ view . style . backgroundColor = owner . style . backgroundColor ;
385+ view . style . padding = owner . style . padding ;
386+ view . style . height = owner . style . height ;
387+
388+ if ( realizedViewType === RealizedViewType . DropDownView ) {
389+ view . style . opacity = owner . style . opacity ;
390+ }
391391
392- ( view as any ) . isHintViewIn = false ;
392+ ( view as any ) . isHintViewIn = false ;
393393
394- // Hint View styles
395- if ( index === 0 ) {
396- label . style . color = new Color ( 255 , 148 , 150 , 148 ) ;
397- ( view as any ) . isHintViewIn = true ;
394+ // Hint View styles
395+ if ( index === 0 ) {
396+ label . style . color = new Color ( 255 , 148 , 150 , 148 ) ;
397+ ( view as any ) . isHintViewIn = true ;
398398
399- // HACK: if there is no hint defined, make the view in the drop down virtually invisible.
400- if ( realizedViewType === RealizedViewType . DropDownView
401- && ( types . isNullOrUndefined ( owner . hint ) || owner . hint === "" ) ) {
402- view . height = 1 ;
399+ // HACK: if there is no hint defined, make the view in the drop down virtually invisible.
400+ if ( realizedViewType === RealizedViewType . DropDownView
401+ && ( types . isNullOrUndefined ( owner . hint ) || owner . hint === "" ) ) {
402+ view . height = 1 ;
403+ }
404+ // END HACK
403405 }
404- // END HACK
406+
407+ owner . _realizedItems [ realizedViewType ] . set ( convertView , view ) ;
405408 }
406409
407- owner . _realizedItems [ realizedViewType ] . set ( convertView , view ) ;
410+ return convertView ;
408411 }
409-
410- return convertView ;
411412 }
412- }
413413
414- DropDownAdapter = DropDownAdapterImpl as any ;
414+ DropDownAdapter = DropDownAdapterImpl as any ;
415415}
416416/* DropDownAdpater END */
417417
418418/* A snapshot-friendly, lazy-loaded class for DropDownItemSelectedListener BEGIN */
419419interface DropDownItemSelectedListener extends java . lang . Object , android . widget . AdapterView . OnItemSelectedListener {
420420 /*tslint:disable-next-line no-misused-new*/
421- new ( owner : WeakRef < DropDown > ) : DropDownItemSelectedListener ;
421+ new ( owner : WeakRef < DropDown > ) : DropDownItemSelectedListener ;
422422}
423423
424424let DropDownItemSelectedListener : DropDownItemSelectedListener ;
425425
426426function initializeDropDownItemSelectedListener ( ) {
427- if ( DropDownItemSelectedListener ) {
428- return ;
429- }
430-
431- @Interfaces ( [ android . widget . AdapterView . OnItemSelectedListener ] )
432- class DropDownItemSelectedListenerImpl extends java . lang . Object implements android . widget . AdapterView . OnItemSelectedListener {
433- constructor ( private owner : WeakRef < DropDown > ) {
434- super ( ) ;
435-
436- return global . __native ( this ) ;
427+ if ( DropDownItemSelectedListener ) {
428+ return ;
437429 }
438430
439- public onItemSelected ( parent : any , convertView : android . view . View , index : number , id : number ) {
440- const owner = this . owner . get ( ) ;
441- const oldIndex = owner . selectedIndex ;
442- const newIndex = ( index === 0 ? null : index - 1 ) ;
431+ @ Interfaces ( [ android . widget . AdapterView . OnItemSelectedListener ] )
432+ class DropDownItemSelectedListenerImpl extends java . lang . Object implements android . widget . AdapterView . OnItemSelectedListener {
433+ constructor ( private owner : WeakRef < DropDown > ) {
434+ super ( ) ;
443435
444- owner . selectedIndex = newIndex ;
436+ return global . __native ( this ) ;
437+ }
445438
446- if ( newIndex !== oldIndex ) {
447- owner . notify ( {
448- eventName : DropDownBase . selectedIndexChangedEvent ,
449- object : owner ,
450- oldIndex,
451- newIndex
452- } as SelectedIndexChangedEventData ) ;
439+ public onItemSelected ( parent : any , convertView : android . view . View , index : number , id : number ) {
440+ const owner = this . owner . get ( ) ;
441+ const oldIndex = owner . selectedIndex ;
442+ const newIndex = ( index === 0 ? null : index - 1 ) ;
443+
444+ owner . selectedIndex = newIndex ;
445+
446+ if ( newIndex !== oldIndex ) {
447+ owner . notify ( {
448+ eventName : DropDownBase . selectedIndexChangedEvent ,
449+ object : owner ,
450+ oldIndex,
451+ newIndex
452+ } as SelectedIndexChangedEventData ) ;
453+ }
453454 }
454- }
455455
456- public onNothingSelected ( ) {
457- /* Currently Not Needed */
456+ public onNothingSelected ( ) {
457+ /* Currently Not Needed */
458+ }
458459 }
459- }
460460
461- DropDownItemSelectedListener = DropDownItemSelectedListenerImpl as any ;
461+ DropDownItemSelectedListener = DropDownItemSelectedListenerImpl as any ;
462462}
463463/* DropDownItemSelectedListener END */
0 commit comments