Visual transition, SVG/AGIF added
[platform/core/csapi/nui.git] / NUISamples / NUISamples / NUISamples.TizenTV / examples / flex-container.cs
1
2 using System;
3 using Tizen.NUI;
4
5 namespace FlexContainerTest
6 {
7     public class SampleMain : NUIApplication
8     {
9         public readonly static string[] samples = new string[]
10         {
11             "AnimationSample",
12             "BasicElement",
13             "TextSample",
14             "ImageViewSample",
15             "EventSample",
16             "FlexContainer",
17             "FrameAnimationSample"
18         };
19
20         TextLabel[] label;
21         FlexContainer container;
22         View focusIndicator;
23         int numOfSamples;
24         PushButton pushButton1, pushButton2;
25         private int _cnt;
26         private Animation _ani;
27
28         protected override void OnCreate()
29         {
30             base.OnCreate();
31
32             Stage.Instance.BackgroundColor = new Color(0.1f, 0.8f, 0.1f, 1.0f);
33
34             container = new FlexContainer();
35             container.Size = new Size(Stage.Instance.Size.Width, Stage.Instance.Size.Height, 0);
36             container.AnchorPoint = AnchorPoint.TopLeft;
37             container.Padding = new Vector4(100, 100, 100, 100);
38
39             container.FlexWrap = FlexContainer.WrapType.Wrap;
40             container.FlexDirection = FlexContainer.FlexDirectionType.Column;
41
42             Stage.Instance.GetDefaultLayer().Add(container);
43
44             numOfSamples = samples.GetLength(0);
45             Tizen.Log.Debug("NUI", "NUM = " + numOfSamples);
46             label = new TextLabel[numOfSamples];
47             for (int i = 0; i < numOfSamples; i++)
48             {
49                 label[i] = new TextLabel();
50                 label[i].Focusable = true;
51                 label[i].BackgroundColor = Color.Red;
52                 //label[i].Size = new Size(100, 50, 0);
53                 label[i].Text = samples[i];
54                 label[i].FlexMargin = new Vector4(20, 20, 20, 20);
55                 label[i].PointSize = 10;
56                 label[i].Name = "label" + i.ToString();
57                 container.Add(label[i]);
58             }
59
60             //label[3].SetKeyInputFocus();  //removed
61             FocusManager.Instance.SetCurrentFocusView(label[3]);
62
63             FocusManager.Instance.PreFocusChange += Instance_PreFocusChange;
64             //added
65             FocusManager.Instance.FocusChanged += (sender, e) =>
66             {
67                 if(e.CurrentView) Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.CurrentView.Name=" + e.CurrentView.Name);
68                 else Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.CurrentView is null!");
69                 if (e.NextView) Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.NextView.Name=" + e.NextView.Name);
70                 else Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.NextView is null!");
71             };
72             //added
73             FocusManager.Instance.FocusedViewEnterKeyPressed += (sender, e) =>
74             {
75                 if (e.View) Tizen.Log.Debug("NUI", "FocusManager FocusedViewEnterKeyPressed signal callback! e.View.Name=" + e.View.Name);
76                 else Tizen.Log.Debug("NUI", "FocusManager FocusChanged signal callback! e.View is null!");
77             };
78
79             //added
80             Stage.Instance.Touch += (sender, e) =>
81             {
82                 Tizen.Log.Debug("NUI", "Stage Touch signal callback! To avoid crash, when losing key focus, set here again unless the NextView is null");
83                 FocusManager.Instance.SetCurrentFocusView(label[3]);
84             };
85
86             //added
87             pushButton1 = new PushButton();
88             pushButton1.MinimumSize = new Size2D(400, 200);
89             pushButton1.LabelText = "+PreFocusChange";
90             pushButton1.ParentOrigin = ParentOrigin.TopLeft;
91             pushButton1.AnchorPoint = AnchorPoint.TopLeft;
92             pushButton1.Position2D = new Position2D(200, 800);
93             pushButton1.Clicked += (sender, e) =>
94             {
95                 Tizen.Log.Debug("NUI", "pushbutton1 clicked! add handler!");
96                 _cnt++;
97                 FocusManager.Instance.PreFocusChange += Instance_PreFocusChange;
98                 _ani.Finished += _ani_Finished;
99                 pushButton1.LabelText = "Add Handler" + _cnt;
100                 pushButton2.LabelText = "Remove Handler" + _cnt;
101                 return true;
102             };
103             Stage.Instance.GetDefaultLayer().Add(pushButton1);
104
105             pushButton2 = new PushButton();
106             pushButton2.MinimumSize = new Size2D(400, 200);
107             pushButton2.LabelText = "-PreFocusChange";
108             pushButton2.ParentOrigin = ParentOrigin.TopLeft;
109             pushButton2.AnchorPoint = AnchorPoint.TopLeft;
110             pushButton2.Position2D = new Position2D(800, 800);
111             pushButton2.Clicked += (sender, e) =>
112             {
113                 Tizen.Log.Debug("NUI", "pushbutton2 clicked! remove handler!");
114                 _cnt--;
115                 FocusManager.Instance.PreFocusChange -= Instance_PreFocusChange;
116                 _ani.Finished -= _ani_Finished;
117                 pushButton1.LabelText = "Add Handler" + _cnt;
118                 pushButton2.LabelText = "Remove Handler" + _cnt;
119                 return true;
120             };
121             Stage.Instance.GetDefaultLayer().Add(pushButton2);
122
123             //added
124             _ani = new Animation(2000);
125             _ani.AnimateTo(pushButton1, "Opacity", 0.0f);
126             _ani.AnimateTo(pushButton2, "Opacity", 0.0f);
127             _ani.EndAction = Animation.EndActions.Discard;
128             _ani.Finished += _ani_Finished;
129
130         }
131
132         private void _ani_Finished(object sender, EventArgs e)
133         {
134             Tizen.Log.Debug("NUI", "_ani finished! _cnt=" + _cnt);
135         }
136
137         private View Instance_PreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)
138         {
139             View nextView;
140             Tizen.Log.Debug("NUI", "Instance_PreFocusChange = " + e.Direction.ToString());
141
142             //added
143             if (e.CurrentView == null) e.CurrentView = label[0];
144             if (e.ProposedView == null) e.ProposedView = label[0];
145
146             int index = Array.FindIndex(label, x => x == e.CurrentView);
147
148             Tizen.Log.Debug("NUI", "index = " + index);
149
150             switch (e.Direction)
151             {
152                 case View.FocusDirection.Up:
153                     index = (index + numOfSamples - 2) % numOfSamples;  //changed
154                     _ani.Play();
155                     break;
156                 case View.FocusDirection.Down:
157                     index = (index + 2) % numOfSamples; //changed
158                     Tizen.Log.Debug("NUI", "pushbutton1 Visible=" + pushButton1.Visible + "  pushbutton2 Visible=" + pushButton2.Visible); //added
159                     break;
160                 case View.FocusDirection.Left:
161                     //added    
162                     pushButton1.Show();
163                     pushButton2.Show(); 
164                     break;
165                 case View.FocusDirection.Right:
166                     //added    
167                     pushButton1.Hide();
168                     pushButton2.Hide();
169                     break;
170                 default:
171                     break;
172             }
173
174             Tizen.Log.Debug("NUI", "next index = " + index);
175             nextView = label[index];
176
177             if (e.CurrentView.HasFocus())
178             {
179                 //currentView?.ClearKeyInputFocus();  //removed
180             }
181             //nextView?.SetKeyInputFocus();  //removed
182
183             return nextView;
184         }
185
186         static void _Main(string[] args)
187         {
188
189             SampleMain sample = new SampleMain();
190             sample.Run(args);
191         }
192     }
193 }
194