Merge "[NUI-252] change string type of property to enum type of property" into tizen
[platform/core/csapi/tizenfx.git] / NUISamples / NUISamples / NUISamples.TizenTV / examples / dali-test.cs
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 using System;
19 using System.Runtime.InteropServices;
20 using Tizen.NUI;
21 using Tizen.NUI.Constants;
22
23 namespace DaliTest
24 {
25     class MyView : View
26     {
27         private string _myOwnName;
28         public int _myCurrentValue;
29
30         public MyView()
31         {
32             _myCurrentValue = 0;
33         }
34
35         public string MyOwnName
36         {
37             get
38             {
39                 return _myOwnName;
40             }
41             set
42             {
43               _myOwnName = value;
44             }
45         }
46     }
47
48     class MyButton : PushButton
49     {
50         private string _myOwnName;
51         public int _myCurrentValue;
52
53         public MyButton()
54         {
55             _myCurrentValue = 0;
56         }
57
58         public string MyOwnName
59         {
60             get
61             {
62                 return _myOwnName;
63             }
64             set
65             {
66               _myOwnName = value;
67             }
68         }
69     }
70
71     class MySpin : Spin
72     {
73         private string _myOwnName;
74         public int _myCurrentValue;
75
76         public MySpin()
77         {
78             _myCurrentValue = 0;
79         }
80
81         public string MyOwnName
82         {
83             get
84             {
85                 return _myOwnName;
86             }
87             set
88             {
89               _myOwnName = value;
90             }
91         }
92     }
93
94     class Example : NUIApplication
95     {
96         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
97         delegate void CallbackDelegate(IntPtr appPtr); // void, void delgate
98
99         public Example() : base()
100         {
101         }
102
103         public Example(string stylesheet) : base(stylesheet)
104         {
105         }
106
107         public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
108         {
109         }
110
111         protected override void OnCreate()
112         {
113             base.OnCreate();
114             Initialize();
115         }
116
117         public void Initialize()
118         {
119             DowncastTest();
120
121             NavigationPropertiesTests();
122
123             OperatorTests();
124
125             CustomViewPropertyTest();
126
127             Handle handle = new Handle();
128             int myPropertyIndex = handle.RegisterProperty("myProperty", new PropertyValue(10.0f), PropertyAccessMode.ReadWrite);
129             float myProperty = 0.0f;
130             handle.GetProperty(myPropertyIndex).Get(ref myProperty);
131             Tizen.Log.Debug("NUI",  "myProperty value: " + myProperty );
132
133             int myPropertyIndex2 = handle.RegisterProperty("myProperty2", new PropertyValue(new Size(5.0f, 5.0f, 0.0f)), PropertyAccessMode.ReadWrite);
134             Size myProperty2 = new Size(0.0f, 0.0f, 0.0f);
135             handle.GetProperty(myPropertyIndex2).Get(myProperty2);
136             Tizen.Log.Debug("NUI",  "myProperty2 value: " + myProperty2.Width + ", " + myProperty2.Height );
137
138             Actor actor = new Actor();
139             actor.Size = new Size(200.0f, 200.0f, 0.0f);
140             actor.Name = "MyActor";
141             //actor.MixColor = new Color(1.0f, 0.0f, 1.0f, 0.8f);
142             Tizen.Log.Debug("NUI", "Actor size: " + actor.Size.Width + ", " + actor.Size.Height);
143             Tizen.Log.Debug("NUI", "Actor name: " + actor.Name);
144
145             Stage stage = Stage.Instance;
146             stage.BackgroundColor = Color.White;
147             Size stageSize = new Size(stage.Size.Width, stage.Size.Height, 0.0f);
148             Tizen.Log.Debug("NUI", "Stage size: " + stageSize.Width + ", " + stageSize.Height);
149             stage.GetDefaultLayer().Add(actor);
150
151             TextLabel text = new TextLabel("Hello Mono World");
152             text.ParentOrigin = ParentOrigin.Center;
153             text.AnchorPoint = AnchorPoint.Center;
154             text.HorizontalAlignment = HorizontalAlignment.HorizontalAlignCenter;
155             stage.GetDefaultLayer().Add(text);
156
157             Tizen.Log.Debug("NUI",  "Text label text:  " + text.Text );
158
159             Tizen.Log.Debug("NUI",  "Text label point size:  " + text.PointSize );
160             text.PointSize = 32.0f;
161             Tizen.Log.Debug("NUI",  "Text label new point size:  " + text.PointSize );
162
163             RectanglePaddingClassTest();
164
165             Tizen.Log.Debug("NUI",  " *************************" );
166             Size Size = new Size(100, 50, 0);
167             Tizen.Log.Debug("NUI",  "    Created " + Size );
168             Tizen.Log.Debug("NUI",  "    Size x =  " + Size.Width + ", y = " + Size.Height );
169             Size += new Size(20, 20, 0);
170             Tizen.Log.Debug("NUI",  "    Size x =  " + Size.Width + ", y = " + Size.Height );
171             Size.Width += 10;
172             Size.Height += 10;
173             Tizen.Log.Debug("NUI",  "    Size width =  " + Size.Width + ", height = " + Size.Height );
174
175             Tizen.Log.Debug("NUI",  " *************************" );
176             Position Position = new Position(20, 100, 50);
177             Tizen.Log.Debug("NUI",  "    Created " + Position );
178             Tizen.Log.Debug("NUI",  "    Position x =  " + Position.X + ", y = " + Position.Y + ", z = " + Position.Z );
179             Position += new Position(20, 20, 20);
180             Tizen.Log.Debug("NUI",  "    Position x =  " + Position.X + ", y = " + Position.Y + ", z = " + Position.Z );
181             Position.X += 10;
182             Position.Y += 10;
183             Position.Z += 10;
184             Tizen.Log.Debug("NUI",  "    Position width =  " + Position.X + ", height = " + Position.Y + ", depth = " + Position.Z );
185
186             Tizen.Log.Debug("NUI",  " *************************" );
187             Color color = new Color(20, 100, 50, 200);
188             Tizen.Log.Debug("NUI",  "    Created " + color );
189             Tizen.Log.Debug("NUI",  "    Color R =  " + color.R + ", G = " + color.G + ", B = " + color.B + ", A = " + color.A );
190             color += new Color(20, 20, 20, 20);
191             Tizen.Log.Debug("NUI",  "    Color R =  " + color.R + ", G = " + color.G + ", B = " + color.B + ", A = " + color.A );
192             color.R += 10;
193             color.G += 10;
194             color.B += 10;
195             color.A += 10;
196             Tizen.Log.Debug("NUI",  "    Color r =  " + color.R + ", g = " + color.G + ", b = " + color.B + ", a = " + color.A );
197
198             ViewDownCastTest();
199         }
200
201         public void RectanglePaddingClassTest()
202         {
203             using (Rectangle r1 = new Rectangle(2, 5, 20, 30))
204             {
205                 Tizen.Log.Debug("NUI",  "    Created " + r1 );
206                 Tizen.Log.Debug("NUI",  "    IsEmpty() =  " + r1.IsEmpty() );
207                 Tizen.Log.Debug("NUI",  "    Left =  " + r1.Left() );
208                 Tizen.Log.Debug("NUI",  "    Right =  " + r1.Right() );
209                 Tizen.Log.Debug("NUI",  "    Top  = " + r1.Top() );
210                 Tizen.Log.Debug("NUI",  "    Bottom  = " + r1.Bottom() );
211                 Tizen.Log.Debug("NUI",  "    Area  = " + r1.Area() );
212             }
213
214             Tizen.Log.Debug("NUI",  " *************************" );
215
216             using (Rectangle r2 = new Rectangle(2, 5, 20, 30))
217             {
218                 Tizen.Log.Debug("NUI",  "    Created " + r2 );
219                 r2.Set(1,1,40,40);
220                 Tizen.Log.Debug("NUI",  "    IsEmpty() =  " + r2.IsEmpty() );
221                 Tizen.Log.Debug("NUI",  "    Left =  " + r2.Left() );
222                 Tizen.Log.Debug("NUI",  "    Right =  " + r2.Right() );
223                 Tizen.Log.Debug("NUI",  "    Top  = " + r2.Top() );
224                 Tizen.Log.Debug("NUI",  "    Bottom  = " + r2.Bottom() );
225                 Tizen.Log.Debug("NUI",  "    Area  = " + r2.Area() );
226             }
227
228             Tizen.Log.Debug("NUI",  " *************************" );
229
230             Rectangle r3 = new Rectangle(10, 10, 20, 20);
231             Rectangle r4 = new Rectangle(10, 10, 20, 20);
232
233             if (r3 == r4)
234             {
235                 Tizen.Log.Debug("NUI", "r3 == r4");
236             }
237             else
238             {
239                 Tizen.Log.Debug("NUI", "r3 != r4");
240             }
241
242             r4 = new Rectangle(12, 10, 20, 20);
243
244             if (r3 == r4)
245             {
246                 Tizen.Log.Debug("NUI", "r3 == r4");
247             }
248             else
249             {
250                 Tizen.Log.Debug("NUI", "r3 != r4");
251             }
252
253             PaddingType p1 = new PaddingType(10.5f, 10.7f, 20.8f, 20.8f);
254             PaddingType p2 = new PaddingType(10.5f, 10.7f, 20.8f, 20.8f);
255
256             if (p1 == p2)
257             {
258                 Tizen.Log.Debug("NUI", "p1 == p2");
259             }
260             else
261             {
262                 Tizen.Log.Debug("NUI", "p1 != p2");
263             }
264
265             p2 = new PaddingType(12.0f, 10.7f, 20.2f, 20.0f);
266
267             if (p1 == p2)
268             {
269                 Tizen.Log.Debug("NUI", "p1 == p2");
270             }
271             else
272             {
273                 Tizen.Log.Debug("NUI", "p1 != p2");
274             }
275         }
276
277         public void NavigationPropertiesTests()
278         {
279             View view = new View();
280             View leftView, rightView, upView, downView, tmpView;
281
282             leftView = new View();
283             leftView.Name = "leftView";
284             rightView = new View();
285             rightView.Name = "rightView";
286             upView = new View();
287             upView.Name = "upView";
288             downView = new View();
289             downView.Name = "downView";
290
291             Stage.Instance.GetDefaultLayer().Add(leftView);
292             Stage.Instance.GetDefaultLayer().Add(rightView);
293             Stage.Instance.GetDefaultLayer().Add(upView);
294             Stage.Instance.GetDefaultLayer().Add(downView);
295
296             view.LeftFocusableView = leftView;
297             tmpView = view.LeftFocusableView;
298             if (string.Compare(tmpView.Name, "leftView") == 0)
299             {
300                 Tizen.Log.Debug("NUI", "Passed: LeftFocusedView = " + tmpView.Name);
301             }
302             else
303             {
304                 Tizen.Log.Debug("NUI", "Failed: LeftFocusedView = " + tmpView.Name);
305             }
306
307             view.RightFocusableView = rightView;
308             tmpView = view.RightFocusableView;
309             if (string.Compare(tmpView.Name, "rightView") == 0)
310             {
311                 Tizen.Log.Debug("NUI", "Passed: RightFocusedView = " + tmpView.Name);
312             }
313             else
314             {
315                 Tizen.Log.Debug("NUI", "Failed: RightFocusedView = " + tmpView.Name);
316             }
317
318             Stage.Instance.GetDefaultLayer().Add(view);
319
320             view.UpFocusableView = upView;
321             tmpView = view.UpFocusableView;
322             if (string.Compare(tmpView.Name, "upView") == 0)
323             {
324                 Tizen.Log.Debug("NUI", "Passed: UpFocusedView = " + tmpView.Name);
325             }
326             else
327             {
328                 Tizen.Log.Debug("NUI", "Failed: UpFocusedView = " + tmpView.Name);
329             }
330
331             view.DownFocusableView = downView;
332             tmpView = view.DownFocusableView;
333             if (string.Compare(tmpView.Name, "downView") == 0)
334             {
335                 Tizen.Log.Debug("NUI", "Passed: DownFocusedView = " + tmpView.Name);
336             }
337             else
338             {
339                 Tizen.Log.Debug("NUI", "Failed: DownFocusedView = " + tmpView.Name);
340             }
341
342             Stage.Instance.GetDefaultLayer().Remove(leftView);
343             tmpView = view.LeftFocusableView;
344             if (!tmpView)
345             {
346                 Tizen.Log.Debug("NUI", "Passed: NULL LeftFocusedView");
347             }
348             else
349             {
350                 Tizen.Log.Debug("NUI", "Failed: LeftFocusedView = " + tmpView.Name);
351             }
352         }
353
354         public void OperatorTests()
355         {
356             Actor actor = new Actor();
357             Actor differentActor = new Actor();
358             Actor actorSame = actor;
359             Actor nullActor = null;
360
361             // test the true operator
362             if ( actor )
363             {
364                 Tizen.Log.Debug("NUI", "BaseHandle Operator true (actor) : test passed ");
365             }
366             else
367             {
368                 Tizen.Log.Debug("NUI", "BaseHandle Operator true (actor): test failed ");
369             }
370
371             Actor parent = actor.Parent;
372
373             if ( parent )
374             {
375                 Tizen.Log.Debug("NUI", "Handle with Empty body  :failed ");
376             }
377             else
378             {
379                 Tizen.Log.Debug("NUI", "Valid with Empty body  :passed ");
380             }
381
382             actor.Add( differentActor );
383
384             // here we test two different C# objects, which on the native side have the same body/ ref-object
385             if ( actor == differentActor.Parent )
386             {
387                 Tizen.Log.Debug("NUI", "actor == differentActor.GetParent() :passed ");
388             }
389             else
390             {
391                 Tizen.Log.Debug("NUI", "actor == differentActor.GetParent() :failed ");
392             }
393
394             if ( differentActor == differentActor.Parent )
395             {
396                 Tizen.Log.Debug("NUI", "differentActor == differentActor.GetParent() :failed ");
397             }
398             else
399             {
400                 Tizen.Log.Debug("NUI", "differentActor == differentActor.GetParent() :passed ");
401             }
402
403             if ( nullActor )
404             {
405                 Tizen.Log.Debug("NUI", "BaseHandle Operator true (nullActor) : test failed ");
406             }
407             else
408             {
409                 Tizen.Log.Debug("NUI", "BaseHandle Operator true (nullActor): test passed ");
410             }
411
412             // ! operator
413             if ( !actor )
414             {
415                 Tizen.Log.Debug("NUI", "BaseHandle Operator !(actor) : test failed ");
416             }
417             else
418             {
419                 Tizen.Log.Debug("NUI", "BaseHandle Operator !(actor): test passed ");
420             }
421
422             if ( !nullActor )
423             {
424                 Tizen.Log.Debug("NUI", "BaseHandle Operator !(nullActor) : test passed ");
425             }
426             else
427             {
428                 Tizen.Log.Debug("NUI", "BaseHandle Operator !(nullActor): test failed ");
429             }
430
431             // Note: operator false only used inside & operator
432             // test equality operator ==
433             if ( actor == actorSame )
434             {
435                 Tizen.Log.Debug("NUI", "BaseHandle Operator  (actor == actorSame) : test passed");
436             }
437             else
438             {
439                 Tizen.Log.Debug("NUI", "BaseHandle Operator  (actor == actorSame) : test failed");
440             }
441
442             if ( actor == differentActor )
443             {
444                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor == differentActor) : test failed");
445             }
446             else
447             {
448                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor == differentActor) : test passed");
449             }
450
451             if ( actor == nullActor )
452             {
453                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor == nullActor) : test failed");
454             }
455             else
456             {
457                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor == nullActor) : test passed");
458             }
459
460             if ( nullActor == nullActor )
461             {
462                 Tizen.Log.Debug("NUI", "BaseHandle Operator (nullActor == nullActor) : test passed");
463             }
464             else
465             {
466                 Tizen.Log.Debug("NUI", "BaseHandle Operator (nullActor == nullActor) : test failed");
467             }
468
469             // test || operator
470             if ( actor || actorSame )
471             {
472                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor || actorSame) : test passed");
473             }
474             else
475             {
476                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor || actorSame) : test failed");
477             }
478
479             if ( actor || nullActor )
480             {
481                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor || nullActor) : test passed");
482             }
483             else
484             {
485                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor || nullActor) : test failed");
486             }
487
488             if ( nullActor || nullActor )
489             {
490                 Tizen.Log.Debug("NUI", "BaseHandle Operator (nullActor || nullActor) : test failed");
491             }
492             else
493             {
494                 Tizen.Log.Debug("NUI", "BaseHandle Operator (nullActor || nullActor) : test passed");
495             }
496
497             // test && operator
498             if ( actor && actorSame )
499             {
500                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor && actorSame) : test passed");
501             }
502             else
503             {
504                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor && actorSame) : test failed");
505             }
506
507             if ( actor && nullActor )
508             {
509                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor && nullActor) : test failed");
510             }
511             else
512             {
513                 Tizen.Log.Debug("NUI", "BaseHandle Operator (actor && nullActor) : test passed");
514             }
515
516             if ( nullActor && nullActor )
517             {
518                 Tizen.Log.Debug("NUI", "BaseHandle Operator (nullActor && nullActor) : test failed");
519             }
520             else
521             {
522                 Tizen.Log.Debug("NUI", "BaseHandle Operator (nullActor && nullActor) : test passed");
523             }
524         }
525
526         public void CustomViewPropertyTest()
527         {
528             // Create a Spin control
529             Spin spin = new Spin();
530
531             // Background property
532             PropertyMap background = new PropertyMap();
533             background.Add( Visual.Property.Type, new PropertyValue((int)Visual.Type.Color) )
534                       .Add( ColorVisualProperty.MixColor, new PropertyValue(Color.Red) );
535             spin.Background = background;
536
537             background = spin.Background;
538             Color backgroundColor = new Color();
539             background.Find(ColorVisualProperty.MixColor).Get(backgroundColor);
540             if( backgroundColor == Color.Red )
541             {
542                 Tizen.Log.Debug("NUI", "Custom View Background property : test passed");
543             }
544             else
545             {
546                 Tizen.Log.Debug("NUI", "Custom View Background property : test failed");
547             }
548
549             // BackgroundColor property
550             spin.BackgroundColor = Color.Yellow;
551             if(spin.BackgroundColor == Color.Yellow)
552             {
553                 Tizen.Log.Debug("NUI", "Custom View BackgroundColor property : test passed");
554             }
555             else
556             {
557                 Tizen.Log.Debug("NUI", "Custom View BackgroundColor property : test failed");
558             }
559
560             // BackgroundImage property
561             spin.BackgroundImage = "background-image.jpg";
562             if(spin.BackgroundImage == "background-image.jpg")
563             {
564                 Tizen.Log.Debug("NUI", "Custom View BackgroundImage property : test passed");
565             }
566             else
567             {
568                 Tizen.Log.Debug("NUI", "Custom View BackgroundImage property : test failed");
569             }
570
571             // StyleName property
572             spin.StyleName = "MyCustomStyle";
573             if(spin.StyleName == "MyCustomStyle")
574             {
575                 Tizen.Log.Debug("NUI", "Custom View StyleName property : test passed");
576             }
577             else
578             {
579                 Tizen.Log.Debug("NUI", "Custom View StyleName property : test failed");
580             }
581         }
582
583         public void ViewDownCastTest()
584         {
585           View container = new View();
586           container.Position = new Position(-800.0f, -800.0f, 0.0f);
587           Stage.Instance.GetDefaultLayer().Add(container);
588
589           // Test downcast for native control
590           TextLabel myLabel = new TextLabel();
591           myLabel.Name = "MyLabelName";
592           myLabel.Text = "MyText";
593
594           Tizen.Log.Debug("NUI", "myLabel.Name = " + myLabel.Name + ", Text = " + myLabel.Text);
595
596           container.Add(myLabel);
597
598           Actor myLabelActor  = container.FindChildByName("MyLabelName");
599           if(myLabelActor)
600           {
601             TextLabel newLabel = View.DownCast<TextLabel>(myLabelActor);
602             if(newLabel)
603             {
604               Tizen.Log.Debug("NUI", "Downcast to TextLabel successful: newLabel Name = " + newLabel.Name + ", Text = " + newLabel.Text);
605             }
606             else
607             {
608               Tizen.Log.Debug("NUI", "Downcast to TextLabel failed!");
609             }
610           }
611
612           // Test downcast for class directly inherited from View
613           MyView myView = new MyView();
614           myView.Name = "MyViewName";
615           myView.MyOwnName = "MyOwnViewName";
616           myView._myCurrentValue = 5;
617
618           Tizen.Log.Debug("NUI", "myView.Name = " + myView.Name + ", MyOwnName = " + myView.MyOwnName + ", myCurrentValue = " + myView._myCurrentValue);
619
620           container.Add(myView);
621
622           Actor myViewActor  = container.FindChildByName("MyViewName");
623           if(myViewActor)
624           {
625             MyView newView = View.DownCast<MyView>(myViewActor);
626             if(newView)
627             {
628               Tizen.Log.Debug("NUI", "Downcast to MyView successful: newView Name = " + newView.Name + ", MyOwnName = " + newView.MyOwnName + ", myCurrentValue = " + newView._myCurrentValue);
629             }
630             else
631             {
632               Tizen.Log.Debug("NUI", "Downcast to MyView failed!");
633             }
634           }
635
636           // Test downcast for class directly inherited from native control
637           MyButton myButton = new MyButton();
638           myButton.Name = "MyButtonName";
639           myButton.MyOwnName = "MyOwnViewName";
640           myButton.LabelText = "MyLabelText";
641           myButton._myCurrentValue = 5;
642
643           Tizen.Log.Debug("NUI", "myButton.Name = " + myButton.Name + ", MyOwnName = " + myButton.MyOwnName + ", LabelText = " + myButton.LabelText + ", myCurrentValue = " + myButton._myCurrentValue);
644
645           container.Add(myButton);
646
647           Actor myButtonActor  = container.FindChildByName("MyButtonName");
648           if(myButtonActor)
649           {
650             MyButton newButton = View.DownCast<MyButton>(myButtonActor);
651             if(newButton)
652             {
653               Tizen.Log.Debug("NUI", "Downcast to MyButton successful: newButton Name = " + newButton.Name + ", MyOwnName = " + newButton.MyOwnName + ", LabelText = " + myButton.LabelText + ", myCurrentValue = " + newButton._myCurrentValue);
654             }
655             else
656             {
657               Tizen.Log.Debug("NUI", "Downcast to MyButton failed!");
658             }
659           }
660
661           // Test downcast for a CustomView
662           Spin spin = new Spin();
663           spin.Name = "SpinName";
664           spin.MaxValue = 8888;
665
666           Tizen.Log.Debug("NUI", "spin.Name = " + spin.Name + ", MaxValue = " + spin.MaxValue);
667
668           container.Add(spin);
669
670           Actor spinActor  = container.FindChildByName("SpinName");
671           if(spinActor)
672           {
673             Spin newSpin = View.DownCast<Spin>(spinActor);
674             if(newSpin)
675             {
676               Tizen.Log.Debug("NUI", "Downcast to Spin successful: newSpin Name = " + newSpin.Name + ", MaxValue = " + newSpin.MaxValue);
677             }
678             else
679             {
680               Tizen.Log.Debug("NUI", "Downcast to Spin failed!");
681             }
682           }
683
684           // Test downcast for class inherited from a CustomView
685           MySpin mySpin = new MySpin();
686           mySpin.Name = "MySpinName";
687           mySpin.MyOwnName = "MyOwnSpinName";
688           mySpin.MaxValue = 8888;
689           mySpin._myCurrentValue = 5;
690
691           Tizen.Log.Debug("NUI", "mySpin.Name = " + mySpin.Name + ", MyOwnName = " + mySpin.MyOwnName + ", MaxValue = " + mySpin.MaxValue + ", currentValue = " + mySpin._myCurrentValue);
692
693           container.Add(mySpin);
694
695           Actor mySpinActor  = container.FindChildByName("MySpinName");
696           if(mySpinActor)
697           {
698             MySpin newSpin = View.DownCast<MySpin>(mySpinActor);
699             if(newSpin)
700             {
701               Tizen.Log.Debug("NUI", "Downcast to MySpin successful: newSpin Name = " + newSpin.Name + ", MyOwnName = " + newSpin.MyOwnName + ", MaxValue = " + newSpin.MaxValue + ", currentValue = " + newSpin._myCurrentValue);
702             }
703             else
704             {
705               Tizen.Log.Debug("NUI", "Downcast to MySpin failed!");
706             }
707           }
708         }
709
710
711
712         public void DowncastTest()
713         {
714             //Create a View as a child of parent View, get it use parent.GetChildAt(i), then DownCast to View handle, but call BackgroundColor property will crash.
715             View parent = new View();
716             View[] childs = new View[5];
717
718             for (int i = 0; i < 5; i++)
719             {
720                 childs[i] = new View();
721                 childs[i].Name = "child_view_" + i;
722                 childs[i].BackgroundColor = Color.Red;
723                 parent.Add(childs[i]);
724             }
725
726             for (uint i = 0; i < parent.GetChildCount(); i++)
727             {
728                 Actor child = parent.GetChildAt(i);
729                 View childView = View.DownCast<View>(child);
730                 if (childView)
731                 {
732                     Tizen.Log.Debug("NUI", "Type[" + childView.GetTypeName() + "] BGColor[" + childView.BackgroundColor.R + "]" + " Name[" + childView.Name + "]");
733                 }
734             }
735
736             PushButton button = new PushButton();
737             button.LabelText = "ButtonTest!";
738             button.BackgroundColor = Color.White;
739             View parentView = new View();
740             parentView.Add(button);
741             PushButton view = PushButton.DownCast(parentView.GetChildAt(0));
742             if (view)
743             {
744                 Tizen.Log.Debug("NUI", "NUI view GetTypeName= " + view.GetTypeName());
745                 Tizen.Log.Debug("NUI", "NUI view LabelText= " + view.LabelText);
746                 Tizen.Log.Debug("NUI", "NUI view color= " +  view.BackgroundColor.R);
747             }
748         }
749
750
751
752         /// <summary>
753         /// The main entry point for the application.
754         /// </summary>
755         [STAThread]
756         static void _Main(string[] args)
757         {
758             Tizen.Log.Debug("NUI", "Hello Mono World");
759
760             Example example = new Example();
761             example.Run(args);
762         }
763     }
764 }