2 * Copyright(c) 2019 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.ComponentModel;
20 using System.Runtime.InteropServices;
22 namespace Tizen.NUI.BaseComponents
25 /// A control which provides a multi-line editable text editor.
27 /// <since_tizen> 3 </since_tizen>
28 public partial class TextEditor
30 private EventHandler<TextChangedEventArgs> _textEditorTextChangedEventHandler;
31 private TextChangedCallbackDelegate _textEditorTextChangedCallbackDelegate;
33 private EventHandler<ScrollStateChangedEventArgs> _textEditorScrollStateChangedEventHandler;
34 private ScrollStateChangedCallbackDelegate _textEditorScrollStateChangedCallbackDelegate;
36 private EventHandler<MaxLengthReachedEventArgs> _textEditorMaxLengthReachedEventHandler;
37 private MaxLengthReachedCallbackDelegate _textEditorMaxLengthReachedCallbackDelegate;
39 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
40 private delegate void TextChangedCallbackDelegate(IntPtr textEditor);
42 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
43 private delegate void ScrollStateChangedCallbackDelegate(IntPtr textEditor, ScrollState state);
45 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
46 private delegate void MaxLengthReachedCallbackDelegate(IntPtr textEditor);
49 /// An event for the TextChanged signal which can be used to subscribe or unsubscribe the event handler
50 /// provided by the user. The TextChanged signal is emitted when the text changes.<br />
52 /// <since_tizen> 3 </since_tizen>
53 public event EventHandler<TextChangedEventArgs> TextChanged
57 if (_textEditorTextChangedEventHandler == null)
59 _textEditorTextChangedCallbackDelegate = (OnTextChanged);
60 TextChangedSignal().Connect(_textEditorTextChangedCallbackDelegate);
62 _textEditorTextChangedEventHandler += value;
66 _textEditorTextChangedEventHandler -= value;
67 if (_textEditorTextChangedEventHandler == null && TextChangedSignal().Empty() == false)
69 TextChangedSignal().Disconnect(_textEditorTextChangedCallbackDelegate);
75 /// Event for the ScrollStateChanged signal which can be used to subscribe or unsubscribe the event handler
76 /// provided by the user. The ScrollStateChanged signal is emitted when the scroll state changes.<br />
78 /// <since_tizen> 3 </since_tizen>
79 public event EventHandler<ScrollStateChangedEventArgs> ScrollStateChanged
83 if (_textEditorScrollStateChangedEventHandler == null)
85 _textEditorScrollStateChangedCallbackDelegate = OnScrollStateChanged;
86 ScrollStateChangedSignal(this).Connect(_textEditorScrollStateChangedCallbackDelegate);
88 _textEditorScrollStateChangedEventHandler += value;
92 _textEditorScrollStateChangedEventHandler -= value;
93 if (_textEditorScrollStateChangedEventHandler == null && ScrollStateChangedSignal(this).Empty() == false)
95 ScrollStateChangedSignal(this).Disconnect(_textEditorScrollStateChangedCallbackDelegate);
101 /// The MaxLengthReached event.
103 /// This will be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
104 [EditorBrowsable(EditorBrowsableState.Never)]
105 public event EventHandler<MaxLengthReachedEventArgs> MaxLengthReached
109 if (_textEditorMaxLengthReachedEventHandler == null)
111 _textEditorMaxLengthReachedCallbackDelegate = (OnMaxLengthReached);
112 MaxLengthReachedSignal().Connect(_textEditorMaxLengthReachedCallbackDelegate);
114 _textEditorMaxLengthReachedEventHandler += value;
118 if (_textEditorMaxLengthReachedEventHandler == null && MaxLengthReachedSignal().Empty() == false)
120 this.MaxLengthReachedSignal().Disconnect(_textEditorMaxLengthReachedCallbackDelegate);
122 _textEditorMaxLengthReachedEventHandler -= value;
126 internal TextEditorSignal TextChangedSignal()
128 TextEditorSignal ret = new TextEditorSignal(Interop.TextEditor.TextEditor_TextChangedSignal(swigCPtr), false);
129 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
133 internal ScrollStateChangedSignal ScrollStateChangedSignal(TextEditor textEditor)
135 ScrollStateChangedSignal ret = new ScrollStateChangedSignal(Interop.TextEditor.TextEditor_ScrollStateChangedSignal(TextEditor.getCPtr(textEditor)), false);
136 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
140 internal TextEditorSignal MaxLengthReachedSignal()
142 TextEditorSignal ret = new TextEditorSignal(Interop.TextEditor.TextEditor_MaxLengthReachedSignal(swigCPtr), false);
143 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
147 private void OnTextChanged(IntPtr textEditor)
149 TextChangedEventArgs e = new TextChangedEventArgs();
151 // Populate all members of "e" (TextChangedEventArgs) with real data
152 e.TextEditor = Registry.GetManagedBaseHandleFromNativePtr(textEditor) as TextEditor;
154 if (_textEditorTextChangedEventHandler != null)
156 //here we send all data to user event handlers
157 _textEditorTextChangedEventHandler(this, e);
161 private void OnScrollStateChanged(IntPtr textEditor, ScrollState state)
163 ScrollStateChangedEventArgs e = new ScrollStateChangedEventArgs();
165 if (textEditor != global::System.IntPtr.Zero)
167 // Populate all members of "e" (ScrollStateChangedEventArgs) with real data
168 e.TextEditor = Registry.GetManagedBaseHandleFromNativePtr(textEditor) as TextEditor;
169 e.ScrollState = state;
172 if (_textEditorScrollStateChangedEventHandler != null)
174 //here we send all data to user event handlers
175 _textEditorScrollStateChangedEventHandler(this, e);
179 private void OnMaxLengthReached(IntPtr textEditor)
181 MaxLengthReachedEventArgs e = new MaxLengthReachedEventArgs();
183 // Populate all members of "e" (MaxLengthReachedEventArgs) with real data
184 e.TextEditor = Registry.GetManagedBaseHandleFromNativePtr(textEditor) as TextEditor;
186 if (_textEditorMaxLengthReachedEventHandler != null)
188 //here we send all data to user event handlers
189 _textEditorMaxLengthReachedEventHandler(this, e);
194 /// Event arguments that passed via the TextChanged signal.
196 /// <since_tizen> 3 </since_tizen>
197 public class TextChangedEventArgs : EventArgs
199 private TextEditor _textEditor;
202 /// TextEditor - is the texteditor control which has the text contents changed.
204 /// <since_tizen> 3 </since_tizen>
205 public TextEditor TextEditor
219 /// Event arguments that passed via the ScrollStateChanged signal.
221 /// <since_tizen> 3 </since_tizen>
222 public class ScrollStateChangedEventArgs : EventArgs
224 private TextEditor _textEditor;
225 private ScrollState _scrollState;
228 /// TextEditor - is the texteditor control which has the scroll state changed.
230 /// <since_tizen> 3 </since_tizen>
231 public TextEditor TextEditor
244 /// ScrollState - is the texteditor control scroll state.
246 /// <since_tizen> 3 </since_tizen>
247 public ScrollState ScrollState
255 _scrollState = value;
261 /// The MaxLengthReached event arguments.
263 /// This will be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
264 [EditorBrowsable(EditorBrowsableState.Never)]
265 public class MaxLengthReachedEventArgs : EventArgs
267 private TextEditor _textEditor;
272 /// This will be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
273 [EditorBrowsable(EditorBrowsableState.Never)]
274 public TextEditor TextEditor