[NUI] Made the value of Size be consistent with Specification (#1646)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / BaseComponents / ViewBindableProperty.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
18 using System.ComponentModel;
19 using Tizen.NUI.Binding;
20
21 namespace Tizen.NUI.BaseComponents
22 {
23     /// <summary>
24     /// View is the base class for all views.
25     /// </summary>
26     /// <since_tizen> 3 </since_tizen>
27     public partial class View
28     {
29         /// <summary>
30         /// StyleNameProperty
31         /// </summary>
32         [EditorBrowsable(EditorBrowsableState.Never)]
33         public static readonly BindableProperty StyleNameProperty = BindableProperty.Create("StyleName", typeof(string), typeof(View), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
34         {
35             var view = (View)bindable;
36             if (newValue != null)
37             {
38                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.STYLE_NAME, new Tizen.NUI.PropertyValue((string)newValue));
39             }
40         },
41         defaultValueCreator: (bindable) =>
42         {
43             var view = (View)bindable;
44             string temp;
45             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.STYLE_NAME).Get(out temp);
46             return temp;
47         });
48
49         /// <summary>
50         /// BackgroundColorProperty
51         /// </summary>
52         [EditorBrowsable(EditorBrowsableState.Never)]
53         public static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create("BackgroundColor", typeof(Color), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
54         {
55             var view = (View)bindable;
56
57             if (newValue != null)
58             {
59                 if (view.backgroundExtraData == null)
60                 {
61                     Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new PropertyValue((Color)newValue));
62                     return;
63                 }
64
65                 PropertyMap map = new PropertyMap();
66
67                 map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Color))
68                    .Add(ColorVisualProperty.MixColor, new PropertyValue((Color)newValue))
69                    .Add(Visual.Property.CornerRadius, new PropertyValue(view.backgroundExtraData.CornerRadius));
70
71                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new PropertyValue(map));
72             }
73         },
74         defaultValueCreator: (bindable) =>
75         {
76             var view = (View)bindable;
77             Color backgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
78
79             Tizen.NUI.PropertyMap background = view.Background;
80             int visualType = 0;
81             background.Find(Visual.Property.Type)?.Get(out visualType);
82             if (visualType == (int)Visual.Type.Color)
83             {
84                 background.Find(ColorVisualProperty.MixColor)?.Get(backgroundColor);
85             }
86
87             return backgroundColor;
88         });
89
90         /// <summary>
91         /// ColorProperty
92         /// </summary>
93         [EditorBrowsable(EditorBrowsableState.Never)]
94         public static readonly BindableProperty ColorProperty = BindableProperty.Create("Color", typeof(Color), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
95         {
96             var view = (View)bindable;
97             if (newValue != null)
98             {
99                 view.SetColor((Color)newValue);
100             }
101         },
102         defaultValueCreator: (bindable) =>
103         {
104             var view = (View)bindable;
105             Color color = new Color(0.0f, 0.0f, 0.0f, 0.0f);
106             view.GetProperty(Interop.ActorProperty.Actor_Property_COLOR_get()).Get(color);
107             return color;
108         });
109
110         /// <summary> BackgroundImageProperty </summary>
111         [EditorBrowsable(EditorBrowsableState.Never)]
112         public static readonly BindableProperty BackgroundImageProperty = BindableProperty.Create("BackgroundImage", typeof(string), typeof(View), default(string), propertyChanged: (bindable, oldValue, newValue) =>
113         {
114             var view = (View)bindable;
115             if (newValue != null)
116             {
117                 string url = (string)newValue;
118
119                 if (string.IsNullOrEmpty(url))
120                 {
121                     // Clear background
122                     Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new PropertyValue());
123                     return;
124                 }
125
126                 if (view.backgroundExtraData == null)
127                 {
128                     Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new PropertyValue(url));
129                     view.BackgroundImageSynchronosLoading = view._backgroundImageSynchronosLoading;
130
131                     return;
132                 }
133
134                 PropertyMap map = new PropertyMap();
135
136                 map.Add(ImageVisualProperty.URL, new PropertyValue(url))
137                    .Add(Visual.Property.CornerRadius, new PropertyValue(view.backgroundExtraData.CornerRadius))
138                    .Add(ImageVisualProperty.SynchronousLoading, new PropertyValue(view._backgroundImageSynchronosLoading));
139                 
140                 if (view.backgroundExtraData.BackgroundImageBorder != null)
141                 {
142                     map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch))
143                        .Add(NpatchImageVisualProperty.Border, new PropertyValue(view.backgroundExtraData.BackgroundImageBorder));
144                 }
145                 else
146                 {
147                     map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
148                 }
149
150                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new PropertyValue(map));
151             }
152         },
153         defaultValueCreator: (bindable) =>
154         {
155             var view = (View)bindable;
156             string backgroundImage = "";
157
158             Tizen.NUI.PropertyMap background = view.Background;
159             int visualType = 0;
160             background.Find(Visual.Property.Type)?.Get(out visualType);
161             if ((visualType == (int)Visual.Type.Image) || (visualType == (int)Visual.Type.NPatch))
162             {
163                 background.Find(ImageVisualProperty.URL)?.Get(out backgroundImage);
164             }
165
166             return backgroundImage;
167         });
168         /// <summary>BackgroundImageBorderProperty</summary>
169         [EditorBrowsable(EditorBrowsableState.Never)]
170         public static readonly BindableProperty BackgroundImageBorderProperty = BindableProperty.Create(nameof(BackgroundImageBorder), typeof(Rectangle), typeof(View), default(Rectangle), propertyChanged: (bindable, oldValue, newValue) =>
171         {
172             var view = (View)bindable;
173
174             bool isEmptyValue = Rectangle.IsNullOrZero((Rectangle)newValue);
175
176             var backgroundImageBorder = isEmptyValue ? null : (Rectangle)newValue;
177
178             (view.backgroundExtraData ?? (view.backgroundExtraData = new BackgroundExtraData())).BackgroundImageBorder = backgroundImageBorder;
179
180             if (isEmptyValue)
181             {
182                 return;
183             }
184
185             PropertyMap map = view.Background;
186
187             if (map.Empty())
188             {
189                 return;
190             }
191
192             map[NpatchImageVisualProperty.Border] = new PropertyValue(backgroundImageBorder);
193
194             int visualType = 0;
195
196             map.Find(Visual.Property.Type)?.Get(out visualType);
197
198             if (visualType == (int)Visual.Type.Image)
199             {
200                 map[Visual.Property.Type] = new PropertyValue((int)Visual.Type.NPatch);
201             }
202
203             Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new PropertyValue(map));
204
205         },
206         defaultValueCreator: (bindable) =>
207         {
208             var view = (View)bindable;
209
210             return view.backgroundExtraData?.BackgroundImageBorder;
211         });
212         /// <summary>
213         /// BackgroundProperty
214         /// </summary>
215         [EditorBrowsable(EditorBrowsableState.Never)]
216         public static readonly BindableProperty BackgroundProperty = BindableProperty.Create("Background", typeof(PropertyMap), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
217         {
218             var view = (View)bindable;
219             if (newValue != null)
220             {
221                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.BACKGROUND, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
222
223                 view.backgroundExtraData = null;
224             }
225         },
226         defaultValueCreator: (bindable) =>
227         {
228             var view = (View)bindable;
229             Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
230             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.BACKGROUND).Get(temp);
231             return temp;
232         });
233
234         /// <summary>
235         /// StateProperty
236         /// </summary>
237         [EditorBrowsable(EditorBrowsableState.Never)]
238         public static readonly BindableProperty StateProperty = BindableProperty.Create("State", typeof(States), typeof(View), States.Normal, propertyChanged: (bindable, oldValue, newValue) =>
239         {
240             var view = (View)bindable;
241             if (newValue != null)
242             {
243                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.STATE, new Tizen.NUI.PropertyValue((int)newValue));
244             }
245         },
246         defaultValueCreator: (bindable) =>
247         {
248             var view = (View)bindable;
249             int temp = 0;
250             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.STATE).Get(out temp) == false)
251             {
252                 NUILog.Error("State get error!");
253             }
254             switch (temp)
255             {
256                 case 0: return States.Normal;
257                 case 1: return States.Focused;
258                 case 2: return States.Disabled;
259                 default: return States.Normal;
260             }
261         });
262
263         /// <summary>
264         /// SubStateProperty
265         /// </summary>
266         [EditorBrowsable(EditorBrowsableState.Never)]
267         public static readonly BindableProperty SubStateProperty = BindableProperty.Create("SubState", typeof(States), typeof(View), States.Normal, propertyChanged: (bindable, oldValue, newValue) =>
268         {
269             var view = (View)bindable;
270             string valueToString = "";
271             if (newValue != null)
272             {
273                 valueToString = ((States)newValue).GetDescription<States>();
274                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SUB_STATE, new Tizen.NUI.PropertyValue(valueToString));
275             }
276         },
277         defaultValueCreator: (bindable) =>
278         {
279             var view = (View)bindable;
280             string temp;
281             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SUB_STATE).Get(out temp) == false)
282             {
283                 NUILog.Error("subState get error!");
284             }
285             return temp.GetValueByDescription<States>();
286         });
287
288         /// <summary>
289         /// TooltipProperty
290         /// </summary>
291         [EditorBrowsable(EditorBrowsableState.Never)]
292         public static readonly BindableProperty TooltipProperty = BindableProperty.Create("Tooltip", typeof(PropertyMap), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
293         {
294             var view = (View)bindable;
295             if (newValue != null)
296             {
297                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.TOOLTIP, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
298             }
299         },
300         defaultValueCreator: (bindable) =>
301         {
302             var view = (View)bindable;
303             Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
304             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.TOOLTIP).Get(temp);
305             return temp;
306         });
307
308         /// <summary>
309         /// FlexProperty
310         /// </summary>
311         [EditorBrowsable(EditorBrowsableState.Never)]
312         public static readonly BindableProperty FlexProperty = BindableProperty.Create("Flex", 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, FlexContainer.ChildProperty.FLEX, 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, FlexContainer.ChildProperty.FLEX).Get(out temp);
325             return temp;
326         });
327
328         /// <summary>
329         /// AlignSelfProperty
330         /// </summary>
331         [EditorBrowsable(EditorBrowsableState.Never)]
332         public static readonly BindableProperty AlignSelfProperty = BindableProperty.Create("AlignSelf", typeof(int), typeof(View), default(int), propertyChanged: (bindable, oldValue, newValue) =>
333         {
334             var view = (View)bindable;
335             if (newValue != null)
336             {
337                 Tizen.NUI.Object.SetProperty(view.swigCPtr, FlexContainer.ChildProperty.ALIGN_SELF, new Tizen.NUI.PropertyValue((int)newValue));
338             }
339         },
340         defaultValueCreator: (bindable) =>
341         {
342             var view = (View)bindable;
343             int temp = 0;
344             Tizen.NUI.Object.GetProperty(view.swigCPtr, FlexContainer.ChildProperty.ALIGN_SELF).Get(out temp);
345             return temp;
346         });
347
348         /// <summary>
349         /// FlexMarginProperty
350         /// </summary>
351         [EditorBrowsable(EditorBrowsableState.Never)]
352         public static readonly BindableProperty FlexMarginProperty = BindableProperty.Create("FlexMargin", typeof(Vector4), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
353         {
354             var view = (View)bindable;
355             if (newValue != null)
356             {
357                 Tizen.NUI.Object.SetProperty(view.swigCPtr, FlexContainer.ChildProperty.FLEX_MARGIN, new Tizen.NUI.PropertyValue((Vector4)newValue));
358             }
359         },
360         defaultValueCreator: (bindable) =>
361         {
362             var view = (View)bindable;
363             Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
364             Tizen.NUI.Object.GetProperty(view.swigCPtr, FlexContainer.ChildProperty.FLEX_MARGIN).Get(temp);
365             return temp;
366         });
367
368         /// <summary>
369         /// CellIndexProperty
370         /// </summary>
371         [EditorBrowsable(EditorBrowsableState.Never)]
372         public static readonly BindableProperty CellIndexProperty = BindableProperty.Create("CellIndex", typeof(Vector2), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
373         {
374             var view = (View)bindable;
375             if (newValue != null)
376             {
377                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.CELL_INDEX, new Tizen.NUI.PropertyValue((Vector2)newValue));
378             }
379         },
380         defaultValueCreator: (bindable) =>
381         {
382             var view = (View)bindable;
383             Vector2 temp = new Vector2(0.0f, 0.0f);
384             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.CELL_INDEX).Get(temp);
385             return temp;
386         });
387
388         /// <summary>
389         /// RowSpanProperty
390         /// </summary>
391         [EditorBrowsable(EditorBrowsableState.Never)]
392         public static readonly BindableProperty RowSpanProperty = BindableProperty.Create("RowSpan", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
393         {
394             var view = (View)bindable;
395             if (newValue != null)
396             {
397                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.ROW_SPAN, new Tizen.NUI.PropertyValue((float)newValue));
398             }
399         },
400         defaultValueCreator: (bindable) =>
401         {
402             var view = (View)bindable;
403             float temp = 0.0f;
404             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.ROW_SPAN).Get(out temp);
405             return temp;
406         });
407
408         /// <summary>
409         /// ColumnSpanProperty
410         /// </summary>
411         [EditorBrowsable(EditorBrowsableState.Never)]
412         public static readonly BindableProperty ColumnSpanProperty = BindableProperty.Create("ColumnSpan", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
413         {
414             var view = (View)bindable;
415             if (newValue != null)
416             {
417                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.COLUMN_SPAN, new Tizen.NUI.PropertyValue((float)newValue));
418             }
419         },
420         defaultValueCreator: (bindable) =>
421         {
422             var view = (View)bindable;
423             float temp = 0.0f;
424             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.COLUMN_SPAN).Get(out temp);
425             return temp;
426         });
427
428         /// <summary>
429         /// CellHorizontalAlignmentProperty
430         /// </summary>
431         [EditorBrowsable(EditorBrowsableState.Never)]
432         public static readonly BindableProperty CellHorizontalAlignmentProperty = BindableProperty.Create("CellHorizontalAlignment", typeof(HorizontalAlignmentType), typeof(View), HorizontalAlignmentType.Left, propertyChanged: (bindable, oldValue, newValue) =>
433         {
434             var view = (View)bindable;
435             string valueToString = "";
436
437             if (newValue != null)
438             {
439                 valueToString = ((HorizontalAlignmentType)newValue).GetDescription<HorizontalAlignmentType>();
440                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.CELL_HORIZONTAL_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
441             }
442         },
443         defaultValueCreator: (bindable) =>
444         {
445             var view = (View)bindable;
446             string temp;
447             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.CELL_HORIZONTAL_ALIGNMENT).Get(out temp) == false)
448             {
449                 NUILog.Error("CellHorizontalAlignment get error!");
450             }
451
452             return temp.GetValueByDescription<HorizontalAlignmentType>();
453         });
454
455         /// <summary>
456         /// CellVerticalAlignmentProperty
457         /// </summary>
458         [EditorBrowsable(EditorBrowsableState.Never)]
459         public static readonly BindableProperty CellVerticalAlignmentProperty = BindableProperty.Create("CellVerticalAlignment", typeof(VerticalAlignmentType), typeof(View), VerticalAlignmentType.Top, propertyChanged: (bindable, oldValue, newValue) =>
460         {
461             var view = (View)bindable;
462             string valueToString = "";
463
464             if (newValue != null)
465             {
466                 valueToString = ((VerticalAlignmentType)newValue).GetDescription<VerticalAlignmentType>();
467                 Tizen.NUI.Object.SetProperty(view.swigCPtr, TableView.ChildProperty.CELL_VERTICAL_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
468             }
469         },
470         defaultValueCreator: (bindable) =>
471         {
472             var view = (View)bindable;
473             string temp;
474             Tizen.NUI.Object.GetProperty(view.swigCPtr, TableView.ChildProperty.CELL_VERTICAL_ALIGNMENT).Get(out temp);
475             {
476                 NUILog.Error("CellVerticalAlignment get error!");
477             }
478
479             return temp.GetValueByDescription<VerticalAlignmentType>();
480         });
481
482         /// <summary>
483         /// "Please DO NOT use! This will be deprecated! Please use 'View Weight' instead of BindableProperty"
484         /// This needs to be hidden as inhouse API until all applications using it have been updated.  Do not make public.
485         /// </summary>
486         [EditorBrowsable(EditorBrowsableState.Never)]
487         public static readonly BindableProperty WeightProperty = BindableProperty.Create("Weight", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
488         {
489             var view = (View)bindable;
490             if (newValue != null)
491             {
492                 view.Weight = (float)newValue;
493             }
494         },
495
496         defaultValueCreator: (bindable) =>
497         {
498             var view = (View)bindable;
499             return view.Weight;
500         });
501
502         /// <summary>
503         /// LeftFocusableViewProperty
504         /// </summary>
505         [EditorBrowsable(EditorBrowsableState.Never)]
506         public static readonly BindableProperty LeftFocusableViewProperty = BindableProperty.Create(nameof(View.LeftFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
507         {
508             var view = (View)bindable;
509             if (newValue != null) { view.LeftFocusableViewId = (int)(newValue as View)?.GetId(); }
510             else { view.LeftFocusableViewId = -1; }
511         },
512         defaultValueCreator: (bindable) =>
513         {
514             var view = (View)bindable;
515             if (view.LeftFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.LeftFocusableViewId); }
516             return null;
517         });
518
519         /// <summary>
520         /// RightFocusableViewProperty
521         /// </summary>
522         [EditorBrowsable(EditorBrowsableState.Never)]
523         public static readonly BindableProperty RightFocusableViewProperty = BindableProperty.Create(nameof(View.RightFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
524         {
525             var view = (View)bindable;
526             if (newValue != null) { view.RightFocusableViewId = (int)(newValue as View)?.GetId(); }
527             else { view.RightFocusableViewId = -1; }
528         },
529         defaultValueCreator: (bindable) =>
530         {
531             var view = (View)bindable;
532             if (view.RightFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.RightFocusableViewId); }
533             return null;
534         });
535
536         /// <summary>
537         /// UpFocusableViewProperty
538         /// </summary>
539         [EditorBrowsable(EditorBrowsableState.Never)]
540         public static readonly BindableProperty UpFocusableViewProperty = BindableProperty.Create(nameof(View.UpFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
541         {
542             var view = (View)bindable;
543             if (newValue != null) { view.UpFocusableViewId = (int)(newValue as View)?.GetId(); }
544             else { view.UpFocusableViewId = -1; }
545         },
546         defaultValueCreator: (bindable) =>
547         {
548             var view = (View)bindable;
549             if (view.UpFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.UpFocusableViewId); }
550             return null;
551         });
552
553         /// <summary>
554         /// DownFocusableViewProperty
555         /// </summary>
556         [EditorBrowsable(EditorBrowsableState.Never)]
557         public static readonly BindableProperty DownFocusableViewProperty = BindableProperty.Create(nameof(View.DownFocusableView), typeof(View), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
558         {
559             var view = (View)bindable;
560             if (newValue != null) { view.DownFocusableViewId = (int)(newValue as View)?.GetId(); }
561             else { view.DownFocusableViewId = -1; }
562         },
563         defaultValueCreator: (bindable) =>
564         {
565             var view = (View)bindable;
566             if (view.DownFocusableViewId >= 0) { return view.ConvertIdToView((uint)view.DownFocusableViewId); }
567             return null;
568         });
569
570         /// <summary>
571         /// FocusableProperty
572         /// </summary>
573         [EditorBrowsable(EditorBrowsableState.Never)]
574         public static readonly BindableProperty FocusableProperty = BindableProperty.Create("Focusable", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
575         {
576             var view = (View)bindable;
577             if (newValue != null) { view.SetKeyboardFocusable((bool)newValue); }
578         },
579         defaultValueCreator: (bindable) =>
580         {
581             var view = (View)bindable;
582             return view.IsKeyboardFocusable();
583         });
584
585         /// <summary>
586         /// Size2DProperty
587         /// </summary>
588         [EditorBrowsable(EditorBrowsableState.Never)]
589         public static readonly BindableProperty Size2DProperty = BindableProperty.Create("Size2D", typeof(Size2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
590         {
591             var view = (View)bindable;
592             if (newValue != null)
593             {
594                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE, new Tizen.NUI.PropertyValue(new Size((Size2D)newValue)));
595             }
596         },
597         defaultValueCreator: (bindable) =>
598         {
599             var view = (View)bindable;
600             Size temp = new Size(0.0f, 0.0f, 0.0f);
601             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE).Get(temp);
602             Size2D size = new Size2D((int)temp.Width, (int)temp.Height);
603             return size;
604         });
605
606         /// <summary>
607         /// OpacityProperty
608         /// </summary>
609         [EditorBrowsable(EditorBrowsableState.Never)]
610         public static readonly BindableProperty OpacityProperty = BindableProperty.Create("Opacity", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
611         {
612             var view = (View)bindable;
613             if (newValue != null)
614             {
615                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.OPACITY, new Tizen.NUI.PropertyValue((float)newValue));
616             }
617         },
618         defaultValueCreator: (bindable) =>
619         {
620             var view = (View)bindable;
621             float temp = 0.0f;
622             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.OPACITY).Get(out temp);
623             return temp;
624         });
625
626         /// <summary>
627         /// Position2DProperty
628         /// </summary>
629         [EditorBrowsable(EditorBrowsableState.Never)]
630         public static readonly BindableProperty Position2DProperty = BindableProperty.Create("Position2D", typeof(Position2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
631         {
632             var view = (View)bindable;
633             if (newValue != null)
634             {
635                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION, new Tizen.NUI.PropertyValue(new Position((Position2D)newValue)));
636             }
637         },
638         defaultValueCreator: (bindable) =>
639         {
640             var view = (View)bindable;
641             Position temp = new Position(0.0f, 0.0f, 0.0f);
642             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION).Get(temp);
643             return new Position2D(temp);
644         });
645
646         /// <summary>
647         /// PositionUsesPivotPointProperty
648         /// </summary>
649         [EditorBrowsable(EditorBrowsableState.Never)]
650         public static readonly BindableProperty PositionUsesPivotPointProperty = BindableProperty.Create("PositionUsesPivotPoint", typeof(bool), typeof(View), true, propertyChanged: (bindable, oldValue, newValue) =>
651         {
652             var view = (View)bindable;
653             if (newValue != null)
654             {
655                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_USES_ANCHOR_POINT, new Tizen.NUI.PropertyValue((bool)newValue));
656             }
657         },
658         defaultValueCreator: (bindable) =>
659         {
660             var view = (View)bindable;
661             bool temp = false;
662             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_USES_ANCHOR_POINT).Get(out temp);
663             return temp;
664         });
665
666         /// <summary>
667         /// SiblingOrderProperty
668         /// </summary>
669         [EditorBrowsable(EditorBrowsableState.Never)]
670         public static readonly BindableProperty SiblingOrderProperty = BindableProperty.Create("SiblingOrder", typeof(int), typeof(View), default(int), propertyChanged: (bindable, oldValue, newValue) =>
671         {
672             var view = (View)bindable;
673             int value;
674             if (newValue != null)
675             {
676                 value = (int)newValue;
677                 if (value < 0)
678                 {
679                     NUILog.Error("SiblingOrder should be bigger than 0 or equal to 0.");
680                     return;
681                 }
682                 var siblings = view.GetParent()?.Children;
683                 if (siblings != null)
684                 {
685                     int currentOrder = siblings.IndexOf(view);
686                     if (value != currentOrder)
687                     {
688                         if (value == 0) { view.LowerToBottom(); }
689                         else if (value < siblings.Count - 1)
690                         {
691                             if (value > currentOrder) { view.RaiseAbove(siblings[value]); }
692                             else { view.LowerBelow(siblings[value]); }
693                         }
694                         else { view.RaiseToTop(); }
695                     }
696                 }
697             }
698         },
699         defaultValueCreator: (bindable) =>
700         {
701             var view = (View)bindable;
702             var parentChildren = view.GetParent()?.Children;
703             int currentOrder = 0;
704             if (parentChildren != null)
705             {
706                 currentOrder = parentChildren.IndexOf(view);
707
708                 if (currentOrder < 0) { return 0; }
709                 else if (currentOrder < parentChildren.Count) { return currentOrder; }
710             }
711
712             return 0;
713         });
714
715         /// <summary>
716         /// ParentOriginProperty
717         /// </summary>
718         [EditorBrowsable(EditorBrowsableState.Never)]
719         public static readonly BindableProperty ParentOriginProperty = BindableProperty.Create("ParentOrigin", typeof(Position), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
720         {
721             var view = (View)bindable;
722             if (newValue != null)
723             {
724                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.PARENT_ORIGIN, new Tizen.NUI.PropertyValue((Position)newValue));
725             }
726         },
727         defaultValueCreator: (bindable) =>
728         {
729             var view = (View)bindable;
730             Position temp = new Position(0.0f, 0.0f, 0.0f);
731             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.PARENT_ORIGIN).Get(temp);
732             return temp;
733         }
734         );
735
736         /// <summary>
737         /// PivotPointProperty
738         /// </summary>
739         [EditorBrowsable(EditorBrowsableState.Never)]
740         public static readonly BindableProperty PivotPointProperty = BindableProperty.Create("PivotPoint", typeof(Position), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
741         {
742             var view = (View)bindable;
743             if (newValue != null)
744             {
745                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.ANCHOR_POINT, new Tizen.NUI.PropertyValue((Position)newValue));
746             }
747         },
748         defaultValueCreator: (bindable) =>
749         {
750             var view = (View)bindable;
751             Position temp = new Position(0.0f, 0.0f, 0.0f);
752             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.ANCHOR_POINT).Get(temp);
753             return temp;
754         });
755
756         /// <summary>
757         /// SizeWidthProperty
758         /// </summary>
759         [EditorBrowsable(EditorBrowsableState.Never)]
760         public static readonly BindableProperty SizeWidthProperty = BindableProperty.Create("SizeWidth", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
761         {
762             var view = (View)bindable;
763             if (newValue != null)
764             {
765                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_WIDTH, new Tizen.NUI.PropertyValue((float)newValue));
766                 view.WidthSpecification = (int)System.Math.Ceiling((float)newValue);
767             }
768         },
769         defaultValueCreator: (bindable) =>
770         {
771             var view = (View)bindable;
772             float temp = 0.0f;
773             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_WIDTH).Get(out temp);
774             return temp;
775         });
776
777         /// <summary>
778         /// SizeHeightProperty
779         /// </summary>
780         [EditorBrowsable(EditorBrowsableState.Never)]
781         public static readonly BindableProperty SizeHeightProperty = BindableProperty.Create("SizeHeight", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
782         {
783             var view = (View)bindable;
784             if (newValue != null)
785             {
786                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_HEIGHT, new Tizen.NUI.PropertyValue((float)newValue));
787                 view.HeightSpecification = (int)System.Math.Ceiling((float)newValue);
788             }
789         },
790         defaultValueCreator: (bindable) =>
791         {
792             var view = (View)bindable;
793             float temp = 0.0f;
794             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_HEIGHT).Get(out temp);
795             return temp;
796         });
797
798         /// <summary>
799         /// PositionProperty
800         /// </summary>
801         [EditorBrowsable(EditorBrowsableState.Never)]
802         public static readonly BindableProperty PositionProperty = BindableProperty.Create("Position", typeof(Position), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
803         {
804             var view = (View)bindable;
805             if (newValue != null)
806             {
807                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION, new Tizen.NUI.PropertyValue((Position)newValue));
808             }
809         },
810         defaultValueCreator: (bindable) =>
811         {
812             var view = (View)bindable;
813             Position temp = new Position(0.0f, 0.0f, 0.0f);
814             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION).Get(temp);
815             return temp;
816         });
817
818         /// <summary>
819         /// PositionXProperty
820         /// </summary>
821         [EditorBrowsable(EditorBrowsableState.Never)]
822         public static readonly BindableProperty PositionXProperty = BindableProperty.Create("PositionX", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
823         {
824             var view = (View)bindable;
825             if (newValue != null)
826             {
827                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_X, new Tizen.NUI.PropertyValue((float)newValue));
828             }
829         },
830         defaultValueCreator: (bindable) =>
831         {
832             var view = (View)bindable;
833             float temp = 0.0f;
834             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_X).Get(out temp);
835             return temp;
836         });
837
838         /// <summary>
839         /// PositionYProperty
840         /// </summary>
841         [EditorBrowsable(EditorBrowsableState.Never)]
842         public static readonly BindableProperty PositionYProperty = BindableProperty.Create("PositionY", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
843         {
844             var view = (View)bindable;
845             if (newValue != null)
846             {
847                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_Y, new Tizen.NUI.PropertyValue((float)newValue));
848             }
849         },
850         defaultValueCreator: (bindable) =>
851         {
852             var view = (View)bindable;
853             float temp = 0.0f;
854             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_Y).Get(out temp);
855             return temp;
856         });
857
858         /// <summary>
859         /// PositionZProperty
860         /// </summary>
861         [EditorBrowsable(EditorBrowsableState.Never)]
862         public static readonly BindableProperty PositionZProperty = BindableProperty.Create("PositionZ", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
863         {
864             var view = (View)bindable;
865             if (newValue != null)
866             {
867                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.POSITION_Z, new Tizen.NUI.PropertyValue((float)newValue));
868             }
869         },
870         defaultValueCreator: (bindable) =>
871         {
872             var view = (View)bindable;
873             float temp = 0.0f;
874             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.POSITION_Z).Get(out temp);
875             return temp;
876         });
877
878         /// <summary>
879         /// OrientationProperty
880         /// </summary>
881         [EditorBrowsable(EditorBrowsableState.Never)]
882         public static readonly BindableProperty OrientationProperty = BindableProperty.Create("Orientation", typeof(Rotation), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
883         {
884             var view = (View)bindable;
885             if (newValue != null)
886             {
887                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.ORIENTATION, new Tizen.NUI.PropertyValue((Rotation)newValue));
888             }
889         },
890         defaultValueCreator: (bindable) =>
891         {
892             var view = (View)bindable;
893             Rotation temp = new Rotation();
894             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.ORIENTATION).Get(temp);
895             return temp;
896         });
897
898         /// <summary>
899         /// ScaleProperty
900         /// </summary>
901         [EditorBrowsable(EditorBrowsableState.Never)]
902         public static readonly BindableProperty ScaleProperty = BindableProperty.Create("Scale", typeof(Vector3), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
903         {
904             var view = (View)bindable;
905             if (newValue != null)
906             {
907                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE, new Tizen.NUI.PropertyValue((Vector3)newValue));
908             }
909         },
910         defaultValueCreator: (bindable) =>
911         {
912             var view = (View)bindable;
913             Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
914             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE).Get(temp);
915             return temp;
916         });
917
918         /// <summary>
919         /// ScaleXProperty
920         /// </summary>
921         [EditorBrowsable(EditorBrowsableState.Never)]
922         public static readonly BindableProperty ScaleXProperty = BindableProperty.Create("ScaleX", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
923         {
924             var view = (View)bindable;
925             if (newValue != null)
926             {
927                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE_X, new Tizen.NUI.PropertyValue((float)newValue));
928             }
929         },
930         defaultValueCreator: (bindable) =>
931         {
932             var view = (View)bindable;
933             float temp = 0.0f;
934             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE_X).Get(out temp);
935             return temp;
936         });
937
938         /// <summary>
939         /// ScaleYProperty
940         /// </summary>
941         [EditorBrowsable(EditorBrowsableState.Never)]
942         public static readonly BindableProperty ScaleYProperty = BindableProperty.Create("ScaleY", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
943         {
944             var view = (View)bindable;
945             if (newValue != null)
946             {
947                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE_Y, new Tizen.NUI.PropertyValue((float)newValue));
948             }
949         },
950         defaultValueCreator: (bindable) =>
951         {
952             var view = (View)bindable;
953             float temp = 0.0f;
954             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE_Y).Get(out temp);
955             return temp;
956         });
957
958         /// <summary>
959         /// ScaleZProperty
960         /// </summary>
961         [EditorBrowsable(EditorBrowsableState.Never)]
962         public static readonly BindableProperty ScaleZProperty = BindableProperty.Create("ScaleZ", typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
963         {
964             var view = (View)bindable;
965             if (newValue != null)
966             {
967                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SCALE_Z, new Tizen.NUI.PropertyValue((float)newValue));
968             }
969         },
970         defaultValueCreator: (bindable) =>
971         {
972             var view = (View)bindable;
973             float temp = 0.0f;
974             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SCALE_Z).Get(out temp);
975             return temp;
976         });
977
978         /// <summary>
979         /// NameProperty
980         /// </summary>
981         [EditorBrowsable(EditorBrowsableState.Never)]
982         public static readonly BindableProperty NameProperty = BindableProperty.Create("Name", typeof(string), typeof(View), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
983         {
984             var view = (View)bindable;
985             if (newValue != null)
986             {
987                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.NAME, new Tizen.NUI.PropertyValue((string)newValue));
988             }
989         },
990         defaultValueCreator: (bindable) =>
991         {
992             var view = (View)bindable;
993             string temp;
994             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.NAME).Get(out temp);
995             return temp;
996         });
997
998         /// <summary>
999         /// SensitiveProperty
1000         /// </summary>
1001         [EditorBrowsable(EditorBrowsableState.Never)]
1002         public static readonly BindableProperty SensitiveProperty = BindableProperty.Create("Sensitive", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1003         {
1004             var view = (View)bindable;
1005             if (newValue != null)
1006             {
1007                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SENSITIVE, new Tizen.NUI.PropertyValue((bool)newValue));
1008             }
1009         },
1010         defaultValueCreator: (bindable) =>
1011         {
1012             var view = (View)bindable;
1013             bool temp = false;
1014             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SENSITIVE).Get(out temp);
1015             return temp;
1016         });
1017
1018         /// <summary>
1019         /// LeaveRequiredProperty
1020         /// </summary>
1021         [EditorBrowsable(EditorBrowsableState.Never)]
1022         public static readonly BindableProperty LeaveRequiredProperty = BindableProperty.Create("LeaveRequired", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1023         {
1024             var view = (View)bindable;
1025             if (newValue != null)
1026             {
1027                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.LEAVE_REQUIRED, new Tizen.NUI.PropertyValue((bool)newValue));
1028             }
1029         },
1030         defaultValueCreator: (bindable) =>
1031         {
1032             var view = (View)bindable;
1033             bool temp = false;
1034             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.LEAVE_REQUIRED).Get(out temp);
1035             return temp;
1036         });
1037
1038         /// <summary>
1039         /// InheritOrientationProperty
1040         /// </summary>
1041         [EditorBrowsable(EditorBrowsableState.Never)]
1042         public static readonly BindableProperty InheritOrientationProperty = BindableProperty.Create("InheritOrientation", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1043         {
1044             var view = (View)bindable;
1045             if (newValue != null)
1046             {
1047                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_ORIENTATION, new Tizen.NUI.PropertyValue((bool)newValue));
1048             }
1049         },
1050         defaultValueCreator: (bindable) =>
1051         {
1052             var view = (View)bindable;
1053             bool temp = false;
1054             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_ORIENTATION).Get(out temp);
1055             return temp;
1056         });
1057
1058         /// <summary>
1059         /// InheritScaleProperty
1060         /// </summary>
1061         [EditorBrowsable(EditorBrowsableState.Never)]
1062         public static readonly BindableProperty InheritScaleProperty = BindableProperty.Create("InheritScale", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1063         {
1064             var view = (View)bindable;
1065             if (newValue != null)
1066             {
1067                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_SCALE, new Tizen.NUI.PropertyValue((bool)newValue));
1068             }
1069         },
1070         defaultValueCreator: (bindable) =>
1071         {
1072             var view = (View)bindable;
1073             bool temp = false;
1074             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_SCALE).Get(out temp);
1075             return temp;
1076         });
1077
1078         /// <summary>
1079         /// DrawModeProperty
1080         /// </summary>
1081         [EditorBrowsable(EditorBrowsableState.Never)]
1082         public static readonly BindableProperty DrawModeProperty = BindableProperty.Create("DrawMode", typeof(DrawModeType), typeof(View), DrawModeType.Normal, propertyChanged: (bindable, oldValue, newValue) =>
1083         {
1084             var view = (View)bindable;
1085             if (newValue != null)
1086             {
1087                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.DRAW_MODE, new Tizen.NUI.PropertyValue((int)newValue));
1088             }
1089         },
1090         defaultValueCreator: (bindable) =>
1091         {
1092             var view = (View)bindable;
1093             string temp;
1094             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.DRAW_MODE).Get(out temp) == false)
1095             {
1096                 NUILog.Error("DrawMode get error!");
1097             }
1098             return temp.GetValueByDescription<DrawModeType>();
1099         });
1100
1101         /// <summary>
1102         /// SizeModeFactorProperty
1103         /// </summary>
1104         [EditorBrowsable(EditorBrowsableState.Never)]
1105         public static readonly BindableProperty SizeModeFactorProperty = BindableProperty.Create("SizeModeFactor", typeof(Vector3), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1106         {
1107             var view = (View)bindable;
1108             if (newValue != null)
1109             {
1110                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_MODE_FACTOR, new Tizen.NUI.PropertyValue((Vector3)newValue));
1111             }
1112         },
1113         defaultValueCreator: (bindable) =>
1114         {
1115             var view = (View)bindable;
1116             Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
1117             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_MODE_FACTOR).Get(temp);
1118             return temp;
1119         });
1120
1121         /// <summary>
1122         /// WidthResizePolicyProperty
1123         /// </summary>
1124         [EditorBrowsable(EditorBrowsableState.Never)]
1125         public static readonly BindableProperty WidthResizePolicyProperty = BindableProperty.Create("WidthResizePolicy", typeof(ResizePolicyType), typeof(View), ResizePolicyType.Fixed, propertyChanged: (bindable, oldValue, newValue) =>
1126         {
1127             var view = (View)bindable;
1128             if (newValue != null)
1129             {
1130                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.WIDTH_RESIZE_POLICY, new Tizen.NUI.PropertyValue((int)newValue));
1131                 // Match ResizePolicy to new Layouting.
1132                 // Parent relative policies can not be mapped at this point as parent size unknown.
1133                 switch ((ResizePolicyType)newValue)
1134                 {
1135                     case ResizePolicyType.UseNaturalSize:
1136                         {
1137                             view.WidthSpecification = LayoutParamPolicies.WrapContent;
1138                             break;
1139                         }
1140                     case ResizePolicyType.FillToParent:
1141                         {
1142                             view.WidthSpecification = LayoutParamPolicies.MatchParent;
1143                             break;
1144                         }
1145                     case ResizePolicyType.FitToChildren:
1146                         {
1147                             view.WidthSpecification = LayoutParamPolicies.WrapContent;
1148                             break;
1149                         }
1150                     default:
1151                         break;
1152                 }
1153             }
1154         },
1155         defaultValueCreator: (bindable) =>
1156         {
1157             var view = (View)bindable;
1158             string temp;
1159             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.WIDTH_RESIZE_POLICY).Get(out temp) == false)
1160             {
1161                 NUILog.Error("WidthResizePolicy get error!");
1162             }
1163             return temp.GetValueByDescription<ResizePolicyType>();
1164         });
1165
1166         /// <summary>
1167         /// HeightResizePolicyProperty
1168         /// </summary>
1169         [EditorBrowsable(EditorBrowsableState.Never)]
1170         public static readonly BindableProperty HeightResizePolicyProperty = BindableProperty.Create("HeightResizePolicy", typeof(ResizePolicyType), typeof(View), ResizePolicyType.Fixed, propertyChanged: (bindable, oldValue, newValue) =>
1171         {
1172             var view = (View)bindable;
1173             if (newValue != null)
1174             {
1175                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.HEIGHT_RESIZE_POLICY, new Tizen.NUI.PropertyValue((int)newValue));
1176                 // Match ResizePolicy to new Layouting.
1177                 // Parent relative policies can not be mapped at this point as parent size unknown.
1178                 switch ((ResizePolicyType)newValue)
1179                 {
1180                     case ResizePolicyType.UseNaturalSize:
1181                         {
1182                             view.HeightSpecification = LayoutParamPolicies.WrapContent;
1183                             break;
1184                         }
1185                     case ResizePolicyType.FillToParent:
1186                         {
1187                             view.HeightSpecification = LayoutParamPolicies.MatchParent;
1188                             break;
1189                         }
1190                     case ResizePolicyType.FitToChildren:
1191                         {
1192                             view.HeightSpecification = LayoutParamPolicies.WrapContent;
1193                             break;
1194                         }
1195                     default:
1196                         break;
1197                 }
1198             }
1199         },
1200         defaultValueCreator: (bindable) =>
1201         {
1202             var view = (View)bindable;
1203             string temp;
1204             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.HEIGHT_RESIZE_POLICY).Get(out temp) == false)
1205             {
1206                 NUILog.Error("HeightResizePolicy get error!");
1207             }
1208             return temp.GetValueByDescription<ResizePolicyType>();
1209         });
1210
1211         /// <summary>
1212         /// SizeScalePolicyProperty
1213         /// </summary>
1214         [EditorBrowsable(EditorBrowsableState.Never)]
1215         public static readonly BindableProperty SizeScalePolicyProperty = BindableProperty.Create("SizeScalePolicy", typeof(SizeScalePolicyType), typeof(View), SizeScalePolicyType.UseSizeSet, propertyChanged: (bindable, oldValue, newValue) =>
1216         {
1217             var view = (View)bindable;
1218             string valueToString = "";
1219             if (newValue != null)
1220             {
1221                 valueToString = ((SizeScalePolicyType)newValue).GetDescription<SizeScalePolicyType>();
1222                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE_SCALE_POLICY, new Tizen.NUI.PropertyValue(valueToString));
1223             }
1224         },
1225         defaultValueCreator: (bindable) =>
1226         {
1227             var view = (View)bindable;
1228             string temp;
1229             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE_SCALE_POLICY).Get(out temp) == false)
1230             {
1231                 NUILog.Error("SizeScalePolicy get error!");
1232             }
1233             return temp.GetValueByDescription<SizeScalePolicyType>();
1234         });
1235
1236         /// <summary>
1237         /// WidthForHeightProperty
1238         /// </summary>
1239         [EditorBrowsable(EditorBrowsableState.Never)]
1240         public static readonly BindableProperty WidthForHeightProperty = BindableProperty.Create("WidthForHeight", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1241         {
1242             var view = (View)bindable;
1243             if (newValue != null)
1244             {
1245                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.WIDTH_FOR_HEIGHT, new Tizen.NUI.PropertyValue((bool)newValue));
1246             }
1247         },
1248         defaultValueCreator: (bindable) =>
1249         {
1250             var view = (View)bindable;
1251             bool temp = false;
1252             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.WIDTH_FOR_HEIGHT).Get(out temp);
1253             return temp;
1254         });
1255
1256         /// <summary>
1257         /// HeightForWidthProperty
1258         /// </summary>
1259         [EditorBrowsable(EditorBrowsableState.Never)]
1260         public static readonly BindableProperty HeightForWidthProperty = BindableProperty.Create("HeightForWidth", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1261         {
1262             var view = (View)bindable;
1263             if (newValue != null)
1264             {
1265                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.HEIGHT_FOR_WIDTH, new Tizen.NUI.PropertyValue((bool)newValue));
1266             }
1267         },
1268         defaultValueCreator: (bindable) =>
1269         {
1270             var view = (View)bindable;
1271             bool temp = false;
1272             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.HEIGHT_FOR_WIDTH).Get(out temp);
1273             return temp;
1274         });
1275
1276         /// <summary>
1277         /// PaddingProperty
1278         /// </summary>
1279         [EditorBrowsable(EditorBrowsableState.Never)]
1280         public static readonly BindableProperty PaddingProperty = BindableProperty.Create("Padding", typeof(Extents), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1281         {
1282             var view = (View)bindable;
1283             if (newValue != null)
1284             {
1285                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.PADDING, new Tizen.NUI.PropertyValue((Extents)newValue));
1286             }
1287         },
1288         defaultValueCreator: (bindable) =>
1289         {
1290             var view = (View)bindable;
1291             Extents temp = new Extents(0, 0, 0, 0);
1292             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.PADDING).Get(temp);
1293             return temp;
1294         });
1295
1296         /// <summary>
1297         /// SizeProperty
1298         /// </summary>
1299         [EditorBrowsable(EditorBrowsableState.Never)]
1300         public static readonly BindableProperty SizeProperty = BindableProperty.Create("Size", typeof(Size), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1301         {
1302             var view = (View)bindable;
1303             if (newValue != null)
1304             {
1305                 Size size = (Size)newValue;
1306                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.SIZE, new Tizen.NUI.PropertyValue(size));
1307                 // Set Specification so when layouts measure this View it matches the value set here.
1308                 // All Views are currently Layouts.
1309                 view.WidthSpecification = (int)System.Math.Ceiling(size.Width);
1310                 view.HeightSpecification = (int)System.Math.Ceiling(size.Height);
1311             }
1312         },
1313         defaultValueCreator: (bindable) =>
1314         {
1315             var view = (View)bindable;
1316             Size temp = new Size(0, 0, 0);
1317             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SIZE).Get(temp);
1318             return temp;
1319         });
1320
1321         /// <summary>
1322         /// MinimumSizeProperty
1323         /// </summary>
1324         [EditorBrowsable(EditorBrowsableState.Never)]
1325         public static readonly BindableProperty MinimumSizeProperty = BindableProperty.Create("MinimumSize", typeof(Size2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1326         {
1327             var view = (View)bindable;
1328             Size2D temp = newValue as Size2D;
1329             if (temp != null)
1330             {
1331                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.MINIMUM_SIZE, new Tizen.NUI.PropertyValue(temp));
1332             }
1333             else
1334             {
1335                 Tizen.Log.Fatal("NUI", $"[ERROR] can't set MinimumSizeProperty!");
1336             }
1337         },
1338         defaultValueCreator: (bindable) =>
1339         {
1340             var view = (View)bindable;
1341             Size2D temp = new Size2D(0, 0);
1342             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.MINIMUM_SIZE).Get(temp);
1343             return temp;
1344         });
1345
1346         /// <summary>
1347         /// MaximumSizeProperty
1348         /// </summary>
1349         [EditorBrowsable(EditorBrowsableState.Never)]
1350         public static readonly BindableProperty MaximumSizeProperty = BindableProperty.Create("MaximumSize", typeof(Size2D), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1351         {
1352             var view = (View)bindable;
1353             Size2D temp = newValue as Size2D;
1354             if (temp != null)
1355             {
1356                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.MAXIMUM_SIZE, new Tizen.NUI.PropertyValue(temp));
1357             }
1358             else
1359             {
1360                 Tizen.Log.Fatal("NUI", $"[ERROR] can't set MaximumSizeProperty!");
1361             }
1362         },
1363         defaultValueCreator: (bindable) =>
1364         {
1365             var view = (View)bindable;
1366             Size2D temp = new Size2D(0, 0);
1367             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.MAXIMUM_SIZE).Get(temp);
1368             return temp;
1369         });
1370
1371         /// <summary>
1372         /// InheritPositionProperty
1373         /// </summary>
1374         [EditorBrowsable(EditorBrowsableState.Never)]
1375         public static readonly BindableProperty InheritPositionProperty = BindableProperty.Create("InheritPosition", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1376         {
1377             var view = (View)bindable;
1378             if (newValue != null)
1379             {
1380                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_POSITION, new Tizen.NUI.PropertyValue((bool)newValue));
1381             }
1382         },
1383         defaultValueCreator: (bindable) =>
1384         {
1385             var view = (View)bindable;
1386             bool temp = false;
1387             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_POSITION).Get(out temp);
1388             return temp;
1389         });
1390
1391         /// <summary>
1392         /// ClippingModeProperty
1393         /// </summary>
1394         [EditorBrowsable(EditorBrowsableState.Never)]
1395         public static readonly BindableProperty ClippingModeProperty = BindableProperty.Create("ClippingMode", typeof(ClippingModeType), typeof(View), ClippingModeType.Disabled, propertyChanged: (bindable, oldValue, newValue) =>
1396         {
1397             var view = (View)bindable;
1398             if (newValue != null)
1399             {
1400                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.CLIPPING_MODE, new Tizen.NUI.PropertyValue((int)newValue));
1401             }
1402         },
1403         defaultValueCreator: (bindable) =>
1404         {
1405             var view = (View)bindable;
1406             int temp = 0;
1407             if (Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.CLIPPING_MODE).Get(out temp) == false)
1408             {
1409                 NUILog.Error("ClippingMode get error!");
1410             }
1411             return (ClippingModeType)temp;
1412         });
1413
1414         /// <summary>
1415         /// InheritLayoutDirectionProperty
1416         /// </summary>
1417         [EditorBrowsable(EditorBrowsableState.Never)]
1418         public static readonly BindableProperty InheritLayoutDirectionProperty = BindableProperty.Create("InheritLayoutDirection", typeof(bool), typeof(View), false, propertyChanged: (bindable, oldValue, newValue) =>
1419         {
1420             var view = (View)bindable;
1421             if (newValue != null)
1422             {
1423                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.INHERIT_LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue((bool)newValue));
1424             }
1425         },
1426         defaultValueCreator: (bindable) =>
1427         {
1428             var view = (View)bindable;
1429             bool temp = false;
1430             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.INHERIT_LAYOUT_DIRECTION).Get(out temp);
1431             return temp;
1432         });
1433
1434         /// <summary>
1435         /// LayoutDirectionProperty
1436         /// </summary>
1437         [EditorBrowsable(EditorBrowsableState.Never)]
1438         public static readonly BindableProperty LayoutDirectionProperty = BindableProperty.Create("LayoutDirection", typeof(ViewLayoutDirectionType), typeof(View), ViewLayoutDirectionType.LTR, propertyChanged: (bindable, oldValue, newValue) =>
1439         {
1440             var view = (View)bindable;
1441             if (newValue != null)
1442             {
1443                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue((int)newValue));
1444             }
1445         },
1446         defaultValueCreator: (bindable) =>
1447         {
1448             var view = (View)bindable;
1449             int temp;
1450             if (false == Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.LAYOUT_DIRECTION).Get(out temp))
1451             {
1452                 NUILog.Error("LAYOUT_DIRECTION get error!");
1453             }
1454             return (ViewLayoutDirectionType)temp;
1455         });
1456
1457         /// <summary>
1458         /// MarginProperty
1459         /// </summary>
1460         [EditorBrowsable(EditorBrowsableState.Never)]
1461         public static readonly BindableProperty MarginProperty = BindableProperty.Create("Margin", typeof(Extents), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1462         {
1463             var view = (View)bindable;
1464             if (newValue != null)
1465             {
1466                 Tizen.NUI.Object.SetProperty(view.swigCPtr, View.Property.MARGIN, new Tizen.NUI.PropertyValue((Extents)newValue));
1467             }
1468         },
1469         defaultValueCreator: (bindable) =>
1470         {
1471             var view = (View)bindable;
1472             Extents temp = new Extents(0, 0, 0, 0);
1473             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.MARGIN).Get(temp);
1474             return temp;
1475         });
1476
1477         /// <summary>
1478         /// UpdateSizeHintProperty
1479         /// </summary>
1480         [EditorBrowsable(EditorBrowsableState.Never)]
1481         public static readonly BindableProperty UpdateSizeHintProperty = BindableProperty.Create("UpdateSizeHint", typeof(Vector2), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1482         {
1483             var view = (View)bindable;
1484             if (newValue != null)
1485             {
1486                 Tizen.NUI.Object.SetProperty(view.swigCPtr, Interop.ViewProperty.View_Property_UPDATE_SIZE_HINT_get(), new Tizen.NUI.PropertyValue((Vector2)newValue));
1487             }
1488         },
1489         defaultValueCreator: (bindable) =>
1490         {
1491             var view = (View)bindable;
1492
1493             Vector2 temp = new Vector2(0.0f, 0.0f);
1494             Tizen.NUI.Object.GetProperty(view.swigCPtr, Interop.ViewProperty.View_Property_UPDATE_SIZE_HINT_get()).Get(temp);
1495             return temp;
1496         });
1497
1498         /// <summary>
1499         /// ImageShadow Property
1500         /// </summary>
1501         [EditorBrowsable(EditorBrowsableState.Never)]
1502         public static readonly BindableProperty ImageShadowProperty = BindableProperty.Create(nameof(ImageShadow), typeof(ImageShadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1503         {
1504             var shadow = (ImageShadow)newValue;
1505
1506             var view = (View)bindable;
1507
1508             view.SetValue(View.ImageShadowSelectorProperty, shadow == null ? null : new Selector<ImageShadow>() { All = shadow, });
1509         },
1510         defaultValueCreator: (bindable) =>
1511         {
1512             var view = (View)bindable;
1513
1514             if (view.viewStyle != null)
1515             {
1516                 return view.viewStyle.ImageShadow?.GetValue(view.ControlState);
1517             }
1518
1519             PropertyMap map = new PropertyMap();
1520
1521             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SHADOW).Get(map);
1522
1523             var shadow = new ImageShadow(map);
1524
1525             return shadow.IsEmpty() ? null : shadow;
1526         });
1527
1528         /// <summary>
1529         /// ImageShadow Selector Property for binding to ViewStyle
1530         /// </summary>
1531         [EditorBrowsable(EditorBrowsableState.Never)]
1532         public static readonly BindableProperty ImageShadowSelectorProperty = BindableProperty.Create("ImageShadowSelector", typeof(Selector<ImageShadow>), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1533         {
1534             var view = (View)bindable;
1535
1536             var shadowSelector = (Selector<ImageShadow>)newValue;
1537
1538             view.UpdateShadow(shadowSelector?.GetValue(view.ControlState), shadowSelector == null ? false : shadowSelector.HasMultiValue());
1539         },
1540         defaultValueCreator: (bindable) =>
1541         {
1542             var view = (View)bindable;
1543
1544             return view.viewStyle?.ImageShadow;
1545         });
1546
1547         /// <summary>
1548         /// Shadow Property
1549         /// </summary>
1550         [EditorBrowsable(EditorBrowsableState.Never)]
1551         public static readonly BindableProperty BoxShadowProperty = BindableProperty.Create(nameof(BoxShadow), typeof(Shadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1552         {
1553             var shadow = (Shadow)newValue;
1554
1555             var view = (View)bindable;
1556
1557             view.SetValue(View.BoxShadowSelectorProperty, shadow == null ? null : new Selector<Shadow>() { All = shadow, });
1558         },
1559         defaultValueCreator: (bindable) =>
1560         {
1561             var view = (View)bindable;
1562
1563             if (view.viewStyle != null)
1564             {
1565                 return view.viewStyle.BoxShadow?.GetValue(view.ControlState);
1566             }
1567
1568             PropertyMap map = new PropertyMap();
1569
1570             Tizen.NUI.Object.GetProperty(view.swigCPtr, View.Property.SHADOW).Get(map);
1571
1572             var shadow = new Shadow(map);
1573
1574             return shadow.IsEmpty() ? null : shadow;
1575         });
1576
1577         /// <summary>
1578         /// BoxShadow Selector Property for binding to ViewStyle
1579         /// </summary>
1580         [EditorBrowsable(EditorBrowsableState.Never)]
1581         public static readonly BindableProperty BoxShadowSelectorProperty = BindableProperty.Create("BoxShadowSelector", typeof(Selector<Shadow>), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1582         {
1583             var view = (View)bindable;
1584
1585             var shadowSelector = (Selector<Shadow>)newValue;
1586
1587             view.UpdateShadow(shadowSelector?.GetValue(view.ControlState), shadowSelector == null ? false : shadowSelector.HasMultiValue());
1588         },
1589         defaultValueCreator: (bindable) =>
1590         {
1591             var view = (View)bindable;
1592
1593             return view.viewStyle?.BoxShadow;
1594         });
1595
1596         /// <summary>
1597         /// CornerRadius Property
1598         /// </summary>
1599         [EditorBrowsable(EditorBrowsableState.Never)]
1600         public static readonly BindableProperty CornerRadiusProperty = BindableProperty.Create(nameof(CornerRadius), typeof(float), typeof(View), default(float), propertyChanged: (bindable, oldValue, newValue) =>
1601         {
1602             var view = (View)bindable;
1603
1604             view.SetValue(View.CornerRadiusSelectorProperty, new Selector<float?>() { All = (float)newValue, });
1605         },
1606         defaultValueCreator: (bindable) =>
1607         {
1608             var view = (View)bindable;
1609
1610             return view.backgroundExtraData == null ? 0 : view.backgroundExtraData.CornerRadius;
1611         });
1612
1613         /// <summary>
1614         /// CornerRadius Selector Property
1615         /// </summary>
1616         [EditorBrowsable(EditorBrowsableState.Never)]
1617         public static readonly BindableProperty CornerRadiusSelectorProperty = BindableProperty.Create("CornerRadiusSelector", typeof(Selector<float?>), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
1618         {
1619             var view = (View)bindable;
1620
1621             var cornerRadiusSelector = (Selector<float?>)newValue;
1622
1623             view.UpdateCornerRadius(cornerRadiusSelector?.GetValue(view.ControlState) ?? 0, cornerRadiusSelector == null ? false : cornerRadiusSelector.HasMultiValue());
1624         },
1625         defaultValueCreator: (bindable) =>
1626         {
1627             var view = (View)bindable;
1628
1629             return view.viewStyle?.CornerRadius;
1630         });
1631
1632         /// <summary>
1633         /// XamlStyleProperty
1634         /// </summary>
1635         [EditorBrowsable(EditorBrowsableState.Never)]
1636         public static readonly BindableProperty XamlStyleProperty = BindableProperty.Create("XamlStyle", typeof(Style), typeof(View), default(Style), propertyChanged: (bindable, oldvalue, newvalue) => ((View)bindable)._mergedStyle.Style = (Style)newvalue);
1637     }
1638 }