Follow formatting NUI
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / CustomAlgorithmInterface.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.Reflection;
19 using Tizen.NUI.BaseComponents;
20
21 namespace Tizen.NUI
22 {
23     internal class CustomAlgorithmInterface : Disposable
24     {
25
26         internal CustomAlgorithmInterface(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
27         {
28         }
29
30         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CustomAlgorithmInterface obj)
31         {
32             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
33         }
34
35         protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
36         {
37             Interop.CustomAlgorithmInterface.delete_CustomAlgorithmInterface(swigCPtr);
38         }
39
40         public virtual View GetNextFocusableView(View current, View proposed, View.FocusDirection direction)
41         {
42             View ret = new View(Interop.CustomAlgorithmInterface.CustomAlgorithmInterface_GetNextFocusableActor(swigCPtr, View.getCPtr(current), View.getCPtr(proposed), (int)direction), true);
43             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
44             return ret;
45         }
46
47         internal CustomAlgorithmInterface() : this(Interop.CustomAlgorithmInterface.new_CustomAlgorithmInterface(), true)
48         {
49             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
50             SwigDirectorConnect();
51         }
52
53         private void SwigDirectorConnect()
54         {
55             if (SwigDerivedClassHasMethod("GetNextFocusableView", swigMethodTypes0))
56                 swigDelegate0 = new SwigDelegateCustomAlgorithmInterface_0(SwigDirectorGetNextFocusableView);
57             Interop.CustomAlgorithmInterface.CustomAlgorithmInterface_director_connect(swigCPtr, swigDelegate0);
58         }
59
60         private bool SwigDerivedClassHasMethod(string methodName, global::System.Type[] methodTypes)
61         {
62             global::System.Reflection.MethodInfo methodInfo = this.GetType().GetMethod(methodName, methodTypes);
63             bool hasDerivedMethod = this.GetType().GetTypeInfo().IsSubclassOf(typeof(CustomAlgorithmInterface));
64             return hasDerivedMethod && (methodInfo != null);
65         }
66
67         private global::System.IntPtr SwigDirectorGetNextFocusableView(global::System.IntPtr current, global::System.IntPtr proposed, int direction)
68         {
69             if (current == global::System.IntPtr.Zero && proposed == global::System.IntPtr.Zero)
70             {
71                 return global::System.IntPtr.Zero;
72             }
73
74             try
75             {
76                 View currentView = Registry.GetManagedBaseHandleFromNativePtr(current) as View;
77                 View proposedView = Registry.GetManagedBaseHandleFromNativePtr(proposed) as View;
78
79                 return View.getCPtr(GetNextFocusableView(currentView, proposedView, (View.FocusDirection)direction)).Handle;
80             }
81             catch (global::System.Exception ex)
82             {
83                 Tizen.Log.Error("NUI", "Registry Error: " + ex);
84             }
85             return global::System.IntPtr.Zero;
86         }
87
88         internal delegate global::System.IntPtr SwigDelegateCustomAlgorithmInterface_0(global::System.IntPtr current, global::System.IntPtr proposed, int direction);
89
90         private SwigDelegateCustomAlgorithmInterface_0 swigDelegate0;
91
92         private static global::System.Type[] swigMethodTypes0 = new global::System.Type[] { typeof(View), typeof(View), typeof(View.FocusDirection) };
93     }
94 }