2 * Copyright (c) 2017 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 using System.Runtime.InteropServices;
21 using Tizen.NUI.UIComponents;
22 using Tizen.NUI.BaseComponents;
23 using Tizen.NUI.Constants;
27 class Example : NUIApplication
29 public Example() : base()
33 public Example(string stylesheet) : base(stylesheet)
37 public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)
41 protected override void OnCreate()
47 private PushButton button;
48 private TextEditor editor;
49 private ImfManager imfManager;
52 public void Initialize()
54 Window window = Window.Instance;
55 window.BackgroundColor = Color.White;
57 PropertyMap propertyMap = new PropertyMap();
58 propertyMap.Add("placeholderText", new PropertyValue("TextEditor Placeholder Text"));
59 propertyMap.Add("placeholderColor", new PropertyValue(Color.Red));
60 propertyMap.Add("placeholderPointSize", new PropertyValue(12.0f));
62 PropertyMap fontStyleMap = new PropertyMap();
63 fontStyleMap.Add("weight", new PropertyValue("bold"));
64 fontStyleMap.Add("width", new PropertyValue("condensed"));
65 fontStyleMap.Add("slant", new PropertyValue("italic"));
66 propertyMap.Add("placeholderFontStyle", new PropertyValue(fontStyleMap));
69 editor = new TextEditor()
71 Size2D = new Size2D(500, 300),
72 Position2D = new Position2D(10, 550),
73 BackgroundColor = Color.Magenta,
75 Placeholder = propertyMap
80 editor.TextChanged += (obj, e) => {
81 Tizen.Log.Fatal("NUI", "editor line count: " + e.TextEditor.LineCount);
84 editor.ScrollStateChanged += (obj, e) => {
85 Tizen.Log.Fatal("NUI", "editor scroll state:" + e.ScrollState);
88 editor.KeyEvent += OnKeyEvent;
91 Tizen.Log.Debug("NUI", "editor id: " + editor.ID);
93 imfManager = ImfManager.Get();
94 imfManager.AutoEnableInputPanel(false);
95 imfManager.SetInputPanelUserData("layouttype = 1 & entrylimit = 255 & action = clearall_for_voice_commit & caller = org.volt.search - all");
98 // send privatecommand event
99 ImfManager.ImfEventData imfevent = new ImfManager.ImfEventData(ImfManager.ImfEvent.PrivateCommand, "", 0, 0);
100 imfManager.EventReceived += ImfManager_ImfManagerEventReceived;
102 imfManager.LanguageChanged += ImfManager_LanguageChanged;
104 imfManager.Activated += (obj, e) => {
105 Tizen.Log.Debug("NUI", "ImfManager Activated !!!!!");
107 imfManager.StatusChanged += (obj, e) => {
108 Tizen.Log.Debug("NUI", "ImfManager StatusChanged: !!!!!" + e.StatusChanged);
110 imfManager.Resized += (obj, e) =>
112 Tizen.Log.Debug("NUI", "ImfManager Resized !!!!!");
114 imfManager.KeyboardTypeChanged += (obj, e) => {
115 Tizen.Log.Debug("NUI", "ImfManager KeyboardTypeChanged: !!!!!" + e.KeyboardType);
118 button = new PushButton()
120 LabelText = "Button",
121 Size2D = new Size2D(400, 200),
122 Position2D = new Position2D(10, -10),
123 ParentOrigin = ParentOrigin.BottomLeft,
124 PivotPoint = PivotPoint.BottomLeft,
125 PositionUsesPivotPoint = true,
131 button.UpFocusableView = editor;
132 editor.DownFocusableView = button;
134 FocusManager.Instance.SetCurrentFocusView(button);
137 private bool OnKeyEvent(object source, View.KeyEventArgs e)
139 Tizen.Log.Debug("NUI", "KeyEvent called !!!!!");
140 if (e.Key.State != Key.StateType.Down || editor.Focusable == false)
142 Tizen.Log.Debug("NUI", "KeyEvent ignored !!!!!");
145 switch (e.Key.KeyPressedName)
148 Tizen.Log.Debug("NUI", "KeyPressedName: Return !!!!!");
152 Tizen.Log.Debug("NUI", "KeyPressedName: Select !!!!!");
156 Tizen.Log.Debug("NUI", "KeyPressedName: Cancel !!!!!");
160 Tizen.Log.Debug("NUI", "KeyPressedName: Down !!!!!");
162 return MoveFocusTo(button);
167 private void ShowImf()
169 imfManager.Activate();
170 imfManager.ShowInputPanel();
171 Tizen.Log.Debug("NUI", "IME showed !!!!!");
174 private bool MoveFocusTo(View view)
176 if (view == null) return false;
177 return FocusManager.Instance.SetCurrentFocusView(view);
180 private void HideImf()
182 imfManager.Deactivate();
183 imfManager.HideInputPanel();
184 Tizen.Log.Debug("NUI", "IME hided !!!!!");
187 public ImfManager.ImfCallbackData ImfManager_ImfManagerEventReceived(object sender, ImfManager.EventReceivedEventArgs e)
189 Tizen.Log.Debug("NUI", "ImfManager_ImfManagerEventReceived()!");
191 Tizen.Log.Debug("NUI", "e.ImfEventData.PredictiveString= " + e?.ImfEventData?.PredictiveString);
192 Tizen.Log.Debug("NUI", "e.ImfEventData.CursorOffset= " + e?.ImfEventData?.CursorOffset);
193 Tizen.Log.Debug("NUI", "e.ImfEventData.EventName= " + e?.ImfEventData?.EventName);
194 Tizen.Log.Debug("NUI", "e.ImfEventData.NumberOfChars= " + e?.ImfEventData?.NumberOfChars);
196 //Be able to compare VD specific private command with ImfEventData.predictiveString
197 if (e.ImfEventData.PredictiveString == "IME_F31")
199 ImfManager.Get().Deactivate();
200 ImfManager.Get().HideInputPanel();
201 // Do Something the user wants
202 Tizen.Log.Debug("NUI", "ImfManager ImfEventData.PredictiveString: IME_F31!!!");
204 ImfManager.ImfCallbackData callbackData = new ImfManager.ImfCallbackData(true, 0, e.ImfEventData.PredictiveString, false);
205 Tizen.Log.Debug("NUI", "ImfManager return callbackData!!!");
209 public void ImfManager_LanguageChanged(object sender, EventArgs args)
211 Tizen.Log.Debug("NUI", "ImfManager LanguageChanged!!!");
216 static void _Main(string[] args)
218 Example example = new Example();