dd4ac211da4cfac90a52a59b5c38ed8b9399354b
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / BaseComponents / View.cs
1 /*
2  * Copyright(c) 2019 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 using System;
18 using System.Collections.Generic;
19 using System.ComponentModel;
20 using System.IO;
21 using System.Runtime.InteropServices;
22 using Tizen.NUI.Binding;
23 using Tizen.NUI.Xaml;
24
25 namespace Tizen.NUI.BaseComponents
26 {
27     /// <summary>
28     /// The View layout Direction type.
29     /// </summary>
30     /// <since_tizen> 4 </since_tizen>
31     public enum ViewLayoutDirectionType
32     {
33         /// <summary>
34         /// Left to right.
35         /// </summary>
36         /// <since_tizen> 4 </since_tizen>
37         LTR,
38         /// <summary>
39         /// Right to left.
40         /// </summary>
41         /// <since_tizen> 4 </since_tizen>
42         RTL
43     }
44
45     /// <summary>
46     /// [Draft] Available policies for layout parameters
47     /// </summary>
48     /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
49     [EditorBrowsable(EditorBrowsableState.Never)]
50     public static class LayoutParamPolicies
51     {
52         /// <summary>
53         /// Constant which indicates child size should match parent size
54         /// </summary>
55        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
56        [EditorBrowsable(EditorBrowsableState.Never)]
57         public const int MatchParent = -1;
58         /// <summary>
59         /// Constant which indicates parent should take the smallest size possible to wrap it's children with their desired size
60         /// </summary>
61         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
62         [EditorBrowsable(EditorBrowsableState.Never)]
63         public const int WrapContent = -2;
64     }
65
66     internal enum ResourceLoadingStatusType
67     {
68         Invalid = -1,
69         Preparing = 0,
70         Ready,
71         Failed,
72     }
73
74     /// <summary>
75     /// View is the base class for all views.
76     /// </summary>
77     /// <since_tizen> 3 </since_tizen>
78     public class View : Container, IResourcesProvider
79     {
80         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
81         [EditorBrowsable(EditorBrowsableState.Never)]
82         public static readonly BindableProperty StyleNameProperty = BindableProperty.Create("StyleName", typeof(string), typeof(View), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
83         {
84             var view = (View)bindable;
85             if (newValue != null)
86             {
87                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.STYLE_NAME, new Tizen.NUI.PropertyValue((string)newValue));
88             }
89         },
90         defaultValueCreator: (bindable) =>
91         {
92             var view = (View)bindable;
93             string temp;
94             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.STYLE_NAME).Get(out temp);
95             return temp;
96         });
97         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
98         [EditorBrowsable(EditorBrowsableState.Never)]
99         public static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create("BackgroundColor", typeof(Color), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
100         {
101             var view = (View)bindable;
102             if (newValue != null)
103             {
104                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new Tizen.NUI.PropertyValue((Color)newValue));
105             }
106         },
107         defaultValueCreator: (bindable) =>
108         {
109             var view = (View)bindable;
110             Color backgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
111
112             Tizen.NUI.PropertyMap background = view.Background;
113             int visualType = 0;
114             background.Find(Visual.Property.Type)?.Get(out visualType);
115             if (visualType == (int)Visual.Type.Color)
116             {
117                 background.Find(ColorVisualProperty.MixColor)?.Get(backgroundColor);
118             }
119
120             return backgroundColor;
121         });
122         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
123         [EditorBrowsable(EditorBrowsableState.Never)]
124         public static readonly BindableProperty BackgroundImageProperty = BindableProperty.Create("BackgroundImage", typeof(string), typeof(View), default(string), propertyChanged: (bindable, oldValue, newValue) =>
125         {
126             var view = (View)bindable;
127             if (newValue != null)
128             {
129                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new Tizen.NUI.PropertyValue((string)newValue));
130             }
131         },
132         defaultValueCreator: (bindable) =>
133         {
134             var view = (View)bindable;
135             string backgroundImage = "";
136
137             Tizen.NUI.PropertyMap background = view.Background;
138             int visualType = 0;
139             background.Find(Visual.Property.Type)?.Get(out visualType);
140             if (visualType == (int)Visual.Type.Image)
141             {
142                 background.Find(ImageVisualProperty.URL)?.Get(out backgroundImage);
143             }
144
145             return backgroundImage;
146         });
147         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
148         [EditorBrowsable(EditorBrowsableState.Never)]
149         public static readonly BindableProperty BackgroundProperty = BindableProperty.Create("Background", typeof(PropertyMap), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
150         {
151             var view = (View)bindable;
152             if (newValue != null)
153             {
154                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
155             }
156         },
157         defaultValueCreator: (bindable) =>
158         {
159             var view = (View)bindable;
160             Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
161             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.BACKGROUND).Get(temp);
162             return temp;
163         });
164         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
165         [EditorBrowsable(EditorBrowsableState.Never)]
166         public static readonly BindableProperty StateProperty = BindableProperty.Create("State", typeof(States), typeof(View), States.Normal, propertyChanged: (bindable, oldValue, newValue) =>
167         {
168             var view = (View)bindable;
169             if (newValue != null)
170             {
171                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.STATE, new Tizen.NUI.PropertyValue((int)newValue));
172             }
173         },
174         defaultValueCreator: (bindable) =>
175         {
176             var view = (View)bindable;
177             int temp = 0;
178             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.STATE).Get(out temp) == false)
179             {
180                 NUILog.Error("State get error!");
181             }
182             switch (temp)
183             {
184                 case 0: return States.Normal;
185                 case 1: return States.Focused;
186                 case 2: return States.Disabled;
187                 default: return States.Normal;
188             }
189         });
190         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
191         [EditorBrowsable(EditorBrowsableState.Never)]
192         public static readonly BindableProperty SubStateProperty = BindableProperty.Create("SubState", typeof(States), typeof(View), States.Normal, propertyChanged: (bindable, oldValue, newValue) =>
193         {
194             var view = (View)bindable;
195             string valueToString = "";
196             if (newValue != null)
197             {
198                 switch ((States)newValue)
199                 {
200                     case States.Normal: { valueToString = "NORMAL"; break; }
201                     case States.Focused: { valueToString = "FOCUSED"; break; }
202                     case States.Disabled: { valueToString = "DISABLED"; break; }
203                     default: { valueToString = "NORMAL"; break; }
204                 }
205                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SUB_STATE, new Tizen.NUI.PropertyValue(valueToString));
206             }
207         },
208         defaultValueCreator: (bindable) =>
209         {
210             var view = (View)bindable;
211             string temp;
212             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SUB_STATE).Get(out temp) == false)
213             {
214                 NUILog.Error("subState get error!");
215             }
216             switch (temp)
217             {
218                 case "NORMAL": return States.Normal;
219                 case "FOCUSED": return States.Focused;
220                 case "DISABLED": return States.Disabled;
221                 default: return States.Normal;
222             }
223         });
224         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
225         [EditorBrowsable(EditorBrowsableState.Never)]
226         public static readonly BindableProperty TooltipProperty = BindableProperty.Create("Tooltip", typeof(PropertyMap), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
227         {
228             var view = (View)bindable;
229             if (newValue != null)
230             {
231                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.TOOLTIP, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
232             }
233         },
234         defaultValueCreator: (bindable) =>
235         {
236             var view = (View)bindable;
237             Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
238             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.TOOLTIP).Get(temp);
239             return temp;
240         });
241
242         /// Only for XAML property binding. This will be changed as Inhouse API by ACR later.
243         public static readonly BindableProperty FlexProperty = BindableProperty.Create("Flex", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
244         {
245             var view = (View)bindable;
246             if (newValue != null)
247             {
248                 Tizen.NUI.Object.SetProperty(view.swigCPtr, FlexContainer.ChildProperty.FLEX, new Tizen.NUI.PropertyValue((float)newValue));
249             }
250         },
251         defaultValueCreator: (bindable) =>
252         {
253             var view = (View)bindable;
254             float temp = 0.0f;
255             Tizen.NUI.Object.GetProperty(view.swigCPtr, FlexContainer.ChildProperty.FLEX).Get(out temp);
256             return temp;
257         });
258
259         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
260         [EditorBrowsable(EditorBrowsableState.Never)]
261         public static readonly BindableProperty AlignSelfProperty = BindableProperty.Create("AlignSelf", typeof(int), typeof(View), default(int), propertyChanged: (bindable, oldValue, newValue) =>
262         {
263             var view = (View)bindable;
264             if (newValue != null)
265             {
266                 Tizen.NUI.Object.SetProperty(view.swigCPtr, FlexContainer.ChildProperty.ALIGN_SELF, new Tizen.NUI.PropertyValue((int)newValue));
267             }
268         },
269         defaultValueCreator: (bindable) =>
270         {
271             var view = (View)bindable;
272             int temp = 0;
273             Tizen.NUI.Object.GetProperty(view.swigCPtr, FlexContainer.ChildProperty.ALIGN_SELF).Get(out temp);
274             return temp;
275         });
276         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
277         [EditorBrowsable(EditorBrowsableState.Never)]
278         public static readonly BindableProperty FlexMarginProperty = BindableProperty.Create("FlexMargin", typeof(Vector4), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
279         {
280             var view = (View)bindable;
281             if (newValue != null)
282             {
283                 Tizen.NUI.Object.SetProperty(view.swigCPtr, FlexContainer.ChildProperty.FLEX_MARGIN, new Tizen.NUI.PropertyValue((Vector4)newValue));
284             }
285         },
286         defaultValueCreator: (bindable) =>
287         {
288             var view = (View)bindable;
289             Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
290             Tizen.NUI.Object.GetProperty(view.swigCPtr, FlexContainer.ChildProperty.FLEX_MARGIN).Get(temp);
291             return temp;
292         });
293         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
294         [EditorBrowsable(EditorBrowsableState.Never)]
295         public static readonly BindableProperty CellIndexProperty = BindableProperty.Create("CellIndex", typeof(Vector2), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
296         {
297             var view = (View)bindable;
298             if (newValue != null)
299             {
300                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.CELL_INDEX, new Tizen.NUI.PropertyValue((Vector2)newValue));
301             }
302         },
303         defaultValueCreator: (bindable) =>
304         {
305             var view = (View)bindable;
306             Vector2 temp = new Vector2(0.0f, 0.0f);
307             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.CELL_INDEX).Get(temp);
308             return temp;
309         });
310         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
311         [EditorBrowsable(EditorBrowsableState.Never)]
312         public static readonly BindableProperty RowSpanProperty = BindableProperty.Create("RowSpan", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
313         {
314             var view = (View)bindable;
315             if (newValue != null)
316             {
317                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.ROW_SPAN, new Tizen.NUI.PropertyValue((float)newValue));
318             }
319         },
320         defaultValueCreator: (bindable) =>
321         {
322             var view = (View)bindable;
323             float temp = 0.0f;
324             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.ROW_SPAN).Get(out temp);
325             return temp;
326         });
327         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
328         [EditorBrowsable(EditorBrowsableState.Never)]
329         public static readonly BindableProperty ColumnSpanProperty = BindableProperty.Create("ColumnSpan", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
330         {
331             var view = (View)bindable;
332             if (newValue != null)
333             {
334                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.COLUMN_SPAN, new Tizen.NUI.PropertyValue((float)newValue));
335             }
336         },
337         defaultValueCreator: (bindable) =>
338         {
339             var view = (View)bindable;
340             float temp = 0.0f;
341             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.COLUMN_SPAN).Get(out temp);
342             return temp;
343         });
344         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
345         [EditorBrowsable(EditorBrowsableState.Never)]
346         public static readonly BindableProperty CellHorizontalAlignmentProperty = BindableProperty.Create("CellHorizontalAlignment", typeof(HorizontalAlignmentType), typeof(View), HorizontalAlignmentType.Left, propertyChanged: (bindable, oldValue, newValue) =>
347         {
348             var view = (View)bindable;
349             string valueToString = "";
350
351             if (newValue != null)
352             {
353                 switch ((HorizontalAlignmentType)newValue)
354                 {
355                     case Tizen.NUI.HorizontalAlignmentType.Left: { valueToString = "left"; break; }
356                     case Tizen.NUI.HorizontalAlignmentType.Center: { valueToString = "center"; break; }
357                     case Tizen.NUI.HorizontalAlignmentType.Right: { valueToString = "right"; break; }
358                     default: { valueToString = "left"; break; }
359                 }
360                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.CELL_HORIZONTAL_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
361             }
362         },
363         defaultValueCreator: (bindable) =>
364         {
365             var view = (View)bindable;
366             string temp;
367             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.CELL_HORIZONTAL_ALIGNMENT).Get(out temp) == false)
368             {
369                 NUILog.Error("CellHorizontalAlignment get error!");
370             }
371
372             switch (temp)
373             {
374                 case "left": return Tizen.NUI.HorizontalAlignmentType.Left;
375                 case "center": return Tizen.NUI.HorizontalAlignmentType.Center;
376                 case "right": return Tizen.NUI.HorizontalAlignmentType.Right;
377                 default: return Tizen.NUI.HorizontalAlignmentType.Left;
378             }
379         });
380         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
381         [EditorBrowsable(EditorBrowsableState.Never)]
382         public static readonly BindableProperty CellVerticalAlignmentProperty = BindableProperty.Create("CellVerticalAlignment", typeof(VerticalAlignmentType), typeof(View), VerticalAlignmentType.Top, propertyChanged: (bindable, oldValue, newValue) =>
383         {
384             var view = (View)bindable;
385             string valueToString = "";
386
387             if (newValue != null)
388             {
389                 switch ((VerticalAlignmentType)newValue)
390                 {
391                     case Tizen.NUI.VerticalAlignmentType.Top: { valueToString = "top"; break; }
392                     case Tizen.NUI.VerticalAlignmentType.Center: { valueToString = "center"; break; }
393                     case Tizen.NUI.VerticalAlignmentType.Bottom: { valueToString = "bottom"; break; }
394                     default: { valueToString = "top"; break; }
395                 }
396                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.CELL_VERTICAL_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
397             }
398         },
399         defaultValueCreator: (bindable) =>
400         {
401             var view = (View)bindable;
402             string temp;
403             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.CELL_VERTICAL_ALIGNMENT).Get(out temp);
404             {
405                 NUILog.Error("CellVerticalAlignment get error!");
406             }
407
408             switch (temp)
409             {
410                 case "top": return Tizen.NUI.VerticalAlignmentType.Top;
411                 case "center": return Tizen.NUI.VerticalAlignmentType.Center;
412                 case "bottom": return Tizen.NUI.VerticalAlignmentType.Bottom;
413                 default: return Tizen.NUI.VerticalAlignmentType.Top;
414             }
415         });
416
417         /// <summary>
418         /// "Please DO NOT use! This will be deprecated! Please use 'View Weight' instead of BindableProperty"
419         /// This needs to be hidden as inhouse API until all applications using it have been updated.  Do not make public.
420         /// </summary>
421         [EditorBrowsable(EditorBrowsableState.Never)]
422         public static readonly BindableProperty WeightProperty = BindableProperty.Create("Weight", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
423         {
424             var view = (View)bindable;
425             if (newValue != null)
426             {
427                 view.Weight = (float)newValue;
428             }
429         },
430
431         defaultValueCreator: (bindable) =>
432         {
433             var view = (View)bindable;
434             return view.Weight;
435         });
436
437         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
438         [EditorBrowsable(EditorBrowsableState.Never)]
439         public static readonly BindableProperty LeftFocusableViewProperty = BindableProperty.Create(nameof(View.LeftFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
440         {
441             var view = (View)bindable;
442             if (newValue != null) { view.LeftFocusableViewId = (int)(newValue as View)?.GetId(); }
443             else { view.LeftFocusableViewId = -1; }
444         },
445         defaultValueCreator: (bindable) =>
446         {
447             var view = (View)bindable;
448             if (view.LeftFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.LeftFocusableViewId); }
449             return null;
450         });
451         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
452         [EditorBrowsable(EditorBrowsableState.Never)]
453         public static readonly BindableProperty RightFocusableViewProperty = BindableProperty.Create(nameof(View.RightFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
454         {
455             var view = (View)bindable;
456             if (newValue != null) { view.RightFocusableViewId = (int)(newValue as View)?.GetId(); }
457             else { view.RightFocusableViewId = -1; }
458         },
459         defaultValueCreator: (bindable) =>
460         {
461             var view = (View)bindable;
462             if (view.RightFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.RightFocusableViewId); }
463             return null;
464         });
465         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
466         [EditorBrowsable(EditorBrowsableState.Never)]
467         public static readonly BindableProperty UpFocusableViewProperty = BindableProperty.Create(nameof(View.UpFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
468         {
469             var view = (View)bindable;
470             if (newValue != null) { view.UpFocusableViewId = (int)(newValue as View)?.GetId(); }
471             else { view.UpFocusableViewId = -1; }
472         },
473         defaultValueCreator: (bindable) =>
474         {
475             var view = (View)bindable;
476             if (view.UpFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.UpFocusableViewId); }
477             return null;
478         });
479         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
480         [EditorBrowsable(EditorBrowsableState.Never)]
481         public static readonly BindableProperty DownFocusableViewProperty = BindableProperty.Create(nameof(View.DownFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
482         {
483             var view = (View)bindable;
484             if (newValue != null) { view.DownFocusableViewId = (int)(newValue as View)?.GetId(); }
485             else { view.DownFocusableViewId = -1; }
486         },
487         defaultValueCreator: (bindable) =>
488         {
489             var view = (View)bindable;
490             if (view.DownFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.DownFocusableViewId); }
491             return null;
492         });
493         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
494         [EditorBrowsable(EditorBrowsableState.Never)]
495         public static readonly BindableProperty FocusableProperty = BindableProperty.Create("Focusable", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
496         {
497             var view = (View)bindable;
498             if (newValue != null) { view.SetKeyboardFocusable((bool)newValue); }
499         },
500         defaultValueCreator: (bindable) =>
501         {
502             var view = (View)bindable;
503             return view.IsKeyboardFocusable();
504         });
505         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
506         [EditorBrowsable(EditorBrowsableState.Never)]
507         public static readonly BindableProperty Size2DProperty = BindableProperty.Create("Size2D", typeof(Size2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
508         {
509             var view = (View)bindable;
510             if (newValue != null)
511             {
512                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE, new Tizen.NUI.PropertyValue(new Size((Size2D)newValue)));
513             }
514         },
515         defaultValueCreator: (bindable) =>
516         {
517             var view = (View)bindable;
518             Size temp = new Size(0.0f, 0.0f, 0.0f);
519             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE).Get(temp);
520             Size2D size = new Size2D((int)temp.Width, (int)temp.Height);
521             return size;
522         });
523         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
524         [EditorBrowsable(EditorBrowsableState.Never)]
525         public static readonly BindableProperty OpacityProperty = BindableProperty.Create("Opacity", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
526         {
527             var view = (View)bindable;
528             if (newValue != null)
529             {
530                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.OPACITY, new Tizen.NUI.PropertyValue((float)newValue));
531             }
532         },
533         defaultValueCreator: (bindable) =>
534         {
535             var view = (View)bindable;
536             float temp = 0.0f;
537             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.OPACITY).Get(out temp);
538             return temp;
539         });
540         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
541         [EditorBrowsable(EditorBrowsableState.Never)]
542         public static readonly BindableProperty Position2DProperty = BindableProperty.Create("Position2D", typeof(Position2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
543         {
544             var view = (View)bindable;
545             if (newValue != null)
546             {
547                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION, new Tizen.NUI.PropertyValue(new Position((Position2D)newValue)));
548             }
549         },
550         defaultValueCreator: (bindable) =>
551         {
552             var view = (View)bindable;
553             Position temp = new Position(0.0f, 0.0f, 0.0f);
554             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION).Get(temp);
555             return new Position2D(temp);
556         });
557         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
558         [EditorBrowsable(EditorBrowsableState.Never)]
559         public static readonly BindableProperty PositionUsesPivotPointProperty = BindableProperty.Create("PositionUsesPivotPoint", typeof(bool), typeof(View), true, propertyChanged: (bindable, oldValue, newValue) =>
560         {
561             var view = (View)bindable;
562             if (newValue != null)
563             {
564                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_USES_ANCHOR_POINT, new Tizen.NUI.PropertyValue((bool)newValue));
565             }
566         },
567         defaultValueCreator: (bindable) =>
568         {
569             var view = (View)bindable;
570             bool temp = false;
571             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_USES_ANCHOR_POINT).Get(out temp);
572             return temp;
573         });
574         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
575         [EditorBrowsable(EditorBrowsableState.Never)]
576         public static readonly BindableProperty SiblingOrderProperty = BindableProperty.Create("SiblingOrder", typeof(int), typeof(View), default(int), propertyChanged: (bindable, oldValue, newValue) =>
577         {
578             var view = (View)bindable;
579             int value;
580             if (newValue != null)
581             {
582                 value = (int)newValue;
583                 if (value < 0)
584                 {
585                     NUILog.Error("SiblingOrder should be bigger than 0 or equal to 0.");
586                     return;
587                 }
588                 var siblings = view.GetParent()?.Children;
589                 if (siblings != null)
590                 {
591                     int currentOrder = siblings.IndexOf(view);
592                     if (value != currentOrder)
593                     {
594                         if (value == 0) { view.LowerToBottom(); }
595                         else if (value < siblings.Count - 1)
596                         {
597                             if (value > currentOrder) { view.RaiseAbove(siblings[value]); }
598                             else { view.LowerBelow(siblings[value]); }
599                         }
600                         else { view.RaiseToTop(); }
601                     }
602                 }
603             }
604         },
605         defaultValueCreator: (bindable) =>
606         {
607             var view = (View)bindable;
608             var parentChildren = view.GetParent()?.Children;
609             int currentOrder = 0;
610             if (parentChildren != null)
611             {
612                 currentOrder = parentChildren.IndexOf(view);
613
614                 if (currentOrder < 0) { return 0; }
615                 else if (currentOrder < parentChildren.Count) { return currentOrder; }
616             }
617
618             return 0;
619         });
620         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
621         [EditorBrowsable(EditorBrowsableState.Never)]
622         public static readonly BindableProperty ParentOriginProperty = BindableProperty.Create("ParentOrigin", typeof(Position), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
623         {
624             var view = (View)bindable;
625             if (newValue != null)
626             {
627                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.PARENT_ORIGIN, new Tizen.NUI.PropertyValue((Position)newValue));
628             }
629         },
630         defaultValueCreator: (bindable) =>
631         {
632             var view = (View)bindable;
633             Position temp = new Position(0.0f, 0.0f, 0.0f);
634             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.PARENT_ORIGIN).Get(temp);
635             return temp;
636         }
637         );
638         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
639         [EditorBrowsable(EditorBrowsableState.Never)]
640         public static readonly BindableProperty PivotPointProperty = BindableProperty.Create("PivotPoint", typeof(Position), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
641         {
642             var view = (View)bindable;
643             if (newValue != null)
644             {
645                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.ANCHOR_POINT, new Tizen.NUI.PropertyValue((Position)newValue));
646             }
647         },
648         defaultValueCreator: (bindable) =>
649         {
650             var view = (View)bindable;
651             Position temp = new Position(0.0f, 0.0f, 0.0f);
652             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.ANCHOR_POINT).Get(temp);
653             return temp;
654         });
655         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
656         [EditorBrowsable(EditorBrowsableState.Never)]
657         public static readonly BindableProperty SizeWidthProperty = BindableProperty.Create("SizeWidth", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
658         {
659             var view = (View)bindable;
660             if (newValue != null)
661             {
662                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_WIDTH, new Tizen.NUI.PropertyValue((float)newValue));
663             }
664         },
665         defaultValueCreator: (bindable) =>
666         {
667             var view = (View)bindable;
668             float temp = 0.0f;
669             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_WIDTH).Get(out temp);
670             return temp;
671         });
672         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
673         [EditorBrowsable(EditorBrowsableState.Never)]
674         public static readonly BindableProperty SizeHeightProperty = BindableProperty.Create("SizeHeight", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
675         {
676             var view = (View)bindable;
677             if (newValue != null)
678             {
679                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_HEIGHT, new Tizen.NUI.PropertyValue((float)newValue));
680             }
681         },
682         defaultValueCreator: (bindable) =>
683         {
684             var view = (View)bindable;
685             float temp = 0.0f;
686             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_HEIGHT).Get(out temp);
687             return temp;
688         });
689         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
690         [EditorBrowsable(EditorBrowsableState.Never)]
691         public static readonly BindableProperty PositionProperty = BindableProperty.Create("Position", typeof(Position), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
692         {
693             var view = (View)bindable;
694             if (newValue != null)
695             {
696                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION, new Tizen.NUI.PropertyValue((Position)newValue));
697             }
698         },
699         defaultValueCreator: (bindable) =>
700         {
701             var view = (View)bindable;
702             Position temp = new Position(0.0f, 0.0f, 0.0f);
703             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION).Get(temp);
704             return temp;
705         });
706         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
707         [EditorBrowsable(EditorBrowsableState.Never)]
708         public static readonly BindableProperty PositionXProperty = BindableProperty.Create("PositionX", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
709         {
710             var view = (View)bindable;
711             if (newValue != null)
712             {
713                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_X, new Tizen.NUI.PropertyValue((float)newValue));
714             }
715         },
716         defaultValueCreator: (bindable) =>
717         {
718             var view = (View)bindable;
719             float temp = 0.0f;
720             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_X).Get(out temp);
721             return temp;
722         });
723         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
724         [EditorBrowsable(EditorBrowsableState.Never)]
725         public static readonly BindableProperty PositionYProperty = BindableProperty.Create("PositionY", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
726         {
727             var view = (View)bindable;
728             if (newValue != null)
729             {
730                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_Y, new Tizen.NUI.PropertyValue((float)newValue));
731             }
732         },
733         defaultValueCreator: (bindable) =>
734         {
735             var view = (View)bindable;
736             float temp = 0.0f;
737             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_Y).Get(out temp);
738             return temp;
739         });
740         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
741         [EditorBrowsable(EditorBrowsableState.Never)]
742         public static readonly BindableProperty PositionZProperty = BindableProperty.Create("PositionZ", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
743         {
744             var view = (View)bindable;
745             if (newValue != null)
746             {
747                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_Z, new Tizen.NUI.PropertyValue((float)newValue));
748             }
749         },
750         defaultValueCreator: (bindable) =>
751         {
752             var view = (View)bindable;
753             float temp = 0.0f;
754             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_Z).Get(out temp);
755             return temp;
756         });
757         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
758         [EditorBrowsable(EditorBrowsableState.Never)]
759         public static readonly BindableProperty OrientationProperty = BindableProperty.Create("Orientation", typeof(Rotation), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
760         {
761             var view = (View)bindable;
762             if (newValue != null)
763             {
764                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.ORIENTATION, new Tizen.NUI.PropertyValue((Rotation)newValue));
765             }
766         },
767         defaultValueCreator: (bindable) =>
768         {
769             var view = (View)bindable;
770             Rotation temp = new Rotation();
771             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.ORIENTATION).Get(temp);
772             return temp;
773         });
774         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
775         [EditorBrowsable(EditorBrowsableState.Never)]
776         public static readonly BindableProperty ScaleProperty = BindableProperty.Create("Scale", typeof(Vector3), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
777         {
778             var view = (View)bindable;
779             if (newValue != null)
780             {
781                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE, new Tizen.NUI.PropertyValue((Vector3)newValue));
782             }
783         },
784         defaultValueCreator: (bindable) =>
785         {
786             var view = (View)bindable;
787             Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
788             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE).Get(temp);
789             return temp;
790         });
791         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
792         [EditorBrowsable(EditorBrowsableState.Never)]
793         public static readonly BindableProperty ScaleXProperty = BindableProperty.Create("ScaleX", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
794         {
795             var view = (View)bindable;
796             if (newValue != null)
797             {
798                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE_X, new Tizen.NUI.PropertyValue((float)newValue));
799             }
800         },
801         defaultValueCreator: (bindable) =>
802         {
803             var view = (View)bindable;
804             float temp = 0.0f;
805             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE_X).Get(out temp);
806             return temp;
807         });
808         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
809         [EditorBrowsable(EditorBrowsableState.Never)]
810         public static readonly BindableProperty ScaleYProperty = BindableProperty.Create("ScaleY", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
811         {
812             var view = (View)bindable;
813             if (newValue != null)
814             {
815                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE_Y, new Tizen.NUI.PropertyValue((float)newValue));
816             }
817         },
818         defaultValueCreator: (bindable) =>
819         {
820             var view = (View)bindable;
821             float temp = 0.0f;
822             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE_Y).Get(out temp);
823             return temp;
824         });
825         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
826         [EditorBrowsable(EditorBrowsableState.Never)]
827         public static readonly BindableProperty ScaleZProperty = BindableProperty.Create("ScaleZ", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
828         {
829             var view = (View)bindable;
830             if (newValue != null)
831             {
832                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE_Z, new Tizen.NUI.PropertyValue((float)newValue));
833             }
834         },
835         defaultValueCreator: (bindable) =>
836         {
837             var view = (View)bindable;
838             float temp = 0.0f;
839             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE_Z).Get(out temp);
840             return temp;
841         });
842         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
843         [EditorBrowsable(EditorBrowsableState.Never)]
844         public static readonly BindableProperty NameProperty = BindableProperty.Create("Name", typeof(string), typeof(View), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
845         {
846             var view = (View)bindable;
847             if (newValue != null)
848             {
849                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.NAME, new Tizen.NUI.PropertyValue((string)newValue));
850             }
851         },
852         defaultValueCreator: (bindable) =>
853         {
854             var view = (View)bindable;
855             string temp;
856             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.NAME).Get(out temp);
857             return temp;
858         });
859         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
860         [EditorBrowsable(EditorBrowsableState.Never)]
861         public static readonly BindableProperty SensitiveProperty = BindableProperty.Create("Sensitive", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
862         {
863             var view = (View)bindable;
864             if (newValue != null)
865             {
866                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SENSITIVE, new Tizen.NUI.PropertyValue((bool)newValue));
867             }
868         },
869         defaultValueCreator: (bindable) =>
870         {
871             var view = (View)bindable;
872             bool temp = false;
873             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SENSITIVE).Get(out temp);
874             return temp;
875         });
876         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
877         [EditorBrowsable(EditorBrowsableState.Never)]
878         public static readonly BindableProperty LeaveRequiredProperty = BindableProperty.Create("LeaveRequired", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
879         {
880             var view = (View)bindable;
881             if (newValue != null)
882             {
883                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.LEAVE_REQUIRED, new Tizen.NUI.PropertyValue((bool)newValue));
884             }
885         },
886         defaultValueCreator: (bindable) =>
887         {
888             var view = (View)bindable;
889             bool temp = false;
890             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.LEAVE_REQUIRED).Get(out temp);
891             return temp;
892         });
893         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
894         [EditorBrowsable(EditorBrowsableState.Never)]
895         public static readonly BindableProperty InheritOrientationProperty = BindableProperty.Create("InheritOrientation", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
896         {
897             var view = (View)bindable;
898             if (newValue != null)
899             {
900                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_ORIENTATION, new Tizen.NUI.PropertyValue((bool)newValue));
901             }
902         },
903         defaultValueCreator: (bindable) =>
904         {
905             var view = (View)bindable;
906             bool temp = false;
907             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_ORIENTATION).Get(out temp);
908             return temp;
909         });
910         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
911         [EditorBrowsable(EditorBrowsableState.Never)]
912         public static readonly BindableProperty InheritScaleProperty = BindableProperty.Create("InheritScale", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
913         {
914             var view = (View)bindable;
915             if (newValue != null)
916             {
917                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_SCALE, new Tizen.NUI.PropertyValue((bool)newValue));
918             }
919         },
920         defaultValueCreator: (bindable) =>
921         {
922             var view = (View)bindable;
923             bool temp = false;
924             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_SCALE).Get(out temp);
925             return temp;
926         });
927         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
928         [EditorBrowsable(EditorBrowsableState.Never)]
929         public static readonly BindableProperty DrawModeProperty = BindableProperty.Create("DrawMode", typeof(DrawModeType), typeof(View), DrawModeType.Normal, propertyChanged: (bindable, oldValue, newValue) =>
930         {
931             var view = (View)bindable;
932             if (newValue != null)
933             {
934                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.DRAW_MODE, new Tizen.NUI.PropertyValue((int)newValue));
935             }
936         },
937         defaultValueCreator: (bindable) =>
938         {
939             var view = (View)bindable;
940             string temp;
941             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.DRAW_MODE).Get(out temp) == false)
942             {
943                 NUILog.Error("DrawMode get error!");
944             }
945             switch (temp)
946             {
947                 case "NORMAL": return DrawModeType.Normal;
948                 case "OVERLAY_2D": return DrawModeType.Overlay2D;
949 #pragma warning disable CS0618 // Disable deprecated warning as we do need to use the deprecated API here.
950                 case "STENCIL": return DrawModeType.Stencil;
951 #pragma warning restore CS0618
952                 default: return DrawModeType.Normal;
953             }
954         });
955         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
956         [EditorBrowsable(EditorBrowsableState.Never)]
957         public static readonly BindableProperty SizeModeFactorProperty = BindableProperty.Create("SizeModeFactor", typeof(Vector3), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
958         {
959             var view = (View)bindable;
960             if (newValue != null)
961             {
962                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_MODE_FACTOR, new Tizen.NUI.PropertyValue((Vector3)newValue));
963             }
964         },
965         defaultValueCreator: (bindable) =>
966         {
967             var view = (View)bindable;
968             Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
969             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_MODE_FACTOR).Get(temp);
970             return temp;
971         });
972         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
973         [EditorBrowsable(EditorBrowsableState.Never)]
974         public static readonly BindableProperty WidthResizePolicyProperty = BindableProperty.Create("WidthResizePolicy", typeof(ResizePolicyType), typeof(View), ResizePolicyType.Fixed, propertyChanged: (bindable, oldValue, newValue) =>
975         {
976             var view = (View)bindable;
977             if (newValue != null)
978             {
979                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.WIDTH_RESIZE_POLICY, new Tizen.NUI.PropertyValue((int)newValue));
980             }
981         },
982         defaultValueCreator: (bindable) =>
983         {
984             var view = (View)bindable;
985             string temp;
986             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.WIDTH_RESIZE_POLICY).Get(out temp) == false)
987             {
988                 NUILog.Error("WidthResizePolicy get error!");
989             }
990             switch (temp)
991             {
992                 case "FIXED": return ResizePolicyType.Fixed;
993                 case "USE_NATURAL_SIZE": return ResizePolicyType.UseNaturalSize;
994                 case "FILL_TO_PARENT": return ResizePolicyType.FillToParent;
995                 case "SIZE_RELATIVE_TO_PARENT": return ResizePolicyType.SizeRelativeToParent;
996                 case "SIZE_FIXED_OFFSET_FROM_PARENT": return ResizePolicyType.SizeFixedOffsetFromParent;
997                 case "FIT_TO_CHILDREN": return ResizePolicyType.FitToChildren;
998                 case "DIMENSION_DEPENDENCY": return ResizePolicyType.DimensionDependency;
999                 case "USE_ASSIGNED_SIZE": return ResizePolicyType.UseAssignedSize;
1000                 default: return ResizePolicyType.Fixed;
1001             }
1002         });
1003         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1004         [EditorBrowsable(EditorBrowsableState.Never)]
1005         public static readonly BindableProperty HeightResizePolicyProperty = BindableProperty.Create("HeightResizePolicy", typeof(ResizePolicyType), typeof(View), ResizePolicyType.Fixed, propertyChanged: (bindable, oldValue, newValue) =>
1006         {
1007             var view = (View)bindable;
1008             if (newValue != null)
1009             {
1010                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.HEIGHT_RESIZE_POLICY, new Tizen.NUI.PropertyValue((int)newValue));
1011             }
1012         },
1013         defaultValueCreator: (bindable) =>
1014         {
1015             var view = (View)bindable;
1016             string temp;
1017             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.HEIGHT_RESIZE_POLICY).Get(out temp) == false)
1018             {
1019                 NUILog.Error("HeightResizePolicy get error!");
1020             }
1021             switch (temp)
1022             {
1023                 case "FIXED": return ResizePolicyType.Fixed;
1024                 case "USE_NATURAL_SIZE": return ResizePolicyType.UseNaturalSize;
1025                 case "FILL_TO_PARENT": return ResizePolicyType.FillToParent;
1026                 case "SIZE_RELATIVE_TO_PARENT": return ResizePolicyType.SizeRelativeToParent;
1027                 case "SIZE_FIXED_OFFSET_FROM_PARENT": return ResizePolicyType.SizeFixedOffsetFromParent;
1028                 case "FIT_TO_CHILDREN": return ResizePolicyType.FitToChildren;
1029                 case "DIMENSION_DEPENDENCY": return ResizePolicyType.DimensionDependency;
1030                 case "USE_ASSIGNED_SIZE": return ResizePolicyType.UseAssignedSize;
1031                 default: return ResizePolicyType.Fixed;
1032             }
1033         });
1034         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1035         [EditorBrowsable(EditorBrowsableState.Never)]
1036         public static readonly BindableProperty SizeScalePolicyProperty = BindableProperty.Create("SizeScalePolicy", typeof(SizeScalePolicyType), typeof(View), SizeScalePolicyType.UseSizeSet, propertyChanged: (bindable, oldValue, newValue) =>
1037         {
1038             var view = (View)bindable;
1039             string valueToString = "";
1040             if (newValue != null)
1041             {
1042                 switch ((SizeScalePolicyType)newValue)
1043                 {
1044                     case SizeScalePolicyType.UseSizeSet: { valueToString = "USE_SIZE_SET"; break; }
1045                     case SizeScalePolicyType.FitWithAspectRatio: { valueToString = "FIT_WITH_ASPECT_RATIO"; break; }
1046                     case SizeScalePolicyType.FillWithAspectRatio: { valueToString = "FILL_WITH_ASPECT_RATIO"; break; }
1047                     default: { valueToString = "USE_SIZE_SET"; break; }
1048                 }
1049                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_SCALE_POLICY, new Tizen.NUI.PropertyValue(valueToString));
1050             }
1051         },
1052         defaultValueCreator: (bindable) =>
1053         {
1054             var view = (View)bindable;
1055             string temp;
1056             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_SCALE_POLICY).Get(out temp) == false)
1057             {
1058                 NUILog.Error("SizeScalePolicy get error!");
1059             }
1060             switch (temp)
1061             {
1062                 case "USE_SIZE_SET": return SizeScalePolicyType.UseSizeSet;
1063                 case "FIT_WITH_ASPECT_RATIO": return SizeScalePolicyType.FitWithAspectRatio;
1064                 case "FILL_WITH_ASPECT_RATIO": return SizeScalePolicyType.FillWithAspectRatio;
1065                 default: return SizeScalePolicyType.UseSizeSet;
1066             }
1067         });
1068         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1069         [EditorBrowsable(EditorBrowsableState.Never)]
1070         public static readonly BindableProperty WidthForHeightProperty = BindableProperty.Create("WidthForHeight", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1071         {
1072             var view = (View)bindable;
1073             if (newValue != null)
1074             {
1075                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.WIDTH_FOR_HEIGHT, new Tizen.NUI.PropertyValue((bool)newValue));
1076             }
1077         },
1078         defaultValueCreator: (bindable) =>
1079         {
1080             var view = (View)bindable;
1081             bool temp = false;
1082             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.WIDTH_FOR_HEIGHT).Get(out temp);
1083             return temp;
1084         });
1085         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1086         [EditorBrowsable(EditorBrowsableState.Never)]
1087         public static readonly BindableProperty HeightForWidthProperty = BindableProperty.Create("HeightForWidth", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1088         {
1089             var view = (View)bindable;
1090             if (newValue != null)
1091             {
1092                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.HEIGHT_FOR_WIDTH, new Tizen.NUI.PropertyValue((bool)newValue));
1093             }
1094         },
1095         defaultValueCreator: (bindable) =>
1096         {
1097             var view = (View)bindable;
1098             bool temp = false;
1099             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.HEIGHT_FOR_WIDTH).Get(out temp);
1100             return temp;
1101         });
1102         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1103         [EditorBrowsable(EditorBrowsableState.Never)]
1104         public static readonly BindableProperty PaddingProperty = BindableProperty.Create("Padding", typeof(Extents), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1105         {
1106             var view = (View)bindable;
1107             if (newValue != null)
1108             {
1109                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.PADDING, new Tizen.NUI.PropertyValue((Extents)newValue));
1110             }
1111         },
1112         defaultValueCreator: (bindable) =>
1113         {
1114             var view = (View)bindable;
1115             Extents temp = new Extents(0, 0, 0, 0);
1116             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.PADDING).Get(temp);
1117             return temp;
1118         });
1119         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1120         [EditorBrowsable(EditorBrowsableState.Never)]
1121         public static readonly BindableProperty SizeProperty = BindableProperty.Create("Size", typeof(Size), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1122         {
1123             var view = (View)bindable;
1124             if (newValue != null)
1125             {
1126                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE, new Tizen.NUI.PropertyValue((Size)newValue));
1127             }
1128         },
1129         defaultValueCreator: (bindable) =>
1130         {
1131             var view = (View)bindable;
1132             Size temp = new Size(0, 0, 0);
1133             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE).Get(temp);
1134             return temp;
1135         });
1136         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1137         [EditorBrowsable(EditorBrowsableState.Never)]
1138         public static readonly BindableProperty MinimumSizeProperty = BindableProperty.Create("MinimumSize", typeof(Size2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1139         {
1140             var view = (View)bindable;
1141             if (newValue != null)
1142             {
1143                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.MINIMUM_SIZE, new Tizen.NUI.PropertyValue((Size2D)newValue));
1144             }
1145         },
1146         defaultValueCreator: (bindable) =>
1147         {
1148             var view = (View)bindable;
1149             Size2D temp = new Size2D(0, 0);
1150             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.MINIMUM_SIZE).Get(temp);
1151             return temp;
1152         });
1153         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1154         [EditorBrowsable(EditorBrowsableState.Never)]
1155         public static readonly BindableProperty MaximumSizeProperty = BindableProperty.Create("MaximumSize", typeof(Size2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1156         {
1157             var view = (View)bindable;
1158             if (newValue != null)
1159             {
1160                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.MAXIMUM_SIZE, new Tizen.NUI.PropertyValue((Size2D)newValue));
1161             }
1162         },
1163         defaultValueCreator: (bindable) =>
1164         {
1165             var view = (View)bindable;
1166             Size2D temp = new Size2D(0, 0);
1167             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.MAXIMUM_SIZE).Get(temp);
1168             return temp;
1169         });
1170         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1171         [EditorBrowsable(EditorBrowsableState.Never)]
1172         public static readonly BindableProperty InheritPositionProperty = BindableProperty.Create("InheritPosition", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1173         {
1174             var view = (View)bindable;
1175             if (newValue != null)
1176             {
1177                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_POSITION, new Tizen.NUI.PropertyValue((bool)newValue));
1178             }
1179         },
1180         defaultValueCreator: (bindable) =>
1181         {
1182             var view = (View)bindable;
1183             bool temp = false;
1184             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_POSITION).Get(out temp);
1185             return temp;
1186         });
1187         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1188         [EditorBrowsable(EditorBrowsableState.Never)]
1189         public static readonly BindableProperty ClippingModeProperty = BindableProperty.Create("ClippingMode", typeof(ClippingModeType), typeof(View), ClippingModeType.Disabled, propertyChanged: (bindable, oldValue, newValue) =>
1190         {
1191             var view = (View)bindable;
1192             if (newValue != null)
1193             {
1194                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.CLIPPING_MODE, new Tizen.NUI.PropertyValue((int)newValue));
1195             }
1196         },
1197         defaultValueCreator: (bindable) =>
1198         {
1199             var view = (View)bindable;
1200             int temp = 0;
1201             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.CLIPPING_MODE).Get(out temp) == false)
1202             {
1203                 NUILog.Error("ClippingMode get error!");
1204             }
1205             return (ClippingModeType)temp;
1206         });
1207         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1208         [EditorBrowsable(EditorBrowsableState.Never)]
1209         public static readonly BindableProperty InheritLayoutDirectionProperty = BindableProperty.Create("InheritLayoutDirection", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1210         {
1211             var view = (View)bindable;
1212             if (newValue != null)
1213             {
1214                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue((bool)newValue));
1215             }
1216         },
1217         defaultValueCreator: (bindable) =>
1218         {
1219             var view = (View)bindable;
1220             bool temp = false;
1221             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_LAYOUT_DIRECTION).Get(out temp);
1222             return temp;
1223         });
1224         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1225         [EditorBrowsable(EditorBrowsableState.Never)]
1226         public static readonly BindableProperty LayoutDirectionProperty = BindableProperty.Create("LayoutDirection", typeof(ViewLayoutDirectionType), typeof(View), ViewLayoutDirectionType.LTR, propertyChanged: (bindable, oldValue, newValue) =>
1227         {
1228             var view = (View)bindable;
1229             if (newValue != null)
1230             {
1231                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue((int)newValue));
1232             }
1233         },
1234         defaultValueCreator: (bindable) =>
1235         {
1236             var view = (View)bindable;
1237             int temp;
1238             if (false == Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.LAYOUT_DIRECTION).Get(out temp))
1239             {
1240                 NUILog.Error("LAYOUT_DIRECTION get error!");
1241             }
1242             return (ViewLayoutDirectionType)temp;
1243         });
1244         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1245         [EditorBrowsable(EditorBrowsableState.Never)]
1246         public static readonly BindableProperty MarginProperty = BindableProperty.Create("Margin", typeof(Extents), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1247         {
1248             var view = (View)bindable;
1249             if (newValue != null)
1250             {
1251                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.MARGIN, new Tizen.NUI.PropertyValue((Extents)newValue));
1252             }
1253         },
1254         defaultValueCreator: (bindable) =>
1255         {
1256             var view = (View)bindable;
1257             Extents temp = new Extents(0, 0, 0, 0);
1258             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.MARGIN).Get(temp);
1259             return temp;
1260         });
1261         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1262         [EditorBrowsable(EditorBrowsableState.Never)]
1263         public static readonly BindableProperty XamlStyleProperty = BindableProperty.Create("XamlStyle", typeof(Style), typeof(View), default(Style), propertyChanged: (bindable, oldvalue, newvalue) => ((View)bindable)._mergedStyle.Style = (Style)newvalue);
1264
1265         /// <summary>
1266         /// Flag to indicate if layout set explicitly via API call or View was automatically given a Layout.
1267         /// </summary>
1268         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
1269         [EditorBrowsable(EditorBrowsableState.Never)]
1270         public bool layoutSet = false;
1271
1272         /// <summary>
1273         /// Flag to allow Layouting to be disabled for Views.
1274         /// Once a View has a Layout set then any children added to Views from then on will receive
1275         /// automatic Layouts.
1276         /// </summary>
1277         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
1278         [EditorBrowsable(EditorBrowsableState.Never)]
1279         public static bool layoutingDisabled{get; set;} = true;
1280
1281         private MergedStyle mergedStyle = null;
1282         internal MergedStyle _mergedStyle
1283         {
1284             get
1285             {
1286                 if (null == mergedStyle)
1287                 {
1288                     mergedStyle = new MergedStyle(GetType(), this);
1289                 }
1290
1291                 return mergedStyle;
1292             }
1293         }
1294
1295         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
1296         private LayoutItem _layout; // Exclusive layout assigned to this View.
1297
1298         // List of transitions paired with the condition that uses the transition.
1299         private Dictionary<TransitionCondition, TransitionList> _layoutTransitions;
1300         private int _widthPolicy = LayoutParamPolicies.WrapContent; // Layout width policy
1301         private int _heightPolicy = LayoutParamPolicies.WrapContent; // Layout height policy
1302         private float _weight = 0.0f; // Weighting of child View in a Layout
1303         private MeasureSpecification _measureSpecificationWidth; // Layout width and internal Mode
1304         private MeasureSpecification _measureSpecificationHeight; // Layout height and internal Mode
1305         private bool _backgroundImageSynchronosLoading = false;
1306         private EventHandler _offWindowEventHandler;
1307         private OffWindowEventCallbackType _offWindowEventCallback;
1308         private EventHandlerWithReturnType<object, WheelEventArgs, bool> _wheelEventHandler;
1309         private WheelEventCallbackType _wheelEventCallback;
1310         private EventHandlerWithReturnType<object, KeyEventArgs, bool> _keyEventHandler;
1311         private KeyCallbackType _keyCallback;
1312         private EventHandlerWithReturnType<object, TouchEventArgs, bool> _touchDataEventHandler;
1313         private TouchDataCallbackType _touchDataCallback;
1314         private EventHandlerWithReturnType<object, HoverEventArgs, bool> _hoverEventHandler;
1315         private HoverEventCallbackType _hoverEventCallback;
1316         private EventHandler<VisibilityChangedEventArgs> _visibilityChangedEventHandler;
1317         private VisibilityChangedEventCallbackType _visibilityChangedEventCallback;
1318         private EventHandler _keyInputFocusGainedEventHandler;
1319         private KeyInputFocusGainedCallbackType _keyInputFocusGainedCallback;
1320         private EventHandler _keyInputFocusLostEventHandler;
1321         private KeyInputFocusLostCallbackType _keyInputFocusLostCallback;
1322         private EventHandler _onRelayoutEventHandler;
1323         private OnRelayoutEventCallbackType _onRelayoutEventCallback;
1324         private EventHandler _onWindowEventHandler;
1325         private OnWindowEventCallbackType _onWindowEventCallback;
1326         private EventHandler<LayoutDirectionChangedEventArgs> _layoutDirectionChangedEventHandler;
1327         private LayoutDirectionChangedEventCallbackType _layoutDirectionChangedEventCallback;
1328         // Resource Ready Signal
1329         private EventHandler _resourcesLoadedEventHandler;
1330         private ResourcesLoadedCallbackType _ResourcesLoadedCallback;
1331         private EventHandler<BackgroundResourceLoadedEventArgs> _backgroundResourceLoadedEventHandler;
1332         private _backgroundResourceLoadedCallbackType _backgroundResourceLoadedCallback;
1333
1334         private OnWindowEventCallbackType _onWindowSendEventCallback;
1335
1336         private void SendViewAddedEventToWindow(IntPtr data)
1337         {
1338             Window.Instance?.SendViewAdded(this);
1339         }
1340
1341         /// <summary>
1342         /// Creates a new instance of a view.
1343         /// </summary>
1344         /// <since_tizen> 3 </since_tizen>
1345         public View() : this(Interop.View.View_New(), true)
1346         {
1347             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1348         }
1349         internal View(View uiControl) : this(Interop.View.new_View__SWIG_1(View.getCPtr(uiControl)), true)
1350         {
1351             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1352         }
1353
1354         internal View(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.View.View_SWIGUpcast(cPtr), cMemoryOwn)
1355         {
1356             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
1357             if (HasBody())
1358             {
1359                 PositionUsesPivotPoint = false;
1360             }
1361
1362             _onWindowSendEventCallback = SendViewAddedEventToWindow;
1363             this.OnWindowSignal().Connect(_onWindowSendEventCallback);
1364         }
1365
1366         internal View(ViewImpl implementation) : this(Interop.View.new_View__SWIG_2(ViewImpl.getCPtr(implementation)), true)
1367         {
1368             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1369         }
1370
1371         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1372         private delegate void OffWindowEventCallbackType(IntPtr control);
1373         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1374         private delegate bool WheelEventCallbackType(IntPtr view, IntPtr wheelEvent);
1375         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1376         private delegate bool KeyCallbackType(IntPtr control, IntPtr keyEvent);
1377         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1378         private delegate bool TouchDataCallbackType(IntPtr view, IntPtr touchData);
1379         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1380         private delegate bool HoverEventCallbackType(IntPtr view, IntPtr hoverEvent);
1381         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1382         private delegate void VisibilityChangedEventCallbackType(IntPtr data, bool visibility, VisibilityChangeType type);
1383         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1384         private delegate void ResourcesLoadedCallbackType(IntPtr control);
1385         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1386         private delegate void _backgroundResourceLoadedCallbackType(IntPtr view);
1387         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1388         private delegate void KeyInputFocusGainedCallbackType(IntPtr control);
1389         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1390         private delegate void KeyInputFocusLostCallbackType(IntPtr control);
1391         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1392         private delegate void OnRelayoutEventCallbackType(IntPtr control);
1393         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1394         private delegate void OnWindowEventCallbackType(IntPtr control);
1395         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
1396         private delegate void LayoutDirectionChangedEventCallbackType(IntPtr data, ViewLayoutDirectionType type);
1397
1398         /// <summary>
1399         /// Event when a child is removed.
1400         /// </summary>
1401         /// <since_tizen> 5 </since_tizen>
1402         public new event EventHandler<ChildRemovedEventArgs> ChildRemoved;
1403         /// <summary>
1404         /// Event when a child is added.
1405         /// </summary>
1406         /// <since_tizen> 5 </since_tizen>
1407         public new event EventHandler<ChildAddedEventArgs> ChildAdded;
1408
1409         /// <summary>
1410         /// An event for the KeyInputFocusGained signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1411         /// The KeyInputFocusGained signal is emitted when the control gets the key input focus.<br />
1412         /// </summary>
1413         /// <since_tizen> 3 </since_tizen>
1414         public event EventHandler FocusGained
1415         {
1416             add
1417             {
1418                 if (_keyInputFocusGainedEventHandler == null)
1419                 {
1420                     _keyInputFocusGainedCallback = OnKeyInputFocusGained;
1421                     this.KeyInputFocusGainedSignal().Connect(_keyInputFocusGainedCallback);
1422                 }
1423
1424                 _keyInputFocusGainedEventHandler += value;
1425             }
1426
1427             remove
1428             {
1429                 _keyInputFocusGainedEventHandler -= value;
1430
1431                 if (_keyInputFocusGainedEventHandler == null && KeyInputFocusGainedSignal().Empty() == false)
1432                 {
1433                     this.KeyInputFocusGainedSignal().Disconnect(_keyInputFocusGainedCallback);
1434                 }
1435             }
1436         }
1437
1438         /// <summary>
1439         /// An event for the KeyInputFocusLost signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1440         /// The KeyInputFocusLost signal is emitted when the control loses the key input focus.<br />
1441         /// </summary>
1442         /// <since_tizen> 3 </since_tizen>
1443         public event EventHandler FocusLost
1444         {
1445             add
1446             {
1447                 if (_keyInputFocusLostEventHandler == null)
1448                 {
1449                     _keyInputFocusLostCallback = OnKeyInputFocusLost;
1450                     this.KeyInputFocusLostSignal().Connect(_keyInputFocusLostCallback);
1451                 }
1452
1453                 _keyInputFocusLostEventHandler += value;
1454             }
1455
1456             remove
1457             {
1458                 _keyInputFocusLostEventHandler -= value;
1459
1460                 if (_keyInputFocusLostEventHandler == null && KeyInputFocusLostSignal().Empty() == false)
1461                 {
1462                     this.KeyInputFocusLostSignal().Disconnect(_keyInputFocusLostCallback);
1463                 }
1464             }
1465         }
1466
1467         /// <summary>
1468         /// An event for the KeyPressed signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1469         /// The KeyPressed signal is emitted when the key event is received.<br />
1470         /// </summary>
1471         /// <since_tizen> 3 </since_tizen>
1472         public event EventHandlerWithReturnType<object, KeyEventArgs, bool> KeyEvent
1473         {
1474             add
1475             {
1476                 if (_keyEventHandler == null)
1477                 {
1478                     _keyCallback = OnKeyEvent;
1479                     this.KeyEventSignal().Connect(_keyCallback);
1480                 }
1481
1482                 _keyEventHandler += value;
1483             }
1484
1485             remove
1486             {
1487                 _keyEventHandler -= value;
1488
1489                 if (_keyEventHandler == null && KeyEventSignal().Empty() == false)
1490                 {
1491                     this.KeyEventSignal().Disconnect(_keyCallback);
1492                 }
1493             }
1494         }
1495
1496         /// <summary>
1497         /// An event for the OnRelayout signal which can be used to subscribe or unsubscribe the event handler.<br />
1498         /// The OnRelayout signal is emitted after the size has been set on the view during relayout.<br />
1499         /// </summary>
1500         /// <since_tizen> 3 </since_tizen>
1501         public event EventHandler Relayout
1502         {
1503             add
1504             {
1505                 if (_onRelayoutEventHandler == null)
1506                 {
1507                     _onRelayoutEventCallback = OnRelayout;
1508                     this.OnRelayoutSignal().Connect(_onRelayoutEventCallback);
1509                 }
1510
1511                 _onRelayoutEventHandler += value;
1512             }
1513
1514             remove
1515             {
1516                 _onRelayoutEventHandler -= value;
1517
1518                 if (_onRelayoutEventHandler == null && OnRelayoutSignal().Empty() == false)
1519                 {
1520                     this.OnRelayoutSignal().Disconnect(_onRelayoutEventCallback);
1521                 }
1522
1523             }
1524         }
1525
1526         /// <summary>
1527         /// An event for the touched signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1528         /// The touched signal is emitted when the touch input is received.<br />
1529         /// </summary>
1530         /// <since_tizen> 3 </since_tizen>
1531         public event EventHandlerWithReturnType<object, TouchEventArgs, bool> TouchEvent
1532         {
1533             add
1534             {
1535                 if (_touchDataEventHandler == null)
1536                 {
1537                     _touchDataCallback = OnTouch;
1538                     this.TouchSignal().Connect(_touchDataCallback);
1539                 }
1540
1541                 _touchDataEventHandler += value;
1542             }
1543
1544             remove
1545             {
1546                 _touchDataEventHandler -= value;
1547
1548                 if (_touchDataEventHandler == null && TouchSignal().Empty() == false)
1549                 {
1550                     this.TouchSignal().Disconnect(_touchDataCallback);
1551                 }
1552
1553             }
1554         }
1555
1556         /// <summary>
1557         /// An event for the hovered signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1558         /// The hovered signal is emitted when the hover input is received.<br />
1559         /// </summary>
1560         /// <since_tizen> 3 </since_tizen>
1561         public event EventHandlerWithReturnType<object, HoverEventArgs, bool> HoverEvent
1562         {
1563             add
1564             {
1565                 if (_hoverEventHandler == null)
1566                 {
1567                     _hoverEventCallback = OnHoverEvent;
1568                     this.HoveredSignal().Connect(_hoverEventCallback);
1569                 }
1570
1571                 _hoverEventHandler += value;
1572             }
1573
1574             remove
1575             {
1576                 _hoverEventHandler -= value;
1577
1578                 if (_hoverEventHandler == null && HoveredSignal().Empty() == false)
1579                 {
1580                     this.HoveredSignal().Disconnect(_hoverEventCallback);
1581                 }
1582
1583             }
1584         }
1585
1586         /// <summary>
1587         /// An event for the WheelMoved signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1588         /// The WheelMoved signal is emitted when the wheel event is received.<br />
1589         /// </summary>
1590         /// <since_tizen> 3 </since_tizen>
1591         public event EventHandlerWithReturnType<object, WheelEventArgs, bool> WheelEvent
1592         {
1593             add
1594             {
1595                 if (_wheelEventHandler == null)
1596                 {
1597                     _wheelEventCallback = OnWheelEvent;
1598                     this.WheelEventSignal().Connect(_wheelEventCallback);
1599                 }
1600
1601                 _wheelEventHandler += value;
1602             }
1603
1604             remove
1605             {
1606                 _wheelEventHandler -= value;
1607
1608                 if (_wheelEventHandler == null && WheelEventSignal().Empty() == false)
1609                 {
1610                     this.WheelEventSignal().Disconnect(_wheelEventCallback);
1611                 }
1612
1613             }
1614         }
1615
1616         /// <summary>
1617         /// An event for the OnWindow signal which can be used to subscribe or unsubscribe the event handler.<br />
1618         /// The OnWindow signal is emitted after the view has been connected to the window.<br />
1619         /// </summary>
1620         /// <since_tizen> 3 </since_tizen>
1621         public event EventHandler AddedToWindow
1622         {
1623             add
1624             {
1625                 if (_onWindowEventHandler == null)
1626                 {
1627                     _onWindowEventCallback = OnWindow;
1628                     this.OnWindowSignal().Connect(_onWindowEventCallback);
1629                 }
1630
1631                 _onWindowEventHandler += value;
1632             }
1633
1634             remove
1635             {
1636                 _onWindowEventHandler -= value;
1637
1638                 if (_onWindowEventHandler == null && OnWindowSignal().Empty() == false)
1639                 {
1640                     this.OnWindowSignal().Disconnect(_onWindowEventCallback);
1641                 }
1642             }
1643         }
1644
1645         /// <summary>
1646         /// An event for the OffWindow signal, which can be used to subscribe or unsubscribe the event handler.<br />
1647         /// OffWindow signal is emitted after the view has been disconnected from the window.<br />
1648         /// </summary>
1649         /// <since_tizen> 3 </since_tizen>
1650         public event EventHandler RemovedFromWindow
1651         {
1652             add
1653             {
1654                 if (_offWindowEventHandler == null)
1655                 {
1656                     _offWindowEventCallback = OffWindow;
1657                     this.OffWindowSignal().Connect(_offWindowEventCallback);
1658                 }
1659
1660                 _offWindowEventHandler += value;
1661             }
1662
1663             remove
1664             {
1665                 _offWindowEventHandler -= value;
1666
1667                 if (_offWindowEventHandler == null && OffWindowSignal().Empty() == false)
1668                 {
1669                     this.OffWindowSignal().Disconnect(_offWindowEventCallback);
1670                 }
1671             }
1672         }
1673
1674         /// <summary>
1675         /// An event for visibility change which can be used to subscribe or unsubscribe the event handler.<br />
1676         /// This signal is emitted when the visible property of this or a parent view is changed.<br />
1677         /// </summary>
1678         /// <since_tizen> 3 </since_tizen>
1679         public event EventHandler<VisibilityChangedEventArgs> VisibilityChanged
1680         {
1681             add
1682             {
1683                 if (_visibilityChangedEventHandler == null)
1684                 {
1685                     _visibilityChangedEventCallback = OnVisibilityChanged;
1686                     VisibilityChangedSignal(this).Connect(_visibilityChangedEventCallback);
1687                 }
1688
1689                 _visibilityChangedEventHandler += value;
1690             }
1691
1692             remove
1693             {
1694                 _visibilityChangedEventHandler -= value;
1695
1696                 if (_visibilityChangedEventHandler == null && VisibilityChangedSignal(this).Empty() == false)
1697                 {
1698                     VisibilityChangedSignal(this).Disconnect(_visibilityChangedEventCallback);
1699                 }
1700             }
1701         }
1702
1703         /// <summary>
1704         /// Event for layout direction change which can be used to subscribe/unsubscribe the event handler.<br />
1705         /// This signal is emitted when the layout direction property of this or a parent view is changed.<br />
1706         /// </summary>
1707         /// <since_tizen> 4 </since_tizen>
1708         public event EventHandler<LayoutDirectionChangedEventArgs> LayoutDirectionChanged
1709         {
1710             add
1711             {
1712                 if (_layoutDirectionChangedEventHandler == null)
1713                 {
1714                     _layoutDirectionChangedEventCallback = OnLayoutDirectionChanged;
1715                     LayoutDirectionChangedSignal(this).Connect(_layoutDirectionChangedEventCallback);
1716                 }
1717
1718                 _layoutDirectionChangedEventHandler += value;
1719             }
1720
1721             remove
1722             {
1723                 _layoutDirectionChangedEventHandler -= value;
1724
1725                 if (_layoutDirectionChangedEventHandler == null && LayoutDirectionChangedSignal(this).Empty() == false)
1726                 {
1727                     LayoutDirectionChangedSignal(this).Disconnect(_layoutDirectionChangedEventCallback);
1728                 }
1729             }
1730         }
1731
1732         /// <summary>
1733         /// An event for the ResourcesLoadedSignal signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
1734         /// This signal is emitted after all resources required by a view are loaded and ready.<br />
1735         /// </summary>
1736         /// <since_tizen> 3 </since_tizen>
1737         public event EventHandler ResourcesLoaded
1738         {
1739             add
1740             {
1741                 if (_resourcesLoadedEventHandler == null)
1742                 {
1743                     _ResourcesLoadedCallback = OnResourcesLoaded;
1744                     this.ResourcesLoadedSignal().Connect(_ResourcesLoadedCallback);
1745                 }
1746
1747                 _resourcesLoadedEventHandler += value;
1748             }
1749
1750             remove
1751             {
1752                 _resourcesLoadedEventHandler -= value;
1753
1754                 if (_resourcesLoadedEventHandler == null && ResourcesLoadedSignal().Empty() == false)
1755                 {
1756                     this.ResourcesLoadedSignal().Disconnect(_ResourcesLoadedCallback);
1757                 }
1758             }
1759         }
1760
1761         internal event EventHandler<BackgroundResourceLoadedEventArgs> BackgroundResourceLoaded
1762         {
1763             add
1764             {
1765                 if (_backgroundResourceLoadedEventHandler == null)
1766                 {
1767                     _backgroundResourceLoadedCallback = OnBackgroundResourceLoaded;
1768                     this.ResourcesLoadedSignal().Connect(_backgroundResourceLoadedCallback);
1769                 }
1770
1771                 _backgroundResourceLoadedEventHandler += value;
1772             }
1773             remove
1774             {
1775                 _backgroundResourceLoadedEventHandler -= value;
1776
1777                 if (_backgroundResourceLoadedEventHandler == null && ResourcesLoadedSignal().Empty() == false)
1778                 {
1779                     this.ResourcesLoadedSignal().Disconnect(_backgroundResourceLoadedCallback);
1780                 }
1781             }
1782         }
1783
1784         /// <summary>
1785         /// Enumeration for describing the states of the view.
1786         /// </summary>
1787         /// <since_tizen> 3 </since_tizen>
1788         public enum States
1789         {
1790             /// <summary>
1791             /// The normal state.
1792             /// </summary>
1793             Normal,
1794             /// <summary>
1795             /// The focused state.
1796             /// </summary>
1797             Focused,
1798             /// <summary>
1799             /// The disabled state.
1800             /// </summary>
1801             Disabled
1802         }
1803
1804         /// <summary>
1805         /// Describes the direction to move the focus towards.
1806         /// </summary>
1807         /// <since_tizen> 3 </since_tizen>
1808         public enum FocusDirection
1809         {
1810             /// <summary>
1811             /// Move keyboard focus towards the left direction.
1812             /// </summary>
1813             /// <since_tizen> 3 </since_tizen>
1814             Left,
1815             /// <summary>
1816             /// Move keyboard focus towards the right direction.
1817             /// </summary>
1818             /// <since_tizen> 3 </since_tizen>
1819             Right,
1820             /// <summary>
1821             /// Move keyboard focus towards the up direction.
1822             /// </summary>
1823             /// <since_tizen> 3 </since_tizen>
1824             Up,
1825             /// <summary>
1826             /// Move keyboard focus towards the down direction.
1827             /// </summary>
1828             /// <since_tizen> 3 </since_tizen>
1829             Down,
1830             /// <summary>
1831             /// Move keyboard focus towards the previous page direction.
1832             /// </summary>
1833             /// <since_tizen> 3 </since_tizen>
1834             PageUp,
1835             /// <summary>
1836             /// Move keyboard focus towards the next page direction.
1837             /// </summary>
1838             /// <since_tizen> 3 </since_tizen>
1839             PageDown
1840         }
1841
1842         internal enum PropertyRange
1843         {
1844             PROPERTY_START_INDEX = PropertyRanges.PROPERTY_REGISTRATION_START_INDEX,
1845             CONTROL_PROPERTY_START_INDEX = PROPERTY_START_INDEX,
1846             CONTROL_PROPERTY_END_INDEX = CONTROL_PROPERTY_START_INDEX + 1000
1847         }
1848
1849         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1850         [EditorBrowsable(EditorBrowsableState.Never)]
1851         public bool IsResourcesCreated
1852         {
1853             get
1854             {
1855                 return Application.Current.IsResourcesCreated;
1856             }
1857         }
1858
1859         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
1860         [EditorBrowsable(EditorBrowsableState.Never)]
1861         public ResourceDictionary XamlResources
1862         {
1863             get
1864             {
1865                 return Application.Current.XamlResources;
1866             }
1867             set
1868             {
1869                 Application.Current.XamlResources = value;
1870             }
1871         }
1872
1873         /// <summary>
1874         /// The StyleName, type string.
1875         /// </summary>
1876         /// <since_tizen> 3 </since_tizen>
1877         public string StyleName
1878         {
1879             get
1880             {
1881                 return (string)GetValue(StyleNameProperty);
1882             }
1883             set
1884             {
1885                 SetValue(StyleNameProperty, value);
1886                 NotifyPropertyChanged();
1887             }
1888         }
1889
1890         /// <summary>
1891         /// The mutually exclusive with BACKGROUND_IMAGE and BACKGROUND type Vector4.
1892         /// </summary>
1893         /// <since_tizen> 3 </since_tizen>
1894         public Color BackgroundColor
1895         {
1896             get
1897             {
1898                 return (Color)GetValue(BackgroundColorProperty);
1899             }
1900             set
1901             {
1902                 SetValue(BackgroundColorProperty, value);
1903                 NotifyPropertyChanged();
1904             }
1905         }
1906
1907         /// <summary>
1908         /// The mutually exclusive with BACKGROUND_COLOR and BACKGROUND type Map.
1909         /// </summary>
1910         /// <since_tizen> 3 </since_tizen>
1911         public string BackgroundImage
1912         {
1913             get
1914             {
1915                 return (string)GetValue(BackgroundImageProperty);
1916             }
1917             set
1918             {
1919                 SetValue(BackgroundImageProperty, value);
1920                 NotifyPropertyChanged();
1921             }
1922         }
1923
1924         /// <summary>
1925         /// The background of view.
1926         /// </summary>
1927         /// <since_tizen> 3 </since_tizen>
1928         public Tizen.NUI.PropertyMap Background
1929         {
1930             get
1931             {
1932                 return (PropertyMap)GetValue(BackgroundProperty);
1933             }
1934             set
1935             {
1936                 SetValue(BackgroundProperty, value);
1937                 NotifyPropertyChanged();
1938             }
1939         }
1940
1941
1942         /// <summary>
1943         /// The current state of the view.
1944         /// </summary>
1945         /// <since_tizen> 3 </since_tizen>
1946         public States State
1947         {
1948             get
1949             {
1950                 return (States)GetValue(StateProperty);
1951             }
1952             set
1953             {
1954                 SetValue(StateProperty, value);
1955                 NotifyPropertyChanged();
1956             }
1957         }
1958
1959         /// <summary>
1960         /// The current sub state of the view.
1961         /// </summary>
1962         /// <since_tizen> 3 </since_tizen>
1963         public States SubState
1964         {
1965             get
1966             {
1967                 return (States)GetValue(SubStateProperty);
1968             }
1969             set
1970             {
1971                 SetValue(SubStateProperty, value);
1972                 NotifyPropertyChanged();
1973             }
1974         }
1975
1976         /// <summary>
1977         /// Displays a tooltip
1978         /// </summary>
1979         /// <since_tizen> 3 </since_tizen>
1980         public Tizen.NUI.PropertyMap Tooltip
1981         {
1982             get
1983             {
1984                 return (PropertyMap)GetValue(TooltipProperty);
1985             }
1986             set
1987             {
1988                 SetValue(TooltipProperty, value);
1989                 NotifyPropertyChanged();
1990             }
1991         }
1992
1993         /// <summary>
1994         /// Displays a tooltip as a text.
1995         /// </summary>
1996         /// <since_tizen> 3 </since_tizen>
1997         public string TooltipText
1998         {
1999             set
2000             {
2001                 SetProperty(View.Property.TOOLTIP, new Tizen.NUI.PropertyValue(value));
2002                 NotifyPropertyChanged();
2003             }
2004         }
2005
2006         /// <summary>
2007         /// The Child property of FlexContainer.<br />
2008         /// The proportion of the free space in the container, the flex item will receive.<br />
2009         /// If all items in the container set this property, their sizes will be proportional to the specified flex factor.<br />
2010         /// </summary>
2011         /// <since_tizen> 3 </since_tizen>
2012         public float Flex
2013         {
2014             get
2015             {
2016                 return (float)GetValue(FlexProperty);
2017             }
2018             set
2019             {
2020                 SetValue(FlexProperty, value);
2021                 NotifyPropertyChanged();
2022             }
2023         }
2024
2025         /// <summary>
2026         /// The Child property of FlexContainer.<br />
2027         /// The alignment of the flex item along the cross axis, which, if set, overides the default alignment for all items in the container.<br />
2028         /// </summary>
2029         /// <since_tizen> 3 </since_tizen>
2030         public int AlignSelf
2031         {
2032             get
2033             {
2034                 return (int)GetValue(AlignSelfProperty);
2035             }
2036             set
2037             {
2038                 SetValue(AlignSelfProperty, value);
2039                 NotifyPropertyChanged();
2040             }
2041         }
2042
2043         /// <summary>
2044         /// The Child property of FlexContainer.<br />
2045         /// The space around the flex item.<br />
2046         /// </summary>
2047         /// <since_tizen> 3 </since_tizen>
2048         public Vector4 FlexMargin
2049         {
2050             get
2051             {
2052                 return (Vector4)GetValue(FlexMarginProperty);
2053             }
2054             set
2055             {
2056                 SetValue(FlexMarginProperty, value);
2057                 NotifyPropertyChanged();
2058             }
2059         }
2060
2061         /// <summary>
2062         /// The top-left cell this child occupies, if not set, the first available cell is used.
2063         /// </summary>
2064         /// <since_tizen> 3 </since_tizen>
2065         public Vector2 CellIndex
2066         {
2067             get
2068             {
2069                 return (Vector2)GetValue(CellIndexProperty);
2070             }
2071             set
2072             {
2073                 SetValue(CellIndexProperty, value);
2074                 NotifyPropertyChanged();
2075             }
2076         }
2077
2078         /// <summary>
2079         /// The number of rows this child occupies, if not set, the default value is 1.
2080         /// </summary>
2081         /// <since_tizen> 3 </since_tizen>
2082         public float RowSpan
2083         {
2084             get
2085             {
2086                 return (float)GetValue(RowSpanProperty);
2087             }
2088             set
2089             {
2090                 SetValue(RowSpanProperty, value);
2091                 NotifyPropertyChanged();
2092             }
2093         }
2094
2095         /// <summary>
2096         /// The number of columns this child occupies, if not set, the default value is 1.
2097         /// </summary>
2098         /// <since_tizen> 3 </since_tizen>
2099         public float ColumnSpan
2100         {
2101             get
2102             {
2103                 return (float)GetValue(ColumnSpanProperty);
2104             }
2105             set
2106             {
2107                 SetValue(ColumnSpanProperty, value);
2108                 NotifyPropertyChanged();
2109             }
2110         }
2111
2112         /// <summary>
2113         /// The horizontal alignment of this child inside the cells, if not set, the default value is 'left'.
2114         /// </summary>
2115         /// <since_tizen> 3 </since_tizen>
2116         public Tizen.NUI.HorizontalAlignmentType CellHorizontalAlignment
2117         {
2118             get
2119             {
2120                 return (HorizontalAlignmentType)GetValue(CellHorizontalAlignmentProperty);
2121             }
2122             set
2123             {
2124                 SetValue(CellHorizontalAlignmentProperty, value);
2125                 NotifyPropertyChanged();
2126             }
2127         }
2128
2129         /// <summary>
2130         /// The vertical alignment of this child inside the cells, if not set, the default value is 'top'.
2131         /// </summary>
2132         /// <since_tizen> 3 </since_tizen>
2133         public Tizen.NUI.VerticalAlignmentType CellVerticalAlignment
2134         {
2135             get
2136             {
2137                 return (VerticalAlignmentType)GetValue(CellVerticalAlignmentProperty);
2138             }
2139             set
2140             {
2141                 SetValue(CellVerticalAlignmentProperty, value);
2142                 NotifyPropertyChanged();
2143             }
2144         }
2145
2146         /// <summary>
2147         /// The left focusable view.<br />
2148         /// This will return null if not set.<br />
2149         /// This will also return null if the specified left focusable view is not on a window.<br />
2150         /// </summary>
2151         /// <since_tizen> 3 </since_tizen>
2152         public View LeftFocusableView
2153         {
2154             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
2155             get
2156             {
2157                 return (View)GetValue(LeftFocusableViewProperty);
2158             }
2159             set
2160             {
2161                 SetValue(LeftFocusableViewProperty, value);
2162                 NotifyPropertyChanged();
2163             }
2164         }
2165
2166         /// <summary>
2167         /// The right focusable view.<br />
2168         /// This will return null if not set.<br />
2169         /// This will also return null if the specified right focusable view is not on a window.<br />
2170         /// </summary>
2171         /// <since_tizen> 3 </since_tizen>
2172         public View RightFocusableView
2173         {
2174             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
2175             get
2176             {
2177                 return (View)GetValue(RightFocusableViewProperty);
2178             }
2179             set
2180             {
2181                 SetValue(RightFocusableViewProperty, value);
2182                 NotifyPropertyChanged();
2183             }
2184         }
2185
2186         /// <summary>
2187         /// The up focusable view.<br />
2188         /// This will return null if not set.<br />
2189         /// This will also return null if the specified up focusable view is not on a window.<br />
2190         /// </summary>
2191         /// <since_tizen> 3 </since_tizen>
2192         public View UpFocusableView
2193         {
2194             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
2195             get
2196             {
2197                 return (View)GetValue(UpFocusableViewProperty);
2198             }
2199             set
2200             {
2201                 SetValue(UpFocusableViewProperty, value);
2202                 NotifyPropertyChanged();
2203             }
2204         }
2205
2206         /// <summary>
2207         /// The down focusable view.<br />
2208         /// This will return null if not set.<br />
2209         /// This will also return null if the specified down focusable view is not on a window.<br />
2210         /// </summary>
2211         /// <since_tizen> 3 </since_tizen>
2212         public View DownFocusableView
2213         {
2214             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
2215             get
2216             {
2217                 return (View)GetValue(DownFocusableViewProperty);
2218             }
2219             set
2220             {
2221                 SetValue(DownFocusableViewProperty, value);
2222                 NotifyPropertyChanged();
2223             }
2224         }
2225
2226         /// <summary>
2227         /// Whether the view should be focusable by keyboard navigation.
2228         /// </summary>
2229         /// <since_tizen> 3 </since_tizen>
2230         public bool Focusable
2231         {
2232             set
2233             {
2234                 SetValue(FocusableProperty, value);
2235                 NotifyPropertyChanged();
2236             }
2237             get
2238             {
2239                 return (bool)GetValue(FocusableProperty);
2240             }
2241         }
2242
2243         /// <summary>
2244         ///  Retrieves the position of the view.<br />
2245         ///  The coordinates are relative to the view's parent.<br />
2246         /// </summary>
2247         /// <since_tizen> 3 </since_tizen>
2248         public Position CurrentPosition
2249         {
2250             get
2251             {
2252                 return GetCurrentPosition();
2253             }
2254         }
2255
2256         /// <summary>
2257         /// Sets the size of a view for the width and the height.<br />
2258         /// Geometry can be scaled to fit within this area.<br />
2259         /// This does not interfere with the view's scale factor.<br />
2260         /// The views default depth is the minimum of width and height.<br />
2261         /// </summary>
2262         /// <remarks>
2263         /// This NUI object (Size2D) typed property can be configured by multiple cascade setting. <br />
2264         /// For example, this code ( view.Size2D.Width = 100; view.Size2D.Height = 100; ) is equivalent to this ( view.Size2D = new Size2D(100, 100); ). <br />
2265         /// Please note that this multi-cascade setting is especially possible for this NUI object (Size2D). <br />
2266         /// This means by default others are impossible so it is recommended that NUI object typed properties are configured by their constructor with parameters. <br />
2267         /// For example, this code is working fine : view.Scale = new Vector3( 2.0f, 1.5f, 0.0f); <br />
2268         /// but this will not work! : view.Scale.X = 2.0f; view.Scale.Y = 1.5f; <br />
2269         /// It may not match the current value in some cases, i.e. when the animation is progressing or the maximum or minimum size is set. <br />
2270         /// </remarks>
2271         /// <since_tizen> 3 </since_tizen>
2272         public Size2D Size2D
2273         {
2274             get
2275             {
2276                 Size2D temp = (Size2D)GetValue(Size2DProperty);
2277                 return new Size2D(OnSize2DChanged, temp.Width, temp.Height);
2278             }
2279             set
2280             {
2281                 SetValue(Size2DProperty, value);
2282                 // Set Specification so when layouts measure this View it matches the value set here.
2283                 // All Views are currently Layouts.
2284                 MeasureSpecificationWidth = new MeasureSpecification(new LayoutLength(value.Width), MeasureSpecification.ModeType.Exactly);
2285                 MeasureSpecificationHeight = new MeasureSpecification(new LayoutLength(value.Height), MeasureSpecification.ModeType.Exactly);
2286                 _widthPolicy = value.Width;
2287                 _heightPolicy = value.Height;
2288                 _layout?.RequestLayout();
2289                 NotifyPropertyChanged();
2290             }
2291         }
2292
2293         /// <summary>
2294         ///  Retrieves the size of the view.<br />
2295         ///  The coordinates are relative to the view's parent.<br />
2296         /// </summary>
2297         /// <since_tizen> 3 </since_tizen>
2298         public Size2D CurrentSize
2299         {
2300             get
2301             {
2302                 return GetCurrentSize();
2303             }
2304         }
2305
2306         /// <summary>
2307         /// Retrieves and sets the view's opacity.<br />
2308         /// </summary>
2309         /// <since_tizen> 3 </since_tizen>
2310         public float Opacity
2311         {
2312             get
2313             {
2314                 return (float)GetValue(OpacityProperty);
2315             }
2316             set
2317             {
2318                 SetValue(OpacityProperty, value);
2319                 NotifyPropertyChanged();
2320             }
2321         }
2322
2323         /// <summary>
2324         /// Sets the position of the view for X and Y.<br />
2325         /// By default, sets the position vector between the parent origin and the pivot point (default).<br />
2326         /// If the position inheritance is disabled, sets the world position.<br />
2327         /// </summary>
2328         /// <remarks>
2329         /// This NUI object (Position2D) typed property can be configured by multiple cascade setting. <br />
2330         /// For example, this code ( view.Position2D.X = 100; view.Position2D.Y = 100; ) is equivalent to this ( view.Position2D = new Position2D(100, 100); ). <br />
2331         /// Please note that this multi-cascade setting is especially possible for this NUI object (Position2D). <br />
2332         /// This means by default others are impossible so it is recommended that NUI object typed properties are configured by their constructor with parameters. <br />
2333         /// For example, this code is working fine : view.Scale = new Vector3( 2.0f, 1.5f, 0.0f); <br />
2334         /// but this will not work! : view.Scale.X = 2.0f; view.Scale.Y = 1.5f; <br />
2335         /// </remarks>
2336         /// <since_tizen> 3 </since_tizen>
2337         public Position2D Position2D
2338         {
2339             get
2340             {
2341                 Position2D temp = (Position2D)GetValue(Position2DProperty);
2342                 return new Position2D(OnPosition2DChanged, temp.X, temp.Y);
2343             }
2344             set
2345             {
2346                 SetValue(Position2DProperty, value);
2347                 NotifyPropertyChanged();
2348             }
2349         }
2350
2351         /// <summary>
2352         /// Retrieves the screen postion of the view.<br />
2353         /// </summary>
2354         /// <since_tizen> 3 </since_tizen>
2355         public Vector2 ScreenPosition
2356         {
2357             get
2358             {
2359                 Vector2 temp = new Vector2(0.0f, 0.0f);
2360                 GetProperty(View.Property.SCREEN_POSITION).Get(temp);
2361                 return temp;
2362             }
2363         }
2364
2365         /// <summary>
2366         /// Determines whether the pivot point should be used to determine the position of the view.
2367         /// This is true by default.
2368         /// </summary>
2369         /// <remarks>If false, then the top-left of the view is used for the position.
2370         /// Setting this to false will allow scaling or rotation around the pivot point without affecting the view's position.
2371         /// </remarks>
2372         /// <since_tizen> 3 </since_tizen>
2373         public bool PositionUsesPivotPoint
2374         {
2375             get
2376             {
2377                 return (bool)GetValue(PositionUsesPivotPointProperty);
2378             }
2379             set
2380             {
2381                 SetValue(PositionUsesPivotPointProperty, value);
2382                 NotifyPropertyChanged();
2383             }
2384         }
2385
2386         /// <summary>
2387         /// Please do not use! this will be deprecated.
2388         /// </summary>
2389         /// Please do not use! this will be deprecated!
2390         /// Instead please use PositionUsesPivotPoint.
2391         /// <since_tizen> 3 </since_tizen>
2392         [Obsolete("Please do not use! This will be deprecated! Please use PositionUsesPivotPoint instead! " +
2393             "Like: " +
2394             "View view = new View(); " +
2395             "view.PivotPoint = PivotPoint.Center; " +
2396             "view.PositionUsesPivotPoint = true;")]
2397         [EditorBrowsable(EditorBrowsableState.Never)]
2398         public bool PositionUsesAnchorPoint
2399         {
2400             get
2401             {
2402                 bool temp = false;
2403                 GetProperty(View.Property.POSITION_USES_ANCHOR_POINT).Get(out temp);
2404                 return temp;
2405             }
2406             set
2407             {
2408                 SetProperty(View.Property.POSITION_USES_ANCHOR_POINT, new Tizen.NUI.PropertyValue(value));
2409                 NotifyPropertyChanged();
2410             }
2411         }
2412
2413         /// <summary>
2414         /// Queries whether the view is connected to the stage.<br />
2415         /// When a view is connected, it will be directly or indirectly parented to the root view.<br />
2416         /// </summary>
2417         /// <since_tizen> 3 </since_tizen>
2418         public bool IsOnWindow
2419         {
2420             get
2421             {
2422                 return OnWindow();
2423             }
2424         }
2425
2426         /// <summary>
2427         /// Gets the depth in the hierarchy for the view.
2428         /// </summary>
2429         /// <since_tizen> 3 </since_tizen>
2430         public int HierarchyDepth
2431         {
2432             get
2433             {
2434                 return GetHierarchyDepth();
2435             }
2436         }
2437
2438         /// <summary>
2439         /// Sets the sibling order of the view so the depth position can be defined within the same parent.
2440         /// </summary>
2441         /// <remarks>
2442         /// Note the initial value is 0. SiblingOrder should be bigger than 0 or equal to 0.
2443         /// Raise, Lower, RaiseToTop, LowerToBottom, RaiseAbove, and LowerBelow will override the sibling order.
2444         /// The values set by this property will likely change.
2445         /// </remarks>
2446         /// <since_tizen> 3 </since_tizen>
2447         public int SiblingOrder
2448         {
2449             get
2450             {
2451                 return (int)GetValue(SiblingOrderProperty);
2452             }
2453             set
2454             {
2455                 SetValue(SiblingOrderProperty, value);
2456                 NotifyPropertyChanged();
2457             }
2458         }
2459
2460         /// <summary>
2461         /// Returns the natural size of the view.
2462         /// </summary>
2463         /// <remarks>
2464         /// Deriving classes stipulate the natural size and by default a view has a zero natural size.
2465         /// </remarks>
2466         /// <since_tizen> 5 </since_tizen>
2467         public Vector3 NaturalSize
2468         {
2469             get
2470             {
2471                 Vector3 ret = new Vector3(Interop.Actor.Actor_GetNaturalSize(swigCPtr), true);
2472                 if (NDalicPINVOKE.SWIGPendingException.Pending)
2473                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
2474                 return ret;
2475             }
2476         }
2477
2478         /// <summary>
2479         /// Returns the natural size (Size2D) of the view.
2480         /// </summary>
2481         /// <remarks>
2482         /// Deriving classes stipulate the natural size and by default a view has a zero natural size.
2483         /// </remarks>
2484         /// <since_tizen> 4 </since_tizen>
2485         public Size2D NaturalSize2D
2486         {
2487             get
2488             {
2489                 Vector3 temp = new Vector3(Interop.Actor.Actor_GetNaturalSize(swigCPtr), true);
2490                 if (NDalicPINVOKE.SWIGPendingException.Pending)
2491                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
2492
2493                 return new Size2D((int)temp.Width, (int)temp.Height);
2494             }
2495         }
2496
2497         /// <summary>
2498         /// Gets or sets the origin of a view within its parent's area.<br />
2499         /// This is expressed in unit coordinates, such that (0.0, 0.0, 0.5) is the top-left corner of the parent, and (1.0, 1.0, 0.5) is the bottom-right corner.<br />
2500         /// The default parent-origin is ParentOrigin.TopLeft (0.0, 0.0, 0.5).<br />
2501         /// A view's position is the distance between this origin and the view's anchor-point.<br />
2502         /// </summary>
2503         /// <pre>The view has been initialized.</pre>
2504         /// <since_tizen> 3 </since_tizen>
2505         public Position ParentOrigin
2506         {
2507             get
2508             {
2509                 return (Position)GetValue(ParentOriginProperty);
2510             }
2511             set
2512             {
2513                 SetValue(ParentOriginProperty, value);
2514                 NotifyPropertyChanged();
2515             }
2516         }
2517
2518         /// <summary>
2519         /// Gets or sets the anchor-point of a view.<br />
2520         /// This is expressed in unit coordinates, such that (0.0, 0.0, 0.5) is the top-left corner of the view, and (1.0, 1.0, 0.5) is the bottom-right corner.<br />
2521         /// The default pivot point is PivotPoint.Center (0.5, 0.5, 0.5).<br />
2522         /// A view position is the distance between its parent-origin and this anchor-point.<br />
2523         /// A view's orientation is the rotation from its default orientation, the rotation is centered around its anchor-point.<br />
2524         /// <pre>The view has been initialized.</pre>
2525         /// </summary>
2526         /// <since_tizen> 3 </since_tizen>
2527         public Position PivotPoint
2528         {
2529             get
2530             {
2531                 return (Position)GetValue(PivotPointProperty);
2532             }
2533             set
2534             {
2535                 SetValue(PivotPointProperty, value);
2536                 NotifyPropertyChanged();
2537             }
2538         }
2539
2540         /// <summary>
2541         /// Gets or sets the size width of the view.
2542         /// </summary>
2543         /// <since_tizen> 3 </since_tizen>
2544         public float SizeWidth
2545         {
2546             get
2547             {
2548                 return (float)GetValue(SizeWidthProperty);
2549             }
2550             set
2551             {
2552                 SetValue(SizeWidthProperty, value);
2553                 WidthSpecification = (int)Math.Ceiling(value);
2554                 NotifyPropertyChanged();
2555             }
2556         }
2557
2558         /// <summary>
2559         /// Gets or sets the size height of the view.
2560         /// </summary>
2561         /// <since_tizen> 3 </since_tizen>
2562         public float SizeHeight
2563         {
2564             get
2565             {
2566                 return (float)GetValue(SizeHeightProperty);
2567             }
2568             set
2569             {
2570                 SetValue(SizeHeightProperty, value);
2571                 HeightSpecification = (int)Math.Ceiling(value);
2572                 NotifyPropertyChanged();
2573             }
2574         }
2575
2576         /// <summary>
2577         /// Gets or sets the position of the view.<br />
2578         /// By default, sets the position vector between the parent origin and pivot point (default).<br />
2579         /// If the position inheritance is disabled, sets the world position.<br />
2580         /// </summary>
2581         /// <since_tizen> 3 </since_tizen>
2582         public Position Position
2583         {
2584             get
2585             {
2586                 return (Position)GetValue(PositionProperty);
2587             }
2588             set
2589             {
2590                 SetValue(PositionProperty, value);
2591                 NotifyPropertyChanged();
2592             }
2593         }
2594
2595         /// <summary>
2596         /// Gets or sets the position X of the view.
2597         /// </summary>
2598         /// <since_tizen> 3 </since_tizen>
2599         public float PositionX
2600         {
2601             get
2602             {
2603                 return (float)GetValue(PositionXProperty);
2604             }
2605             set
2606             {
2607                 SetValue(PositionXProperty, value);
2608                 NotifyPropertyChanged();
2609             }
2610         }
2611
2612         /// <summary>
2613         /// Gets or sets the position Y of the view.
2614         /// </summary>
2615         /// <since_tizen> 3 </since_tizen>
2616         public float PositionY
2617         {
2618             get
2619             {
2620                 return (float)GetValue(PositionYProperty);
2621             }
2622             set
2623             {
2624                 SetValue(PositionYProperty, value);
2625                 NotifyPropertyChanged();
2626             }
2627         }
2628
2629         /// <summary>
2630         /// Gets or sets the position Z of the view.
2631         /// </summary>
2632         /// <since_tizen> 3 </since_tizen>
2633         public float PositionZ
2634         {
2635             get
2636             {
2637                 return (float)GetValue(PositionZProperty);
2638             }
2639             set
2640             {
2641                 SetValue(PositionZProperty, value);
2642                 NotifyPropertyChanged();
2643             }
2644         }
2645
2646         /// <summary>
2647         /// Gets or sets the world position of the view.
2648         /// </summary>
2649         /// <since_tizen> 3 </since_tizen>
2650         public Vector3 WorldPosition
2651         {
2652             get
2653             {
2654                 Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
2655                 GetProperty(View.Property.WORLD_POSITION).Get(temp);
2656                 return temp;
2657             }
2658         }
2659
2660         /// <summary>
2661         /// Gets or sets the orientation of the view.<br />
2662         /// The view's orientation is the rotation from its default orientation, and the rotation is centered around its anchor-point.<br />
2663         /// </summary>
2664         /// <remarks>This is an asynchronous method.</remarks>
2665         /// <since_tizen> 3 </since_tizen>
2666         public Rotation Orientation
2667         {
2668             get
2669             {
2670                 return (Rotation)GetValue(OrientationProperty);
2671             }
2672             set
2673             {
2674                 SetValue(OrientationProperty, value);
2675                 NotifyPropertyChanged();
2676             }
2677         }
2678
2679         /// <summary>
2680         /// Gets or sets the world orientation of the view.<br />
2681         /// </summary>
2682         /// <since_tizen> 3 </since_tizen>
2683         public Rotation WorldOrientation
2684         {
2685             get
2686             {
2687                 Rotation temp = new Rotation();
2688                 GetProperty(View.Property.WORLD_ORIENTATION).Get(temp);
2689                 return temp;
2690             }
2691         }
2692
2693         /// <summary>
2694         /// Gets or sets the scale factor applied to the view.<br />
2695         /// </summary>
2696         /// <since_tizen> 3 </since_tizen>
2697         public Vector3 Scale
2698         {
2699             get
2700             {
2701                 return (Vector3)GetValue(ScaleProperty);
2702             }
2703             set
2704             {
2705                 SetValue(ScaleProperty, value);
2706                 NotifyPropertyChanged();
2707             }
2708         }
2709
2710         /// <summary>
2711         /// Gets or sets the scale X factor applied to the view.
2712         /// </summary>
2713         /// <since_tizen> 3 </since_tizen>
2714         public float ScaleX
2715         {
2716             get
2717             {
2718                 return (float)GetValue(ScaleXProperty);
2719             }
2720             set
2721             {
2722                 SetValue(ScaleXProperty, value);
2723                 NotifyPropertyChanged();
2724             }
2725         }
2726
2727         /// <summary>
2728         /// Gets or sets the scale Y factor applied to the view.
2729         /// </summary>
2730         /// <since_tizen> 3 </since_tizen>
2731         public float ScaleY
2732         {
2733             get
2734             {
2735                 return (float)GetValue(ScaleYProperty);
2736             }
2737             set
2738             {
2739                 SetValue(ScaleYProperty, value);
2740                 NotifyPropertyChanged();
2741             }
2742         }
2743
2744         /// <summary>
2745         /// Gets or sets the scale Z factor applied to the view.
2746         /// </summary>
2747         /// <since_tizen> 3 </since_tizen>
2748         public float ScaleZ
2749         {
2750             get
2751             {
2752                 return (float)GetValue(ScaleZProperty);
2753             }
2754             set
2755             {
2756                 SetValue(ScaleZProperty, value);
2757                 NotifyPropertyChanged();
2758             }
2759         }
2760
2761         /// <summary>
2762         /// Gets the world scale of the view.
2763         /// </summary>
2764         /// <since_tizen> 3 </since_tizen>
2765         public Vector3 WorldScale
2766         {
2767             get
2768             {
2769                 Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
2770                 GetProperty(View.Property.WORLD_SCALE).Get(temp);
2771                 return temp;
2772             }
2773         }
2774
2775         /// <summary>
2776         /// Retrieves the visibility flag of the view.
2777         /// </summary>
2778         /// <remarks>
2779         /// If the view is not visible, then the view and its children will not be rendered.
2780         /// This is regardless of the individual visibility values of the children, i.e., the view will only be rendered if all of its parents have visibility set to true.
2781         /// </remarks>
2782         /// <since_tizen> 3 </since_tizen>
2783         public bool Visibility
2784         {
2785             get
2786             {
2787                 bool temp = false;
2788                 GetProperty(View.Property.VISIBLE).Get(out temp);
2789                 return temp;
2790             }
2791         }
2792
2793         /// <summary>
2794         /// Gets the view's world color.
2795         /// </summary>
2796         /// <since_tizen> 3 </since_tizen>
2797         public Vector4 WorldColor
2798         {
2799             get
2800             {
2801                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
2802                 GetProperty(View.Property.WORLD_COLOR).Get(temp);
2803                 return temp;
2804             }
2805         }
2806
2807         /// <summary>
2808         /// Gets or sets the view's name.
2809         /// </summary>
2810         /// <since_tizen> 3 </since_tizen>
2811         public string Name
2812         {
2813             get
2814             {
2815                 return (string)GetValue(NameProperty);
2816             }
2817             set
2818             {
2819                 SetValue(NameProperty, value);
2820                 NotifyPropertyChanged();
2821             }
2822         }
2823
2824         /// <summary>
2825         /// Get the number of children held by the view.
2826         /// </summary>
2827         /// <since_tizen> 3 </since_tizen>
2828         public new uint ChildCount
2829         {
2830             get
2831             {
2832                 return GetChildCount();
2833             }
2834         }
2835
2836         /// <summary>
2837         /// Gets the view's ID.
2838         /// Readonly
2839         /// </summary>
2840         /// <since_tizen> 3 </since_tizen>
2841         public uint ID
2842         {
2843             get
2844             {
2845                 return GetId();
2846             }
2847         }
2848
2849         /// <summary>
2850         /// Gets or sets the status of whether the view should emit touch or hover signals.
2851         /// </summary>
2852         /// <since_tizen> 3 </since_tizen>
2853         public bool Sensitive
2854         {
2855             get
2856             {
2857                 return (bool)GetValue(SensitiveProperty);
2858             }
2859             set
2860             {
2861                 SetValue(SensitiveProperty, value);
2862                 NotifyPropertyChanged();
2863             }
2864         }
2865
2866         /// <summary>
2867         /// Gets or sets the status of whether the view should receive a notification when touch or hover motion events leave the boundary of the view.
2868         /// </summary>
2869         /// <since_tizen> 3 </since_tizen>
2870         public bool LeaveRequired
2871         {
2872             get
2873             {
2874                 return (bool)GetValue(LeaveRequiredProperty);
2875             }
2876             set
2877             {
2878                 SetValue(LeaveRequiredProperty, value);
2879                 NotifyPropertyChanged();
2880             }
2881         }
2882
2883         /// <summary>
2884         /// Gets or sets the status of whether a child view inherits it's parent's orientation.
2885         /// </summary>
2886         /// <since_tizen> 3 </since_tizen>
2887         public bool InheritOrientation
2888         {
2889             get
2890             {
2891                 return (bool)GetValue(InheritOrientationProperty);
2892             }
2893             set
2894             {
2895                 SetValue(InheritOrientationProperty, value);
2896                 NotifyPropertyChanged();
2897             }
2898         }
2899
2900         /// <summary>
2901         /// Gets or sets the status of whether a child view inherits it's parent's scale.
2902         /// </summary>
2903         /// <since_tizen> 3 </since_tizen>
2904         public bool InheritScale
2905         {
2906             get
2907             {
2908                 return (bool)GetValue(InheritScaleProperty);
2909             }
2910             set
2911             {
2912                 SetValue(InheritScaleProperty, value);
2913                 NotifyPropertyChanged();
2914             }
2915         }
2916
2917         /// <summary>
2918         /// Gets or sets the status of how the view and its children should be drawn.<br />
2919         /// Not all views are renderable, but DrawMode can be inherited from any view.<br />
2920         /// If an object is in a 3D layer, it will be depth-tested against other objects in the world, i.e., it may be obscured if other objects are in front.<br />
2921         /// If DrawMode.Overlay2D is used, the view and its children will be drawn as a 2D overlay.<br />
2922         /// Overlay views are drawn in a separate pass, after all non-overlay views within the layer.<br />
2923         /// For overlay views, the drawing order is with respect to tree levels of views, and depth-testing will not be used.<br />
2924         /// </summary>
2925         /// <since_tizen> 3 </since_tizen>
2926         public DrawModeType DrawMode
2927         {
2928             get
2929             {
2930                 return (DrawModeType)GetValue(DrawModeProperty);
2931             }
2932             set
2933             {
2934                 SetValue(DrawModeProperty, value);
2935                 NotifyPropertyChanged();
2936             }
2937         }
2938
2939         /// <summary>
2940         /// Gets or sets the relative to parent size factor of the view.<br />
2941         /// This factor is only used when ResizePolicyType is set to either: ResizePolicyType.SizeRelativeToParent or ResizePolicyType.SizeFixedOffsetFromParent.<br />
2942         /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicyType.<br />
2943         /// </summary>
2944         /// <since_tizen> 3 </since_tizen>
2945         public Vector3 SizeModeFactor
2946         {
2947             get
2948             {
2949                 return (Vector3)GetValue(SizeModeFactorProperty);
2950             }
2951             set
2952             {
2953                 SetValue(SizeModeFactorProperty, value);
2954                 NotifyPropertyChanged();
2955             }
2956         }
2957
2958         /// <summary>
2959         /// Gets or sets the width resize policy to be used.
2960         /// </summary>
2961         /// <since_tizen> 3 </since_tizen>
2962         public ResizePolicyType WidthResizePolicy
2963         {
2964             get
2965             {
2966                 return (ResizePolicyType)GetValue(WidthResizePolicyProperty);
2967             }
2968             set
2969             {
2970                 SetValue(WidthResizePolicyProperty, value);
2971                 // Match ResizePolicy to new Layouting.
2972                 // Parent relative policies can not be mapped at this point as parent size unknown.
2973                 switch (value)
2974                 {
2975                     case ResizePolicyType.UseNaturalSize:
2976                     {
2977                         WidthSpecification = LayoutParamPolicies.WrapContent;
2978                         break;
2979                     }
2980                     case ResizePolicyType.FillToParent:
2981                     {
2982                         WidthSpecification = LayoutParamPolicies.MatchParent;
2983                         break;
2984                     }
2985                     case ResizePolicyType.FitToChildren:
2986                     {
2987                         WidthSpecification = LayoutParamPolicies.WrapContent;
2988                         break;
2989                     }
2990                     default:
2991                         break;
2992                 }
2993                 NotifyPropertyChanged();
2994             }
2995         }
2996
2997         /// <summary>
2998         /// Gets or sets the height resize policy to be used.
2999         /// </summary>
3000         /// <since_tizen> 3 </since_tizen>
3001         public ResizePolicyType HeightResizePolicy
3002         {
3003             get
3004             {
3005                 return (ResizePolicyType)GetValue(HeightResizePolicyProperty);
3006             }
3007             set
3008             {
3009                 SetValue(HeightResizePolicyProperty, value);
3010                 // Match ResizePolicy to new Layouting.
3011                 // Parent relative policies can not be mapped at this point as parent size unknown.
3012                 switch (value)
3013                 {
3014                     case ResizePolicyType.UseNaturalSize:
3015                     {
3016                         HeightSpecification = LayoutParamPolicies.WrapContent;
3017                         break;
3018                     }
3019                     case ResizePolicyType.FillToParent:
3020                     {
3021                         HeightSpecification = LayoutParamPolicies.MatchParent;
3022                         break;
3023                     }
3024                     case ResizePolicyType.FitToChildren:
3025                     {
3026                         HeightSpecification = LayoutParamPolicies.WrapContent;
3027                         break;
3028                     }
3029                     default:
3030                         break;
3031                 }
3032                 NotifyPropertyChanged();
3033             }
3034         }
3035
3036         /// <summary>
3037         /// Gets or sets the policy to use when setting size with size negotiation.<br />
3038         /// Defaults to SizeScalePolicyType.UseSizeSet.<br />
3039         /// </summary>
3040         /// <since_tizen> 3 </since_tizen>
3041         public SizeScalePolicyType SizeScalePolicy
3042         {
3043             get
3044             {
3045                 return (SizeScalePolicyType)GetValue(SizeScalePolicyProperty);
3046             }
3047             set
3048             {
3049                 SetValue(SizeScalePolicyProperty, value);
3050                 NotifyPropertyChanged();
3051             }
3052         }
3053
3054         /// <summary>
3055         ///  Gets or sets the status of whether the width size is dependent on the height size.
3056         /// </summary>
3057         /// <since_tizen> 3 </since_tizen>
3058         public bool WidthForHeight
3059         {
3060             get
3061             {
3062                 return (bool)GetValue(WidthForHeightProperty);
3063             }
3064             set
3065             {
3066                 SetValue(WidthForHeightProperty, value);
3067                 NotifyPropertyChanged();
3068             }
3069         }
3070
3071         /// <summary>
3072         /// Gets or sets the status of whether the height size is dependent on the width size.
3073         /// </summary>
3074         /// <since_tizen> 3 </since_tizen>
3075         public bool HeightForWidth
3076         {
3077             get
3078             {
3079                 return (bool)GetValue(HeightForWidthProperty);
3080             }
3081             set
3082             {
3083                 SetValue(HeightForWidthProperty, value);
3084                 NotifyPropertyChanged();
3085             }
3086         }
3087
3088         /// <summary>
3089         /// Gets or sets the padding for use in layout.
3090         /// </summary>
3091         /// <since_tizen> 5 </since_tizen>
3092         public Extents Padding
3093         {
3094             get
3095             {
3096                 // If View has a Layout then padding in stored in the base Layout class
3097                 if (Layout !=null)
3098                 {
3099                     return Layout.Padding;
3100                 }
3101                 else
3102                 {
3103                     return (Extents)GetValue(PaddingProperty);
3104                 }
3105                 // Two return points to prevent creating a zeroed Extent native object before assignment
3106             }
3107             set
3108             {
3109                 Extents padding = value;
3110                 if (Layout !=null)
3111                 {
3112                     // Layout set so store Padding in LayoutItem instead of in View.
3113                     // If View stores the Padding value then Legacy Size Negotiation will overwrite
3114                     // the position and sizes measure in the Layouting.
3115                     Layout.Padding = value;
3116                     // If Layout is a LayoutItem then it could be a View that handles it's own padding.
3117                     // Let the View keeps it's padding.  Still store Padding in Layout to reduce code paths.
3118                     if( Layout.GetType() != typeof(LayoutItem)) // If a Layout container of some kind.
3119                     {
3120                         padding =  new Extents(0,0,0,0); // Reset value stored in View.
3121                     }
3122                     _layout?.RequestLayout();
3123                 }
3124                 SetValue(PaddingProperty, padding);
3125                 NotifyPropertyChanged();
3126                 _layout?.RequestLayout();
3127             }
3128         }
3129
3130         /// <summary>
3131         /// Gets or sets the minimum size the view can be assigned in size negotiation.
3132         /// </summary>
3133         /// <since_tizen> 3 </since_tizen>
3134         public Size2D MinimumSize
3135         {
3136             get
3137             {
3138                 return (Size2D)GetValue(MinimumSizeProperty);
3139             }
3140             set
3141             {
3142                 if (_layout != null)
3143                 {
3144                     // Note: it only works if minimum size is >= than natural size.
3145                     // To force the size it should be done through the width&height spec or Size2D.
3146                     _layout.MinimumWidth = new Tizen.NUI.LayoutLength(value.Width);
3147                     _layout.MinimumHeight = new Tizen.NUI.LayoutLength(value.Height);
3148                     _layout.RequestLayout();
3149                 }
3150                 SetValue(MinimumSizeProperty, value);
3151                 NotifyPropertyChanged();
3152             }
3153         }
3154
3155         /// <summary>
3156         /// Gets or sets the maximum size the view can be assigned in size negotiation.
3157         /// </summary>
3158         /// <since_tizen> 3 </since_tizen>
3159         public Size2D MaximumSize
3160         {
3161             get
3162             {
3163                 return (Size2D)GetValue(MaximumSizeProperty);
3164             }
3165             set
3166             {
3167                 // We don't have Layout.Maximum(Width|Height) so we cannot apply it to layout.
3168                 // MATCH_PARENT spec + parent container size can be used to limit
3169                 if (_layout != null)
3170                 {
3171                     // Note: it only works if minimum size is >= than natural size.
3172                     // To force the size it should be done through the width&height spec or Size2D.
3173                     _layout.MinimumHeight = new Tizen.NUI.LayoutLength(value.Width);
3174                     _layout.MinimumWidth = new Tizen.NUI.LayoutLength(value.Height);
3175                     _layout.RequestLayout();
3176                 }
3177                 SetValue(MaximumSizeProperty, value);
3178                 NotifyPropertyChanged();
3179             }
3180         }
3181
3182         /// <summary>
3183         /// Gets or sets whether a child view inherits it's parent's position.<br />
3184         /// Default is to inherit.<br />
3185         /// Switching this off means that using position sets the view's world position, i.e., translates from the world origin (0,0,0) to the pivot point of the view.<br />
3186         /// </summary>
3187         /// <since_tizen> 3 </since_tizen>
3188         public bool InheritPosition
3189         {
3190             get
3191             {
3192                 return (bool)GetValue(InheritPositionProperty);
3193             }
3194             set
3195             {
3196                 SetValue(InheritPositionProperty, value);
3197                 NotifyPropertyChanged();
3198             }
3199         }
3200
3201         /// <summary>
3202         /// Gets or sets the clipping behavior (mode) of it's children.
3203         /// </summary>
3204         /// <since_tizen> 3 </since_tizen>
3205         public ClippingModeType ClippingMode
3206         {
3207             get
3208             {
3209                 return (ClippingModeType)GetValue(ClippingModeProperty);
3210             }
3211             set
3212             {
3213                 SetValue(ClippingModeProperty, value);
3214                 NotifyPropertyChanged();
3215             }
3216         }
3217
3218         /// <summary>
3219         /// Gets the number of renderers held by the view.
3220         /// </summary>
3221         /// <since_tizen> 3 </since_tizen>
3222         public uint RendererCount
3223         {
3224             get
3225             {
3226                 return GetRendererCount();
3227             }
3228         }
3229
3230         /// <summary>
3231         /// [Obsolete("Please do not use! this will be deprecated")]
3232         /// </summary>
3233         /// <since_tizen> 3 </since_tizen>
3234         /// Please do not use! this will be deprecated!
3235         /// Instead please use PivotPoint.
3236         [Obsolete("Please do not use! This will be deprecated! Please use PivotPoint instead! " +
3237             "Like: " +
3238             "View view = new View(); " +
3239             "view.PivotPoint = PivotPoint.Center; " +
3240             "view.PositionUsesPivotPoint = true;")]
3241         [EditorBrowsable(EditorBrowsableState.Never)]
3242         public Position AnchorPoint
3243         {
3244             get
3245             {
3246                 Position temp = new Position(0.0f, 0.0f, 0.0f);
3247                 GetProperty(View.Property.ANCHOR_POINT).Get(temp);
3248                 return temp;
3249             }
3250             set
3251             {
3252                 SetProperty(View.Property.ANCHOR_POINT, new Tizen.NUI.PropertyValue(value));
3253                 NotifyPropertyChanged();
3254             }
3255         }
3256
3257         /// <summary>
3258         /// Sets the size of a view for the width, the height and the depth.<br />
3259         /// Geometry can be scaled to fit within this area.<br />
3260         /// This does not interfere with the view's scale factor.<br />
3261         /// The views default depth is the minimum of width and height.<br />
3262         /// </summary>
3263         /// <remarks>
3264         /// Please note that multi-cascade setting is not possible for this NUI object. <br />
3265         /// It is recommended that NUI object typed properties are configured by their constructor with parameters. <br />
3266         /// For example, this code is working fine : view.Size = new Size( 1.0f, 1.0f, 0.0f); <br />
3267         /// but this will not work! : view.Size.Width = 2.0f; view.Size.Height = 2.0f; <br />
3268         /// It may not match the current value in some cases, i.e. when the animation is progressing or the maximum or minimu size is set. <br />
3269         /// </remarks>
3270         /// <since_tizen> 5 </since_tizen>
3271         public Size Size
3272         {
3273             get
3274             {
3275                 return (Size)GetValue(SizeProperty);
3276             }
3277             set
3278             {
3279                 SetValue(SizeProperty, value);
3280                 // Set Specification so when layouts measure this View it matches the value set here.
3281                 // All Views are currently Layouts.
3282                 WidthSpecification = (int)Math.Ceiling(value.Width);
3283                 HeightSpecification = (int)Math.Ceiling(value.Height);
3284                 NotifyPropertyChanged();
3285             }
3286         }
3287
3288         /// <summary>
3289         /// "Please DO NOT use! This will be deprecated! Please use 'Container GetParent() for derived class' instead!"
3290         /// </summary>
3291         /// <since_tizen> 3 </since_tizen>
3292         [Obsolete("Please do not use! This will be deprecated! Please use 'Container GetParent() for derived class' instead! " +
3293             "Like: " +
3294             "Container parent =  view.GetParent(); " +
3295             "View view = parent as View;")]
3296         [EditorBrowsable(EditorBrowsableState.Never)]
3297         public new View Parent
3298         {
3299             get
3300             {
3301                 View ret;
3302                 IntPtr cPtr = Interop.Actor.Actor_GetParent(swigCPtr);
3303                 HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
3304                 BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle);
3305
3306                 if (basehandle is Layer layer)
3307                 {
3308                     ret = new View(Layer.getCPtr(layer).Handle, false);
3309                     NUILog.Error("This Parent property is deprecated, shoud do not be used");
3310                 }
3311                 else
3312                 {
3313                     ret = basehandle as View;
3314                 }
3315
3316                 Interop.BaseHandle.delete_BaseHandle(CPtr);
3317                 CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
3318
3319                 if (NDalicPINVOKE.SWIGPendingException.Pending)
3320                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
3321                 return ret;
3322             }
3323         }
3324
3325         /// <summary>
3326         /// Gets/Sets whether inherit parent's the layout Direction.
3327         /// </summary>
3328         /// <since_tizen> 4 </since_tizen>
3329         public bool InheritLayoutDirection
3330         {
3331             get
3332             {
3333                 return (bool)GetValue(InheritLayoutDirectionProperty);
3334             }
3335             set
3336             {
3337                 SetValue(InheritLayoutDirectionProperty, value);
3338                 NotifyPropertyChanged();
3339             }
3340         }
3341
3342         /// <summary>
3343         /// Gets/Sets the layout Direction.
3344         /// </summary>
3345         /// <since_tizen> 4 </since_tizen>
3346         public ViewLayoutDirectionType LayoutDirection
3347         {
3348             get
3349             {
3350                 return (ViewLayoutDirectionType)GetValue(LayoutDirectionProperty);
3351             }
3352             set
3353             {
3354                 SetValue(LayoutDirectionProperty, value);
3355                 NotifyPropertyChanged();
3356                 _layout?.RequestLayout();
3357             }
3358         }
3359
3360         /// <summary>
3361         /// Gets or sets the Margin for use in layout.
3362         /// </summary>
3363         /// <remarks>
3364         /// Margin property is supported by Layout algorithms and containers.
3365         /// Please Set Layout if you want to use Margin property.
3366         /// </remarks>
3367         /// <since_tizen> 4 </since_tizen>
3368         public Extents Margin
3369         {
3370             get
3371             {
3372                 // If View has a Layout then margin is stored in Layout.
3373                 if (Layout != null)
3374                 {
3375                     return Layout.Margin;
3376                 }
3377                 else
3378                 {
3379                     // If Layout not set then return margin stored in View.
3380                     return (Extents)GetValue(MarginProperty);
3381                 }
3382                 // Two return points to prevent creating a zeroed Extent native object before assignment
3383             }
3384             set
3385             {
3386                 if (Layout != null)
3387                 {
3388                     // Layout set so store Margin in LayoutItem instead of View.
3389                     // If View stores the Margin too then the Legacy Size Negotiation will
3390                     // overwrite the position and size values measured in the Layouting.
3391                     Layout.Margin = value;
3392                     SetValue(MarginProperty, new Extents(0,0,0,0));
3393                     _layout?.RequestLayout();
3394                 }
3395                 else
3396                 {
3397                     SetValue(MarginProperty, value);
3398                 }
3399                 NotifyPropertyChanged();
3400                 _layout?.RequestLayout();
3401             }
3402         }
3403
3404         ///<summary>
3405         /// The required policy for this dimension, LayoutParamPolicies enum or exact value.
3406         ///</summary>
3407         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
3408         /// <remarks>
3409         /// Previously named LayoutWidthSpecification
3410         /// </remarks>
3411         [EditorBrowsable(EditorBrowsableState.Never)]
3412         public int WidthSpecification
3413         {
3414             get
3415             {
3416                 return _widthPolicy;
3417             }
3418             set
3419             {
3420                 _widthPolicy = value;
3421                 if (_widthPolicy >= 0)
3422                 {
3423                     _measureSpecificationWidth = new MeasureSpecification( new LayoutLength(value), MeasureSpecification.ModeType.Exactly );
3424                     //Tizen.NUI.Object.SetProperty(swigCPtr, View.Property.SIZE_WIDTH, new Tizen.NUI.PropertyValue(value));
3425                     Size2D.Width = _widthPolicy;
3426                 }
3427                 _layout?.RequestLayout();
3428             }
3429         }
3430
3431         ///<summary>
3432         /// The required policy for this dimension, LayoutParamPolicies enum or exact value.
3433         ///</summary>
3434         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
3435         /// <remarks>
3436         /// Previously named LayoutHeightSpecification
3437         /// </remarks>
3438         [EditorBrowsable(EditorBrowsableState.Never)]
3439         public int HeightSpecification
3440         {
3441             get
3442             {
3443                 return _heightPolicy;
3444             }
3445             set
3446             {
3447                 _heightPolicy = value;
3448                 if (_heightPolicy >= 0)
3449                 {
3450                     _measureSpecificationHeight = new MeasureSpecification( new LayoutLength(value), MeasureSpecification.ModeType.Exactly );
3451                     //Tizen.NUI.Object.SetProperty(swigCPtr, View.Property.SIZE_HEIGHT, new Tizen.NUI.PropertyValue(value));
3452                     Size2D.Height = _heightPolicy;
3453                 }
3454                _layout?.RequestLayout();
3455             }
3456         }
3457
3458         ///<summary>
3459         /// Gets the List of transitions for this View.
3460         ///</summary>
3461         /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
3462         [EditorBrowsable(EditorBrowsableState.Never)]
3463         public Dictionary<TransitionCondition, TransitionList> LayoutTransitions
3464         {
3465             get
3466             {
3467                 if (_layoutTransitions == null)
3468                 {
3469                     _layoutTransitions = new Dictionary<TransitionCondition, TransitionList>();
3470                 }
3471                 return _layoutTransitions;
3472             }
3473         }
3474
3475         internal LayoutTransition LayoutTransition
3476         {
3477             set
3478             {
3479                 if (_layoutTransitions == null)
3480                 {
3481                     _layoutTransitions = new Dictionary<TransitionCondition, TransitionList>();
3482                 }
3483                 LayoutTransitionsHelper.AddTransitionForCondition(_layoutTransitions,value.Condition,value, true);
3484
3485                 AttachTransitionsToChildren(value);
3486             }
3487         }
3488
3489         /// <summary>
3490         /// [Obsolete("Please do not use! this will be deprecated")]
3491         /// </summary>
3492         /// Please do not use! this will be deprecated!
3493         /// Instead please use Padding.
3494         /// <since_tizen> 4 </since_tizen>
3495         [Obsolete("Please do not use! this will be deprecated, instead please use Padding.")]
3496         [EditorBrowsable(EditorBrowsableState.Never)]
3497         public Extents PaddingEX
3498         {
3499             get
3500             {
3501                 Extents temp = new Extents(0, 0, 0, 0);
3502                 GetProperty(View.Property.PADDING).Get(temp);
3503                 return temp;
3504             }
3505             set
3506             {
3507                 SetProperty(View.Property.PADDING, new Tizen.NUI.PropertyValue(value));
3508                 NotifyPropertyChanged();
3509                 _layout?.RequestLayout();
3510             }
3511         }
3512
3513         /// <since_tizen> 6 </since_tizen>
3514         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
3515         [EditorBrowsable(EditorBrowsableState.Never)]
3516         public Style XamlStyle
3517         {
3518             get
3519             {
3520                 return (Style)GetValue(XamlStyleProperty);
3521             }
3522             set
3523             {
3524                 SetValue(XamlStyleProperty, value);
3525             }
3526         }
3527
3528         /// <summary>
3529         /// The Color of View. This is an RGBA value.
3530         /// </summary>
3531         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
3532         [EditorBrowsable(EditorBrowsableState.Never)]
3533         public Color Color
3534         {
3535             set
3536             {
3537                 SetColor(value);
3538             }
3539             get
3540             {
3541                 return GetCurrentColor();
3542             }
3543         }
3544
3545         /// <summary>
3546         /// The color mode of View.
3547         /// This specifies whether the View uses its own color, or inherits its parent color.
3548         /// The default is ColorMode.UseOwnMultiplyParentColor.
3549         /// </summary>
3550         internal ColorMode ColorMode
3551         {
3552             set
3553             {
3554                 SetColorMode(value);
3555             }
3556             get
3557             {
3558                 return GetColorMode();
3559             }
3560         }
3561
3562         internal float Weight
3563         {
3564             get
3565             {
3566                 return _weight;
3567             }
3568             set
3569             {
3570                 _weight = value;
3571                 _layout?.RequestLayout();
3572             }
3573         }
3574
3575         /// <summary>
3576         ///  Whether to load the BackgroundImage synchronously.
3577         ///  If not specified, the default is false, i.e. the BackgroundImage is loaded asynchronously.
3578         ///  Note: For Normal Quad images only.
3579         /// </summary>
3580         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
3581         [EditorBrowsable(EditorBrowsableState.Never)]
3582         public bool BackgroundImageSynchronosLoading
3583         {
3584             get
3585             {
3586                 return _backgroundImageSynchronosLoading;
3587             }
3588             set
3589             {
3590                 if (value != _backgroundImageSynchronosLoading)
3591                 {
3592                     string bgUrl = "";
3593                     PropertyMap bgMap = this.Background;
3594                     int visualType = 0;
3595                     bgMap.Find(Visual.Property.Type)?.Get(out visualType);
3596                     if (visualType == (int)Visual.Type.Image)
3597                     {
3598                         bgMap.Find(ImageVisualProperty.URL)?.Get(out bgUrl);
3599                     }
3600                     if (bgUrl.Length != 0)
3601                     {
3602                         _backgroundImageSynchronosLoading = value;
3603                         bgMap.Add("synchronousLoading", new PropertyValue(_backgroundImageSynchronosLoading));
3604                         this.Background = bgMap;
3605                     }
3606                 }
3607             }
3608         }
3609
3610         internal float WorldPositionX
3611         {
3612             get
3613             {
3614                 float temp = 0.0f;
3615                 GetProperty(View.Property.WORLD_POSITION_X).Get(out temp);
3616                 return temp;
3617             }
3618         }
3619
3620         internal float WorldPositionY
3621         {
3622             get
3623             {
3624                 float temp = 0.0f;
3625                 GetProperty(View.Property.WORLD_POSITION_Y).Get(out temp);
3626                 return temp;
3627             }
3628         }
3629
3630         internal float WorldPositionZ
3631         {
3632             get
3633             {
3634                 float temp = 0.0f;
3635                 GetProperty(View.Property.WORLD_POSITION_Z).Get(out temp);
3636                 return temp;
3637             }
3638         }
3639
3640         internal bool FocusState
3641         {
3642             get
3643             {
3644                 return IsKeyboardFocusable();
3645             }
3646             set
3647             {
3648                 SetKeyboardFocusable(value);
3649             }
3650         }
3651
3652         /// <summary>
3653         /// Set the layout on this View. Replaces any existing Layout.
3654         /// </summary>
3655         internal LayoutItem Layout
3656         {
3657             get
3658             {
3659                 return _layout;
3660             }
3661             set
3662             {
3663                 // Do nothing if layout provided is already set on this View.
3664                 if (value == _layout)
3665                 {
3666                     return;
3667                 }
3668
3669                 Log.Info("NUI", "Setting Layout on:" + Name + "\n");
3670                 layoutingDisabled = false;
3671                 layoutSet = true;
3672
3673                 // If new layout being set already has a owner then that owner receives a replacement default layout.
3674                 // First check if the layout to be set already has a owner.
3675                 if (value?.Owner != null)
3676                 {
3677                     Log.Info("NUI", "Set layout already in use by another View: " + value.Owner.Name + "will get a LayoutGroup\n");
3678                     // Previous owner of the layout gets a default layout as a replacement.
3679                     value.Owner.Layout = new LayoutGroup();
3680
3681                     // Copy Margin and Padding to replacement LayoutGroup.
3682                     value.Owner.Layout.Margin = value.Margin;
3683                     value.Owner.Layout.Padding = value.Padding;
3684                 }
3685
3686                 // Copy Margin and Padding to new layout being set or restore padding and margin back to
3687                 // View if no replacement. Previously margin and padding values would have been moved from
3688                 // the View to the layout.
3689                 if (_layout != null ) // Existing layout
3690                 {
3691                     if (value != null)
3692                     {
3693                         // Existing layout being replaced so copy over margin and padding values.
3694                         value.Margin = _layout.Margin;
3695                         value.Padding = _layout.Padding;
3696                     }
3697                     else
3698                     {
3699                       // Layout not being replaced so restore margin and padding to View.
3700                       SetValue(MarginProperty, _layout.Margin);
3701                       SetValue(PaddingProperty, _layout.Padding);
3702                       NotifyPropertyChanged();
3703                     }
3704                 }
3705                 else
3706                 {
3707                     // First Layout to be added to the View hence copy
3708
3709                     // Do not try to set Margins or Padding on a null Layout (when a layout is being removed from a View)
3710                     if (value !=null)
3711                     {
3712                         if (Margin.Top != 0 || Margin.Bottom !=0 || Margin.Start !=0 || Margin.End != 0)
3713                         {
3714                             // If View already has a margin set then store it in Layout instead.
3715                             value.Margin = Margin;
3716                             SetValue(MarginProperty, new Extents(0,0,0,0));
3717                             NotifyPropertyChanged();
3718                         }
3719
3720                         if (Padding.Top != 0 || Padding.Bottom !=0 || Padding.Start !=0 || Padding.End != 0)
3721                         {
3722                             // If View already has a padding set then store it in Layout instead.
3723                             value.Padding = Padding;
3724                             SetValue(PaddingProperty, new Extents(0,0,0,0));
3725                             NotifyPropertyChanged();
3726                         }
3727                     }
3728                 }
3729
3730                 // Remove existing layout from it's parent layout group.
3731                 _layout?.Unparent();
3732
3733                 // Set layout to this view
3734                 SetLayout(value);
3735             }
3736         }
3737
3738         internal void SetLayout(LayoutItem layout)
3739         {
3740             _layout = layout;
3741             _layout?.AttachToOwner(this);
3742             _layout?.RequestLayout();
3743         }
3744
3745         /// <summary>
3746         /// Stores the calculated width value and its ModeType. Width component.
3747         /// </summary>
3748         internal MeasureSpecification MeasureSpecificationWidth
3749         {
3750             set
3751             {
3752                 _measureSpecificationWidth = value;
3753                 _layout?.RequestLayout();
3754             }
3755             get
3756             {
3757                 return _measureSpecificationWidth;
3758             }
3759         }
3760
3761         /// <summary>
3762         /// Stores the calculated width value and its ModeType. Height component.
3763         /// </summary>
3764         internal MeasureSpecification MeasureSpecificationHeight
3765         {
3766             set
3767             {
3768                 _measureSpecificationHeight = value;
3769                 _layout?.RequestLayout();
3770             }
3771             get
3772             {
3773                 return _measureSpecificationHeight;
3774             }
3775         }
3776
3777         internal void AttachTransitionsToChildren(LayoutTransition transition)
3778         {
3779             // Iterate children, adding the transition unless a transition
3780             // for the same condition and property has already been
3781             // explicitly added.
3782             foreach (View view in Children)
3783             {
3784                 LayoutTransitionsHelper.AddTransitionForCondition(view.LayoutTransitions,transition.Condition, transition, false);
3785             }
3786         }
3787
3788         internal float ParentOriginX
3789         {
3790             get
3791             {
3792                 float temp = 0.0f;
3793                 GetProperty(View.Property.PARENT_ORIGIN_X).Get(out temp);
3794                 return temp;
3795             }
3796             set
3797             {
3798                 SetProperty(View.Property.PARENT_ORIGIN_X, new Tizen.NUI.PropertyValue(value));
3799                 NotifyPropertyChanged();
3800             }
3801         }
3802
3803         internal float ParentOriginY
3804         {
3805             get
3806             {
3807                 float temp = 0.0f;
3808                 GetProperty(View.Property.PARENT_ORIGIN_Y).Get(out temp);
3809                 return temp;
3810             }
3811             set
3812             {
3813                 SetProperty(View.Property.PARENT_ORIGIN_Y, new Tizen.NUI.PropertyValue(value));
3814                 NotifyPropertyChanged();
3815             }
3816         }
3817
3818         internal float ParentOriginZ
3819         {
3820             get
3821             {
3822                 float temp = 0.0f;
3823                 GetProperty(View.Property.PARENT_ORIGIN_Z).Get(out temp);
3824                 return temp;
3825             }
3826             set
3827             {
3828                 SetProperty(View.Property.PARENT_ORIGIN_Z, new Tizen.NUI.PropertyValue(value));
3829                 NotifyPropertyChanged();
3830             }
3831         }
3832
3833         internal float PivotPointX
3834         {
3835             get
3836             {
3837                 float temp = 0.0f;
3838                 GetProperty(View.Property.ANCHOR_POINT_X).Get(out temp);
3839                 return temp;
3840             }
3841             set
3842             {
3843                 SetProperty(View.Property.ANCHOR_POINT_X, new Tizen.NUI.PropertyValue(value));
3844             }
3845         }
3846
3847         internal float PivotPointY
3848         {
3849             get
3850             {
3851                 float temp = 0.0f;
3852                 GetProperty(View.Property.ANCHOR_POINT_Y).Get(out temp);
3853                 return temp;
3854             }
3855             set
3856             {
3857                 SetProperty(View.Property.ANCHOR_POINT_Y, new Tizen.NUI.PropertyValue(value));
3858             }
3859         }
3860
3861         internal float PivotPointZ
3862         {
3863             get
3864             {
3865                 float temp = 0.0f;
3866                 GetProperty(View.Property.ANCHOR_POINT_Z).Get(out temp);
3867                 return temp;
3868             }
3869             set
3870             {
3871                 SetProperty(View.Property.ANCHOR_POINT_Z, new Tizen.NUI.PropertyValue(value));
3872             }
3873         }
3874
3875         internal Matrix WorldMatrix
3876         {
3877             get
3878             {
3879                 Matrix temp = new Matrix();
3880                 GetProperty(View.Property.WORLD_MATRIX).Get(temp);
3881                 return temp;
3882             }
3883         }
3884
3885         private int LeftFocusableViewId
3886         {
3887             get
3888             {
3889                 int temp = 0;
3890                 GetProperty(View.Property.LEFT_FOCUSABLE_VIEW_ID).Get(out temp);
3891                 return temp;
3892             }
3893             set
3894             {
3895                 SetProperty(View.Property.LEFT_FOCUSABLE_VIEW_ID, new Tizen.NUI.PropertyValue(value));
3896             }
3897         }
3898
3899         private int RightFocusableViewId
3900         {
3901             get
3902             {
3903                 int temp = 0;
3904                 GetProperty(View.Property.RIGHT_FOCUSABLE_VIEW_ID).Get(out temp);
3905                 return temp;
3906             }
3907             set
3908             {
3909                 SetProperty(View.Property.RIGHT_FOCUSABLE_VIEW_ID, new Tizen.NUI.PropertyValue(value));
3910             }
3911         }
3912
3913         private int UpFocusableViewId
3914         {
3915             get
3916             {
3917                 int temp = 0;
3918                 GetProperty(View.Property.UP_FOCUSABLE_VIEW_ID).Get(out temp);
3919                 return temp;
3920             }
3921             set
3922             {
3923                 SetProperty(View.Property.UP_FOCUSABLE_VIEW_ID, new Tizen.NUI.PropertyValue(value));
3924             }
3925         }
3926
3927         private int DownFocusableViewId
3928         {
3929             get
3930             {
3931                 int temp = 0;
3932                 GetProperty(View.Property.DOWN_FOCUSABLE_VIEW_ID).Get(out temp);
3933                 return temp;
3934             }
3935             set
3936             {
3937                 SetProperty(View.Property.DOWN_FOCUSABLE_VIEW_ID, new Tizen.NUI.PropertyValue(value));
3938             }
3939         }
3940
3941         /// <summary>
3942         /// Perform an action on a visual registered to this view. <br />
3943         /// Visuals will have actions. This API is used to perform one of these actions with the given attributes.
3944         /// </summary>
3945         /// <param name="propertyIndexOfVisual">The Property index of the visual.</param>
3946         /// <param name="propertyIndexOfActionId">The action to perform. See Visual to find the supported actions.</param>
3947         /// <param name="attributes">Optional attributes for the action.</param>
3948         /// <since_tizen> 5 </since_tizen>
3949         public void DoAction(int propertyIndexOfVisual, int propertyIndexOfActionId, PropertyValue attributes)
3950         {
3951             Interop.View.View_DoAction(swigCPtr, propertyIndexOfVisual, propertyIndexOfActionId, PropertyValue.getCPtr(attributes));
3952             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
3953         }
3954
3955         /// <summary>
3956         /// Creates an animation to animate the background color visual. If there is no
3957         /// background visual, creates one with transparent black as it's mixColor.
3958         /// </summary>
3959         /// <since_tizen> 3 </since_tizen>
3960         public Animation AnimateBackgroundColor(object destinationValue,
3961                                                  int startTime,
3962                                                  int endTime,
3963                                                  AlphaFunction.BuiltinFunctions? alphaFunction = null,
3964                                                  object initialValue = null)
3965         {
3966             Tizen.NUI.PropertyMap background = Background;
3967
3968             if (background.Empty())
3969             {
3970                 // If there is no background yet, ensure there is a transparent
3971                 // color visual
3972                 BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
3973                 background = Background;
3974             }
3975             return AnimateColor("background", destinationValue, startTime, endTime, alphaFunction, initialValue);
3976         }
3977
3978         /// <summary>
3979         /// Creates an animation to animate the mixColor of the named visual.
3980         /// </summary>
3981         /// <since_tizen> 3 </since_tizen>
3982         public Animation AnimateColor(string targetVisual, object destinationColor, int startTime, int endTime, AlphaFunction.BuiltinFunctions? alphaFunction = null, object initialColor = null)
3983         {
3984             Animation animation = null;
3985             {
3986                 PropertyMap _animator = new PropertyMap();
3987                 if (alphaFunction != null)
3988                 {
3989                     _animator.Add("alphaFunction", new PropertyValue(AlphaFunction.BuiltinToPropertyKey(alphaFunction)));
3990                 }
3991
3992                 PropertyMap _timePeriod = new PropertyMap();
3993                 _timePeriod.Add("duration", new PropertyValue((endTime - startTime) / 1000.0f));
3994                 _timePeriod.Add("delay", new PropertyValue(startTime / 1000.0f));
3995                 _animator.Add("timePeriod", new PropertyValue(_timePeriod));
3996
3997                 PropertyMap _transition = new PropertyMap();
3998                 _transition.Add("animator", new PropertyValue(_animator));
3999                 _transition.Add("target", new PropertyValue(targetVisual));
4000                 _transition.Add("property", new PropertyValue("mixColor"));
4001
4002                 if (initialColor != null)
4003                 {
4004                     PropertyValue initValue = PropertyValue.CreateFromObject(initialColor);
4005                     _transition.Add("initialValue", initValue);
4006                 }
4007
4008                 PropertyValue destValue = PropertyValue.CreateFromObject(destinationColor);
4009                 _transition.Add("targetValue", destValue);
4010                 TransitionData _transitionData = new TransitionData(_transition);
4011
4012                 animation = new Animation(Interop.View.View_CreateTransition(swigCPtr, TransitionData.getCPtr(_transitionData)), true);
4013                 if (NDalicPINVOKE.SWIGPendingException.Pending)
4014                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4015             }
4016             return animation;
4017         }
4018
4019         // From Container Base class
4020         /// <summary>
4021         /// Adds a child view to this view.
4022         /// </summary>
4023         /// <seealso cref="Container.Add" />
4024         /// <since_tizen> 4 </since_tizen>
4025         public override void Add(View child)
4026         {
4027             bool hasLayout = (_layout != null);
4028             Log.Info("NUI", "Add:" + child.Name + " to View:" + Name + " which has layout[" + hasLayout + "] + \n");
4029
4030             if (null == child)
4031             {
4032                 Tizen.Log.Fatal("NUI", "Child is null");
4033                 return;
4034             }
4035
4036             Container oldParent = child.GetParent();
4037             if (oldParent != this)
4038             {
4039                 // If child already has a parent then re-parent child
4040                 if (oldParent != null)
4041                 {
4042                     oldParent.Remove(child);
4043                 }
4044                 child.InternalParent = this;
4045
4046                 Interop.Actor.Actor_Add(swigCPtr, View.getCPtr(child));
4047
4048                 if (NDalicPINVOKE.SWIGPendingException.Pending)
4049                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4050                 Children.Add(child);
4051
4052                 if (ChildAdded != null)
4053                 {
4054                     ChildAddedEventArgs e = new ChildAddedEventArgs
4055                     {
4056                         Added = child
4057                     };
4058                     ChildAdded(this, e);
4059                 }
4060                 BindableObject.SetInheritedBindingContext(child, this?.BindingContext);
4061             }
4062         }
4063
4064         /// <summary>
4065         /// Removes a child view from this View. If the view was not a child of this view, this is a no-op.
4066         /// </summary>
4067         /// <seealso cref="Container.Remove" />
4068         /// <since_tizen> 4 </since_tizen>
4069         public override void Remove(View child)
4070         {
4071             if (!child || child.GetParent()==null) // Early out if child null.
4072                 return;
4073
4074             bool hasLayout = (_layout != null);
4075             Log.Info("NUI","Removing View:" + child.Name + " layout[" + hasLayout.ToString() +"]\n");
4076
4077             // If View has a layout then do a deferred child removal
4078             // Actual child removal is performed by the layouting system so
4079             // transitions can be completed.
4080             if (hasLayout)
4081             {
4082                 (_layout as LayoutGroup)?.RemoveChildFromLayoutGroup( child );
4083             }
4084             else
4085             {
4086                 RemoveChild(child);
4087             }
4088         }
4089
4090         /// <summary>
4091         /// Retrieves a child view by index.
4092         /// </summary>
4093         /// <seealso cref="Container.GetChildAt" />
4094         /// <since_tizen> 4 </since_tizen>
4095         public override View GetChildAt(uint index)
4096         {
4097             if (index < Children.Count)
4098             {
4099                 return Children[Convert.ToInt32(index)];
4100             }
4101             else
4102             {
4103                 return null;
4104             }
4105         }
4106
4107         /// <summary>
4108         /// Retrieves the number of children held by the view.
4109         /// </summary>
4110         /// <seealso cref="Container.GetChildCount" />
4111         /// <since_tizen> 4 </since_tizen>
4112         public override uint GetChildCount()
4113         {
4114             return Convert.ToUInt32(Children.Count);
4115         }
4116
4117         /// <summary>
4118         /// Gets the views parent.
4119         /// </summary>
4120         /// <seealso cref="Container.GetParent()" />
4121         /// <since_tizen> 4 </since_tizen>
4122         public override Container GetParent()
4123         {
4124             return this.InternalParent as Container;
4125         }
4126
4127         /// <summary>
4128         /// Queries whether the view has a focus.
4129         /// </summary>
4130         /// <returns>True if this view has a focus.</returns>
4131         /// <since_tizen> 3 </since_tizen>
4132         public bool HasFocus()
4133         {
4134             bool ret = false;
4135             if (swigCPtr.Handle != global::System.IntPtr.Zero)
4136             {
4137                 ret = Interop.View.View_HasKeyInputFocus(swigCPtr);
4138                                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4139             }
4140             else
4141             {
4142                 Tizen.Log.Error("NUI", "swigCPtr of view is aleady disposed.");
4143             }
4144             return ret;
4145         }
4146
4147         /// <summary>
4148         /// Sets the name of the style to be applied to the view.
4149         /// </summary>
4150         /// <param name="styleName">A string matching a style described in a stylesheet.</param>
4151         /// <since_tizen> 3 </since_tizen>
4152         public void SetStyleName(string styleName)
4153         {
4154             Interop.View.View_SetStyleName(swigCPtr, styleName);
4155             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4156         }
4157
4158         /// <summary>
4159         /// Retrieves the name of the style to be applied to the view (if any).
4160         /// </summary>
4161         /// <returns>A string matching a style, or an empty string.</returns>
4162         /// <since_tizen> 3 </since_tizen>
4163         public string GetStyleName()
4164         {
4165             string ret = Interop.View.View_GetStyleName(swigCPtr);
4166             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4167             return ret;
4168         }
4169
4170         /// <summary>
4171         /// Clears the background.
4172         /// </summary>
4173         /// <since_tizen> 3 </since_tizen>
4174         public void ClearBackground()
4175         {
4176             Interop.View.View_ClearBackground(swigCPtr);
4177             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4178         }
4179
4180         /// <summary>
4181         /// Shows the view.
4182         /// </summary>
4183         /// <remarks>
4184         /// This is an asynchronous method.
4185         /// </remarks>
4186         /// <since_tizen> 3 </since_tizen>
4187         public void Show()
4188         {
4189             SetVisible(true);
4190         }
4191
4192         /// <summary>
4193         /// Hides the view.
4194         /// </summary>
4195         /// <remarks>
4196         /// This is an asynchronous method.
4197         /// If the view is hidden, then the view and its children will not be rendered.
4198         /// This is regardless of the individual visibility of the children, i.e., the view will only be rendered if all of its parents are shown.
4199         /// </remarks>
4200         /// <since_tizen> 3 </since_tizen>
4201         public void Hide()
4202         {
4203             SetVisible(false);
4204         }
4205
4206         /// <summary>
4207         /// Raises the view above all other views.
4208         /// </summary>
4209         /// <remarks>
4210         /// Sibling order of views within the parent will be updated automatically.
4211         /// Once a raise or lower API is used, that view will then have an exclusive sibling order independent of insertion.
4212         /// </remarks>
4213         /// <since_tizen> 3 </since_tizen>
4214         public void RaiseToTop()
4215         {
4216             var parentChildren = GetParent()?.Children;
4217
4218             if (parentChildren != null)
4219             {
4220                 parentChildren.Remove(this);
4221                 parentChildren.Add(this);
4222
4223                 Interop.NDalic.RaiseToTop(swigCPtr);
4224                 if (NDalicPINVOKE.SWIGPendingException.Pending)
4225                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4226             }
4227
4228         }
4229
4230         /// <summary>
4231         /// Lowers the view to the bottom of all views.
4232         /// </summary>
4233         /// <remarks>
4234         /// The sibling order of views within the parent will be updated automatically.
4235         /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
4236         /// </remarks>
4237         /// <since_tizen> 3 </since_tizen>
4238         public void LowerToBottom()
4239         {
4240             var parentChildren = GetParent()?.Children;
4241
4242             if (parentChildren != null)
4243             {
4244                 parentChildren.Remove(this);
4245                 parentChildren.Insert(0, this);
4246
4247                 Interop.NDalic.LowerToBottom(swigCPtr);
4248                 if (NDalicPINVOKE.SWIGPendingException.Pending)
4249                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4250             }
4251         }
4252
4253         /// <summary>
4254         /// Queries if all resources required by a view are loaded and ready.
4255         /// </summary>
4256         /// <remarks>Most resources are only loaded when the control is placed on the stage.
4257         /// </remarks>
4258         /// <since_tizen> 3 </since_tizen>
4259         public bool IsResourceReady()
4260         {
4261             bool ret = Interop.View.IsResourceReady(swigCPtr);
4262             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4263             return ret;
4264         }
4265
4266         /// <summary>
4267         /// Gets the parent layer of this view.If a view has no parent, this method does not do anything.
4268         /// </summary>
4269         /// <pre>The view has been initialized. </pre>
4270         /// <returns>The parent layer of view </returns>
4271         /// <since_tizen> 5 </since_tizen>
4272         public Layer GetLayer()
4273         {
4274             //to fix memory leak issue, match the handle count with native side.
4275             IntPtr cPtr = Interop.Actor.Actor_GetLayer(swigCPtr);
4276             HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
4277             Layer ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Layer;
4278             Interop.BaseHandle.delete_BaseHandle(CPtr);
4279             CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
4280
4281             if (NDalicPINVOKE.SWIGPendingException.Pending)
4282                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4283             return ret;
4284         }
4285
4286         /// <summary>
4287         /// Removes a view from its parent view or layer. If a view has no parent, this method does nothing.
4288         /// </summary>
4289         /// <pre>The (child) view has been initialized. </pre>
4290         /// <since_tizen> 4 </since_tizen>
4291         public void Unparent()
4292         {
4293             GetParent()?.Remove(this);
4294         }
4295
4296         /// <summary>
4297         /// Search through this view's hierarchy for a view with the given name.
4298         /// The view itself is also considered in the search.
4299         /// </summary>
4300         /// <pre>The view has been initialized.</pre>
4301         /// <param name="viewName">The name of the view to find.</param>
4302         /// <returns>A handle to the view if found, or an empty handle if not.</returns>
4303         /// <since_tizen> 3 </since_tizen>
4304         public View FindChildByName(string viewName)
4305         {
4306             //to fix memory leak issue, match the handle count with native side.
4307             IntPtr cPtr = Interop.Actor.Actor_FindChildByName(swigCPtr, viewName);
4308             HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
4309             View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
4310             Interop.BaseHandle.delete_BaseHandle(CPtr);
4311             CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
4312
4313             if (NDalicPINVOKE.SWIGPendingException.Pending)
4314                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4315             return ret;
4316         }
4317
4318         /// <summary>
4319         /// Converts screen coordinates into the view's coordinate system using the default camera.
4320         /// </summary>
4321         /// <pre>The view has been initialized.</pre>
4322         /// <remarks>The view coordinates are relative to the top-left(0.0, 0.0, 0.5).</remarks>
4323         /// <param name="localX">On return, the X-coordinate relative to the view.</param>
4324         /// <param name="localY">On return, the Y-coordinate relative to the view.</param>
4325         /// <param name="screenX">The screen X-coordinate.</param>
4326         /// <param name="screenY">The screen Y-coordinate.</param>
4327         /// <returns>True if the conversion succeeded.</returns>
4328         /// <since_tizen> 3 </since_tizen>
4329         public bool ScreenToLocal(out float localX, out float localY, float screenX, float screenY)
4330         {
4331             bool ret = Interop.Actor.Actor_ScreenToLocal(swigCPtr, out localX, out localY, screenX, screenY);
4332             if (NDalicPINVOKE.SWIGPendingException.Pending)
4333                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4334             return ret;
4335         }
4336
4337         /// <summary>
4338         /// Sets the relative to parent size factor of the view.<br />
4339         /// This factor is only used when ResizePolicy is set to either:
4340         /// ResizePolicy::SIZE_RELATIVE_TO_PARENT or ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT.<br />
4341         /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicy.<br />
4342         /// </summary>
4343         /// <pre>The view has been initialized.</pre>
4344         /// <param name="factor">A Vector3 representing the relative factor to be applied to each axis.</param>
4345         /// <since_tizen> 3 </since_tizen>
4346         public void SetSizeModeFactor(Vector3 factor)
4347         {
4348             Interop.Actor.Actor_SetSizeModeFactor(swigCPtr, Vector3.getCPtr(factor));
4349             if (NDalicPINVOKE.SWIGPendingException.Pending)
4350                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4351         }
4352         /// <summary>
4353         /// Calculates the height of the view given a width.<br />
4354         /// The natural size is used for default calculation.<br />
4355         /// Size 0 is treated as aspect ratio 1:1.<br />
4356         /// </summary>
4357         /// <param name="width">The width to use.</param>
4358         /// <returns>The height based on the width.</returns>
4359         /// <since_tizen> 3 </since_tizen>
4360         public float GetHeightForWidth(float width)
4361         {
4362             float ret = Interop.Actor.Actor_GetHeightForWidth(swigCPtr, width);
4363             if (NDalicPINVOKE.SWIGPendingException.Pending)
4364                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4365             return ret;
4366         }
4367
4368         /// <summary>
4369         /// Calculates the width of the view given a height.<br />
4370         /// The natural size is used for default calculation.<br />
4371         /// Size 0 is treated as aspect ratio 1:1.<br />
4372         /// </summary>
4373         /// <param name="height">The height to use.</param>
4374         /// <returns>The width based on the height.</returns>
4375         /// <since_tizen> 3 </since_tizen>
4376         public float GetWidthForHeight(float height)
4377         {
4378             float ret = Interop.Actor.Actor_GetWidthForHeight(swigCPtr, height);
4379             if (NDalicPINVOKE.SWIGPendingException.Pending)
4380                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4381             return ret;
4382         }
4383
4384         /// <summary>
4385         /// Return the amount of size allocated for relayout.
4386         /// </summary>
4387         /// <param name="dimension">The dimension to retrieve.</param>
4388         /// <returns>Return the size.</returns>
4389         /// <since_tizen> 3 </since_tizen>
4390         public float GetRelayoutSize(DimensionType dimension)
4391         {
4392             float ret = Interop.Actor.Actor_GetRelayoutSize(swigCPtr, (int)dimension);
4393             if (NDalicPINVOKE.SWIGPendingException.Pending)
4394                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4395             return ret;
4396         }
4397
4398         /// <summary>
4399         /// Set the padding for the view.
4400         /// </summary>
4401         /// <param name="padding">Padding for the view.</param>
4402         /// <since_tizen> 3 </since_tizen>
4403         public void SetPadding(PaddingType padding)
4404         {
4405             Interop.Actor.Actor_SetPadding(swigCPtr, PaddingType.getCPtr(padding));
4406             if (NDalicPINVOKE.SWIGPendingException.Pending)
4407                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4408         }
4409
4410         /// <summary>
4411         /// Return the value of padding for the view.
4412         /// </summary>
4413         /// <param name="paddingOut">the value of padding for the view</param>
4414         /// <since_tizen> 3 </since_tizen>
4415         public void GetPadding(PaddingType paddingOut)
4416         {
4417             Interop.Actor.Actor_GetPadding(swigCPtr, PaddingType.getCPtr(paddingOut));
4418             if (NDalicPINVOKE.SWIGPendingException.Pending)
4419                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4420         }
4421
4422         /// <since_tizen> 3 </since_tizen>
4423         public uint AddRenderer(Renderer renderer)
4424         {
4425             uint ret = Interop.Actor.Actor_AddRenderer(swigCPtr, Renderer.getCPtr(renderer));
4426             if (NDalicPINVOKE.SWIGPendingException.Pending)
4427                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4428             return ret;
4429         }
4430
4431         /// <since_tizen> 3 </since_tizen>
4432         public Renderer GetRendererAt(uint index)
4433         {
4434             //to fix memory leak issue, match the handle count with native side.
4435             IntPtr cPtr = Interop.Actor.Actor_GetRendererAt(swigCPtr, index);
4436             HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
4437             Renderer ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as Renderer;
4438             if (cPtr != null && ret == null)
4439             {
4440                 ret = new Renderer(cPtr, false);
4441                 if (NDalicPINVOKE.SWIGPendingException.Pending)
4442                     throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4443                 return ret;
4444             }
4445             Interop.BaseHandle.delete_BaseHandle(CPtr);
4446             CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
4447
4448             if (NDalicPINVOKE.SWIGPendingException.Pending)
4449                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4450             return ret;
4451         }
4452
4453         /// <since_tizen> 3 </since_tizen>
4454         public void RemoveRenderer(Renderer renderer)
4455         {
4456             Interop.Actor.Actor_RemoveRenderer__SWIG_0(swigCPtr, Renderer.getCPtr(renderer));
4457             if (NDalicPINVOKE.SWIGPendingException.Pending)
4458                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4459         }
4460
4461         /// <since_tizen> 3 </since_tizen>
4462         public void RemoveRenderer(uint index)
4463         {
4464             Interop.Actor.Actor_RemoveRenderer__SWIG_1(swigCPtr, index);
4465             if (NDalicPINVOKE.SWIGPendingException.Pending)
4466                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4467         }
4468
4469         internal void Raise()
4470         {
4471             var parentChildren = GetParent()?.Children;
4472
4473             if (parentChildren != null)
4474             {
4475                 int currentIndex = parentChildren.IndexOf(this);
4476
4477                 // If the view is not already the last item in the list.
4478                 if (currentIndex >= 0 && currentIndex < parentChildren.Count - 1)
4479                 {
4480                     View temp = parentChildren[currentIndex + 1];
4481                     parentChildren[currentIndex + 1] = this;
4482                     parentChildren[currentIndex] = temp;
4483
4484                     Interop.NDalic.Raise(swigCPtr);
4485                     if (NDalicPINVOKE.SWIGPendingException.Pending)
4486                         throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4487                 }
4488             }
4489         }
4490
4491         internal void Lower()
4492         {
4493             var parentChildren = GetParent()?.Children;
4494
4495             if (parentChildren != null)
4496             {
4497                 int currentIndex = parentChildren.IndexOf(this);
4498
4499                 // If the view is not already the first item in the list.
4500                 if (currentIndex > 0 && currentIndex < parentChildren.Count)
4501                 {
4502                     View temp = parentChildren[currentIndex - 1];
4503                     parentChildren[currentIndex - 1] = this;
4504                     parentChildren[currentIndex] = temp;
4505
4506                     Interop.NDalic.Lower(swigCPtr);
4507                     if (NDalicPINVOKE.SWIGPendingException.Pending)
4508                         throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4509                 }
4510             }
4511         }
4512
4513         /// <summary>
4514         /// Raises the view to above the target view.
4515         /// </summary>
4516         /// <remarks>The sibling order of views within the parent will be updated automatically.
4517         /// Views on the level above the target view will still be shown above this view.
4518         /// Raising this view above views with the same sibling order as each other will raise this view above them.
4519         /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
4520         /// </remarks>
4521         /// <param name="target">Will be raised above this view.</param>
4522         internal void RaiseAbove(View target)
4523         {
4524             var parentChildren = GetParent()?.Children;
4525
4526             if (parentChildren != null)
4527             {
4528                 int currentIndex = parentChildren.IndexOf(this);
4529                 int targetIndex = parentChildren.IndexOf(target);
4530
4531                 if (currentIndex < 0 || targetIndex < 0 ||
4532                     currentIndex >= parentChildren.Count || targetIndex >= parentChildren.Count)
4533                 {
4534                     NUILog.Error("index should be bigger than 0 and less than children of layer count");
4535                     return;
4536                 }
4537                 // If the currentIndex is less than the target index and the target has the same parent.
4538                 if (currentIndex < targetIndex)
4539                 {
4540                     parentChildren.Remove(this);
4541                     parentChildren.Insert(targetIndex, this);
4542
4543                     Interop.NDalic.RaiseAbove(swigCPtr, View.getCPtr(target));
4544                     if (NDalicPINVOKE.SWIGPendingException.Pending)
4545                         throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4546                 }
4547             }
4548
4549         }
4550
4551         /// <summary>
4552         /// Lowers the view to below the target view.
4553         /// </summary>
4554         /// <remarks>The sibling order of views within the parent will be updated automatically.
4555         /// Lowering this view below views with the same sibling order as each other will lower this view above them.
4556         /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
4557         /// </remarks>
4558         /// <param name="target">Will be lowered below this view.</param>
4559         internal void LowerBelow(View target)
4560         {
4561             var parentChildren = GetParent()?.Children;
4562
4563             if (parentChildren != null)
4564             {
4565                 int currentIndex = parentChildren.IndexOf(this);
4566                 int targetIndex = parentChildren.IndexOf(target);
4567                 if (currentIndex < 0 || targetIndex < 0 ||
4568                    currentIndex >= parentChildren.Count || targetIndex >= parentChildren.Count)
4569                 {
4570                     NUILog.Error("index should be bigger than 0 and less than children of layer count");
4571                     return;
4572                 }
4573
4574                 // If the currentIndex is not already the 0th index and the target has the same parent.
4575                 if ((currentIndex != 0) && (targetIndex != -1) &&
4576                     (currentIndex > targetIndex))
4577                 {
4578                     parentChildren.Remove(this);
4579                     parentChildren.Insert(targetIndex, this);
4580
4581                     Interop.NDalic.LowerBelow(swigCPtr, View.getCPtr(target));
4582                     if (NDalicPINVOKE.SWIGPendingException.Pending)
4583                         throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4584                 }
4585             }
4586
4587         }
4588
4589         internal string GetName()
4590         {
4591             string ret = Interop.Actor.Actor_GetName(swigCPtr);
4592             if (NDalicPINVOKE.SWIGPendingException.Pending)
4593                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4594             return ret;
4595         }
4596
4597         internal void SetName(string name)
4598         {
4599             Interop.Actor.Actor_SetName(swigCPtr, name);
4600             if (NDalicPINVOKE.SWIGPendingException.Pending)
4601                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4602         }
4603
4604         internal uint GetId()
4605         {
4606             uint ret = Interop.Actor.Actor_GetId(swigCPtr);
4607             if (NDalicPINVOKE.SWIGPendingException.Pending)
4608                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4609             return ret;
4610         }
4611
4612         internal bool IsRoot()
4613         {
4614             bool ret = Interop.ActorInternal.Actor_IsRoot(swigCPtr);
4615             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4616             return ret;
4617         }
4618
4619         internal bool OnWindow()
4620         {
4621             bool ret = Interop.Actor.Actor_OnStage(swigCPtr);
4622             if (NDalicPINVOKE.SWIGPendingException.Pending)
4623                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4624             return ret;
4625         }
4626
4627         internal View FindChildById(uint id)
4628         {
4629             //to fix memory leak issue, match the handle count with native side.
4630             IntPtr cPtr = Interop.Actor.Actor_FindChildById(swigCPtr, id);
4631             HandleRef CPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
4632             View ret = Registry.GetManagedBaseHandleFromNativePtr(CPtr.Handle) as View;
4633             Interop.BaseHandle.delete_BaseHandle(CPtr);
4634             CPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
4635
4636             if (NDalicPINVOKE.SWIGPendingException.Pending)
4637                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4638             return ret;
4639         }
4640
4641         internal override View FindCurrentChildById(uint id)
4642         {
4643             return FindChildById(id);
4644         }
4645
4646         internal void SetParentOrigin(Vector3 origin)
4647         {
4648             Interop.ActorInternal.Actor_SetParentOrigin(swigCPtr, Vector3.getCPtr(origin));
4649             if (NDalicPINVOKE.SWIGPendingException.Pending)
4650                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4651         }
4652
4653         internal Vector3 GetCurrentParentOrigin()
4654         {
4655             Vector3 ret = new Vector3(Interop.ActorInternal.Actor_GetCurrentParentOrigin(swigCPtr), true);
4656             if (NDalicPINVOKE.SWIGPendingException.Pending)
4657                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4658             return ret;
4659         }
4660
4661         internal void SetAnchorPoint(Vector3 anchorPoint)
4662         {
4663             Interop.Actor.Actor_SetAnchorPoint(swigCPtr, Vector3.getCPtr(anchorPoint));
4664             if (NDalicPINVOKE.SWIGPendingException.Pending)
4665                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4666         }
4667
4668         internal Vector3 GetCurrentAnchorPoint()
4669         {
4670             Vector3 ret = new Vector3(Interop.ActorInternal.Actor_GetCurrentAnchorPoint(swigCPtr), true);
4671             if (NDalicPINVOKE.SWIGPendingException.Pending)
4672                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4673             return ret;
4674         }
4675
4676         internal void SetSize(float width, float height)
4677         {
4678             Interop.ActorInternal.Actor_SetSize__SWIG_0(swigCPtr, width, height);
4679             if (NDalicPINVOKE.SWIGPendingException.Pending)
4680                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4681         }
4682
4683         internal void SetSize(float width, float height, float depth)
4684         {
4685             Interop.ActorInternal.Actor_SetSize__SWIG_1(swigCPtr, width, height, depth);
4686             if (NDalicPINVOKE.SWIGPendingException.Pending)
4687                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4688         }
4689
4690         internal void SetSize(Vector2 size)
4691         {
4692             Interop.ActorInternal.Actor_SetSize__SWIG_2(swigCPtr, Vector2.getCPtr(size));
4693             if (NDalicPINVOKE.SWIGPendingException.Pending)
4694                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4695         }
4696
4697         internal void SetSize(Vector3 size)
4698         {
4699             Interop.ActorInternal.Actor_SetSize__SWIG_3(swigCPtr, Vector3.getCPtr(size));
4700             if (NDalicPINVOKE.SWIGPendingException.Pending)
4701                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4702         }
4703
4704         internal Vector3 GetTargetSize()
4705         {
4706             Vector3 ret = new Vector3(Interop.ActorInternal.Actor_GetTargetSize(swigCPtr), true);
4707             if (NDalicPINVOKE.SWIGPendingException.Pending)
4708                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4709             return ret;
4710         }
4711
4712         internal Size2D GetCurrentSize()
4713         {
4714             Size ret = new Size(Interop.Actor.Actor_GetCurrentSize(swigCPtr), true);
4715             if (NDalicPINVOKE.SWIGPendingException.Pending)
4716                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4717             Size2D size = new Size2D((int)ret.Width, (int)ret.Height);
4718             return size;
4719         }
4720
4721         internal Vector3 GetNaturalSize()
4722         {
4723             Vector3 ret = new Vector3(Interop.Actor.Actor_GetNaturalSize(swigCPtr), true);
4724             if (NDalicPINVOKE.SWIGPendingException.Pending)
4725                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4726             return ret;
4727         }
4728
4729         internal void SetPosition(float x, float y)
4730         {
4731             Interop.ActorInternal.Actor_SetPosition__SWIG_0(swigCPtr, x, y);
4732             if (NDalicPINVOKE.SWIGPendingException.Pending)
4733                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4734         }
4735
4736         internal void SetPosition(float x, float y, float z)
4737         {
4738             Interop.ActorInternal.Actor_SetPosition__SWIG_1(swigCPtr, x, y, z);
4739             if (NDalicPINVOKE.SWIGPendingException.Pending)
4740                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4741         }
4742
4743         internal void SetPosition(Vector3 position)
4744         {
4745             Interop.ActorInternal.Actor_SetPosition__SWIG_2(swigCPtr, Vector3.getCPtr(position));
4746             if (NDalicPINVOKE.SWIGPendingException.Pending)
4747                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4748         }
4749
4750         internal void SetX(float x)
4751         {
4752             Interop.ActorInternal.Actor_SetX(swigCPtr, x);
4753             if (NDalicPINVOKE.SWIGPendingException.Pending)
4754                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4755         }
4756
4757         internal void SetY(float y)
4758         {
4759             Interop.ActorInternal.Actor_SetY(swigCPtr, y);
4760             if (NDalicPINVOKE.SWIGPendingException.Pending)
4761                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4762         }
4763
4764         internal void SetZ(float z)
4765         {
4766             Interop.ActorInternal.Actor_SetZ(swigCPtr, z);
4767             if (NDalicPINVOKE.SWIGPendingException.Pending)
4768                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4769         }
4770
4771         internal void TranslateBy(Vector3 distance)
4772         {
4773             Interop.ActorInternal.Actor_TranslateBy(swigCPtr, Vector3.getCPtr(distance));
4774             if (NDalicPINVOKE.SWIGPendingException.Pending)
4775                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4776         }
4777
4778         internal Position GetCurrentPosition()
4779         {
4780             Position ret = new Position(Interop.Actor.Actor_GetCurrentPosition(swigCPtr), true);
4781             if (NDalicPINVOKE.SWIGPendingException.Pending)
4782                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4783             return ret;
4784         }
4785
4786         internal Vector3 GetCurrentWorldPosition()
4787         {
4788             Vector3 ret = new Vector3(Interop.ActorInternal.Actor_GetCurrentWorldPosition(swigCPtr), true);
4789             if (NDalicPINVOKE.SWIGPendingException.Pending)
4790                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4791             return ret;
4792         }
4793
4794         internal void SetInheritPosition(bool inherit)
4795         {
4796             Interop.ActorInternal.Actor_SetInheritPosition(swigCPtr, inherit);
4797             if (NDalicPINVOKE.SWIGPendingException.Pending)
4798                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4799         }
4800
4801         internal bool IsPositionInherited()
4802         {
4803             bool ret = Interop.ActorInternal.Actor_IsPositionInherited(swigCPtr);
4804             if (NDalicPINVOKE.SWIGPendingException.Pending)
4805                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4806             return ret;
4807         }
4808
4809         internal void SetOrientation(Degree angle, Vector3 axis)
4810         {
4811             Interop.ActorInternal.Actor_SetOrientation__SWIG_0(swigCPtr, Degree.getCPtr(angle), Vector3.getCPtr(axis));
4812             if (NDalicPINVOKE.SWIGPendingException.Pending)
4813                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4814         }
4815
4816         internal void SetOrientation(Radian angle, Vector3 axis)
4817         {
4818             Interop.ActorInternal.Actor_SetOrientation__SWIG_1(swigCPtr, Radian.getCPtr(angle), Vector3.getCPtr(axis));
4819             if (NDalicPINVOKE.SWIGPendingException.Pending)
4820                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4821         }
4822
4823         internal void SetOrientation(Rotation orientation)
4824         {
4825             Interop.ActorInternal.Actor_SetOrientation__SWIG_2(swigCPtr, Rotation.getCPtr(orientation));
4826             if (NDalicPINVOKE.SWIGPendingException.Pending)
4827                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4828         }
4829
4830         internal void RotateBy(Degree angle, Vector3 axis)
4831         {
4832             Interop.ActorInternal.Actor_RotateBy__SWIG_0(swigCPtr, Degree.getCPtr(angle), Vector3.getCPtr(axis));
4833             if (NDalicPINVOKE.SWIGPendingException.Pending)
4834                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4835         }
4836
4837         internal void RotateBy(Radian angle, Vector3 axis)
4838         {
4839             Interop.ActorInternal.Actor_RotateBy__SWIG_1(swigCPtr, Radian.getCPtr(angle), Vector3.getCPtr(axis));
4840             if (NDalicPINVOKE.SWIGPendingException.Pending)
4841                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4842         }
4843
4844         internal void RotateBy(Rotation relativeRotation)
4845         {
4846             Interop.ActorInternal.Actor_RotateBy__SWIG_2(swigCPtr, Rotation.getCPtr(relativeRotation));
4847             if (NDalicPINVOKE.SWIGPendingException.Pending)
4848                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4849         }
4850
4851         internal Rotation GetCurrentOrientation()
4852         {
4853             Rotation ret = new Rotation(Interop.ActorInternal.Actor_GetCurrentOrientation(swigCPtr), true);
4854             if (NDalicPINVOKE.SWIGPendingException.Pending)
4855                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4856             return ret;
4857         }
4858
4859         internal void SetInheritOrientation(bool inherit)
4860         {
4861             Interop.ActorInternal.Actor_SetInheritOrientation(swigCPtr, inherit);
4862             if (NDalicPINVOKE.SWIGPendingException.Pending)
4863                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4864         }
4865
4866         internal bool IsOrientationInherited()
4867         {
4868             bool ret = Interop.ActorInternal.Actor_IsOrientationInherited(swigCPtr);
4869             if (NDalicPINVOKE.SWIGPendingException.Pending)
4870                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4871             return ret;
4872         }
4873
4874         internal Rotation GetCurrentWorldOrientation()
4875         {
4876             Rotation ret = new Rotation(Interop.ActorInternal.Actor_GetCurrentWorldOrientation(swigCPtr), true);
4877             if (NDalicPINVOKE.SWIGPendingException.Pending)
4878                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4879             return ret;
4880         }
4881
4882         internal void SetScale(float scale)
4883         {
4884             Interop.ActorInternal.Actor_SetScale__SWIG_0(swigCPtr, scale);
4885             if (NDalicPINVOKE.SWIGPendingException.Pending)
4886                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4887         }
4888
4889         internal void SetScale(float scaleX, float scaleY, float scaleZ)
4890         {
4891             Interop.ActorInternal.Actor_SetScale__SWIG_1(swigCPtr, scaleX, scaleY, scaleZ);
4892             if (NDalicPINVOKE.SWIGPendingException.Pending)
4893                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4894         }
4895
4896         internal void SetScale(Vector3 scale)
4897         {
4898             Interop.ActorInternal.Actor_SetScale__SWIG_2(swigCPtr, Vector3.getCPtr(scale));
4899             if (NDalicPINVOKE.SWIGPendingException.Pending)
4900                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4901         }
4902
4903         internal void ScaleBy(Vector3 relativeScale)
4904         {
4905             Interop.ActorInternal.Actor_ScaleBy(swigCPtr, Vector3.getCPtr(relativeScale));
4906             if (NDalicPINVOKE.SWIGPendingException.Pending)
4907                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4908         }
4909
4910         internal Vector3 GetCurrentScale()
4911         {
4912             Vector3 ret = new Vector3(Interop.ActorInternal.Actor_GetCurrentScale(swigCPtr), true);
4913             if (NDalicPINVOKE.SWIGPendingException.Pending)
4914                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4915             return ret;
4916         }
4917
4918         internal Vector3 GetCurrentWorldScale()
4919         {
4920             Vector3 ret = new Vector3(Interop.ActorInternal.Actor_GetCurrentWorldScale(swigCPtr), true);
4921             if (NDalicPINVOKE.SWIGPendingException.Pending)
4922                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4923             return ret;
4924         }
4925
4926         internal void SetInheritScale(bool inherit)
4927         {
4928             Interop.ActorInternal.Actor_SetInheritScale(swigCPtr, inherit);
4929             if (NDalicPINVOKE.SWIGPendingException.Pending)
4930                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4931         }
4932
4933         internal bool IsScaleInherited()
4934         {
4935             bool ret = Interop.ActorInternal.Actor_IsScaleInherited(swigCPtr);
4936             if (NDalicPINVOKE.SWIGPendingException.Pending)
4937                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4938             return ret;
4939         }
4940
4941         internal Matrix GetCurrentWorldMatrix()
4942         {
4943             Matrix ret = new Matrix(Interop.ActorInternal.Actor_GetCurrentWorldMatrix(swigCPtr), true);
4944             if (NDalicPINVOKE.SWIGPendingException.Pending)
4945                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4946             return ret;
4947         }
4948
4949         internal void SetVisible(bool visible)
4950         {
4951             Interop.Actor.Actor_SetVisible(swigCPtr, visible);
4952             if (NDalicPINVOKE.SWIGPendingException.Pending)
4953                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4954         }
4955
4956         internal bool IsVisible()
4957         {
4958             bool ret = Interop.ActorInternal.Actor_IsVisible(swigCPtr);
4959             if (NDalicPINVOKE.SWIGPendingException.Pending)
4960                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4961             return ret;
4962         }
4963
4964         internal void SetOpacity(float opacity)
4965         {
4966             Interop.ActorInternal.Actor_SetOpacity(swigCPtr, opacity);
4967             if (NDalicPINVOKE.SWIGPendingException.Pending)
4968                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4969         }
4970
4971         internal float GetCurrentOpacity()
4972         {
4973             float ret = Interop.ActorInternal.Actor_GetCurrentOpacity(swigCPtr);
4974             if (NDalicPINVOKE.SWIGPendingException.Pending)
4975                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4976             return ret;
4977         }
4978
4979         internal void SetColor(Vector4 color)
4980         {
4981             Interop.ActorInternal.Actor_SetColor(swigCPtr, Vector4.getCPtr(color));
4982             if (NDalicPINVOKE.SWIGPendingException.Pending)
4983                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4984         }
4985
4986         internal Vector4 GetCurrentColor()
4987         {
4988             Vector4 ret = new Vector4(Interop.ActorInternal.Actor_GetCurrentColor(swigCPtr), true);
4989             if (NDalicPINVOKE.SWIGPendingException.Pending)
4990                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
4991             return ret;
4992         }
4993
4994         /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API.
4995         [EditorBrowsable(EditorBrowsableState.Never)]
4996         public void SetColorMode(ColorMode colorMode)
4997         {
4998             Interop.ActorInternal.Actor_SetColorMode(swigCPtr, (int)colorMode);
4999             if (NDalicPINVOKE.SWIGPendingException.Pending)
5000                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5001         }
5002
5003         internal ColorMode GetColorMode()
5004         {
5005             ColorMode ret = (ColorMode)Interop.ActorInternal.Actor_GetColorMode(swigCPtr);
5006             if (NDalicPINVOKE.SWIGPendingException.Pending)
5007                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5008             return ret;
5009         }
5010
5011         internal Vector4 GetCurrentWorldColor()
5012         {
5013             Vector4 ret = new Vector4(Interop.ActorInternal.Actor_GetCurrentWorldColor(swigCPtr), true);
5014             if (NDalicPINVOKE.SWIGPendingException.Pending)
5015                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5016             return ret;
5017         }
5018
5019         internal void SetDrawMode(DrawModeType drawMode)
5020         {
5021             Interop.ActorInternal.Actor_SetDrawMode(swigCPtr, (int)drawMode);
5022             if (NDalicPINVOKE.SWIGPendingException.Pending)
5023                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5024         }
5025
5026         internal DrawModeType GetDrawMode()
5027         {
5028             DrawModeType ret = (DrawModeType)Interop.ActorInternal.Actor_GetDrawMode(swigCPtr);
5029             if (NDalicPINVOKE.SWIGPendingException.Pending)
5030                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5031             return ret;
5032         }
5033
5034         internal void SetKeyboardFocusable(bool focusable)
5035         {
5036             Interop.ActorInternal.Actor_SetKeyboardFocusable(swigCPtr, focusable);
5037             if (NDalicPINVOKE.SWIGPendingException.Pending)
5038                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5039         }
5040
5041         internal bool IsKeyboardFocusable()
5042         {
5043             bool ret = Interop.ActorInternal.Actor_IsKeyboardFocusable(swigCPtr);
5044             if (NDalicPINVOKE.SWIGPendingException.Pending)
5045                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5046             return ret;
5047         }
5048
5049         internal void SetResizePolicy(ResizePolicyType policy, DimensionType dimension)
5050         {
5051             Interop.Actor.Actor_SetResizePolicy(swigCPtr, (int)policy, (int)dimension);
5052             if (NDalicPINVOKE.SWIGPendingException.Pending)
5053                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5054         }
5055
5056         internal ResizePolicyType GetResizePolicy(DimensionType dimension)
5057         {
5058             ResizePolicyType ret = (ResizePolicyType)Interop.Actor.Actor_GetResizePolicy(swigCPtr, (int)dimension);
5059             if (NDalicPINVOKE.SWIGPendingException.Pending)
5060                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5061             return ret;
5062         }
5063
5064         internal Vector3 GetSizeModeFactor()
5065         {
5066             Vector3 ret = new Vector3(Interop.Actor.Actor_GetSizeModeFactor(swigCPtr), true);
5067             if (NDalicPINVOKE.SWIGPendingException.Pending)
5068                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5069             return ret;
5070         }
5071
5072         internal void SetMinimumSize(Vector2 size)
5073         {
5074             Interop.ActorInternal.Actor_SetMinimumSize(swigCPtr, Vector2.getCPtr(size));
5075             if (NDalicPINVOKE.SWIGPendingException.Pending)
5076                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5077         }
5078
5079         internal Vector2 GetMinimumSize()
5080         {
5081             Vector2 ret = new Vector2(Interop.ActorInternal.Actor_GetMinimumSize(swigCPtr), true);
5082             if (NDalicPINVOKE.SWIGPendingException.Pending)
5083                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5084             return ret;
5085         }
5086
5087         internal void SetMaximumSize(Vector2 size)
5088         {
5089             Interop.ActorInternal.Actor_SetMaximumSize(swigCPtr, Vector2.getCPtr(size));
5090             if (NDalicPINVOKE.SWIGPendingException.Pending)
5091                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5092         }
5093
5094         internal Vector2 GetMaximumSize()
5095         {
5096             Vector2 ret = new Vector2(Interop.ActorInternal.Actor_GetMaximumSize(swigCPtr), true);
5097             if (NDalicPINVOKE.SWIGPendingException.Pending)
5098                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5099             return ret;
5100         }
5101
5102         internal int GetHierarchyDepth()
5103         {
5104             int ret = Interop.Actor.Actor_GetHierarchyDepth(swigCPtr);
5105             if (NDalicPINVOKE.SWIGPendingException.Pending)
5106                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5107             return ret;
5108         }
5109
5110         internal uint GetRendererCount()
5111         {
5112             uint ret = Interop.Actor.Actor_GetRendererCount(swigCPtr);
5113             if (NDalicPINVOKE.SWIGPendingException.Pending)
5114                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5115             return ret;
5116         }
5117
5118         internal TouchDataSignal TouchSignal()
5119         {
5120             TouchDataSignal ret = new TouchDataSignal(Interop.ActorSignal.Actor_TouchSignal(swigCPtr), false);
5121             if (NDalicPINVOKE.SWIGPendingException.Pending)
5122                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5123             return ret;
5124         }
5125
5126         internal HoverSignal HoveredSignal()
5127         {
5128             HoverSignal ret = new HoverSignal(Interop.ActorSignal.Actor_HoveredSignal(swigCPtr), false);
5129             if (NDalicPINVOKE.SWIGPendingException.Pending)
5130                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5131             return ret;
5132         }
5133
5134         internal WheelSignal WheelEventSignal()
5135         {
5136             WheelSignal ret = new WheelSignal(Interop.ActorSignal.Actor_WheelEventSignal(swigCPtr), false);
5137             if (NDalicPINVOKE.SWIGPendingException.Pending)
5138                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5139             return ret;
5140         }
5141
5142         internal ViewSignal OnWindowSignal()
5143         {
5144             ViewSignal ret = new ViewSignal(Interop.ActorSignal.Actor_OnStageSignal(swigCPtr), false);
5145             if (NDalicPINVOKE.SWIGPendingException.Pending)
5146                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5147             return ret;
5148         }
5149
5150         internal ViewSignal OffWindowSignal()
5151         {
5152             ViewSignal ret = new ViewSignal(Interop.ActorSignal.Actor_OffStageSignal(swigCPtr), false);
5153             if (NDalicPINVOKE.SWIGPendingException.Pending)
5154                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5155             return ret;
5156         }
5157
5158         internal ViewSignal OnRelayoutSignal()
5159         {
5160             ViewSignal ret = new ViewSignal(Interop.ActorSignal.Actor_OnRelayoutSignal(swigCPtr), false);
5161             if (NDalicPINVOKE.SWIGPendingException.Pending)
5162                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5163             return ret;
5164         }
5165
5166         internal ViewVisibilityChangedSignal VisibilityChangedSignal(View view)
5167         {
5168             ViewVisibilityChangedSignal ret = new ViewVisibilityChangedSignal(Interop.NDalic.VisibilityChangedSignal(View.getCPtr(view)), false);
5169             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5170             return ret;
5171         }
5172
5173         internal ViewLayoutDirectionChangedSignal LayoutDirectionChangedSignal(View view)
5174         {
5175             ViewLayoutDirectionChangedSignal ret = new ViewLayoutDirectionChangedSignal(Interop.Layout.LayoutDirectionChangedSignal(View.getCPtr(view)), false);
5176             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5177             return ret;
5178         }
5179
5180         internal ViewSignal ResourcesLoadedSignal()
5181         {
5182             ViewSignal ret = new ViewSignal(Interop.View.ResourceReadySignal(swigCPtr), false);
5183             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5184             return ret;
5185         }
5186
5187         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(View obj)
5188         {
5189             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
5190         }
5191
5192         internal bool IsTopLevelView()
5193         {
5194             if (GetParent() is Layer)
5195             {
5196                 return true;
5197             }
5198             return false;
5199         }
5200
5201         internal void SetKeyInputFocus()
5202         {
5203             Interop.ViewInternal.View_SetKeyInputFocus(swigCPtr);
5204             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5205         }
5206
5207         internal void ClearKeyInputFocus()
5208         {
5209             Interop.ViewInternal.View_ClearKeyInputFocus(swigCPtr);
5210             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5211         }
5212
5213         internal PinchGestureDetector GetPinchGestureDetector()
5214         {
5215             PinchGestureDetector ret = new PinchGestureDetector(Interop.ViewInternal.View_GetPinchGestureDetector(swigCPtr), true);
5216             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5217             return ret;
5218         }
5219
5220         internal PanGestureDetector GetPanGestureDetector()
5221         {
5222             PanGestureDetector ret = new PanGestureDetector(Interop.ViewInternal.View_GetPanGestureDetector(swigCPtr), true);
5223             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5224             return ret;
5225         }
5226
5227         internal TapGestureDetector GetTapGestureDetector()
5228         {
5229             TapGestureDetector ret = new TapGestureDetector(Interop.ViewInternal.View_GetTapGestureDetector(swigCPtr), true);
5230             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5231             return ret;
5232         }
5233
5234         internal LongPressGestureDetector GetLongPressGestureDetector()
5235         {
5236             LongPressGestureDetector ret = new LongPressGestureDetector(Interop.ViewInternal.View_GetLongPressGestureDetector(swigCPtr), true);
5237             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5238             return ret;
5239         }
5240
5241         internal ControlKeySignal KeyEventSignal()
5242         {
5243             ControlKeySignal ret = new ControlKeySignal(Interop.ViewSignal.View_KeyEventSignal(swigCPtr), false);
5244             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5245             return ret;
5246         }
5247
5248         internal KeyInputFocusSignal KeyInputFocusGainedSignal()
5249         {
5250             KeyInputFocusSignal ret = new KeyInputFocusSignal(Interop.ViewSignal.View_KeyInputFocusGainedSignal(swigCPtr), false);
5251             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5252             return ret;
5253         }
5254
5255         internal KeyInputFocusSignal KeyInputFocusLostSignal()
5256         {
5257             KeyInputFocusSignal ret = new KeyInputFocusSignal(Interop.ViewSignal.View_KeyInputFocusLostSignal(swigCPtr), false);
5258             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5259             return ret;
5260         }
5261
5262         internal IntPtr GetPtrfromView()
5263         {
5264             return (IntPtr)swigCPtr;
5265         }
5266
5267         internal void RemoveChild(View child)
5268         {
5269             // Do actual child removal
5270             Interop.Actor.Actor_Remove(swigCPtr, View.getCPtr(child));
5271             if (NDalicPINVOKE.SWIGPendingException.Pending)
5272                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
5273
5274             Children.Remove(child);
5275             child.InternalParent = null;
5276
5277             if (ChildRemoved != null)
5278             {
5279                 ChildRemovedEventArgs e = new ChildRemovedEventArgs
5280                 {
5281                     Removed = child
5282                 };
5283                 ChildRemoved(this, e);
5284             }
5285         }
5286
5287         /// <summary>
5288         /// Removes the layout from this View.
5289         /// </summary>
5290         internal void ResetLayout()
5291         {
5292             _layout = null;
5293         }
5294
5295         internal ResourceLoadingStatusType GetBackgroundResourceStatus()
5296         {
5297             return (ResourceLoadingStatusType)Interop.View.View_GetVisualResourceStatus(this.swigCPtr, Property.BACKGROUND);
5298         }
5299
5300         /// <summary>
5301         /// you can override it to clean-up your own resources.
5302         /// </summary>
5303         /// <param name="type">DisposeTypes</param>
5304         /// <since_tizen> 3 </since_tizen>
5305         protected override void Dispose(DisposeTypes type)
5306         {
5307             if (disposed)
5308             {
5309                 return;
5310             }
5311
5312             //_mergedStyle = null;
5313
5314             if (type == DisposeTypes.Explicit)
5315             {
5316                 //Called by User
5317                 //Release your own managed resources here.
5318                 //You should release all of your own disposable objects here.
5319             }
5320
5321             //Release your own unmanaged resources here.
5322             //You should not access any managed member here except static instance.
5323             //because the execution order of Finalizes is non-deterministic.
5324             if (this != null)
5325             {
5326                 DisConnectFromSignals();
5327             }
5328
5329             if (swigCPtr.Handle != global::System.IntPtr.Zero)
5330             {
5331                 if (swigCMemOwn)
5332                 {
5333                     swigCMemOwn = false;
5334                     Interop.View.delete_View(swigCPtr);
5335                 }
5336                 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
5337             }
5338
5339             foreach (View view in Children)
5340             {
5341                 view.InternalParent = null;
5342             }
5343
5344             base.Dispose(type);
5345
5346         }
5347
5348         private void OnSize2DChanged(int width, int height)
5349         {
5350             Size2D = new Size2D(width, height);
5351         }
5352
5353         private void OnPosition2DChanged(int x, int y)
5354         {
5355             Position2D = new Position2D(x, y);
5356         }
5357
5358         private void DisConnectFromSignals()
5359         {
5360             // Save current CPtr.
5361             global::System.Runtime.InteropServices.HandleRef currentCPtr = swigCPtr;
5362
5363             // Use BaseHandle CPtr as current might have been deleted already in derived classes.
5364             swigCPtr = GetBaseHandleCPtrHandleRef;
5365
5366             if (_onRelayoutEventCallback != null)
5367             {
5368                 this.OnRelayoutSignal().Disconnect(_onRelayoutEventCallback);
5369             }
5370
5371             if (_offWindowEventCallback != null)
5372             {
5373                 this.OffWindowSignal().Disconnect(_offWindowEventCallback);
5374             }
5375
5376             if (_onWindowEventCallback != null)
5377             {
5378                 this.OnWindowSignal().Disconnect(_onWindowEventCallback);
5379             }
5380
5381             if (_wheelEventCallback != null)
5382             {
5383                 this.WheelEventSignal().Disconnect(_wheelEventCallback);
5384             }
5385
5386             if (_hoverEventCallback != null)
5387             {
5388                 this.HoveredSignal().Disconnect(_hoverEventCallback);
5389             }
5390
5391             if (_touchDataCallback != null)
5392             {
5393                 this.TouchSignal().Disconnect(_touchDataCallback);
5394             }
5395
5396             if (_ResourcesLoadedCallback != null)
5397             {
5398                 this.ResourcesLoadedSignal().Disconnect(_ResourcesLoadedCallback);
5399             }
5400
5401             if (_offWindowEventCallback != null)
5402             {
5403                 this.OffWindowSignal().Disconnect(_offWindowEventCallback);
5404             }
5405
5406             if (_onWindowEventCallback != null)
5407             {
5408                 this.OnWindowSignal().Disconnect(_onWindowEventCallback);
5409             }
5410
5411             if (_wheelEventCallback != null)
5412             {
5413                 this.WheelEventSignal().Disconnect(_wheelEventCallback);
5414             }
5415
5416             if (_hoverEventCallback != null)
5417             {
5418                 this.HoveredSignal().Disconnect(_hoverEventCallback);
5419             }
5420
5421             if (_touchDataCallback != null)
5422             {
5423                 this.TouchSignal().Disconnect(_touchDataCallback);
5424             }
5425
5426             if (_onRelayoutEventCallback != null)
5427             {
5428                 this.OnRelayoutSignal().Disconnect(_onRelayoutEventCallback);
5429             }
5430
5431             if (_keyCallback != null)
5432             {
5433                 this.KeyEventSignal().Disconnect(_keyCallback);
5434             }
5435
5436             if (_keyInputFocusLostCallback != null)
5437             {
5438                 this.KeyInputFocusLostSignal().Disconnect(_keyInputFocusLostCallback);
5439             }
5440
5441             if (_keyInputFocusGainedCallback != null)
5442             {
5443                 this.KeyInputFocusGainedSignal().Disconnect(_keyInputFocusGainedCallback);
5444             }
5445
5446             if (_backgroundResourceLoadedCallback != null)
5447             {
5448                 this.ResourcesLoadedSignal().Disconnect(_backgroundResourceLoadedCallback);
5449             }
5450
5451             if (_onWindowSendEventCallback != null)
5452             {
5453                 this.OnWindowSignal().Disconnect(_onWindowSendEventCallback);
5454             }
5455
5456             // BaseHandle CPtr is used in Registry and there is danger of deletion if we keep using it here.
5457             // Restore current CPtr.
5458             swigCPtr = currentCPtr;
5459         }
5460
5461         private void OnKeyInputFocusGained(IntPtr view)
5462         {
5463             if (_keyInputFocusGainedEventHandler != null)
5464             {
5465                 _keyInputFocusGainedEventHandler(this, null);
5466             }
5467         }
5468
5469         private void OnKeyInputFocusLost(IntPtr view)
5470         {
5471             if (_keyInputFocusLostEventHandler != null)
5472             {
5473                 _keyInputFocusLostEventHandler(this, null);
5474             }
5475         }
5476
5477         private bool OnKeyEvent(IntPtr view, IntPtr keyEvent)
5478         {
5479             if (keyEvent == global::System.IntPtr.Zero)
5480             {
5481                 NUILog.Error("keyEvent should not be null!");
5482                 return true;
5483             }
5484
5485             KeyEventArgs e = new KeyEventArgs();
5486
5487             bool result = false;
5488
5489             e.Key = Tizen.NUI.Key.GetKeyFromPtr(keyEvent);
5490
5491             if (_keyEventHandler != null)
5492             {
5493                 Delegate[] delegateList = _keyEventHandler.GetInvocationList();
5494
5495                 // Oring the result of each callback.
5496                 foreach (EventHandlerWithReturnType<object, KeyEventArgs, bool> del in delegateList)
5497                 {
5498                     result |= del(this, e);
5499                 }
5500             }
5501
5502             return result;
5503         }
5504
5505         // Callback for View OnRelayout signal
5506         private void OnRelayout(IntPtr data)
5507         {
5508             if (_onRelayoutEventHandler != null)
5509             {
5510                 _onRelayoutEventHandler(this, null);
5511             }
5512         }
5513
5514         // Callback for View TouchSignal
5515         private bool OnTouch(IntPtr view, IntPtr touchData)
5516         {
5517             if (touchData == global::System.IntPtr.Zero)
5518             {
5519                 NUILog.Error("touchData should not be null!");
5520                 return true;
5521             }
5522
5523             TouchEventArgs e = new TouchEventArgs();
5524
5525             e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
5526
5527             if (_touchDataEventHandler != null)
5528             {
5529                 return _touchDataEventHandler(this, e);
5530             }
5531             return false;
5532         }
5533
5534         // Callback for View Hover signal
5535         private bool OnHoverEvent(IntPtr view, IntPtr hoverEvent)
5536         {
5537             if (hoverEvent == global::System.IntPtr.Zero)
5538             {
5539                 NUILog.Error("hoverEvent should not be null!");
5540                 return true;
5541             }
5542
5543             HoverEventArgs e = new HoverEventArgs();
5544
5545             e.Hover = Tizen.NUI.Hover.GetHoverFromPtr(hoverEvent);
5546
5547             if (_hoverEventHandler != null)
5548             {
5549                 return _hoverEventHandler(this, e);
5550             }
5551             return false;
5552         }
5553
5554         // Callback for View Wheel signal
5555         private bool OnWheelEvent(IntPtr view, IntPtr wheelEvent)
5556         {
5557             if (wheelEvent == global::System.IntPtr.Zero)
5558             {
5559                 NUILog.Error("wheelEvent should not be null!");
5560                 return true;
5561             }
5562
5563             WheelEventArgs e = new WheelEventArgs();
5564
5565             e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent);
5566
5567             if (_wheelEventHandler != null)
5568             {
5569                 return _wheelEventHandler(this, e);
5570             }
5571             return false;
5572         }
5573
5574         // Callback for View OnWindow signal
5575         private void OnWindow(IntPtr data)
5576         {
5577             if (_onWindowEventHandler != null)
5578             {
5579                 _onWindowEventHandler(this, null);
5580             }
5581         }
5582
5583         // Callback for View OffWindow signal
5584         private void OffWindow(IntPtr data)
5585         {
5586             if (_offWindowEventHandler != null)
5587             {
5588                 _offWindowEventHandler(this, null);
5589             }
5590         }
5591
5592         // Callback for View visibility change signal
5593         private void OnVisibilityChanged(IntPtr data, bool visibility, VisibilityChangeType type)
5594         {
5595             VisibilityChangedEventArgs e = new VisibilityChangedEventArgs();
5596             if (data != null)
5597             {
5598                 e.View = Registry.GetManagedBaseHandleFromNativePtr(data) as View;
5599             }
5600             e.Visibility = visibility;
5601             e.Type = type;
5602
5603             if (_visibilityChangedEventHandler != null)
5604             {
5605                 _visibilityChangedEventHandler(this, e);
5606             }
5607         }
5608
5609         // Callback for View layout direction change signal
5610         private void OnLayoutDirectionChanged(IntPtr data, ViewLayoutDirectionType type)
5611         {
5612             LayoutDirectionChangedEventArgs e = new LayoutDirectionChangedEventArgs();
5613             if (data != null)
5614             {
5615                 e.View = Registry.GetManagedBaseHandleFromNativePtr(data) as View;
5616             }
5617             e.Type = type;
5618
5619             if (_layoutDirectionChangedEventHandler != null)
5620             {
5621                 _layoutDirectionChangedEventHandler(this, e);
5622             }
5623         }
5624
5625         private void OnResourcesLoaded(IntPtr view)
5626         {
5627             if (_resourcesLoadedEventHandler != null)
5628             {
5629                 _resourcesLoadedEventHandler(this, null);
5630             }
5631         }
5632
5633         private View ConvertIdToView(uint id)
5634         {
5635             View view = GetParent()?.FindCurrentChildById(id);
5636
5637             //If we can't find the parent's children, find in the top layer.
5638             if (!view) 
5639             {
5640                 Container parent = GetParent();
5641                 while ((parent is View) && (parent != null))
5642                 {
5643                     parent = parent.GetParent();
5644                     if (parent is Layer)
5645                     {
5646                         view = parent.FindCurrentChildById(id);
5647                         break;
5648                     }
5649                 }
5650             }
5651
5652             return view;
5653         }
5654
5655         private void OnBackgroundResourceLoaded(IntPtr view)
5656         {
5657             BackgroundResourceLoadedEventArgs e = new BackgroundResourceLoadedEventArgs();
5658             e.Status = (ResourceLoadingStatusType)Interop.View.View_GetVisualResourceStatus(this.swigCPtr, Property.BACKGROUND);
5659
5660             if (_backgroundResourceLoadedEventHandler != null)
5661             {
5662                 _backgroundResourceLoadedEventHandler(this, e);
5663             }
5664         }
5665
5666         /// <summary>
5667         /// Event argument passed through the ChildAdded event.
5668         /// </summary>
5669         /// <since_tizen> 5 </since_tizen>
5670         public class ChildAddedEventArgs : EventArgs
5671         {
5672             /// <summary>
5673             /// Added child view at moment.
5674             /// </summary>
5675             /// <since_tizen> 5 </since_tizen>
5676             public View Added { get; set; }
5677         }
5678
5679         /// <summary>
5680         /// Event argument passed through the ChildRemoved event.
5681         /// </summary>
5682         /// <since_tizen> 5 </since_tizen>
5683         public class ChildRemovedEventArgs : EventArgs
5684         {
5685             /// <summary>
5686             /// Removed child view at moment.
5687             /// </summary>
5688             /// <since_tizen> 5 </since_tizen>
5689             public View Removed { get; set; }
5690         }
5691
5692         /// <summary>
5693         /// Event arguments that passed via the KeyEvent signal.
5694         /// </summary>
5695         /// <since_tizen> 3 </since_tizen>
5696         public class KeyEventArgs : EventArgs
5697         {
5698             private Key _key;
5699
5700             /// <summary>
5701             /// Key - is the key sent to the view.
5702             /// </summary>
5703             /// <since_tizen> 3 </since_tizen>
5704             public Key Key
5705             {
5706                 get
5707                 {
5708                     return _key;
5709                 }
5710                 set
5711                 {
5712                     _key = value;
5713                 }
5714             }
5715         }
5716
5717         /// <summary>
5718         /// Event arguments that passed via the touch signal.
5719         /// </summary>
5720         /// <since_tizen> 3 </since_tizen>
5721         public class TouchEventArgs : EventArgs
5722         {
5723             private Touch _touch;
5724
5725             /// <summary>
5726             /// Touch - contains the information of touch points.
5727             /// </summary>
5728             /// <since_tizen> 3 </since_tizen>
5729             public Touch Touch
5730             {
5731                 get
5732                 {
5733                     return _touch;
5734                 }
5735                 set
5736                 {
5737                     _touch = value;
5738                 }
5739             }
5740         }
5741
5742         /// <summary>
5743         /// Event arguments that passed via the hover signal.
5744         /// </summary>
5745         /// <since_tizen> 3 </since_tizen>
5746         public class HoverEventArgs : EventArgs
5747         {
5748             private Hover _hover;
5749
5750             /// <summary>
5751             /// Hover - contains touch points that represent the points that are currently being hovered or the points where a hover has stopped.
5752             /// </summary>
5753             /// <since_tizen> 3 </since_tizen>
5754             public Hover Hover
5755             {
5756                 get
5757                 {
5758                     return _hover;
5759                 }
5760                 set
5761                 {
5762                     _hover = value;
5763                 }
5764             }
5765         }
5766
5767         /// <summary>
5768         /// Event arguments that passed via the wheel signal.
5769         /// </summary>
5770         /// <since_tizen> 3 </since_tizen>
5771         public class WheelEventArgs : EventArgs
5772         {
5773             private Wheel _wheel;
5774
5775             /// <summary>
5776             /// WheelEvent - store a wheel rolling type: MOUSE_WHEEL or CUSTOM_WHEEL.
5777             /// </summary>
5778             /// <since_tizen> 3 </since_tizen>
5779             public Wheel Wheel
5780             {
5781                 get
5782                 {
5783                     return _wheel;
5784                 }
5785                 set
5786                 {
5787                     _wheel = value;
5788                 }
5789             }
5790         }
5791
5792         /// <summary>
5793         /// Event arguments of visibility changed.
5794         /// </summary>
5795         /// <since_tizen> 3 </since_tizen>
5796         public class VisibilityChangedEventArgs : EventArgs
5797         {
5798             private View _view;
5799             private bool _visibility;
5800             private VisibilityChangeType _type;
5801
5802             /// <summary>
5803             /// The view, or child of view, whose visibility has changed.
5804             /// </summary>
5805             /// <since_tizen> 3 </since_tizen>
5806             public View View
5807             {
5808                 get
5809                 {
5810                     return _view;
5811                 }
5812                 set
5813                 {
5814                     _view = value;
5815                 }
5816             }
5817
5818             /// <summary>
5819             /// Whether the view is now visible or not.
5820             /// </summary>
5821             /// <since_tizen> 3 </since_tizen>
5822             public bool Visibility
5823             {
5824                 get
5825                 {
5826                     return _visibility;
5827                 }
5828                 set
5829                 {
5830                     _visibility = value;
5831                 }
5832             }
5833
5834             /// <summary>
5835             /// Whether the view's visible property has changed or a parent's.
5836             /// </summary>
5837             /// <since_tizen> 3 </since_tizen>
5838             public VisibilityChangeType Type
5839             {
5840                 get
5841                 {
5842                     return _type;
5843                 }
5844                 set
5845                 {
5846                     _type = value;
5847                 }
5848             }
5849         }
5850
5851         /// <summary>
5852         /// Event arguments of layout direction changed.
5853         /// </summary>
5854         /// <since_tizen> 4 </since_tizen>
5855         public class LayoutDirectionChangedEventArgs : EventArgs
5856         {
5857             private View _view;
5858             private ViewLayoutDirectionType _type;
5859
5860             /// <summary>
5861             /// The view, or child of view, whose layout direction has changed.
5862             /// </summary>
5863             /// <since_tizen> 4 </since_tizen>
5864             public View View
5865             {
5866                 get
5867                 {
5868                     return _view;
5869                 }
5870                 set
5871                 {
5872                     _view = value;
5873                 }
5874             }
5875
5876             /// <summary>
5877             /// Whether the view's layout direction property has changed or a parent's.
5878             /// </summary>
5879             /// <since_tizen> 4 </since_tizen>
5880             public ViewLayoutDirectionType Type
5881             {
5882                 get
5883                 {
5884                     return _type;
5885                 }
5886                 set
5887                 {
5888                     _type = value;
5889                 }
5890             }
5891         }
5892
5893
5894         private Dictionary<string, Transition> transDictionary = new Dictionary<string, Transition>();
5895
5896         /// This will be public opened in tizen_next after ACR done. Before ACR, need to be hidden as inhouse API.
5897         [EditorBrowsable(EditorBrowsableState.Never)]
5898         public Transition GetTransition(string transitionName)
5899         {
5900             Transition trans = null;
5901             transDictionary.TryGetValue(transitionName, out trans);
5902             return trans;
5903         }
5904
5905         private void LoadTransitions()
5906         {
5907             foreach (string str in transitionNames)
5908             {
5909                 string resourceName = str + ".xaml";
5910                 Transition trans = null;
5911
5912                 string resource = Tizen.Applications.Application.Current.DirectoryInfo.Resource;
5913
5914                 string likelyResourcePath = resource + "animation/" + resourceName;
5915
5916                 if (File.Exists(likelyResourcePath))
5917                 {
5918                     trans = Extensions.LoadObject<Transition>(likelyResourcePath);
5919                 }
5920                 if (trans)
5921                 {
5922                     transDictionary.Add(trans.Name, trans);
5923                 }
5924             }
5925         }
5926
5927         /// This will be public opened in tizen_next after ACR done. Before ACR, need to be hidden as inhouse API.
5928         [EditorBrowsable(EditorBrowsableState.Never)]
5929         public string[] TransitionNames
5930         {
5931             get
5932             {
5933                 return transitionNames;
5934             }
5935             set
5936             {
5937                 transitionNames = value;
5938                 LoadTransitions();
5939             }
5940         }
5941         private string[] transitionNames;
5942
5943         internal class BackgroundResourceLoadedEventArgs : EventArgs
5944         {
5945             private ResourceLoadingStatusType status = ResourceLoadingStatusType.Invalid;
5946             public ResourceLoadingStatusType Status
5947             {
5948                 get
5949                 {
5950                     return status;
5951                 }
5952                 set
5953                 {
5954                     status = value;
5955                 }
5956             }
5957         }
5958
5959         internal class Property
5960         {
5961             internal static readonly int TOOLTIP = Interop.ViewProperty.View_Property_TOOLTIP_get();
5962             internal static readonly int STATE = Interop.ViewProperty.View_Property_STATE_get();
5963             internal static readonly int SUB_STATE = Interop.ViewProperty.View_Property_SUB_STATE_get();
5964             internal static readonly int LEFT_FOCUSABLE_VIEW_ID = Interop.ViewProperty.View_Property_LEFT_FOCUSABLE_ACTOR_ID_get();
5965             internal static readonly int RIGHT_FOCUSABLE_VIEW_ID = Interop.ViewProperty.View_Property_RIGHT_FOCUSABLE_ACTOR_ID_get();
5966             internal static readonly int UP_FOCUSABLE_VIEW_ID = Interop.ViewProperty.View_Property_UP_FOCUSABLE_ACTOR_ID_get();
5967             internal static readonly int DOWN_FOCUSABLE_VIEW_ID = Interop.ViewProperty.View_Property_DOWN_FOCUSABLE_ACTOR_ID_get();
5968             internal static readonly int STYLE_NAME = Interop.ViewProperty.View_Property_STYLE_NAME_get();
5969             internal static readonly int BACKGROUND = Interop.ViewProperty.View_Property_BACKGROUND_get();
5970             internal static readonly int SIBLING_ORDER = Interop.ActorProperty.Actor_Property_SIBLING_ORDER_get();
5971             internal static readonly int OPACITY = Interop.ActorProperty.Actor_Property_OPACITY_get();
5972             internal static readonly int SCREEN_POSITION = Interop.ActorProperty.Actor_Property_SCREEN_POSITION_get();
5973             internal static readonly int POSITION_USES_ANCHOR_POINT = Interop.ActorProperty.Actor_Property_POSITION_USES_ANCHOR_POINT_get();
5974             internal static readonly int PARENT_ORIGIN = Interop.ActorProperty.Actor_Property_PARENT_ORIGIN_get();
5975             internal static readonly int PARENT_ORIGIN_X = Interop.ActorProperty.Actor_Property_PARENT_ORIGIN_X_get();
5976             internal static readonly int PARENT_ORIGIN_Y = Interop.ActorProperty.Actor_Property_PARENT_ORIGIN_Y_get();
5977             internal static readonly int PARENT_ORIGIN_Z = Interop.ActorProperty.Actor_Property_PARENT_ORIGIN_Z_get();
5978             internal static readonly int ANCHOR_POINT = Interop.ActorProperty.Actor_Property_ANCHOR_POINT_get();
5979             internal static readonly int ANCHOR_POINT_X = Interop.ActorProperty.Actor_Property_ANCHOR_POINT_X_get();
5980             internal static readonly int ANCHOR_POINT_Y = Interop.ActorProperty.Actor_Property_ANCHOR_POINT_Y_get();
5981             internal static readonly int ANCHOR_POINT_Z = Interop.ActorProperty.Actor_Property_ANCHOR_POINT_Z_get();
5982             internal static readonly int SIZE = Interop.ActorProperty.Actor_Property_SIZE_get();
5983             internal static readonly int SIZE_WIDTH = Interop.ActorProperty.Actor_Property_SIZE_WIDTH_get();
5984             internal static readonly int SIZE_HEIGHT = Interop.ActorProperty.Actor_Property_SIZE_HEIGHT_get();
5985             internal static readonly int SIZE_DEPTH = Interop.ActorProperty.Actor_Property_SIZE_DEPTH_get();
5986             internal static readonly int POSITION = Interop.ActorProperty.Actor_Property_POSITION_get();
5987             internal static readonly int POSITION_X = Interop.ActorProperty.Actor_Property_POSITION_X_get();
5988             internal static readonly int POSITION_Y = Interop.ActorProperty.Actor_Property_POSITION_Y_get();
5989             internal static readonly int POSITION_Z = Interop.ActorProperty.Actor_Property_POSITION_Z_get();
5990             internal static readonly int WORLD_POSITION = Interop.ActorProperty.Actor_Property_WORLD_POSITION_get();
5991             internal static readonly int WORLD_POSITION_X = Interop.ActorProperty.Actor_Property_WORLD_POSITION_X_get();
5992             internal static readonly int WORLD_POSITION_Y = Interop.ActorProperty.Actor_Property_WORLD_POSITION_Y_get();
5993             internal static readonly int WORLD_POSITION_Z = Interop.ActorProperty.Actor_Property_WORLD_POSITION_Z_get();
5994             internal static readonly int ORIENTATION = Interop.ActorProperty.Actor_Property_ORIENTATION_get();
5995             internal static readonly int WORLD_ORIENTATION = Interop.ActorProperty.Actor_Property_WORLD_ORIENTATION_get();
5996             internal static readonly int SCALE = Interop.ActorProperty.Actor_Property_SCALE_get();
5997             internal static readonly int SCALE_X = Interop.ActorProperty.Actor_Property_SCALE_X_get();
5998             internal static readonly int SCALE_Y = Interop.ActorProperty.Actor_Property_SCALE_Y_get();
5999             internal static readonly int SCALE_Z = Interop.ActorProperty.Actor_Property_SCALE_Z_get();
6000             internal static readonly int WORLD_SCALE = Interop.ActorProperty.Actor_Property_WORLD_SCALE_get();
6001             internal static readonly int VISIBLE = Interop.ActorProperty.Actor_Property_VISIBLE_get();
6002             internal static readonly int WORLD_COLOR = Interop.ActorProperty.Actor_Property_WORLD_COLOR_get();
6003             internal static readonly int WORLD_MATRIX = Interop.ActorProperty.Actor_Property_WORLD_MATRIX_get();
6004             internal static readonly int NAME = Interop.ActorProperty.Actor_Property_NAME_get();
6005             internal static readonly int SENSITIVE = Interop.ActorProperty.Actor_Property_SENSITIVE_get();
6006             internal static readonly int LEAVE_REQUIRED = Interop.ActorProperty.Actor_Property_LEAVE_REQUIRED_get();
6007             internal static readonly int INHERIT_ORIENTATION = Interop.ActorProperty.Actor_Property_INHERIT_ORIENTATION_get();
6008             internal static readonly int INHERIT_SCALE = Interop.ActorProperty.Actor_Property_INHERIT_SCALE_get();
6009             internal static readonly int DRAW_MODE = Interop.ActorProperty.Actor_Property_DRAW_MODE_get();
6010             internal static readonly int SIZE_MODE_FACTOR = Interop.ActorProperty.Actor_Property_SIZE_MODE_FACTOR_get();
6011             internal static readonly int WIDTH_RESIZE_POLICY = Interop.ActorProperty.Actor_Property_WIDTH_RESIZE_POLICY_get();
6012             internal static readonly int HEIGHT_RESIZE_POLICY = Interop.ActorProperty.Actor_Property_HEIGHT_RESIZE_POLICY_get();
6013             internal static readonly int SIZE_SCALE_POLICY = Interop.ActorProperty.Actor_Property_SIZE_SCALE_POLICY_get();
6014             internal static readonly int WIDTH_FOR_HEIGHT = Interop.ActorProperty.Actor_Property_WIDTH_FOR_HEIGHT_get();
6015             internal static readonly int HEIGHT_FOR_WIDTH = Interop.ActorProperty.Actor_Property_HEIGHT_FOR_WIDTH_get();
6016             internal static readonly int MINIMUM_SIZE = Interop.ActorProperty.Actor_Property_MINIMUM_SIZE_get();
6017             internal static readonly int MAXIMUM_SIZE = Interop.ActorProperty.Actor_Property_MAXIMUM_SIZE_get();
6018             internal static readonly int INHERIT_POSITION = Interop.ActorProperty.Actor_Property_INHERIT_POSITION_get();
6019             internal static readonly int CLIPPING_MODE = Interop.ActorProperty.Actor_Property_CLIPPING_MODE_get();
6020             internal static readonly int INHERIT_LAYOUT_DIRECTION = Interop.ActorProperty.Actor_Property_INHERIT_LAYOUT_DIRECTION_get();
6021             internal static readonly int LAYOUT_DIRECTION = Interop.ActorProperty.Actor_Property_LAYOUT_DIRECTION_get();
6022             internal static readonly int MARGIN = Interop.ViewProperty.View_Property_MARGIN_get();
6023             internal static readonly int PADDING = Interop.ViewProperty.View_Property_PADDING_get();
6024         }
6025     }
6026 }