Merge "Changes for std::vector removal from api" into tizen
[platform/core/uifw/dali-toolkit.git] / plugins / dali-script-v8 / src / toolkit / focus-manager / keyboard-focus-manager-wrapper.cpp
1 /*
2  * Copyright (c) 2015 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 // CLASS HEADER
19 #include "keyboard-focus-manager-wrapper.h"
20
21 // INTERNAL INCLUDES
22 #include <v8-utils.h>
23 #include <dali-wrapper.h>
24 #include <shared/api-function.h>
25 #include <shared/object-template-helper.h>
26 #include <toolkit/focus-manager/keyboard-focus-manager-api.h>
27
28 namespace Dali
29 {
30 namespace V8Plugin
31 {
32 namespace
33 {
34
35 /**
36  * Contains a list of all functions that can be called
37  */
38 const ApiFunction KeyboardFocusManagerFunctionTable[]=
39 {
40     /**************************************
41     * KeyboardFocusManager API (in order of keyboard-focus-manager.h)
42     **************************************/
43
44     { "SetCurrentFocusActor"    , KeyboardFocusManagerApi::SetCurrentFocusActor   },
45     { "GetCurrentFocusActor"    , KeyboardFocusManagerApi::GetCurrentFocusActor   },
46     { "MoveFocus"               , KeyboardFocusManagerApi::MoveFocus              },
47     { "ClearFocus"              , KeyboardFocusManagerApi::ClearFocus             },
48     { "SetAsFocusGroup"         , KeyboardFocusManagerApi::SetAsFocusGroup        },
49     { "IsFocusGroup"            , KeyboardFocusManagerApi::IsFocusGroup           },
50     { "GetFocusGroup"           , KeyboardFocusManagerApi::GetFocusGroup          },
51     { "SetFocusGroupLoop"       , KeyboardFocusManagerApi::SetFocusGroupLoop      },
52     { "GetFocusGroupLoop"       , KeyboardFocusManagerApi::GetFocusGroupLoop      },
53     { "SetFocusIndicatorActor"  , KeyboardFocusManagerApi::SetFocusIndicatorActor },
54     { "GetFocusIndicatorActor"  , KeyboardFocusManagerApi::GetFocusIndicatorActor },
55 };
56
57 const unsigned int KeyboardFocusManagerFunctionTableCount = sizeof(KeyboardFocusManagerFunctionTable)/sizeof(KeyboardFocusManagerFunctionTable[0]);
58 } //un-named space
59
60
61 KeyboardFocusManagerWrapper::KeyboardFocusManagerWrapper( const Dali::Toolkit::KeyboardFocusManager& keyboardFocusManager, GarbageCollectorInterface& gc )
62 : BaseWrappedObject( BaseWrappedObject::KEYBOARD_FOCUS_MANAGER , gc )
63 {
64     mKeyboardFocusManager = keyboardFocusManager;
65 }
66
67 KeyboardFocusManagerWrapper::~KeyboardFocusManagerWrapper()
68 {
69
70 }
71
72 v8::Handle<v8::Object> KeyboardFocusManagerWrapper::WrapKeyboardFocusManager(v8::Isolate* isolate, const Dali::Toolkit::KeyboardFocusManager& keyboardFocusManager )
73 {
74   v8::EscapableHandleScope handleScope( isolate );
75   v8::Local<v8::ObjectTemplate> objectTemplate;
76
77   objectTemplate = GetKeyboardFocusManagerTemplate( isolate);
78
79   // create an instance of the template
80   v8::Local<v8::Object> localObject = objectTemplate->NewInstance();
81
82   // create the KeyboardFocusManager wrapper
83   KeyboardFocusManagerWrapper* pointer =  new KeyboardFocusManagerWrapper( keyboardFocusManager, Dali::V8Plugin::DaliWrapper::Get().GetDaliGarbageCollector() );
84
85   // assign the JavaScript object to the wrapper.
86   pointer->SetJavascriptObject( isolate, localObject );
87
88   return handleScope.Escape( localObject );
89 }
90
91 v8::Local<v8::ObjectTemplate> KeyboardFocusManagerWrapper::GetKeyboardFocusManagerTemplate( v8::Isolate* isolate)
92 {
93   v8::EscapableHandleScope handleScope( isolate );
94   v8::Local<v8::ObjectTemplate> objectTemplate;
95
96   v8::Local<v8::ObjectTemplate> objTemplate = v8::ObjectTemplate::New();
97
98   objTemplate->SetInternalFieldCount( BaseWrappedObject::FIELD_COUNT );
99
100   // add intercepts for Signals, we can't use HandleWrapper::AddIntercepts because KeyboardFocusManager doesn't inherit
101   // from Handle ( just baseHandle)
102   ObjectTemplateHelper::AddSignalConnectAndDisconnect( isolate, objTemplate );
103
104   // add our function properties
105   ObjectTemplateHelper::InstallFunctions( isolate, objTemplate, KeyboardFocusManagerFunctionTable, KeyboardFocusManagerFunctionTableCount );
106
107   return handleScope.Escape( objTemplate );
108
109 }
110
111
112 std::string KeyboardFocusManagerWrapper::GetDirectionName(  Toolkit::Control::KeyboardFocus::Direction dir )
113 {
114   switch( dir )
115   {
116     case Dali::Toolkit::Control::KeyboardFocus::LEFT:
117     {
118       return "left";
119       break;
120     }
121     case Dali::Toolkit::Control::KeyboardFocus::RIGHT:
122     {
123       return "right";
124       break;
125     }
126     case Dali::Toolkit::Control::KeyboardFocus::UP:
127     {
128       return "up";
129       break;
130     }
131     case Dali::Toolkit::Control::KeyboardFocus::DOWN:
132     {
133       return "down";
134       break;
135     }
136   }
137   return "unknown direction";
138 }
139
140
141 Dali::Toolkit::KeyboardFocusManager KeyboardFocusManagerWrapper::GetKeyboardFocusManager()
142 {
143   return mKeyboardFocusManager;
144 }
145
146
147 } // namespace V8Plugin
148
149 } // namespace Dali