Merge "[Tizen] Make AppControl signal work" into tizen
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / BaseComponents / TextField.cs
1 /** Copyright (c) 2017 Samsung Electronics Co., Ltd.
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 *
15 */
16 extern alias TizenSystemSettings;
17 using TizenSystemSettings.Tizen.System;
18 namespace Tizen.NUI.BaseComponents
19 {
20
21     using System;
22     using System.Runtime.InteropServices;
23     using System.Globalization;
24     /// <summary>
25     /// A control which provides a single-line editable text field.
26     /// </summary>
27     public class TextField : View
28     {
29         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
30         private string textFieldTextSid = null;
31         private string textFieldPlaceHolderTextSid = null;
32         private bool systemlangTextFlag = false;
33
34         internal TextField(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.TextField_SWIGUpcast(cPtr), cMemoryOwn)
35         {
36             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
37         }
38
39         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextField obj)
40         {
41             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
42         }
43
44         /// <summary>
45         /// Dispose
46         /// </summary>
47         protected override void Dispose(DisposeTypes type)
48         {
49             if (disposed)
50             {
51                 DisposeQueue.Instance.Add(this);
52                 return;
53             }
54
55             if(type == DisposeTypes.Explicit)
56             {
57                 //Called by User
58                 //Release your own managed resources here.
59                 //You should release all of your own disposable objects here.
60             }
61
62             //Release your own unmanaged resources here.
63             //You should not access any managed member here except static instance.
64             //because the execution order of Finalizes is non-deterministic.
65
66             if (_textFieldMaxLengthReachedCallbackDelegate != null)
67             {
68                 this.MaxLengthReachedSignal().Disconnect(_textFieldMaxLengthReachedCallbackDelegate);
69             }
70
71             if (_textFieldTextChangedCallbackDelegate != null)
72             {
73                 TextChangedSignal().Disconnect(_textFieldTextChangedCallbackDelegate);
74             }
75
76             if (swigCPtr.Handle != global::System.IntPtr.Zero)
77             {
78                 if (swigCMemOwn)
79                 {
80                     swigCMemOwn = false;
81                     NDalicPINVOKE.delete_TextField(swigCPtr);
82                 }
83                 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
84             }
85
86             base.Dispose(type);
87         }
88
89         /// <summary>
90         /// Text changed event arguments.
91         /// </summary>
92         public class TextChangedEventArgs : EventArgs
93         {
94             private TextField _textField;
95
96             /// <summary>
97             /// TextField.
98             /// </summary>
99             public TextField TextField
100             {
101                 get
102                 {
103                     return _textField;
104                 }
105                 set
106                 {
107                     _textField = value;
108                 }
109             }
110         }
111
112         /// <summary>
113         /// MaxLengthReached event arguments.
114         /// </summary>
115         public class MaxLengthReachedEventArgs : EventArgs
116         {
117             private TextField _textField;
118
119             /// <summary>
120             /// TextField.
121             /// </summary>
122             public TextField TextField
123             {
124                 get
125                 {
126                     return _textField;
127                 }
128                 set
129                 {
130                     _textField = value;
131                 }
132             }
133         }
134
135
136         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
137         private delegate void TextChangedCallbackDelegate(IntPtr textField);
138         private EventHandler<TextChangedEventArgs> _textFieldTextChangedEventHandler;
139         private TextChangedCallbackDelegate _textFieldTextChangedCallbackDelegate;
140
141         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
142         private delegate void MaxLengthReachedCallbackDelegate(IntPtr textField);
143         private EventHandler<MaxLengthReachedEventArgs> _textFieldMaxLengthReachedEventHandler;
144         private MaxLengthReachedCallbackDelegate _textFieldMaxLengthReachedCallbackDelegate;
145
146         /// <summary>
147         /// TextChanged event.
148         /// </summary>
149         public event EventHandler<TextChangedEventArgs> TextChanged
150         {
151             add
152             {
153                 if (_textFieldTextChangedEventHandler == null)
154                 {
155                     _textFieldTextChangedCallbackDelegate = (OnTextChanged);
156                     TextChangedSignal().Connect(_textFieldTextChangedCallbackDelegate);
157                 }
158                 _textFieldTextChangedEventHandler += value;
159             }
160             remove
161             {
162                 _textFieldTextChangedEventHandler -= value;
163                 if (_textFieldTextChangedEventHandler == null && TextChangedSignal().Empty() == false)
164                 {
165                     TextChangedSignal().Disconnect(_textFieldTextChangedCallbackDelegate);
166                 }
167             }
168         }
169
170         private void OnTextChanged(IntPtr textField)
171         {
172             TextChangedEventArgs e = new TextChangedEventArgs();
173
174             // Populate all members of "e" (TextChangedEventArgs) with real data
175             e.TextField = Registry.GetManagedBaseHandleFromNativePtr(textField) as TextField;
176
177             if (_textFieldTextChangedEventHandler != null)
178             {
179                 //here we send all data to user event handlers
180                 _textFieldTextChangedEventHandler(this, e);
181             }
182
183         }
184
185         /// <summary>
186         /// MaxLengthReached event.
187         /// </summary>
188         public event EventHandler<MaxLengthReachedEventArgs> MaxLengthReached
189         {
190             add
191             {
192                 if (_textFieldMaxLengthReachedEventHandler == null)
193                 {
194                     _textFieldMaxLengthReachedCallbackDelegate = (OnMaxLengthReached);
195                     MaxLengthReachedSignal().Connect(_textFieldMaxLengthReachedCallbackDelegate);
196                 }
197                 _textFieldMaxLengthReachedEventHandler += value;
198             }
199             remove
200             {
201                 if (_textFieldMaxLengthReachedEventHandler == null && MaxLengthReachedSignal().Empty() == false)
202                 {
203                     this.MaxLengthReachedSignal().Disconnect(_textFieldMaxLengthReachedCallbackDelegate);
204                 }
205                 _textFieldMaxLengthReachedEventHandler -= value;
206             }
207         }
208
209         private void OnMaxLengthReached(IntPtr textField)
210         {
211             MaxLengthReachedEventArgs e = new MaxLengthReachedEventArgs();
212
213             // Populate all members of "e" (MaxLengthReachedEventArgs) with real data
214             e.TextField = Registry.GetManagedBaseHandleFromNativePtr(textField) as TextField;
215
216             if (_textFieldMaxLengthReachedEventHandler != null)
217             {
218                 //here we send all data to user event handlers
219                 _textFieldMaxLengthReachedEventHandler(this, e);
220             }
221
222         }
223
224         internal class Property
225         {
226             internal static readonly int RENDERING_BACKEND = NDalicPINVOKE.TextField_Property_RENDERING_BACKEND_get();
227             internal static readonly int TEXT = NDalicPINVOKE.TextField_Property_TEXT_get();
228             internal static readonly int PLACEHOLDER_TEXT = NDalicPINVOKE.TextField_Property_PLACEHOLDER_TEXT_get();
229             internal static readonly int PLACEHOLDER_TEXT_FOCUSED = NDalicPINVOKE.TextField_Property_PLACEHOLDER_TEXT_FOCUSED_get();
230             internal static readonly int FONT_FAMILY = NDalicPINVOKE.TextField_Property_FONT_FAMILY_get();
231             internal static readonly int FONT_STYLE = NDalicPINVOKE.TextField_Property_FONT_STYLE_get();
232             internal static readonly int POINT_SIZE = NDalicPINVOKE.TextField_Property_POINT_SIZE_get();
233             internal static readonly int MAX_LENGTH = NDalicPINVOKE.TextField_Property_MAX_LENGTH_get();
234             internal static readonly int EXCEED_POLICY = NDalicPINVOKE.TextField_Property_EXCEED_POLICY_get();
235             internal static readonly int HORIZONTAL_ALIGNMENT = NDalicPINVOKE.TextField_Property_HORIZONTAL_ALIGNMENT_get();
236             internal static readonly int VERTICAL_ALIGNMENT = NDalicPINVOKE.TextField_Property_VERTICAL_ALIGNMENT_get();
237             internal static readonly int TEXT_COLOR = NDalicPINVOKE.TextField_Property_TEXT_COLOR_get();
238             internal static readonly int PLACEHOLDER_TEXT_COLOR = NDalicPINVOKE.TextField_Property_PLACEHOLDER_TEXT_COLOR_get();
239             internal static readonly int SHADOW_OFFSET = NDalicPINVOKE.TextField_Property_SHADOW_OFFSET_get();
240             internal static readonly int SHADOW_COLOR = NDalicPINVOKE.TextField_Property_SHADOW_COLOR_get();
241             internal static readonly int PRIMARY_CURSOR_COLOR = NDalicPINVOKE.TextField_Property_PRIMARY_CURSOR_COLOR_get();
242             internal static readonly int SECONDARY_CURSOR_COLOR = NDalicPINVOKE.TextField_Property_SECONDARY_CURSOR_COLOR_get();
243             internal static readonly int ENABLE_CURSOR_BLINK = NDalicPINVOKE.TextField_Property_ENABLE_CURSOR_BLINK_get();
244             internal static readonly int CURSOR_BLINK_INTERVAL = NDalicPINVOKE.TextField_Property_CURSOR_BLINK_INTERVAL_get();
245             internal static readonly int CURSOR_BLINK_DURATION = NDalicPINVOKE.TextField_Property_CURSOR_BLINK_DURATION_get();
246             internal static readonly int CURSOR_WIDTH = NDalicPINVOKE.TextField_Property_CURSOR_WIDTH_get();
247             internal static readonly int GRAB_HANDLE_IMAGE = NDalicPINVOKE.TextField_Property_GRAB_HANDLE_IMAGE_get();
248             internal static readonly int GRAB_HANDLE_PRESSED_IMAGE = NDalicPINVOKE.TextField_Property_GRAB_HANDLE_PRESSED_IMAGE_get();
249             internal static readonly int SCROLL_THRESHOLD = NDalicPINVOKE.TextField_Property_SCROLL_THRESHOLD_get();
250             internal static readonly int SCROLL_SPEED = NDalicPINVOKE.TextField_Property_SCROLL_SPEED_get();
251             internal static readonly int SELECTION_HANDLE_IMAGE_LEFT = NDalicPINVOKE.TextField_Property_SELECTION_HANDLE_IMAGE_LEFT_get();
252             internal static readonly int SELECTION_HANDLE_IMAGE_RIGHT = NDalicPINVOKE.TextField_Property_SELECTION_HANDLE_IMAGE_RIGHT_get();
253             internal static readonly int SELECTION_HANDLE_PRESSED_IMAGE_LEFT = NDalicPINVOKE.TextField_Property_SELECTION_HANDLE_PRESSED_IMAGE_LEFT_get();
254             internal static readonly int SELECTION_HANDLE_PRESSED_IMAGE_RIGHT = NDalicPINVOKE.TextField_Property_SELECTION_HANDLE_PRESSED_IMAGE_RIGHT_get();
255             internal static readonly int SELECTION_HANDLE_MARKER_IMAGE_LEFT = NDalicPINVOKE.TextField_Property_SELECTION_HANDLE_MARKER_IMAGE_LEFT_get();
256             internal static readonly int SELECTION_HANDLE_MARKER_IMAGE_RIGHT = NDalicPINVOKE.TextField_Property_SELECTION_HANDLE_MARKER_IMAGE_RIGHT_get();
257             internal static readonly int SELECTION_HIGHLIGHT_COLOR = NDalicPINVOKE.TextField_Property_SELECTION_HIGHLIGHT_COLOR_get();
258             internal static readonly int DECORATION_BOUNDING_BOX = NDalicPINVOKE.TextField_Property_DECORATION_BOUNDING_BOX_get();
259             internal static readonly int INPUT_METHOD_SETTINGS = NDalicPINVOKE.TextField_Property_INPUT_METHOD_SETTINGS_get();
260             internal static readonly int INPUT_COLOR = NDalicPINVOKE.TextField_Property_INPUT_COLOR_get();
261             internal static readonly int ENABLE_MARKUP = NDalicPINVOKE.TextField_Property_ENABLE_MARKUP_get();
262             internal static readonly int INPUT_FONT_FAMILY = NDalicPINVOKE.TextField_Property_INPUT_FONT_FAMILY_get();
263             internal static readonly int INPUT_FONT_STYLE = NDalicPINVOKE.TextField_Property_INPUT_FONT_STYLE_get();
264             internal static readonly int INPUT_POINT_SIZE = NDalicPINVOKE.TextField_Property_INPUT_POINT_SIZE_get();
265             internal static readonly int UNDERLINE = NDalicPINVOKE.TextField_Property_UNDERLINE_get();
266             internal static readonly int INPUT_UNDERLINE = NDalicPINVOKE.TextField_Property_INPUT_UNDERLINE_get();
267             internal static readonly int SHADOW = NDalicPINVOKE.TextField_Property_SHADOW_get();
268             internal static readonly int INPUT_SHADOW = NDalicPINVOKE.TextField_Property_INPUT_SHADOW_get();
269             internal static readonly int EMBOSS = NDalicPINVOKE.TextField_Property_EMBOSS_get();
270             internal static readonly int INPUT_EMBOSS = NDalicPINVOKE.TextField_Property_INPUT_EMBOSS_get();
271             internal static readonly int OUTLINE = NDalicPINVOKE.TextField_Property_OUTLINE_get();
272             internal static readonly int INPUT_OUTLINE = NDalicPINVOKE.TextField_Property_INPUT_OUTLINE_get();
273             internal static readonly int HIDDEN_INPUT_SETTINGS = NDalicManualPINVOKE.TextField_Property_HIDDEN_INPUT_SETTINGS_get();
274             internal static readonly int PIXEL_SIZE = NDalicManualPINVOKE.TextField_Property_PIXEL_SIZE_get();
275             internal static readonly int ENABLE_SELECTION = NDalicManualPINVOKE.TextField_Property_ENABLE_SELECTION_get();
276             internal static readonly int PLACEHOLDER = NDalicManualPINVOKE.TextField_Property_PLACEHOLDER_get();
277
278         }
279
280         internal class InputStyle
281         {
282             internal enum Mask
283             {
284                 None = 0x0000,
285                 Color = 0x0001,
286                 FontFamily = 0x0002,
287                 PointSize = 0x0004,
288                 FontStyle = 0x0008,
289                 Underline = 0x0010,
290                 Shadow = 0x0020,
291                 Emboss = 0x0040,
292                 Outline = 0x0080
293             }
294
295         }
296
297         /// <summary>
298         /// Creates the TextField control.
299         /// </summary>
300         public TextField() : this(NDalicPINVOKE.TextField_New(), true)
301         {
302             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
303
304         }
305         internal TextField(TextField handle) : this(NDalicPINVOKE.new_TextField__SWIG_1(TextField.getCPtr(handle)), true)
306         {
307             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
308         }
309
310         [Obsolete("Please do not use! this will be deprecated")]
311         public new static TextField DownCast(BaseHandle handle)
312         {
313             TextField ret =  Registry.GetManagedBaseHandleFromNativePtr(handle) as TextField;
314             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
315             return ret;
316         }
317
318         internal TextFieldSignal TextChangedSignal()
319         {
320             TextFieldSignal ret = new TextFieldSignal(NDalicPINVOKE.TextField_TextChangedSignal(swigCPtr), false);
321             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
322             return ret;
323         }
324
325         internal TextFieldSignal MaxLengthReachedSignal()
326         {
327             TextFieldSignal ret = new TextFieldSignal(NDalicPINVOKE.TextField_MaxLengthReachedSignal(swigCPtr), false);
328             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
329             return ret;
330         }
331
332         internal SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextField_Dali__Toolkit__TextField__InputStyle__MaskF_t InputStyleChangedSignal()
333         {
334             SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextField_Dali__Toolkit__TextField__InputStyle__MaskF_t ret = new SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextField_Dali__Toolkit__TextField__InputStyle__MaskF_t(NDalicPINVOKE.TextField_InputStyleChangedSignal(swigCPtr), false);
335             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
336             return ret;
337         }
338
339         internal enum ExceedPolicyType
340         {
341             ExceedPolicyOriginal,
342             ExceedPolicyClip
343         }
344
345         /// <summary>
346         /// TranslatableText property.<br>
347         /// The text can be set SID value.<br>
348         /// </summary>
349         /// <exception cref='ArgumentNullException'>
350         /// ResourceManager about multilingual is null
351         /// </exception>
352         public string TranslatableText
353         {
354             get
355             {
356                 return textFieldTextSid;
357             }
358             set
359             {
360                 if (NUIApplication.MultilingualResourceManager == null)
361                 {
362                     throw new ArgumentNullException("ResourceManager about multilingual is null");
363                 }
364                 textFieldTextSid = value;
365                 Text = SetTranslatable(textFieldTextSid);
366             }
367         }
368         /// <summary>
369         /// TranslatablePlaceholderText property.<br>
370         /// The text can be set SID value.<br>
371         /// </summary>
372         /// <exception cref='ArgumentNullException'>
373         /// ResourceManager about multilingual is null
374         /// </exception>
375         public string TranslatablePlaceholderText
376         {
377             get
378             {
379                 return textFieldPlaceHolderTextSid;
380             }
381             set
382             {
383                 if (NUIApplication.MultilingualResourceManager == null)
384                 {
385                     throw new ArgumentNullException("ResourceManager about multilingual is null");
386                 }
387                 textFieldPlaceHolderTextSid = value;
388                 PlaceholderText = SetTranslatable(textFieldPlaceHolderTextSid);
389             }
390         }
391         private string SetTranslatable(string textFieldSid)
392         {
393             string translatableText = null;
394             translatableText = NUIApplication.MultilingualResourceManager?.GetString(textFieldSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-")));
395             if (translatableText != null)
396             {
397                 if (systemlangTextFlag == false)
398                 {
399                     SystemSettings.LocaleLanguageChanged += new WeakEventHandler<LocaleLanguageChangedEventArgs>(SystemSettings_LocaleLanguageChanged).Handler;
400                     systemlangTextFlag = true;
401                 }
402                 return translatableText;
403             }
404             else
405             {
406                 translatableText = "";
407                 return translatableText;
408             }
409         }
410         private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e)
411         {
412             if (textFieldTextSid != null)
413             {
414                 Text = NUIApplication.MultilingualResourceManager?.GetString(textFieldTextSid, new CultureInfo(e.Value.Replace("_", "-")));
415             }
416             if (textFieldPlaceHolderTextSid != null)
417             {
418                 PlaceholderText = NUIApplication.MultilingualResourceManager?.GetString(textFieldPlaceHolderTextSid, new CultureInfo(e.Value.Replace("_", "-")));
419             }
420         }
421         /// Text property.
422         /// </summary>
423         public string Text
424         {
425             get
426             {
427                 string temp;
428                 GetProperty(TextField.Property.TEXT).Get(out temp);
429                 return temp;
430             }
431             set
432             {
433                 SetProperty(TextField.Property.TEXT, new Tizen.NUI.PropertyValue(value));
434             }
435         }
436
437         /// <summary>
438         /// PlaceholderText property.
439         /// </summary>
440         public string PlaceholderText
441         {
442             get
443             {
444                 string temp;
445                 GetProperty(TextField.Property.PLACEHOLDER_TEXT).Get(out temp);
446                 return temp;
447             }
448             set
449             {
450                 SetProperty(TextField.Property.PLACEHOLDER_TEXT, new Tizen.NUI.PropertyValue(value));
451             }
452         }
453
454         /// <summary>
455         /// PlaceholderTextFocused property.
456         /// </summary>
457         public string PlaceholderTextFocused
458         {
459             get
460             {
461                 string temp;
462                 GetProperty(TextField.Property.PLACEHOLDER_TEXT_FOCUSED).Get(out temp);
463                 return temp;
464             }
465             set
466             {
467                 SetProperty(TextField.Property.PLACEHOLDER_TEXT_FOCUSED, new Tizen.NUI.PropertyValue(value));
468             }
469         }
470
471         /// <summary>
472         /// FontFamily property.
473         /// </summary>
474         public string FontFamily
475         {
476             get
477             {
478                 string temp;
479                 GetProperty(TextField.Property.FONT_FAMILY).Get(out temp);
480                 return temp;
481             }
482             set
483             {
484                 SetProperty(TextField.Property.FONT_FAMILY, new Tizen.NUI.PropertyValue(value));
485             }
486         }
487
488         /// <summary>
489         /// FontStyle property.
490         /// </summary>
491         public PropertyMap FontStyle
492         {
493             get
494             {
495                 PropertyMap temp = new PropertyMap();
496                 GetProperty(TextField.Property.FONT_STYLE).Get(temp);
497                 return temp;
498             }
499             set
500             {
501                 SetProperty(TextField.Property.FONT_STYLE, new Tizen.NUI.PropertyValue(value));
502             }
503         }
504
505         /// <summary>
506         /// PointSize property.
507         /// </summary>
508         public float PointSize
509         {
510             get
511             {
512                 float temp = 0.0f;
513                 GetProperty(TextField.Property.POINT_SIZE).Get(out temp);
514                 return temp;
515             }
516             set
517             {
518                 SetProperty(TextField.Property.POINT_SIZE, new Tizen.NUI.PropertyValue(value));
519             }
520         }
521
522         /// <summary>
523         /// MaxLength property.
524         /// </summary>
525         public int MaxLength
526         {
527             get
528             {
529                 int temp = 0;
530                 GetProperty(TextField.Property.MAX_LENGTH).Get(out temp);
531                 return temp;
532             }
533             set
534             {
535                 SetProperty(TextField.Property.MAX_LENGTH, new Tizen.NUI.PropertyValue(value));
536             }
537         }
538
539         /// <summary>
540         /// ExceedPolicy property.
541         /// </summary>
542         public int ExceedPolicy
543         {
544             get
545             {
546                 int temp = 0;
547                 GetProperty(TextField.Property.EXCEED_POLICY).Get(out temp);
548                 return temp;
549             }
550             set
551             {
552                 SetProperty(TextField.Property.EXCEED_POLICY, new Tizen.NUI.PropertyValue(value));
553             }
554         }
555
556         /// <summary>
557         /// HorizontalAlignment property.
558         /// </summary>
559         public HorizontalAlignment HorizontalAlignment
560         {
561             get
562             {
563                 string temp;
564                 if (GetProperty(TextField.Property.HORIZONTAL_ALIGNMENT).Get(out temp) == false)
565                 {
566                     NUILog.Error("HorizontalAlignment get error!");
567                 }
568
569                 switch (temp)
570                 {
571                     case "BEGIN":
572                         return HorizontalAlignment.Begin;
573                     case "CENTER":
574                         return HorizontalAlignment.Center;
575                     case "END":
576                         return HorizontalAlignment.End;
577                     default:
578                         return HorizontalAlignment.Begin;
579                 }
580             }
581             set
582             {
583                 string valueToString = "";
584                 switch (value)
585                 {
586                     case HorizontalAlignment.Begin:
587                     {
588                         valueToString = "BEGIN";
589                         break;
590                     }
591                     case HorizontalAlignment.Center:
592                     {
593                         valueToString = "CENTER";
594                         break;
595                     }
596                     case HorizontalAlignment.End:
597                     {
598                         valueToString = "END";
599                         break;
600                     }
601                     default:
602                     {
603                         valueToString = "BEGIN";
604                         break;
605                     }
606                 }
607                 SetProperty(TextField.Property.HORIZONTAL_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
608             }
609         }
610
611         /// <summary>
612         /// VerticalAlignment property.
613         /// </summary>
614         public VerticalAlignment VerticalAlignment
615         {
616             get
617             {
618                 string temp;
619                 if (GetProperty(TextField.Property.VERTICAL_ALIGNMENT).Get(out temp) == false)
620                 {
621                     NUILog.Error("VerticalAlignment get error!");
622                 }
623
624                 switch (temp)
625                 {
626                     case "TOP":
627                         return VerticalAlignment.Top;
628                     case "CENTER":
629                         return VerticalAlignment.Center;
630                     case "BOTTOM":
631                         return VerticalAlignment.Bottom;
632                     default:
633                         return VerticalAlignment.Bottom;
634                 }
635             }
636             set
637             {
638                 string valueToString = "";
639                 switch (value)
640                 {
641                     case VerticalAlignment.Top:
642                     {
643                         valueToString = "TOP";
644                         break;
645                     }
646                     case VerticalAlignment.Center:
647                     {
648                         valueToString = "CENTER";
649                         break;
650                     }
651                     case VerticalAlignment.Bottom:
652                     {
653                         valueToString = "BOTTOM";
654                         break;
655                     }
656                     default:
657                     {
658                         valueToString = "BOTTOM";
659                         break;
660                     }
661                 }
662                 SetProperty(TextField.Property.VERTICAL_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
663             }
664         }
665
666         /// <summary>
667         /// TextColor property.
668         /// </summary>
669         public Color TextColor
670         {
671             get
672             {
673                 Color temp = new Color(0.0f, 0.0f, 0.0f, 0.0f);
674                 GetProperty(TextField.Property.TEXT_COLOR).Get(temp);
675                 return temp;
676             }
677             set
678             {
679                 SetProperty(TextField.Property.TEXT_COLOR, new Tizen.NUI.PropertyValue(value));
680             }
681         }
682
683         /// <summary>
684         /// PlaceholderTextColor property.
685         /// </summary>
686         public Vector4 PlaceholderTextColor
687         {
688             get
689             {
690                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
691                 GetProperty(TextField.Property.PLACEHOLDER_TEXT_COLOR).Get(temp);
692                 return temp;
693             }
694             set
695             {
696                 SetProperty(TextField.Property.PLACEHOLDER_TEXT_COLOR, new Tizen.NUI.PropertyValue(value));
697             }
698         }
699
700         /// <summary>
701         /// ShadowOffset property.
702         /// </summary>
703         public Vector2 ShadowOffset
704         {
705             get
706             {
707                 Vector2 temp = new Vector2(0.0f, 0.0f);
708                 GetProperty(TextField.Property.SHADOW_OFFSET).Get(temp);
709                 return temp;
710             }
711             set
712             {
713                 SetProperty(TextField.Property.SHADOW_OFFSET, new Tizen.NUI.PropertyValue(value));
714             }
715         }
716
717         /// <summary>
718         /// ShadowColor property.
719         /// </summary>
720         public Vector4 ShadowColor
721         {
722             get
723             {
724                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
725                 GetProperty(TextField.Property.SHADOW_COLOR).Get(temp);
726                 return temp;
727             }
728             set
729             {
730                 SetProperty(TextField.Property.SHADOW_COLOR, new Tizen.NUI.PropertyValue(value));
731             }
732         }
733
734         /// <summary>
735         /// PrimaryCursorColor property.
736         /// </summary>
737         public Vector4 PrimaryCursorColor
738         {
739             get
740             {
741                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
742                 GetProperty(TextField.Property.PRIMARY_CURSOR_COLOR).Get(temp);
743                 return temp;
744             }
745             set
746             {
747                 SetProperty(TextField.Property.PRIMARY_CURSOR_COLOR, new Tizen.NUI.PropertyValue(value));
748             }
749         }
750
751         /// <summary>
752         /// SecondaryCursorColor property.
753         /// </summary>
754         public Vector4 SecondaryCursorColor
755         {
756             get
757             {
758                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
759                 GetProperty(TextField.Property.SECONDARY_CURSOR_COLOR).Get(temp);
760                 return temp;
761             }
762             set
763             {
764                 SetProperty(TextField.Property.SECONDARY_CURSOR_COLOR, new Tizen.NUI.PropertyValue(value));
765             }
766         }
767
768         /// <summary>
769         /// EnableCursorBlink property.
770         /// </summary>
771         public bool EnableCursorBlink
772         {
773             get
774             {
775                 bool temp = false;
776                 GetProperty(TextField.Property.ENABLE_CURSOR_BLINK).Get(out temp);
777                 return temp;
778             }
779             set
780             {
781                 SetProperty(TextField.Property.ENABLE_CURSOR_BLINK, new Tizen.NUI.PropertyValue(value));
782             }
783         }
784
785         /// <summary>
786         /// CursorBlinkInterval property.
787         /// </summary>
788         public float CursorBlinkInterval
789         {
790             get
791             {
792                 float temp = 0.0f;
793                 GetProperty(TextField.Property.CURSOR_BLINK_INTERVAL).Get(out temp);
794                 return temp;
795             }
796             set
797             {
798                 SetProperty(TextField.Property.CURSOR_BLINK_INTERVAL, new Tizen.NUI.PropertyValue(value));
799             }
800         }
801
802         /// <summary>
803         /// CursorBlinkDuration property.
804         /// </summary>
805         public float CursorBlinkDuration
806         {
807             get
808             {
809                 float temp = 0.0f;
810                 GetProperty(TextField.Property.CURSOR_BLINK_DURATION).Get(out temp);
811                 return temp;
812             }
813             set
814             {
815                 SetProperty(TextField.Property.CURSOR_BLINK_DURATION, new Tizen.NUI.PropertyValue(value));
816             }
817         }
818
819         /// <summary>
820         /// CursorWidth property.
821         /// </summary>
822         public int CursorWidth
823         {
824             get
825             {
826                 int temp = 0;
827                 GetProperty(TextField.Property.CURSOR_WIDTH).Get(out temp);
828                 return temp;
829             }
830             set
831             {
832                 SetProperty(TextField.Property.CURSOR_WIDTH, new Tizen.NUI.PropertyValue(value));
833             }
834         }
835
836         /// <summary>
837         /// GrabHandleImage property.
838         /// </summary>
839         public string GrabHandleImage
840         {
841             get
842             {
843                 string temp;
844                 GetProperty(TextField.Property.GRAB_HANDLE_IMAGE).Get(out temp);
845                 return temp;
846             }
847             set
848             {
849                 SetProperty(TextField.Property.GRAB_HANDLE_IMAGE, new Tizen.NUI.PropertyValue(value));
850             }
851         }
852
853         /// <summary>
854         /// GrabHandlePressedImage property.
855         /// </summary>
856         public string GrabHandlePressedImage
857         {
858             get
859             {
860                 string temp;
861                 GetProperty(TextField.Property.GRAB_HANDLE_PRESSED_IMAGE).Get(out temp);
862                 return temp;
863             }
864             set
865             {
866                 SetProperty(TextField.Property.GRAB_HANDLE_PRESSED_IMAGE, new Tizen.NUI.PropertyValue(value));
867             }
868         }
869
870         /// <summary>
871         /// ScrollThreshold property.
872         /// </summary>
873         public float ScrollThreshold
874         {
875             get
876             {
877                 float temp = 0.0f;
878                 GetProperty(TextField.Property.SCROLL_THRESHOLD).Get(out temp);
879                 return temp;
880             }
881             set
882             {
883                 SetProperty(TextField.Property.SCROLL_THRESHOLD, new Tizen.NUI.PropertyValue(value));
884             }
885         }
886
887         /// <summary>
888         /// ScrollSpeed property.
889         /// </summary>
890         public float ScrollSpeed
891         {
892             get
893             {
894                 float temp = 0.0f;
895                 GetProperty(TextField.Property.SCROLL_SPEED).Get(out temp);
896                 return temp;
897             }
898             set
899             {
900                 SetProperty(TextField.Property.SCROLL_SPEED, new Tizen.NUI.PropertyValue(value));
901             }
902         }
903
904         /// <summary>
905         /// SelectionHandleImageLeft property.
906         /// </summary>
907         public PropertyMap SelectionHandleImageLeft
908         {
909             get
910             {
911                 PropertyMap temp = new PropertyMap();
912                 GetProperty(TextField.Property.SELECTION_HANDLE_IMAGE_LEFT).Get(temp);
913                 return temp;
914             }
915             set
916             {
917                 SetProperty(TextField.Property.SELECTION_HANDLE_IMAGE_LEFT, new Tizen.NUI.PropertyValue(value));
918             }
919         }
920
921         /// <summary>
922         /// SelectionHandleImageRight property.
923         /// </summary>
924         public PropertyMap SelectionHandleImageRight
925         {
926             get
927             {
928                 PropertyMap temp = new PropertyMap();
929                 GetProperty(TextField.Property.SELECTION_HANDLE_IMAGE_RIGHT).Get(temp);
930                 return temp;
931             }
932             set
933             {
934                 SetProperty(TextField.Property.SELECTION_HANDLE_IMAGE_RIGHT, new Tizen.NUI.PropertyValue(value));
935             }
936         }
937
938         /// <summary>
939         /// SelectionHandlePressedImageLeft property.
940         /// </summary>
941         public PropertyMap SelectionHandlePressedImageLeft
942         {
943             get
944             {
945                 PropertyMap temp = new PropertyMap();
946                 GetProperty(TextField.Property.SELECTION_HANDLE_PRESSED_IMAGE_LEFT).Get(temp);
947                 return temp;
948             }
949             set
950             {
951                 SetProperty(TextField.Property.SELECTION_HANDLE_PRESSED_IMAGE_LEFT, new Tizen.NUI.PropertyValue(value));
952             }
953         }
954
955         /// <summary>
956         /// SelectionHandlePressedImageRight property.
957         /// </summary>
958         public PropertyMap SelectionHandlePressedImageRight
959         {
960             get
961             {
962                 PropertyMap temp = new PropertyMap();
963                 GetProperty(TextField.Property.SELECTION_HANDLE_PRESSED_IMAGE_RIGHT).Get(temp);
964                 return temp;
965             }
966             set
967             {
968                 SetProperty(TextField.Property.SELECTION_HANDLE_PRESSED_IMAGE_RIGHT, new Tizen.NUI.PropertyValue(value));
969             }
970         }
971
972         /// <summary>
973         /// SelectionHandleMarkerImageLeft property.
974         /// </summary>
975         public PropertyMap SelectionHandleMarkerImageLeft
976         {
977             get
978             {
979                 PropertyMap temp = new PropertyMap();
980                 GetProperty(TextField.Property.SELECTION_HANDLE_MARKER_IMAGE_LEFT).Get(temp);
981                 return temp;
982             }
983             set
984             {
985                 SetProperty(TextField.Property.SELECTION_HANDLE_MARKER_IMAGE_LEFT, new Tizen.NUI.PropertyValue(value));
986             }
987         }
988
989         /// <summary>
990         /// SelectionHandleMarkerImageRight property.
991         /// </summary>
992         public PropertyMap SelectionHandleMarkerImageRight
993         {
994             get
995             {
996                 PropertyMap temp = new PropertyMap();
997                 GetProperty(TextField.Property.SELECTION_HANDLE_MARKER_IMAGE_RIGHT).Get(temp);
998                 return temp;
999             }
1000             set
1001             {
1002                 SetProperty(TextField.Property.SELECTION_HANDLE_MARKER_IMAGE_RIGHT, new Tizen.NUI.PropertyValue(value));
1003             }
1004         }
1005
1006         /// <summary>
1007         /// SelectionHighlightColor property.
1008         /// </summary>
1009         public Vector4 SelectionHighlightColor
1010         {
1011             get
1012             {
1013                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
1014                 GetProperty(TextField.Property.SELECTION_HIGHLIGHT_COLOR).Get(temp);
1015                 return temp;
1016             }
1017             set
1018             {
1019                 SetProperty(TextField.Property.SELECTION_HIGHLIGHT_COLOR, new Tizen.NUI.PropertyValue(value));
1020             }
1021         }
1022
1023         /// <summary>
1024         /// DecorationBoundingBox property.
1025         /// </summary>
1026         public Rectangle DecorationBoundingBox
1027         {
1028             get
1029             {
1030                 Rectangle temp = new Rectangle(0, 0, 0, 0);
1031                 GetProperty(TextField.Property.DECORATION_BOUNDING_BOX).Get(temp);
1032                 return temp;
1033             }
1034             set
1035             {
1036                 SetProperty(TextField.Property.DECORATION_BOUNDING_BOX, new Tizen.NUI.PropertyValue(value));
1037             }
1038         }
1039
1040         /// <summary>
1041         /// InputMethodSettings property.
1042         /// </summary>
1043         public PropertyMap InputMethodSettings
1044         {
1045             get
1046             {
1047                 PropertyMap temp = new PropertyMap();
1048                 GetProperty(TextField.Property.INPUT_METHOD_SETTINGS).Get(temp);
1049                 return temp;
1050             }
1051             set
1052             {
1053                 SetProperty(TextField.Property.INPUT_METHOD_SETTINGS, new Tizen.NUI.PropertyValue(value));
1054             }
1055         }
1056
1057         /// <summary>
1058         /// InputColor property.
1059         /// </summary>
1060         public Vector4 InputColor
1061         {
1062             get
1063             {
1064                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
1065                 GetProperty(TextField.Property.INPUT_COLOR).Get(temp);
1066                 return temp;
1067             }
1068             set
1069             {
1070                 SetProperty(TextField.Property.INPUT_COLOR, new Tizen.NUI.PropertyValue(value));
1071             }
1072         }
1073
1074         /// <summary>
1075         /// EnableMarkup property.
1076         /// </summary>
1077         public bool EnableMarkup
1078         {
1079             get
1080             {
1081                 bool temp = false;
1082                 GetProperty(TextField.Property.ENABLE_MARKUP).Get(out temp);
1083                 return temp;
1084             }
1085             set
1086             {
1087                 SetProperty(TextField.Property.ENABLE_MARKUP, new Tizen.NUI.PropertyValue(value));
1088             }
1089         }
1090
1091         /// <summary>
1092         /// InputFontFamily property.
1093         /// </summary>
1094         public string InputFontFamily
1095         {
1096             get
1097             {
1098                 string temp;
1099                 GetProperty(TextField.Property.INPUT_FONT_FAMILY).Get(out temp);
1100                 return temp;
1101             }
1102             set
1103             {
1104                 SetProperty(TextField.Property.INPUT_FONT_FAMILY, new Tizen.NUI.PropertyValue(value));
1105             }
1106         }
1107
1108         /// <summary>
1109         /// InputFontStyle property.
1110         /// </summary>
1111         public PropertyMap InputFontStyle
1112         {
1113             get
1114             {
1115                 PropertyMap temp = new PropertyMap();
1116                 GetProperty(TextField.Property.INPUT_FONT_STYLE).Get(temp);
1117                 return temp;
1118             }
1119             set
1120             {
1121                 SetProperty(TextField.Property.INPUT_FONT_STYLE, new Tizen.NUI.PropertyValue(value));
1122             }
1123         }
1124
1125         /// <summary>
1126         /// InputPointSize property.
1127         /// </summary>
1128         public float InputPointSize
1129         {
1130             get
1131             {
1132                 float temp = 0.0f;
1133                 GetProperty(TextField.Property.INPUT_POINT_SIZE).Get(out temp);
1134                 return temp;
1135             }
1136             set
1137             {
1138                 SetProperty(TextField.Property.INPUT_POINT_SIZE, new Tizen.NUI.PropertyValue(value));
1139             }
1140         }
1141
1142         /// <summary>
1143         /// Underline property.
1144         /// </summary>
1145         public PropertyMap Underline
1146         {
1147             get
1148             {
1149                 PropertyMap temp = new PropertyMap();
1150                 GetProperty(TextField.Property.UNDERLINE).Get(temp);
1151                 return temp;
1152             }
1153             set
1154             {
1155                 SetProperty(TextField.Property.UNDERLINE, new Tizen.NUI.PropertyValue(value));
1156             }
1157         }
1158
1159         /// <summary>
1160         /// InputUnderline property.
1161         /// </summary>
1162         public string InputUnderline
1163         {
1164             get
1165             {
1166                 string temp;
1167                 GetProperty(TextField.Property.INPUT_UNDERLINE).Get(out temp);
1168                 return temp;
1169             }
1170             set
1171             {
1172                 SetProperty(TextField.Property.INPUT_UNDERLINE, new Tizen.NUI.PropertyValue(value));
1173             }
1174         }
1175
1176         /// <summary>
1177         /// Shadow property.
1178         /// </summary>
1179         public PropertyMap Shadow
1180         {
1181             get
1182             {
1183                 PropertyMap temp = new PropertyMap();
1184                 GetProperty(TextField.Property.SHADOW).Get(temp);
1185                 return temp;
1186             }
1187             set
1188             {
1189                 SetProperty(TextField.Property.SHADOW, new Tizen.NUI.PropertyValue(value));
1190             }
1191         }
1192
1193         /// <summary>
1194         /// InputShadow property.
1195         /// </summary>
1196         public string InputShadow
1197         {
1198             get
1199             {
1200                 string temp;
1201                 GetProperty(TextField.Property.INPUT_SHADOW).Get(out temp);
1202                 return temp;
1203             }
1204             set
1205             {
1206                 SetProperty(TextField.Property.INPUT_SHADOW, new Tizen.NUI.PropertyValue(value));
1207             }
1208         }
1209
1210         /// <summary>
1211         /// Emboss property.
1212         /// </summary>
1213         public string Emboss
1214         {
1215             get
1216             {
1217                 string temp;
1218                 GetProperty(TextField.Property.EMBOSS).Get(out temp);
1219                 return temp;
1220             }
1221             set
1222             {
1223                 SetProperty(TextField.Property.EMBOSS, new Tizen.NUI.PropertyValue(value));
1224             }
1225         }
1226
1227         /// <summary>
1228         /// InputEmboss property.
1229         /// </summary>
1230         public string InputEmboss
1231         {
1232             get
1233             {
1234                 string temp;
1235                 GetProperty(TextField.Property.INPUT_EMBOSS).Get(out temp);
1236                 return temp;
1237             }
1238             set
1239             {
1240                 SetProperty(TextField.Property.INPUT_EMBOSS, new Tizen.NUI.PropertyValue(value));
1241             }
1242         }
1243
1244         /// <summary>
1245         /// Outline property.
1246         /// </summary>
1247         public string Outline
1248         {
1249             get
1250             {
1251                 string temp;
1252                 GetProperty(TextField.Property.OUTLINE).Get(out temp);
1253                 return temp;
1254             }
1255             set
1256             {
1257                 SetProperty(TextField.Property.OUTLINE, new Tizen.NUI.PropertyValue(value));
1258             }
1259         }
1260
1261         /// <summary>
1262         /// InputOutline property.
1263         /// </summary>
1264         public string InputOutline
1265         {
1266             get
1267             {
1268                 string temp;
1269                 GetProperty(TextField.Property.INPUT_OUTLINE).Get(out temp);
1270                 return temp;
1271             }
1272             set
1273             {
1274                 SetProperty(TextField.Property.INPUT_OUTLINE, new Tizen.NUI.PropertyValue(value));
1275             }
1276         }
1277
1278         /// <summary>
1279         /// HiddenInputSettings property.
1280         /// </summary>
1281         public Tizen.NUI.PropertyMap HiddenInputSettings
1282         {
1283             get
1284             {
1285                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
1286                 GetProperty(TextField.Property.HIDDEN_INPUT_SETTINGS).Get(temp);
1287                 return temp;
1288             }
1289             set
1290             {
1291                 SetProperty(TextField.Property.HIDDEN_INPUT_SETTINGS, new Tizen.NUI.PropertyValue(value));
1292             }
1293         }
1294
1295         /// <summary>
1296         /// PixelSize property.
1297         /// </summary>
1298         public float PixelSize
1299         {
1300             get
1301             {
1302                 float temp = 0.0f;
1303                 GetProperty(TextField.Property.PIXEL_SIZE).Get(out temp);
1304                 return temp;
1305             }
1306             set
1307             {
1308                 SetProperty(TextField.Property.PIXEL_SIZE, new Tizen.NUI.PropertyValue(value));
1309             }
1310         }
1311
1312         /// <summary>
1313         /// Enable selection property.
1314         /// </summary>
1315         public bool EnableSelection
1316         {
1317             get
1318             {
1319                 bool temp = false;
1320                 GetProperty(TextField.Property.ENABLE_SELECTION).Get(out temp);
1321                 return temp;
1322             }
1323             set
1324             {
1325                 SetProperty(TextField.Property.ENABLE_SELECTION, new Tizen.NUI.PropertyValue(value));
1326             }
1327         }
1328
1329         /// <summary>
1330         /// Placeholder property.
1331         /// Gets/Sets the placeholder : text, color, font family, font style, point size, and pixel size.
1332         /// </summary>
1333         /// <example>
1334         /// The following example demonstrates how to set the placeholder property.
1335         /// <code>
1336         /// PropertyMap propertyMap = new PropertyMap();
1337         /// propertyMap.Add("placeholderText", new PropertyValue("Setting Placeholder Text"));
1338         /// propertyMap.Add("placeholderTextFocused", new PropertyValue("Setting Placeholder Text Focused"));
1339         /// propertyMap.Add("placeholderColor", new PropertyValue(Color.Red));
1340         /// propertyMap.Add("placeholderFontFamily", new PropertyValue("Arial"));
1341         /// propertyMap.Add("placeholderPointSize", new PropertyValue(12.0f));
1342         ///
1343         /// PropertyMap fontStyleMap = new PropertyMap();
1344         /// fontStyleMap.Add("weight", new PropertyValue("bold"));
1345         /// fontStyleMap.Add("width", new PropertyValue("condensed"));
1346         /// fontStyleMap.Add("slant", new PropertyValue("italic"));
1347         /// propertyMap.Add("placeholderFontStyle", new PropertyValue(fontStyleMap));
1348         ///
1349         /// TextField field = new TextField();
1350         /// field.Placeholder = propertyMap;
1351         /// </code>
1352         /// </example>
1353         public Tizen.NUI.PropertyMap Placeholder
1354         {
1355             get
1356             {
1357                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
1358                 GetProperty(TextField.Property.PLACEHOLDER).Get(temp);
1359                 return temp;
1360             }
1361             set
1362             {
1363                 SetProperty(TextField.Property.PLACEHOLDER, new Tizen.NUI.PropertyValue(value));
1364             }
1365         }
1366
1367     }
1368
1369 }