[Tizen] Fix imfmanager issue and add an imfmanager sample
[platform/core/csapi/nui.git] / NUISamples / NUISamples / NUISamples.TizenTV / examples / text-test2.cs
1 /*\r
2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.\r
3 *\r
4 * Licensed under the Apache License, Version 2.0 (the "License");\r
5 * you may not use this file except in compliance with the License.\r
6 * You may obtain a copy of the License at\r
7 *\r
8 * http://www.apache.org/licenses/LICENSE-2.0\r
9 *\r
10 * Unless required by applicable law or agreed to in writing, software\r
11 * distributed under the License is distributed on an "AS IS" BASIS,\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13 * See the License for the specific language governing permissions and\r
14 * limitations under the License.\r
15 *\r
16 */\r
17 \r
18 using System;\r
19 using System.Runtime.InteropServices;\r
20 using Tizen.NUI;\r
21 using Tizen.NUI.UIComponents;\r
22 using Tizen.NUI.BaseComponents;\r
23 using Tizen.NUI.Constants;\r
24 \r
25 namespace TextTest2\r
26 {\r
27     class Example : NUIApplication\r
28     {\r
29         public Example() : base()\r
30         {\r
31         }\r
32 \r
33         public Example(string stylesheet) : base(stylesheet)\r
34         {\r
35         }\r
36 \r
37         public Example(string stylesheet, WindowMode windowMode) : base(stylesheet, windowMode)\r
38         {\r
39         }\r
40 \r
41         protected override void OnCreate()\r
42         {\r
43             base.OnCreate();\r
44             Initialize();\r
45         }\r
46 \r
47         private PushButton _button;\r
48         private PushButton button2;\r
49         private TextField _field;\r
50         private TextEditor editor;\r
51 \r
52 \r
53         public void Initialize()\r
54         {\r
55             Window window = Window.Instance;\r
56             window.BackgroundColor = Color.White;\r
57 \r
58             _field = new TextField();\r
59             _field.Size2D = new Size2D(500, 300);\r
60             _field.Position2D = new Position2D(530, 550);\r
61             _field.BackgroundColor = Color.Cyan;\r
62             _field.PlaceholderText = "TextField input someth...";\r
63             _field.Focusable = true;\r
64             _field.EnableSelection = true;\r
65             window.Add(_field);\r
66 \r
67             PropertyMap propertyMap = new PropertyMap();\r
68             propertyMap.Add("placeholderText", new PropertyValue("TextEditor Placeholder Text"));\r
69             propertyMap.Add("placeholderColor", new PropertyValue(Color.Red));\r
70             propertyMap.Add("placeholderPointSize", new PropertyValue(12.0f));\r
71 \r
72             PropertyMap fontStyleMap = new PropertyMap();\r
73             fontStyleMap.Add("weight", new PropertyValue("bold"));\r
74             fontStyleMap.Add("width", new PropertyValue("condensed"));\r
75             fontStyleMap.Add("slant", new PropertyValue("italic"));\r
76             propertyMap.Add("placeholderFontStyle", new PropertyValue(fontStyleMap));\r
77 \r
78 \r
79             editor = new TextEditor();\r
80             editor.Size2D = new Size2D(500, 300);\r
81             editor.Position2D = new Position2D(10, 550);\r
82             editor.BackgroundColor = Color.Magenta;\r
83             editor.Focusable = true;\r
84             editor.Placeholder = propertyMap;\r
85 \r
86             window.Add(editor);\r
87             editor.TextChanged += (obj, e) => {\r
88                 Tizen.Log.Fatal("NUI", "editor line count: " + e.TextEditor.LineCount);\r
89             };\r
90 \r
91             editor.ScrollStateChanged += (obj, e) => {\r
92                 Tizen.Log.Fatal("NUI", "editor scroll state:" + e.ScrollState);\r
93             };\r
94 \r
95             Tizen.Log.Debug("NUI", "editor id: " + editor.ID);\r
96 \r
97             ImfManager imfManager = ImfManager.Get();\r
98             // send privatecommand event\r
99             ImfManager.ImfEventData imfevent = new ImfManager.ImfEventData(ImfManager.ImfEvent.PrivateCommand, "", 0, 0);\r
100             imfManager.ImfManagerEventReceived += ImfManager_ImfManagerEventReceived;\r
101 \r
102             //imfmanager.imfManagerLanguageChanged += ImfManager_LanguageChanged;\r
103 \r
104             _button = new PushButton();\r
105             _button.LabelText = "Button1";\r
106             _button.Size2D = new Size2D(400, 200);\r
107             _button.Position2D = new Position2D(10, -10);\r
108             _button.ParentOrigin = ParentOrigin.BottomLeft;\r
109             _button.PivotPoint = PivotPoint.BottomLeft;\r
110             _button.PositionUsesPivotPoint = true;\r
111             _button.Focusable = true;\r
112             window.Add(_button);\r
113 \r
114             button2 = new PushButton();\r
115             button2.LabelText = "Button2";\r
116             button2.Size2D = new Size2D(400, 200);\r
117             button2.ParentOrigin = ParentOrigin.BottomLeft;\r
118             button2.PivotPoint = PivotPoint.BottomLeft;\r
119             button2.Position2D = new Position2D(420, -10);\r
120             button2.PositionUsesPivotPoint = true;\r
121             button2.Focusable = true;\r
122             window.Add(button2);\r
123 \r
124             _button.UpFocusableView = editor;\r
125             FocusManager.Instance.PreFocusChange += OnPreFocusChange;\r
126         }\r
127 \r
128         private View OnPreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e)\r
129         {\r
130             if (!e.ProposedView && !e.CurrentView)\r
131             {\r
132                 e.ProposedView = _button;\r
133             }\r
134             return e.ProposedView;\r
135         }\r
136 \r
137         public ImfManager.ImfCallbackData ImfManager_ImfManagerEventReceived(object sender, ImfManager.ImfManagerEventReceivedEventArgs e)\r
138         {\r
139             Tizen.Log.Fatal("NUI", "ImfManager_ImfManagerEventReceived()!");\r
140 \r
141             Tizen.Log.Fatal("NUI", "e.ImfEventData.PredictiveString= " + e?.ImfEventData?.PredictiveString);\r
142             Tizen.Log.Fatal("NUI", "e.ImfEventData.PredictiveString= " + e?.ImfEventData?.CursorOffset);\r
143             Tizen.Log.Fatal("NUI", "e.ImfEventData.PredictiveString= " + e?.ImfEventData?.EventName);\r
144             Tizen.Log.Fatal("NUI", "e.ImfEventData.PredictiveString= " + e?.ImfEventData?.NumberOfChars);\r
145 \r
146             //Be able to compare VD specific private command with ImfEventData.predictiveString\r
147             if (e.ImfEventData.PredictiveString == "IME_F31")\r
148             {\r
149                 ImfManager.Get().Deactivate();\r
150                 ImfManager.Get().HideInputPanel();\r
151                 // Do Something the user wants\r
152                 Tizen.Log.Fatal("NUI", "ImfManager ImfEventData.PredictiveString: IME_F31!!!");\r
153             }\r
154             ImfManager.ImfCallbackData callbackData = new ImfManager.ImfCallbackData(true, 0, e.ImfEventData.PredictiveString, false);\r
155             Tizen.Log.Fatal("NUI", "ImfManager return callbackData!!!");\r
156             return callbackData;\r
157         }\r
158 \r
159         //public void ImfManager_LanguageChanged(object sender, EventArgs args)\r
160         //{\r
161         //    Tizen.Log.Fatal("NUI", "ImfManager LanguageChanged!!!");\r
162         //    return;\r
163         //}\r
164 \r
165         [STAThread]\r
166         static void _Main(string[] args)\r
167         {\r
168             Example example = new Example();\r
169             example.Run(args);\r
170         }\r
171     }\r
172 }\r