2 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include "keyboard-focus-manager-wrapper.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>
36 * Contains a list of all functions that can be called
38 const ApiFunction KeyboardFocusManagerFunctionTable[]=
40 /**************************************
41 * KeyboardFocusManager API (in order of keyboard-focus-manager.h)
42 **************************************/
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 },
57 const unsigned int KeyboardFocusManagerFunctionTableCount = sizeof(KeyboardFocusManagerFunctionTable)/sizeof(KeyboardFocusManagerFunctionTable[0]);
61 KeyboardFocusManagerWrapper::KeyboardFocusManagerWrapper( const Dali::Toolkit::KeyboardFocusManager& keyboardFocusManager, GarbageCollectorInterface& gc )
62 : BaseWrappedObject( BaseWrappedObject::KEYBOARD_FOCUS_MANAGER , gc )
64 mKeyboardFocusManager = keyboardFocusManager;
67 KeyboardFocusManagerWrapper::~KeyboardFocusManagerWrapper()
72 v8::Handle<v8::Object> KeyboardFocusManagerWrapper::WrapKeyboardFocusManager(v8::Isolate* isolate, const Dali::Toolkit::KeyboardFocusManager& keyboardFocusManager )
74 v8::EscapableHandleScope handleScope( isolate );
75 v8::Local<v8::ObjectTemplate> objectTemplate;
77 objectTemplate = GetKeyboardFocusManagerTemplate( isolate);
79 // create an instance of the template
80 v8::Local<v8::Object> localObject = objectTemplate->NewInstance();
82 // create the KeyboardFocusManager wrapper
83 KeyboardFocusManagerWrapper* pointer = new KeyboardFocusManagerWrapper( keyboardFocusManager, Dali::V8Plugin::DaliWrapper::Get().GetDaliGarbageCollector() );
85 // assign the JavaScript object to the wrapper.
86 pointer->SetJavascriptObject( isolate, localObject );
88 return handleScope.Escape( localObject );
91 v8::Local<v8::ObjectTemplate> KeyboardFocusManagerWrapper::GetKeyboardFocusManagerTemplate( v8::Isolate* isolate)
93 v8::EscapableHandleScope handleScope( isolate );
94 v8::Local<v8::ObjectTemplate> objectTemplate;
96 v8::Local<v8::ObjectTemplate> objTemplate = v8::ObjectTemplate::New();
98 objTemplate->SetInternalFieldCount( BaseWrappedObject::FIELD_COUNT );
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 );
104 // add our function properties
105 ObjectTemplateHelper::InstallFunctions( isolate, objTemplate, KeyboardFocusManagerFunctionTable, KeyboardFocusManagerFunctionTableCount );
107 return handleScope.Escape( objTemplate );
112 std::string KeyboardFocusManagerWrapper::GetDirectionName( Toolkit::Control::KeyboardFocusNavigationDirection dir )
116 case Dali::Toolkit::Control::Left:
121 case Dali::Toolkit::Control::Right:
126 case Dali::Toolkit::Control::Up:
131 case Dali::Toolkit::Control::Down:
137 return "unknown direction";
141 Dali::Toolkit::KeyboardFocusManager KeyboardFocusManagerWrapper::GetKeyboardFocusManager()
143 return mKeyboardFocusManager;
147 } // namespace V8Plugin