[NUI] Remove duplicate getCPtr from Disposable/View subclasses (#3544)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / Common / ViewWrapperImpl.cs
1 /*
2  * Copyright (c) 2020 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.Runtime.InteropServices;
18 using Tizen.NUI.BaseComponents;
19
20 namespace Tizen.NUI
21 {
22     internal sealed class ViewWrapperImpl : ViewImpl
23     {
24         /// <since_tizen> 3 </since_tizen>
25         public delegate void OnSceneConnectionDelegate(int depth);
26         /// <since_tizen> 3 </since_tizen>
27         public delegate void OnSceneDisconnectionDelegate();
28         /// <since_tizen> 3 </since_tizen>
29         public delegate void OnChildAddDelegate(View view);
30         /// <since_tizen> 3 </since_tizen>
31         public delegate void OnChildRemoveDelegate(View view);
32         /// <since_tizen> 3 </since_tizen>
33         public delegate void OnPropertySetDelegate(int index, PropertyValue propertyValue);
34         /// <since_tizen> 3 </since_tizen>
35         public delegate void OnSizeSetDelegate(Vector3 targetSize);
36         /// <since_tizen> 3 </since_tizen>
37         public delegate void OnSizeAnimationDelegate(Animation animation, Vector3 targetSize);
38         /// <since_tizen> 3 </since_tizen>
39         public delegate bool OnTouchDelegate(Touch touch);
40         /// <since_tizen> 3 </since_tizen>
41         public delegate bool OnHoverDelegate(Hover hover);
42         /// <since_tizen> 3 </since_tizen>
43         public delegate bool OnKeyDelegate(Key key);
44         /// <since_tizen> 3 </since_tizen>
45         public delegate bool OnWheelDelegate(Wheel wheel);
46         /// <since_tizen> 3 </since_tizen>
47         public delegate void OnRelayoutDelegate(Vector2 size, RelayoutContainer container);
48         /// <since_tizen> 3 </since_tizen>
49         public delegate void OnSetResizePolicyDelegate(ResizePolicyType policy, DimensionType dimension);
50         /// <since_tizen> 3 </since_tizen>
51         public delegate Size2D GetNaturalSizeDelegate();
52         /// <since_tizen> 3 </since_tizen>
53         public delegate float CalculateChildSizeDelegate(View child, DimensionType dimension);
54         /// <since_tizen> 3 </since_tizen>
55         public delegate float GetHeightForWidthDelegate(float width);
56         /// <since_tizen> 3 </since_tizen>
57         public delegate float GetWidthForHeightDelegate(float height);
58         /// <since_tizen> 3 </since_tizen>
59         public delegate bool RelayoutDependentOnChildrenDimensionDelegate(DimensionType dimension);
60         /// <since_tizen> 3 </since_tizen>
61         public delegate bool RelayoutDependentOnChildrenDelegate();
62         /// <since_tizen> 3 </since_tizen>
63         public delegate void OnCalculateRelayoutSizeDelegate(DimensionType dimension);
64         /// <since_tizen> 3 </since_tizen>
65         public delegate void OnLayoutNegotiatedDelegate(float size, DimensionType dimension);
66         /// <since_tizen> 3 </since_tizen>
67         public delegate void OnStyleChangeDelegate(StyleManager styleManager, StyleChangeType change);
68         /// <since_tizen> 3 </since_tizen>
69         public delegate bool OnAccessibilityActivatedDelegate();
70         /// <since_tizen> 3 </since_tizen>
71         public delegate bool OnAccessibilityPanDelegate(PanGesture gestures);
72         /// <since_tizen> 3 </since_tizen>
73         public delegate bool OnAccessibilityValueChangeDelegate(bool isIncrease);
74         /// <since_tizen> 3 </since_tizen>
75         public delegate bool OnAccessibilityZoomDelegate();
76         /// <since_tizen> 3 </since_tizen>
77         public delegate void OnFocusGainedDelegate();
78         /// <since_tizen> 3 </since_tizen>
79         public delegate void OnFocusLostDelegate();
80         /// <since_tizen> 3 </since_tizen>
81         public delegate View GetNextFocusableViewDelegate(View currentFocusedView, View.FocusDirection direction, bool loopEnabled);
82         /// <since_tizen> 3 </since_tizen>
83         public delegate void OnFocusChangeCommittedDelegate(View commitedFocusableView);
84         /// <since_tizen> 3 </since_tizen>
85         public delegate bool OnKeyboardEnterDelegate();
86         /// <since_tizen> 3 </since_tizen>
87         public delegate void OnPinchDelegate(PinchGesture pinch);
88         /// <since_tizen> 3 </since_tizen>
89         public delegate void OnPanDelegate(PanGesture pan);
90         /// <since_tizen> 3 </since_tizen>
91         public delegate void OnTapDelegate(TapGesture tap);
92         /// <since_tizen> 3 </since_tizen>
93         public delegate void OnLongPressDelegate(LongPressGesture longPress);
94
95         public new OnSceneConnectionDelegate OnSceneConnection;
96         public new OnSceneDisconnectionDelegate OnSceneDisconnection;
97         public OnSceneConnectionDelegate OnStageConnection;
98         public OnSceneDisconnectionDelegate OnStageDisconnection;
99         public new OnChildAddDelegate OnChildAdd;
100         public new OnChildRemoveDelegate OnChildRemove;
101         public new OnPropertySetDelegate OnPropertySet;
102         public new OnSizeSetDelegate OnSizeSet;
103         public new OnSizeAnimationDelegate OnSizeAnimation;
104         public OnTouchDelegate OnTouch;
105         public OnHoverDelegate OnHover;
106         public OnKeyDelegate OnKey;
107         public OnWheelDelegate OnWheel;
108         public new OnRelayoutDelegate OnRelayout;
109         public new OnSetResizePolicyDelegate OnSetResizePolicy;
110         public new GetNaturalSizeDelegate GetNaturalSize;
111         public new CalculateChildSizeDelegate CalculateChildSize;
112         public new GetHeightForWidthDelegate GetHeightForWidth;
113         public new GetWidthForHeightDelegate GetWidthForHeight;
114         public RelayoutDependentOnChildrenDimensionDelegate RelayoutDependentOnChildrenDimension;
115         public new RelayoutDependentOnChildrenDelegate RelayoutDependentOnChildren;
116         public new OnCalculateRelayoutSizeDelegate OnCalculateRelayoutSize;
117         public new OnLayoutNegotiatedDelegate OnLayoutNegotiated;
118         public new OnStyleChangeDelegate OnStyleChange;
119         public new OnAccessibilityActivatedDelegate OnAccessibilityActivated;
120         public new OnAccessibilityPanDelegate OnAccessibilityPan;
121         public new OnAccessibilityValueChangeDelegate OnAccessibilityValueChange;
122         public new OnAccessibilityZoomDelegate OnAccessibilityZoom;
123         public OnFocusGainedDelegate OnFocusGained;
124         public OnFocusLostDelegate OnFocusLost;
125         public new GetNextFocusableViewDelegate GetNextFocusableView;
126         public new OnFocusChangeCommittedDelegate OnFocusChangeCommitted;
127         public new OnKeyboardEnterDelegate OnKeyboardEnter;
128         public new OnPinchDelegate OnPinch;
129         public new OnPanDelegate OnPan;
130         public new OnTapDelegate OnTap;
131         public new OnLongPressDelegate OnLongPress;
132
133         internal ViewWrapperImpl(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
134         {
135         }
136
137         protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
138         {
139         }
140
141         protected override void Dispose(DisposeTypes type)
142         {
143             if (disposed)
144             {
145                 return;
146             }
147
148             if (type == DisposeTypes.Explicit)
149             {
150                 DirectorDisconnect();
151             }
152
153             base.Dispose(type);
154         }
155
156         public ViewWrapperImpl(CustomViewBehaviour behaviourFlags) : this(Interop.ViewWrapperImpl.NewViewWrapperImpl((int)behaviourFlags), true)
157         {
158             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
159             DirectorConnect();
160         }
161
162         public static ViewWrapper New(string typeName, ViewWrapperImpl viewWrapper)
163         {
164             ViewWrapper ret = new ViewWrapper(Interop.ViewWrapperImpl.New(typeName, ViewWrapperImpl.getCPtr(viewWrapper)), true);
165             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
166             return ret;
167         }
168
169         public void RelayoutRequest()
170         {
171             Interop.ViewWrapperImpl.RelayoutRequest(SwigCPtr);
172             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
173         }
174
175         public float GetHeightForWidthBase(float width)
176         {
177             float ret = Interop.ViewWrapperImpl.GetHeightForWidthBase(SwigCPtr, width);
178             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
179             return ret;
180         }
181
182         public float GetWidthForHeightBase(float height)
183         {
184             float ret = Interop.ViewWrapperImpl.GetWidthForHeightBase(SwigCPtr, height);
185             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
186             return ret;
187         }
188
189         public float CalculateChildSizeBase(View child, DimensionType dimension)
190         {
191             float ret = Interop.ViewWrapperImpl.CalculateChildSizeBase(SwigCPtr, View.getCPtr(child), (int)dimension);
192             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
193             return ret;
194         }
195
196         public bool RelayoutDependentOnChildrenBase(DimensionType dimension)
197         {
198             bool ret = Interop.ViewWrapperImpl.RelayoutDependentOnChildrenBase(SwigCPtr, (int)dimension);
199             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
200             return ret;
201         }
202
203         public bool RelayoutDependentOnChildrenBase()
204         {
205             bool ret = Interop.ViewWrapperImpl.RelayoutDependentOnChildrenBase(SwigCPtr);
206             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
207             return ret;
208         }
209
210         public void RegisterVisual(int index, VisualBase visual)
211         {
212             Interop.ViewWrapperImpl.RegisterVisual(SwigCPtr, index, VisualBase.getCPtr(visual));
213             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
214         }
215
216         public void RegisterVisual(int index, VisualBase visual, bool enabled)
217         {
218             Interop.ViewWrapperImpl.RegisterVisual(SwigCPtr, index, VisualBase.getCPtr(visual), enabled);
219             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
220         }
221
222         public void UnregisterVisual(int index)
223         {
224             Interop.ViewWrapperImpl.UnregisterVisual(SwigCPtr, index);
225             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
226         }
227
228         public VisualBase GetVisual(int index)
229         {
230             //to fix memory leak issue, match the handle count with native side.
231             System.IntPtr cPtr = Interop.ViewWrapperImpl.GetVisual(SwigCPtr, index);
232             VisualBase ret = this.GetInstanceSafely<VisualBase>(cPtr);
233             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
234             return ret;
235         }
236
237         public void EnableVisual(int index, bool enable)
238         {
239             Interop.ViewWrapperImpl.EnableVisual(SwigCPtr, index, enable);
240             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
241         }
242
243         public bool IsVisualEnabled(int index)
244         {
245             bool ret = Interop.ViewWrapperImpl.IsVisualEnabled(SwigCPtr, index);
246             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
247             return ret;
248         }
249
250         public Animation CreateTransition(TransitionData transitionData)
251         {
252             Animation ret = new Animation(Interop.ViewWrapperImpl.CreateTransition(SwigCPtr, TransitionData.getCPtr(transitionData)), true);
253             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
254             return ret;
255         }
256
257         public void EmitFocusSignal(bool focusGained)
258         {
259             Interop.ViewWrapperImpl.EmitKeyInputFocusSignal(SwigCPtr, focusGained);
260             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
261         }
262
263         public void ApplyThemeStyle()
264         {
265             Interop.ViewWrapperImpl.ApplyThemeStyle(SwigCPtr);
266             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
267         }
268
269         private void DirectorConnect()
270         {
271             Delegate0 = new DelegateViewWrapperImpl_0(DirectorOnSceneConnection);
272             Delegate1 = new DelegateViewWrapperImpl_1(DirectorOnSceneDisconnection);
273             Delegate2 = new DelegateViewWrapperImpl_2(DirectorOnChildAdd);
274             Delegate3 = new DelegateViewWrapperImpl_3(DirectorOnChildRemove);
275             Delegate4 = new DelegateViewWrapperImpl_4(DirectorOnPropertySet);
276             Delegate5 = new DelegateViewWrapperImpl_5(DirectorOnSizeSet);
277             Delegate6 = new DelegateViewWrapperImpl_6(DirectorOnSizeAnimation);
278             Delegate9 = new DelegateViewWrapperImpl_9(DirectorOnKey);
279             Delegate11 = new DelegateViewWrapperImpl_11(DirectorOnRelayout);
280             Delegate12 = new DelegateViewWrapperImpl_12(DirectorOnSetResizePolicy);
281             Delegate13 = new DelegateViewWrapperImpl_13(DirectorGetNaturalSize);
282             Delegate14 = new DelegateViewWrapperImpl_14(DirectorCalculateChildSize);
283             Delegate15 = new DelegateViewWrapperImpl_15(DirectorGetHeightForWidth);
284             Delegate16 = new DelegateViewWrapperImpl_16(DirectorGetWidthForHeight);
285             Delegate17 = new DelegateViewWrapperImpl_17(DirectorRelayoutDependentOnChildrenWithDimension);
286             Delegate18 = new DelegateViewWrapperImpl_18(DirectorRelayoutDependentOnChildren);
287             Delegate19 = new DelegateViewWrapperImpl_19(DirectorOnCalculateRelayoutSize);
288             Delegate20 = new DelegateViewWrapperImpl_20(DirectorOnLayoutNegotiated);
289             Delegate21 = new DelegateViewWrapperImpl_21(DirectorOnInitialize);
290             Delegate24 = new DelegateViewWrapperImpl_24(DirectorOnStyleChange);
291             Delegate25 = new DelegateViewWrapperImpl_25(DirectorOnAccessibilityActivated);
292             Delegate26 = new DelegateViewWrapperImpl_26(DirectorOnAccessibilityPan);
293             Delegate28 = new DelegateViewWrapperImpl_28(DirectorOnAccessibilityValueChange);
294             Delegate29 = new DelegateViewWrapperImpl_29(DirectorOnAccessibilityZoom);
295             Delegate30 = new DelegateViewWrapperImpl_30(DirectorOnFocusGained);
296             Delegate31 = new DelegateViewWrapperImpl_31(DirectorOnFocusLost);
297             Delegate32 = new DelegateViewWrapperImpl_32(DirectorGetNextFocusableActor);
298             Delegate33 = new DelegateViewWrapperImpl_33(DirectorOnFocusChangeCommitted);
299             Delegate34 = new DelegateViewWrapperImpl_34(DirectorOnKeyboardEnter);
300             Delegate35 = new DelegateViewWrapperImpl_35(DirectorOnPinch);
301             Delegate36 = new DelegateViewWrapperImpl_36(DirectorOnPan);
302             Delegate37 = new DelegateViewWrapperImpl_37(DirectorOnTap);
303             Delegate38 = new DelegateViewWrapperImpl_38(DirectorOnLongPress);
304             Interop.ViewWrapperImpl.DirectorConnect(SwigCPtr, Delegate0, Delegate1, Delegate2, Delegate3, Delegate4, Delegate5, Delegate6, Delegate9, Delegate11, Delegate12, Delegate13, Delegate14, Delegate15, Delegate16, Delegate17, Delegate18, Delegate19, Delegate20, Delegate21, Delegate24, Delegate25, Delegate26, Delegate28, Delegate29, Delegate30, Delegate31, Delegate32, Delegate33, Delegate34, Delegate35, Delegate36, Delegate37, Delegate38, null, null);
305         }
306
307
308         private void DirectorDisconnect()
309         {
310             Delegate0 = null;
311             Delegate1 = null;
312             Delegate2 = null;
313             Delegate3 = null;
314             Delegate4 = null;
315             Delegate5 = null;
316             Delegate6 = null;
317             Delegate9 = null;
318             Delegate11 = null;
319             Delegate12 = null;
320             Delegate13 = null;
321             Delegate14 = null;
322             Delegate15 = null;
323             Delegate16 = null;
324             Delegate17 = null;
325             Delegate18 = null;
326             Delegate19 = null;
327             Delegate20 = null;
328             Delegate21 = null;
329             Delegate24 = null;
330             Delegate25 = null;
331             Delegate26 = null;
332             Delegate28 = null;
333             Delegate29 = null;
334             Delegate30 = null;
335             Delegate31 = null;
336             Delegate32 = null;
337             Delegate33 = null;
338             Delegate34 = null;
339             Delegate35 = null;
340             Delegate36 = null;
341             Delegate37 = null;
342             Delegate38 = null;
343             Interop.ViewWrapperImpl.DirectorConnect(SwigCPtr, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
344         }
345
346         private void DirectorOnSceneConnection(int depth)
347         {
348             OnSceneConnection?.Invoke(depth);
349             OnStageConnection?.Invoke(depth);
350         }
351
352         private void DirectorOnSceneDisconnection()
353         {
354             OnSceneDisconnection?.Invoke();
355             OnStageDisconnection?.Invoke();
356         }
357
358         private void DirectorOnChildAdd(global::System.IntPtr child)
359         {
360             View view = Registry.GetManagedBaseHandleFromNativePtr(child) as View;
361             if (view)
362             {
363                 OnChildAdd?.Invoke(view);
364             }
365         }
366
367         private void DirectorOnChildRemove(global::System.IntPtr child)
368         {
369             View view = Registry.GetManagedBaseHandleFromNativePtr(child) as View;
370             if (view)
371             {
372                 OnChildRemove?.Invoke(view);
373             }
374         }
375
376         private void DirectorOnPropertySet(int index, global::System.IntPtr propertyValue)
377         {
378             var value = new PropertyValue(propertyValue, true);
379             OnPropertySet?.Invoke(index, value);
380             value.Dispose();
381         }
382
383         private void DirectorOnSizeSet(global::System.IntPtr targetSize)
384         {
385             var vector3 = new Vector3(targetSize, false);
386             OnSizeSet?.Invoke(vector3);
387             vector3.Dispose();
388         }
389
390         private void DirectorOnSizeAnimation(global::System.IntPtr animation, global::System.IntPtr targetSize)
391         {
392             var ani = new Animation(animation, true);
393             var vector3 = new Vector3(targetSize, false);
394             OnSizeAnimation?.Invoke(ani, vector3);
395             ani.Dispose();
396             vector3.Dispose();
397         }
398
399         private bool DirectorOnKey(global::System.IntPtr arg0)
400         {
401             var key = new Key(arg0, false);
402             var ret = OnKey(key);
403             key.Dispose();
404             return ret;
405         }
406
407         private void DirectorOnRelayout(global::System.IntPtr size, global::System.IntPtr container)
408         {
409             var vector2 = new Vector2(size, false);
410             var relayoutContainer = new RelayoutContainer(container, false);
411             OnRelayout(vector2, relayoutContainer);
412             vector2.Dispose();
413             relayoutContainer.Dispose();
414         }
415
416         private void DirectorOnSetResizePolicy(int policy, int dimension)
417         {
418             OnSetResizePolicy?.Invoke((ResizePolicyType)policy, (DimensionType)dimension);
419         }
420
421         private global::System.IntPtr DirectorGetNaturalSize()
422         {
423             return Size2D.getCPtr(GetNaturalSize()).Handle;
424         }
425
426         private float DirectorCalculateChildSize(global::System.IntPtr child, int dimension)
427         {
428             View view = Registry.GetManagedBaseHandleFromNativePtr(child) as View;
429             if (view)
430             {
431                 return CalculateChildSize?.Invoke(view, (DimensionType)dimension) ?? 0.0f;
432             }
433             return 0.0f;
434         }
435
436         private float DirectorGetHeightForWidth(float width)
437         {
438             return GetHeightForWidth?.Invoke(width) ?? 0.0f;
439         }
440
441         private float DirectorGetWidthForHeight(float height)
442         {
443             return GetWidthForHeight?.Invoke(height) ?? 0.0f;
444         }
445
446         private bool DirectorRelayoutDependentOnChildrenWithDimension(int dimension)
447         {
448             return RelayoutDependentOnChildrenDimension?.Invoke((DimensionType)dimension) ?? false;
449         }
450
451         private bool DirectorRelayoutDependentOnChildren()
452         {
453             return RelayoutDependentOnChildren?.Invoke() ?? false;
454         }
455
456         private void DirectorOnCalculateRelayoutSize(int dimension)
457         {
458             OnCalculateRelayoutSize?.Invoke((DimensionType)dimension);
459         }
460
461         private void DirectorOnLayoutNegotiated(float size, int dimension)
462         {
463             OnLayoutNegotiated?.Invoke(size, (DimensionType)dimension);
464         }
465
466         private void DirectorOnInitialize()
467         {
468         }
469
470         private void DirectorOnStyleChange(global::System.IntPtr styleManager, int change)
471         {
472             var styleManger = new StyleManager(styleManager, true);
473             OnStyleChange?.Invoke(styleManger, (StyleChangeType)change);
474             styleManger.Dispose();
475         }
476
477         private bool DirectorOnAccessibilityActivated()
478         {
479             return OnAccessibilityActivated?.Invoke() ?? false;
480         }
481
482         private bool DirectorOnAccessibilityPan(global::System.IntPtr gesture)
483         {
484             var panGesture = new PanGesture(gesture, true);
485             var ret = OnAccessibilityPan?.Invoke(panGesture) ?? false;
486             panGesture.Dispose();
487             return ret;
488         }
489
490         private bool DirectorOnAccessibilityValueChange(bool isIncrease)
491         {
492             return OnAccessibilityValueChange?.Invoke(isIncrease) ?? false;
493         }
494
495         private bool DirectorOnAccessibilityZoom()
496         {
497             return OnAccessibilityZoom?.Invoke() ?? false;
498         }
499
500         private void DirectorOnFocusGained()
501         {
502             OnFocusGained?.Invoke();
503         }
504
505         private void DirectorOnFocusLost()
506         {
507             OnFocusLost?.Invoke();
508         }
509
510         private global::System.IntPtr DirectorGetNextFocusableActor(global::System.IntPtr currentFocusedActor, int direction, bool loopEnabled)
511         {
512             View view = GetNextFocusableView(Registry.GetManagedBaseHandleFromNativePtr(currentFocusedActor) as View, (View.FocusDirection)direction, loopEnabled);
513             if (view)
514             {
515                 return View.getCPtr(view).Handle;
516             }
517             else
518             {
519                 return global::System.IntPtr.Zero;
520             }
521         }
522
523         private void DirectorOnFocusChangeCommitted(global::System.IntPtr commitedFocusableView)
524         {
525             OnFocusChangeCommitted?.Invoke(Registry.GetManagedBaseHandleFromNativePtr(commitedFocusableView) as View);
526         }
527
528         private bool DirectorOnKeyboardEnter()
529         {
530             return OnKeyboardEnter?.Invoke() ?? false;
531         }
532
533         private void DirectorOnPinch(global::System.IntPtr pinch)
534         {
535             var pinchGesture = new PinchGesture(pinch, false);
536             OnPinch?.Invoke(pinchGesture);
537             pinchGesture.Dispose();
538         }
539
540         private void DirectorOnPan(global::System.IntPtr pan)
541         {
542             var panGesture = new PanGesture(pan, false);
543             OnPan?.Invoke(panGesture);
544             panGesture.Dispose();
545         }
546
547         private void DirectorOnTap(global::System.IntPtr tap)
548         {
549             var tapGesture = new TapGesture(tap, false);
550             OnTap?.Invoke(tapGesture);
551             tapGesture.Dispose();
552         }
553
554         private void DirectorOnLongPress(global::System.IntPtr longPress)
555         {
556             var longGesture = new LongPressGesture(longPress, false);
557             OnLongPress?.Invoke(longGesture);
558             longGesture.Dispose();
559         }
560
561         /// <since_tizen> 3 </since_tizen>
562         public delegate void DelegateViewWrapperImpl_0(int depth);
563         /// <since_tizen> 3 </since_tizen>
564         public delegate void DelegateViewWrapperImpl_1();
565         /// <since_tizen> 3 </since_tizen>
566         public delegate void DelegateViewWrapperImpl_2(global::System.IntPtr child);
567         /// <since_tizen> 3 </since_tizen>
568         public delegate void DelegateViewWrapperImpl_3(global::System.IntPtr child);
569         /// <since_tizen> 3 </since_tizen>
570         public delegate void DelegateViewWrapperImpl_4(int index, global::System.IntPtr propertyValue);
571         /// <since_tizen> 3 </since_tizen>
572         public delegate void DelegateViewWrapperImpl_5(global::System.IntPtr targetSize);
573         /// <since_tizen> 3 </since_tizen>
574         public delegate void DelegateViewWrapperImpl_6(global::System.IntPtr animation, global::System.IntPtr targetSize);
575         /// <since_tizen> 3 </since_tizen>
576         public delegate bool DelegateViewWrapperImpl_9(global::System.IntPtr arg0);
577         /// <since_tizen> 3 </since_tizen>
578         public delegate void DelegateViewWrapperImpl_11(global::System.IntPtr size, global::System.IntPtr container);
579         /// <since_tizen> 3 </since_tizen>
580         public delegate void DelegateViewWrapperImpl_12(int policy, int dimension);
581         /// <since_tizen> 3 </since_tizen>
582         public delegate global::System.IntPtr DelegateViewWrapperImpl_13();
583         /// <since_tizen> 3 </since_tizen>
584         public delegate float DelegateViewWrapperImpl_14(global::System.IntPtr child, int dimension);
585         /// <since_tizen> 3 </since_tizen>
586         public delegate float DelegateViewWrapperImpl_15(float width);
587         /// <since_tizen> 3 </since_tizen>
588         public delegate float DelegateViewWrapperImpl_16(float height);
589         /// <since_tizen> 3 </since_tizen>
590         public delegate bool DelegateViewWrapperImpl_17(int dimension);
591         /// <since_tizen> 3 </since_tizen>
592         public delegate bool DelegateViewWrapperImpl_18();
593         /// <since_tizen> 3 </since_tizen>
594         public delegate void DelegateViewWrapperImpl_19(int dimension);
595         /// <since_tizen> 3 </since_tizen>
596         public delegate void DelegateViewWrapperImpl_20(float size, int dimension);
597         /// <since_tizen> 3 </since_tizen>
598         public delegate void DelegateViewWrapperImpl_21();
599         /// <since_tizen> 3 </since_tizen>
600         public delegate void DelegateViewWrapperImpl_22(global::System.IntPtr child);
601         /// <since_tizen> 3 </since_tizen>
602         public delegate void DelegateViewWrapperImpl_23(global::System.IntPtr child);
603         /// <since_tizen> 3 </since_tizen>
604         public delegate void DelegateViewWrapperImpl_24(global::System.IntPtr styleManager, int change);
605         /// <since_tizen> 3 </since_tizen>
606         public delegate bool DelegateViewWrapperImpl_25();
607         /// <since_tizen> 3 </since_tizen>
608         public delegate bool DelegateViewWrapperImpl_26(global::System.IntPtr gesture);
609         /// <since_tizen> 3 </since_tizen>
610         public delegate bool DelegateViewWrapperImpl_27(global::System.IntPtr touch);
611         /// <since_tizen> 3 </since_tizen>
612         public delegate bool DelegateViewWrapperImpl_28(bool isIncrease);
613         /// <since_tizen> 3 </since_tizen>
614         public delegate bool DelegateViewWrapperImpl_29();
615         /// <since_tizen> 3 </since_tizen>
616         public delegate void DelegateViewWrapperImpl_30();
617         /// <since_tizen> 3 </since_tizen>
618         public delegate void DelegateViewWrapperImpl_31();
619         /// <since_tizen> 3 </since_tizen>
620         public delegate global::System.IntPtr DelegateViewWrapperImpl_32(global::System.IntPtr currentFocusedActor, int direction, bool loopEnabled);
621         /// <since_tizen> 3 </since_tizen>
622         public delegate void DelegateViewWrapperImpl_33(global::System.IntPtr commitedFocusableActor);
623         /// <since_tizen> 3 </since_tizen>
624         public delegate bool DelegateViewWrapperImpl_34();
625         /// <since_tizen> 3 </since_tizen>
626         public delegate void DelegateViewWrapperImpl_35(global::System.IntPtr pinch);
627         /// <since_tizen> 3 </since_tizen>
628         public delegate void DelegateViewWrapperImpl_36(global::System.IntPtr pan);
629         /// <since_tizen> 3 </since_tizen>
630         public delegate void DelegateViewWrapperImpl_37(global::System.IntPtr tap);
631         /// <since_tizen> 3 </since_tizen>
632         public delegate void DelegateViewWrapperImpl_38(global::System.IntPtr longPress);
633         /// <since_tizen> 3 </since_tizen>
634         public delegate void DelegateViewWrapperImpl_39(global::System.IntPtr slotObserver, global::System.IntPtr callback);
635         /// <since_tizen> 3 </since_tizen>
636         public delegate void DelegateViewWrapperImpl_40(global::System.IntPtr slotObserver, global::System.IntPtr callback);
637
638         private DelegateViewWrapperImpl_0 Delegate0;
639         private DelegateViewWrapperImpl_1 Delegate1;
640         private DelegateViewWrapperImpl_2 Delegate2;
641         private DelegateViewWrapperImpl_3 Delegate3;
642         private DelegateViewWrapperImpl_4 Delegate4;
643         private DelegateViewWrapperImpl_5 Delegate5;
644         private DelegateViewWrapperImpl_6 Delegate6;
645         private DelegateViewWrapperImpl_9 Delegate9;
646         private DelegateViewWrapperImpl_11 Delegate11;
647         private DelegateViewWrapperImpl_12 Delegate12;
648         private DelegateViewWrapperImpl_13 Delegate13;
649         private DelegateViewWrapperImpl_14 Delegate14;
650         private DelegateViewWrapperImpl_15 Delegate15;
651         private DelegateViewWrapperImpl_16 Delegate16;
652         private DelegateViewWrapperImpl_17 Delegate17;
653         private DelegateViewWrapperImpl_18 Delegate18;
654         private DelegateViewWrapperImpl_19 Delegate19;
655         private DelegateViewWrapperImpl_20 Delegate20;
656         private DelegateViewWrapperImpl_21 Delegate21;
657         private DelegateViewWrapperImpl_24 Delegate24;
658         private DelegateViewWrapperImpl_25 Delegate25;
659         private DelegateViewWrapperImpl_26 Delegate26;
660         private DelegateViewWrapperImpl_28 Delegate28;
661         private DelegateViewWrapperImpl_29 Delegate29;
662         private DelegateViewWrapperImpl_30 Delegate30;
663         private DelegateViewWrapperImpl_31 Delegate31;
664         private DelegateViewWrapperImpl_32 Delegate32;
665         private DelegateViewWrapperImpl_33 Delegate33;
666         private DelegateViewWrapperImpl_34 Delegate34;
667         private DelegateViewWrapperImpl_35 Delegate35;
668         private DelegateViewWrapperImpl_36 Delegate36;
669         private DelegateViewWrapperImpl_37 Delegate37;
670         private DelegateViewWrapperImpl_38 Delegate38;
671
672         public static readonly int ViewBehaviourFlagCount = Interop.ViewWrapperImpl.ControlBehaviourFlagCountGet();
673     }
674 }