Changed indicator bg color.
[platform/framework/native/uifw.git] / src / ui / FUiControl.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                FUiControl.cpp
20  * @brief               This is the implementation file for the Control class.
21  */
22
23 #include <FUiControl.h>
24 #include <FUiContainer.h>
25 #include <FUiTouchGestureDetector.h>
26 #include <FBaseSysLog.h>
27 #include <FApp_AppInfo.h>
28 #include "FUi_ControlImpl.h"
29 #include "FUi_ContainerImpl.h"
30 #include "FUi_ErrorMessages.h"
31 #include "FUiAnimVisualElement.h"
32
33
34 using namespace Tizen::Base;
35 using namespace Tizen::Base::Collection;
36 using namespace Tizen::Graphics;
37 using namespace Tizen::Ui::Animations;
38
39
40 namespace Tizen { namespace Ui {
41
42 Control::Control(void)
43         : _pControlImpl(null)
44 {
45 }
46
47 Control::~Control(void)
48 {
49         Dispose();
50 }
51
52 void
53 Control::Dispose(void)
54 {
55         delete _pControlImpl;
56         _pControlImpl = null;
57 }
58
59 result
60 Control::Construct(void)
61 {
62         SysAssertf(_pControlImpl == null, "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
63
64         _ControlImpl* pImpl = _ControlImpl::CreateControlImplN(*this);
65         result r = GetLastResult();
66         SysTryReturn(NID_UI, pImpl, r, r, "[%s] Propagating.", GetErrorMessage(r));
67
68         _pControlImpl = pImpl;
69
70         return E_SUCCESS;
71 }
72
73 result
74 Control::Destroy(void)
75 {
76         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
77         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
78
79         result r = pControlImpl->Destroy();
80         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
81
82         return E_SUCCESS;
83 }
84
85 result
86 Control::Draw(void)
87 {
88         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
89         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
90
91         result r = pControlImpl->Draw(true);
92         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
93
94         return E_SUCCESS;
95 }
96
97 result
98 Control::Draw(bool recursive)
99 {
100         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
101         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
102
103         result r = pControlImpl->Draw(recursive);
104         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
105
106         return E_SUCCESS;
107 }
108
109 void
110 Control::Invalidate(bool recursive)
111 {
112         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
113         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
114
115         pControlImpl->Invalidate(recursive);
116         result r = GetLastResult();
117         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
118 }
119
120 void
121 Control::InvalidateBounds(const Rectangle& bounds)
122 {
123         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
124         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
125
126         pControlImpl->Invalidate(bounds);
127         result r = GetLastResult();
128         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
129 }
130
131 void
132 Control::InvalidateBounds(const FloatRectangle& bounds)
133 {
134         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
135         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
136
137         pControlImpl->Invalidate(bounds);
138         result r = GetLastResult();
139         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
140 }
141
142 Canvas*
143 Control::GetCanvasN(void) const
144 {
145         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
146         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
147
148         Canvas* pCanvas = pControlImpl->GetCanvasN();
149         result r = GetLastResult();
150         SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
151
152         return pCanvas;
153
154 CATCH:
155         delete pCanvas;
156         return null;
157 }
158
159 Canvas*
160 Control::GetCanvasN(int x, int y, int w, int h) const
161 {
162         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
163         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
164
165         Canvas* pCanvas = pControlImpl->GetCanvasN(Rectangle(x, y, w, h));
166         result r = GetLastResult();
167         SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
168
169         return pCanvas;
170
171 CATCH:
172         delete pCanvas;
173         return null;
174 }
175
176 Canvas*
177 Control::GetCanvasN(float x, float y, float w, float h) const
178 {
179         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
180         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
181
182         Canvas* pCanvas = pControlImpl->GetCanvasN(FloatRectangle(x, y, w, h));
183         result r = GetLastResult();
184         SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
185
186         return pCanvas;
187
188 CATCH:
189         delete pCanvas;
190         return null;
191 }
192
193 Canvas*
194 Control::GetCanvasN(const Rectangle& bounds) const
195 {
196         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
197         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
198
199         Canvas* pCanvas = pControlImpl->GetCanvasN(bounds);
200         result r = GetLastResult();
201         SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
202
203         return pCanvas;
204
205 CATCH:
206         delete pCanvas;
207         return null;
208 }
209
210 Canvas*
211 Control::GetCanvasN(const FloatRectangle& bounds) const
212 {
213         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
214         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
215
216         Canvas* pCanvas = pControlImpl->GetCanvasN(bounds);
217         result r = GetLastResult();
218         SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
219
220         return pCanvas;
221
222 CATCH:
223         delete pCanvas;
224         return null;
225 }
226
227 result
228 Control::SetEnabled(bool enable)
229 {
230         //versioning
231         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
232
233         if (Tizen::App::_AppInfo::GetApiVersion() == _API_VERSION_2_0 && Tizen::App::_AppInfo::IsOspCompat())
234         {
235                 SysTryReturn(NID_UI,
236                         pControlImpl, E_UNSUPPORTED_OPERATION,
237                         E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] This control is not constructed.");
238         }
239         else
240         {
241                 SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
242         }
243
244         pControlImpl->SetEnableState(enable);
245         result r = GetLastResult();
246         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
247
248         return E_SUCCESS;
249 }
250
251 result
252 Control::Show(void)
253 {
254         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
255         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
256
257         result r = pControlImpl->Show();
258         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
259
260         return E_SUCCESS;
261 }
262
263 void
264 Control::GetBounds(int& x, int& y, int& w, int& h) const
265 {
266         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
267         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
268
269         Rectangle bounds = pControlImpl->GetBounds();
270         result r = GetLastResult();
271         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
272
273         x = bounds.x;
274         y = bounds.y;
275         w = bounds.width;
276         h = bounds.height;
277 }
278
279 void
280 Control::GetBounds(float& x, float& y, float& w, float& h) const
281 {
282         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
283         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
284
285         FloatRectangle bounds = pControlImpl->GetBoundsF();
286         result r = GetLastResult();
287         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
288
289         x = bounds.x;
290         y = bounds.y;
291         w = bounds.width;
292         h = bounds.height;
293 }
294
295 Rectangle
296 Control::GetBounds(void) const
297 {
298         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
299
300         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
301         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
302
303         Rectangle bounds = pControlImpl->GetBounds();
304         result r = GetLastResult();
305         SysTryReturn(NID_UI, r == E_SUCCESS, errorBounds, r, "[%s] Propagating.", GetErrorMessage(r));
306
307         return bounds;
308 }
309
310 FloatRectangle
311 Control::GetBoundsF(void) const
312 {
313         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
314
315         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
316         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
317
318         FloatRectangle bounds = pControlImpl->GetBoundsF();
319         result r = GetLastResult();
320         SysTryReturn(NID_UI, r == E_SUCCESS, errorBounds, r, "[%s] Propagating.", GetErrorMessage(r));
321
322         return bounds;
323 }
324
325 Dimension
326 Control::GetSize(void) const
327 {
328         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
329         const Dimension errorSize(errorBounds.width, errorBounds.height);
330
331         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
332         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
333
334         Dimension size = pControlImpl->GetSize();
335         result r = GetLastResult();
336         SysTryReturn(NID_UI, r == E_SUCCESS, errorSize, r, "[%s] Propagating.", GetErrorMessage(r));
337
338         return size;
339 }
340
341 FloatDimension
342 Control::GetSizeF(void) const
343 {
344         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
345         const FloatDimension errorSize(errorBounds.width, errorBounds.height);
346
347         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
348         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
349
350         FloatDimension size = pControlImpl->GetSizeF();
351         result r = GetLastResult();
352         SysTryReturn(NID_UI, r == E_SUCCESS, errorSize, r, "[%s] Propagating.", GetErrorMessage(r));
353
354         return size;
355 }
356
357 void
358 Control::GetSize(int& w, int& h) const
359 {
360         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
361         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
362
363         Dimension size = pControlImpl->GetSize();
364         result r = GetLastResult();
365         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
366
367         w = size.width;
368         h = size.height;
369 }
370
371 void
372 Control::GetSize(float& w, float& h) const
373 {
374         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
375         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
376
377         FloatDimension size = pControlImpl->GetSizeF();
378         result r = GetLastResult();
379         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
380
381         w = size.width;
382         h = size.height;
383 }
384
385 Point
386 Control::GetPosition(void) const
387 {
388         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
389         const Point errorPosition(errorBounds.x, errorBounds.y);
390
391         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
392         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
393
394         Point position = pControlImpl->GetPosition();
395         result r = GetLastResult();
396         SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
397
398         return position;
399 }
400
401 FloatPoint
402 Control::GetPositionF(void) const
403 {
404         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
405         const FloatPoint errorPosition(errorBounds.x, errorBounds.y);
406
407         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
408         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
409
410         FloatPoint position = pControlImpl->GetPositionF();
411         result r = GetLastResult();
412         SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
413
414         return position;
415 }
416
417 void
418 Control::GetPosition(int& x, int& y) const
419 {
420         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
421         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
422
423         Point position = pControlImpl->GetPosition();
424         result r = GetLastResult();
425         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
426
427         x = position.x;
428         y = position.y;
429 }
430
431 void
432 Control::GetPosition(float& x, float& y) const
433 {
434         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
435         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
436
437         FloatPoint position = pControlImpl->GetPositionF();
438         result r = GetLastResult();
439         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
440
441         x = position.x;
442         y = position.y;
443 }
444
445 int
446 Control::GetX(void) const
447 {
448         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
449         const int errorX = errorBounds.x;
450
451         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
452         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
453
454         int x = pControlImpl->GetPosition().x;
455         result r = GetLastResult();
456         SysTryReturn(NID_UI, r == E_SUCCESS, errorX, r, "[%s] Propagating.", GetErrorMessage(r));
457
458         return x;
459 }
460
461 float
462 Control::GetXF(void) const
463 {
464         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
465         const float errorX = errorBounds.x;
466
467         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
468         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
469
470         float x = pControlImpl->GetPositionF().x;
471         result r = GetLastResult();
472         SysTryReturn(NID_UI, r == E_SUCCESS, errorX, r, "[%s] Propagating.", GetErrorMessage(r));
473
474         return x;
475 }
476
477 int
478 Control::GetY(void) const
479 {
480         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
481         const int errorY = errorBounds.y;
482
483         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
484         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
485
486         int y = pControlImpl->GetPosition().y;
487         result r = GetLastResult();
488         SysTryReturn(NID_UI, r == E_SUCCESS, errorY, r, "[%s] Propagating.", GetErrorMessage(r));
489
490         return y;
491 }
492
493 float
494 Control::GetYF(void) const
495 {
496         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
497         const float errorY = errorBounds.y;
498
499         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
500         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
501
502         float y = pControlImpl->GetPositionF().y;
503         result r = GetLastResult();
504         SysTryReturn(NID_UI, r == E_SUCCESS, errorY, r, "[%s] Propagating.", GetErrorMessage(r));
505
506         return y;
507 }
508
509 int
510 Control::GetWidth(void) const
511 {
512         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
513         const int errorWidth = errorBounds.width;
514
515         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
516         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
517
518         int width = pControlImpl->GetSize().width;
519         result r = GetLastResult();
520         SysTryReturn(NID_UI, r == E_SUCCESS, errorWidth, r, "[%s] Propagating.", GetErrorMessage(r));
521
522         return width;
523 }
524
525 float
526 Control::GetWidthF(void) const
527 {
528         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
529         const float errorWidth = errorBounds.width;
530
531         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
532         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
533
534         float width = pControlImpl->GetSizeF().width;
535         result r = GetLastResult();
536         SysTryReturn(NID_UI, r == E_SUCCESS, errorWidth, r, "[%s] Propagating.", GetErrorMessage(r));
537
538         return width;
539 }
540
541 int
542 Control::GetHeight(void) const
543 {
544         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
545         const int errorHeight = errorBounds.height;
546
547         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
548         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
549
550         int height = pControlImpl->GetSize().height;
551         result r = GetLastResult();
552         SysTryReturn(NID_UI, r == E_SUCCESS, errorHeight, r, "[%s] Propagating.", GetErrorMessage(r));
553
554         return height;
555 }
556
557 float
558 Control::GetHeightF(void) const
559 {
560         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
561         const float errorHeight = errorBounds.height;
562
563         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
564         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
565
566         float height = pControlImpl->GetSizeF().height;
567         result r = GetLastResult();
568         SysTryReturn(NID_UI, r == E_SUCCESS, errorHeight, r, "[%s] Propagating.", GetErrorMessage(r));
569
570         return height;
571 }
572
573 Container*
574 Control::GetParent(void) const
575 {
576         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
577         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
578
579         _ContainerImpl* pParentImpl = pControlImpl->GetParent();
580         result r = GetLastResult();
581         SysTryReturn(NID_UI, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
582
583         return pParentImpl ? &pParentImpl->GetPublic() : null;
584 }
585
586 String
587 Control::GetFont(void) const
588 {
589         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
590         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
591
592         return pControlImpl->GetFont();
593 }
594
595 result
596 Control::SetBounds(int x, int y, int w, int h)
597 {
598         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
599         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
600
601         result r = pControlImpl->SetBounds(Rectangle(x, y, w, h));
602         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
603
604         return E_SUCCESS;
605 }
606
607 result
608 Control::SetBounds(float x, float y, float w, float h)
609 {
610         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
611         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
612
613         result r = pControlImpl->SetBounds(FloatRectangle(x, y, w, h));
614         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
615
616         return E_SUCCESS;
617 }
618
619 result
620 Control::SetBounds(const Rectangle& bounds)
621 {
622         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
623         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
624
625         result r = pControlImpl->SetBounds(bounds);
626         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
627
628         return E_SUCCESS;
629 }
630
631 result
632 Control::SetBounds(const FloatRectangle& bounds)
633 {
634         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
635         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
636
637         result r = pControlImpl->SetBounds(bounds);
638         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
639
640         return E_SUCCESS;
641 }
642
643 result
644 Control::SetSize(int w, int h)
645 {
646         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
647         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
648
649         result r = pControlImpl->SetSize(Dimension(w, h));
650         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
651
652         return E_SUCCESS;
653 }
654
655 result
656 Control::SetSize(float w, float h)
657 {
658         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
659         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
660
661         result r = pControlImpl->SetSize(FloatDimension(w, h));
662         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
663
664         return E_SUCCESS;
665 }
666
667 result
668 Control::SetSize(const Dimension& size)
669 {
670         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
671         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
672
673         result r = pControlImpl->SetSize(size);
674         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
675
676         return E_SUCCESS;
677 }
678
679 result
680 Control::SetSize(const FloatDimension& size)
681 {
682         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
683         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
684
685         result r = pControlImpl->SetSize(size);
686         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
687
688         return E_SUCCESS;
689 }
690
691 result
692 Control::SetPosition(int x, int y)
693 {
694         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
695         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
696
697         result r = pControlImpl->SetPosition(Point(x, y));
698         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
699
700         return E_SUCCESS;
701 }
702
703 result
704 Control::SetPosition(float x, float y)
705 {
706         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
707         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
708
709         result r = pControlImpl->SetPosition(FloatPoint(x, y));
710         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
711
712         return E_SUCCESS;
713 }
714
715 result
716 Control::SetPosition(const Point& position)
717 {
718         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
719         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
720
721         result r = pControlImpl->SetPosition(position);
722         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
723
724         return E_SUCCESS;
725 }
726
727 result
728 Control::SetPosition(const FloatPoint& position)
729 {
730         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
731         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
732
733         result r = pControlImpl->SetPosition(position);
734         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
735
736         return E_SUCCESS;
737 }
738
739 result
740 Control::SetFont(const String& fontName)
741 {
742         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
743         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
744
745         result r = pControlImpl->SetFont(fontName);
746         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
747         return E_SUCCESS;
748 }
749
750 bool
751 Control::IsEnabled(void) const
752 {
753         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
754         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
755
756         return pControlImpl->IsEnabled();
757 }
758
759 bool
760 Control::IsVisible(void) const
761 {
762         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
763         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
764
765         return pControlImpl->IsVisible();
766 }
767
768 result
769 Control::SetFocus()
770 {
771         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
772         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
773
774         pControlImpl->SetFocused();
775         result r = GetLastResult();
776         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
777
778         return E_SUCCESS;
779 }
780
781 result
782 Control::SetShowState(bool state)
783 {
784         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
785         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
786
787         result r = pControlImpl->SetVisibleState(state);
788         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
789
790         return E_SUCCESS;
791 }
792
793 Tizen::Ui::Animations::VisualElement*
794 Control::GetVisualElement(void) const
795 {
796         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
797         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
798
799         return pControlImpl->GetVisualElement();
800         //return pControlImpl->GetCustomVisualElement();
801 }
802
803 bool
804 Control::Contains(int x, int y) const
805 {
806         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
807         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
808
809         return pControlImpl->Contains(Point(x, y));
810 }
811
812 bool
813 Control::Contains(float x, float y) const
814 {
815         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
816         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
817
818         return pControlImpl->Contains(FloatPoint(x, y));
819 }
820
821 bool
822 Control::Contains(const Point& point) const
823 {
824         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
825         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
826
827         return pControlImpl->Contains(point);
828 }
829
830 bool
831 Control::Contains(const FloatPoint& point) const
832 {
833         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
834         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
835
836         return pControlImpl->Contains(point);
837 }
838
839 bool
840 Control::HasFocus(void) const
841 {
842         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
843         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
844
845         return pControlImpl->IsFocused();
846 }
847
848 bool
849 Control::GetShowState(void) const
850 {
851         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
852         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
853
854         return pControlImpl->GetVisibleState();
855 }
856
857 String
858 Control::GetName(void) const
859 {
860         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
861         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
862
863         return pControlImpl->GetName();
864 }
865
866 void
867 Control::SetName(const String& name)
868 {
869         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
870         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
871
872         pControlImpl->SetName(name);
873 }
874
875 void
876 Control::AddFocusEventListener(IFocusEventListener& listener)
877 {
878         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
879         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
880
881         result r = pControlImpl->AddFocusEventListener(listener);
882         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
883 }
884
885 void
886 Control::RemoveFocusEventListener(IFocusEventListener& listener)
887 {
888         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
889         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
890
891         result r = pControlImpl->RemoveFocusEventListener(listener);
892         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
893 }
894
895 void
896 Control::AddKeyEventListener(IKeyEventListener& listener)
897 {
898         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
899         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
900
901         result r = pControlImpl->AddKeyEventListener(listener);
902         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
903 }
904
905 void
906 Control::RemoveKeyEventListener(IKeyEventListener& listener)
907 {
908         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
909         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
910
911         result r = pControlImpl->RemoveKeyEventListener(listener);
912         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
913 }
914
915 void
916 Control::AddTouchEventListener(ITouchEventListener& listener)
917 {
918         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
919         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
920
921         result r = pControlImpl->AddTouchEventListener(listener);
922         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
923 }
924
925 void
926 Control::RemoveTouchEventListener(ITouchEventListener& listener)
927 {
928         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
929         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
930
931         result r = pControlImpl->RemoveTouchEventListener(listener);
932         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
933 }
934
935 void
936 Control::AddDragDropEventListener(IDragDropEventListener& listener)
937 {
938         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
939         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
940
941         result r = pControlImpl->AddDragDropEventListener(listener);
942         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
943 }
944
945 void
946 Control::AddDragDropEventListener(IDragDropEventListenerF& listener)
947 {
948         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
949         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
950
951         result r = pControlImpl->AddDragDropEventListener(listener);
952         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
953 }
954
955 void
956 Control::RemoveDragDropEventListener(IDragDropEventListener& listener)
957 {
958         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
959         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
960
961         result r = pControlImpl->RemoveDragDropEventListener(listener);
962         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
963 }
964
965 void
966 Control::RemoveDragDropEventListenerF(IDragDropEventListenerF& listener)
967 {
968         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
969         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
970
971         result r = pControlImpl->RemoveDragDropEventListenerF(listener);
972         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
973 }
974
975 void
976 Control::AddTouchModeChangedEventListener(ITouchModeChangedEventListener& listener)
977 {
978         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
979         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
980
981         result r = pControlImpl->AddTouchModeChangedEventListener(listener);
982         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
983 }
984
985 void
986 Control::RemoveTouchModeChangedEventListener(ITouchModeChangedEventListener& listener)
987 {
988         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
989         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
990
991         result r = pControlImpl->RemoveTouchModeChangedEventListener(listener);
992         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
993 }
994
995 void
996 Control::SetDragEnabled(bool enabled)
997 {
998         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
999         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1000
1001         pControlImpl->SetDragEnabled(enabled);
1002 }
1003
1004 void
1005 Control::SetDropEnabled(bool enabled)
1006 {
1007         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1008         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1009
1010         pControlImpl->SetDropEnabled(enabled);
1011 }
1012
1013 void
1014 Control::RequestRedraw(bool show) const
1015 {
1016         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1017         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1018
1019         pControlImpl->RequestRedraw(show);
1020         result r = GetLastResult();
1021         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1022 }
1023
1024 result
1025 Control::OnInitializing(void)
1026 {
1027         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1028         SysTryReturn(NID_UI, pControlImpl, E_FAILURE, E_FAILURE, "[E_FAILURE] This callback returns failure.");
1029
1030         return E_SUCCESS;
1031 }
1032
1033 result
1034 Control::OnTerminating(void)
1035 {
1036         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1037         SysTryReturn(NID_UI, pControlImpl, E_FAILURE, E_FAILURE, "[E_FAILURE] This callback returns failure.");
1038
1039         return E_SUCCESS;
1040 }
1041
1042 void
1043 Control::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
1044 {
1045 }
1046
1047 void
1048 Control::SendUserEvent(RequestId requestId, const IList* pArgs) const
1049 {
1050         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1051         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1052
1053         pControlImpl->SendUserEvent(requestId, pArgs);
1054         result r = GetLastResult();
1055         SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1056 }
1057
1058 result
1059 Control::SetFocusable(bool focusable)
1060 {
1061         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1062         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1063
1064         result r = pControlImpl->SetFocusable(focusable);
1065         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1066
1067         return E_SUCCESS;
1068 }
1069
1070 bool
1071 Control::IsFocusable(void) const
1072 {
1073         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1074         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1075
1076         return pControlImpl->IsFocusable();
1077 }
1078
1079 bool
1080 Control::IsInTouchMode(void) const
1081 {
1082         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1083         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1084
1085         return pControlImpl->IsInTouchMode();
1086 }
1087
1088
1089 result
1090 Control::SetCompositeMode(Tizen::Ui::CompositeMode compositeMode)
1091 {
1092         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1093         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1094
1095         result r = pControlImpl->SetCompositeMode(compositeMode);
1096         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1097
1098         return E_SUCCESS;
1099 }
1100
1101 CompositeMode
1102 Control::GetCompositeMode(void) const
1103 {
1104         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1105         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1106
1107         return pControlImpl->GetCompositeMode();
1108 }
1109
1110 result
1111 Control::SetChromaKeyColor(Color chromaKeyColor)
1112 {
1113         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1114         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1115
1116         result r = pControlImpl->SetChromaKeyColor(chromaKeyColor);
1117         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1118
1119         return E_SUCCESS;
1120 }
1121
1122 Color
1123 Control::GetChromaKeyColor(void) const
1124 {
1125         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1126         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1127
1128         return pControlImpl->GetChromaKeyColor();
1129 }
1130
1131 result
1132 Control::ConsumeInputEvent(void)
1133 {
1134         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1135         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1136
1137         pControlImpl->ConsumeInputEvent();
1138         result r = GetLastResult();
1139         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1140
1141         return E_SUCCESS;
1142 }
1143
1144 IKeyEventListener*
1145 Control::GetDefaultkeyEventListener(void) const
1146 {
1147         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1148         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1149
1150         return pControlImpl->GetDefaultKeyEventListener();
1151 }
1152
1153 result
1154 Control::SetDefaultKeyEventListener(IKeyEventListener* pDefaultListener)
1155 {
1156         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1157         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1158
1159         pControlImpl->SetDefaultKeyEventListener(pDefaultListener);
1160         result r = GetLastResult();
1161         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1162
1163         return E_SUCCESS;
1164 }
1165
1166 ITouchEventListener*
1167 Control::GetDefaultTouchEventListener(void) const
1168 {
1169         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1170         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1171
1172         return pControlImpl->GetDefaultTouchEventListener();
1173 }
1174
1175 result
1176 Control::SetDefaultTouchEventListener(ITouchEventListener* pDefaultListener)
1177 {
1178         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1179         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1180
1181         pControlImpl->SetDefaultTouchEventListener(pDefaultListener);
1182         result r = GetLastResult();
1183         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1184
1185         return E_SUCCESS;
1186 }
1187
1188 bool
1189 Control::IsMovable(void) const
1190 {
1191         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1192         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1193
1194         return pControlImpl->IsMovable();
1195 }
1196
1197 bool
1198 Control::IsResizable(void) const
1199 {
1200         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1201         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1202
1203         return pControlImpl->IsResizable();
1204 }
1205
1206 result
1207 Control::SetMinimumSize(const Dimension& minSize)
1208 {
1209         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1210         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1211
1212         result r = pControlImpl->SetMinimumSize(minSize);
1213         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1214
1215         return E_SUCCESS;
1216 }
1217
1218 result
1219 Control::SetMinimumSize(const FloatDimension& minSize)
1220 {
1221         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1222         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1223
1224         result r = pControlImpl->SetMinimumSize(minSize);
1225         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1226
1227         return E_SUCCESS;
1228 }
1229
1230 result
1231 Control::SetMaximumSize(const Dimension& maxSize)
1232 {
1233         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1234         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1235
1236         result r = pControlImpl->SetMaximumSize(maxSize);
1237         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1238
1239         return E_SUCCESS;
1240 }
1241
1242 result
1243 Control::SetMaximumSize(const FloatDimension& maxSize)
1244 {
1245         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1246         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1247
1248         result r = pControlImpl->SetMaximumSize(maxSize);
1249         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1250
1251         return E_SUCCESS;
1252 }
1253
1254 Point
1255 Control::ConvertToControlPosition(const Point& screenPosition) const
1256 {
1257         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
1258         const Point errorPosition(errorBounds.x, errorBounds.y);
1259
1260         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1261         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1262
1263         Point point = pControlImpl->ConvertToControlPosition(screenPosition);
1264         result r = GetLastResult();
1265         SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
1266
1267         return point;
1268 }
1269
1270 FloatPoint
1271 Control::ConvertToControlPosition(const FloatPoint& screenPosition) const
1272 {
1273         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
1274         const FloatPoint errorPosition(errorBounds.x, errorBounds.y);
1275
1276         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1277         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1278
1279         FloatPoint point = pControlImpl->ConvertToControlPosition(screenPosition);
1280         result r = GetLastResult();
1281         SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
1282
1283         return point;
1284 }
1285
1286 Point
1287 Control::ConvertToScreenPosition(const Point& controlPosition) const
1288 {
1289         const Rectangle errorBounds = _ControlImpl::GetErrorBounds();
1290         const Point errorPosition(errorBounds.x, errorBounds.y);
1291
1292         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1293         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1294
1295         Point point = pControlImpl->ConvertToScreenPosition(controlPosition);
1296         result r = GetLastResult();
1297         SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
1298
1299         return point;
1300 }
1301
1302 FloatPoint
1303 Control::ConvertToScreenPosition(const FloatPoint& controlPosition) const
1304 {
1305         const FloatRectangle errorBounds = _ControlImpl::GetErrorBoundsF();
1306         const FloatPoint errorPosition(errorBounds.x, errorBounds.y);
1307
1308         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1309         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1310
1311         FloatPoint point = pControlImpl->ConvertToScreenPosition(controlPosition);
1312         result r = GetLastResult();
1313         SysTryReturn(NID_UI, r == E_SUCCESS, errorPosition, r, "[%s] Propagating.", GetErrorMessage(r));
1314
1315         return point;
1316 }
1317
1318 Dimension
1319 Control::GetMinimumSize(void) const
1320 {
1321         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1322         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1323
1324         return pControlImpl->GetMinimumSize();
1325 }
1326
1327 FloatDimension
1328 Control::GetMinimumSizeF(void) const
1329 {
1330         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1331         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1332
1333         return pControlImpl->GetMinimumSizeF();
1334 }
1335
1336 Dimension
1337 Control::GetMaximumSize(void) const
1338 {
1339         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1340         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1341
1342         return pControlImpl->GetMaximumSize();
1343 }
1344
1345 FloatDimension
1346 Control::GetMaximumSizeF(void) const
1347 {
1348         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1349         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1350
1351         return pControlImpl->GetMaximumSizeF();
1352 }
1353
1354 ControlAnimator*
1355 Control::GetControlAnimator(void) const
1356 {
1357         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1358         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1359
1360         return pControlImpl->GetControlAnimator();
1361 }
1362
1363 result
1364 Control::AddGestureDetector(const TouchGestureDetector& gestureDetector)
1365 {
1366         return AddGestureDetector(const_cast< TouchGestureDetector* >(&gestureDetector));
1367 }
1368
1369 result
1370 Control::AddGestureDetector(TouchGestureDetector* pGestureDetector)
1371 {
1372         SysTryReturnResult(NID_UI, pGestureDetector != null, E_INVALID_ARG, "pGestureDetector is null.");
1373         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1374         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1375
1376         result r = pControlImpl->AddGestureDetector(*pGestureDetector);
1377         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1378
1379         return E_SUCCESS;
1380 }
1381
1382 result
1383 Control::RemoveGestureDetector(const TouchGestureDetector& gestureDetector)
1384 {
1385         return RemoveGestureDetector(const_cast< TouchGestureDetector* >(&gestureDetector));
1386 }
1387
1388 result
1389 Control::RemoveGestureDetector(TouchGestureDetector* pGestureDetector)
1390 {
1391         SysTryReturnResult(NID_UI, pGestureDetector != null, E_INVALID_ARG, "pGestureDetector is null.");
1392         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1393         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1394
1395         result r = pControlImpl->RemoveGestureDetector(*pGestureDetector);
1396         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1397
1398         return E_SUCCESS;
1399 }
1400
1401 void
1402 Control::SetContentAreaBounds(const Rectangle& rect)
1403 {
1404         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1405         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1406
1407         pControlImpl->SetContentAreaBounds(rect);
1408 }
1409
1410 void
1411 Control::SetContentAreaBounds(const FloatRectangle& rect)
1412 {
1413         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1414         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1415
1416         pControlImpl->SetContentAreaBounds(rect);
1417 }
1418
1419 Rectangle
1420 Control::GetContentAreaBounds(void) const
1421 {
1422         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1423         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1424
1425         Rectangle bounds = pControlImpl->GetContentAreaBounds();
1426
1427         return bounds;
1428 }
1429
1430 FloatRectangle
1431 Control::GetContentAreaBoundsF(void) const
1432 {
1433         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1434         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1435
1436         FloatRectangle bounds = pControlImpl->GetContentAreaBoundsF();
1437
1438         return bounds;
1439 }
1440
1441 Bitmap*
1442 Control::GetCapturedBitmapN(void) const
1443 {
1444         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1445         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1446
1447         return pControlImpl->GetCapturedBitmapN();
1448 }
1449
1450 Rectangle
1451 Control::GetInvalidatedBounds(void) const
1452 {
1453         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1454         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1455
1456         return pControlImpl->GetInvalidatedBounds();
1457 }
1458
1459 FloatRectangle
1460 Control::GetInvalidatedBoundsF(void) const
1461 {
1462         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1463         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1464
1465         return pControlImpl->GetInvalidatedBoundsF();
1466 }
1467
1468 void
1469 Control::SetMultipointTouchEnabled(bool enable)
1470 {
1471         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1472         if (pControlImpl)
1473         {
1474                 pControlImpl->SetMultiTouchEnabled(enable);
1475         }
1476 }
1477
1478 bool
1479 Control::IsMultipointTouchEnabled(void) const
1480 {
1481         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1482         if (pControlImpl)
1483         {
1484                 return pControlImpl->IsMultiTouchEnabled();
1485         }
1486
1487         return false;
1488 }
1489 void
1490 Control::SetEffectSoundEnabled(bool enable)
1491 {
1492         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1493         if (pControlImpl)
1494         {
1495                 return pControlImpl->SetEffectSoundEnabled(enable);
1496         }
1497 }
1498
1499 bool
1500 Control::IsEffectSoundEnabled(void) const
1501 {
1502         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1503         if (pControlImpl)
1504         {
1505                 return pControlImpl->IsEffectSoundEnabled();
1506         }
1507         return false;
1508 }
1509
1510 const AccessibilityContainer*
1511 Control::GetAccessibilityContainer(void) const
1512 {
1513         _ControlImpl* pControlImpl = const_cast<_ControlImpl*>(_ControlImpl::GetInstance(*this));
1514         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1515
1516         return pControlImpl->GetAccessibilityContainer();
1517 }
1518 AccessibilityContainer*
1519 Control::GetAccessibilityContainer(void)
1520 {
1521         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1522         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1523
1524         return pControlImpl->GetAccessibilityContainer();
1525 }
1526
1527 void
1528 Control::SetPropagatedTouchEventListener(IPropagatedTouchEventListener* pListener)
1529 {
1530         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1531         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1532
1533         pControlImpl->SetPublicPropagatedTouchEventListener(pListener);
1534 }
1535
1536 void
1537 Control::SetPropagatedKeyEventListener(IPropagatedKeyEventListener* pListener)
1538 {
1539         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1540         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1541
1542         pControlImpl->SetPublicPropagatedKeyEventListener(pListener);
1543 }
1544
1545 void
1546 Control::SetPreviousFocus(Control* pPreviousFocus)
1547 {
1548         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1549         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1550
1551         _ControlImpl* pPreviousFocusControlImpl = _ControlImpl::GetInstance(*pPreviousFocus);
1552         SysAssertf(pPreviousFocusControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1553
1554         pControlImpl->SetPreviousFocus(pPreviousFocusControlImpl);
1555
1556 }
1557
1558  void
1559  Control::SetNextFocus(Control* pNextFocus)
1560  {
1561         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1562         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1563
1564         _ControlImpl* pNextFocusControlImpl = _ControlImpl::GetInstance(*pNextFocus);
1565         SysAssertf(pNextFocusControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1566
1567         pControlImpl->SetNextFocus(pNextFocusControlImpl);
1568
1569  }
1570
1571 Control*
1572 Control::GetPreviousFocus(void) const
1573 {
1574         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1575         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1576         _ControlImpl* pPreviousControl = pControlImpl->GetPreviousFocus();
1577         if (pPreviousControl)
1578         {
1579                 return &(pPreviousControl->GetPublic());
1580         }
1581         return null;
1582 }
1583
1584 Control*
1585 Control::GetNextFocus(void) const
1586 {
1587         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1588         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1589
1590         _ControlImpl* pNextControl = pControlImpl->GetNextFocus();
1591         if (pNextControl)
1592         {
1593                 return &(pNextControl->GetPublic());
1594         }
1595         return null;
1596 }
1597
1598 void
1599 Control::SetTouchPressThreshold(float distance)
1600 {
1601         _ControlImpl* pControlImpl = const_cast<_ControlImpl*>(_ControlImpl::GetInstance(*this));
1602         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1603
1604         return pControlImpl->SetTouchPressThreshold(distance);
1605 }
1606
1607 float
1608 Control::GetTouchPressThreshold(void) const
1609 {
1610         _ControlImpl* pControlImpl = const_cast<_ControlImpl*>(_ControlImpl::GetInstance(*this));
1611         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before used.");
1612
1613         return pControlImpl->GetTouchPressThreshold();
1614 }
1615 result
1616 Control::SetFontFromFile(const Tizen::Base::String& fileName)
1617 {
1618         _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1619         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1620
1621         result r = pControlImpl->SetFontFromFile(fileName);
1622         SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1623         return E_SUCCESS;
1624 }
1625
1626 String
1627 Control::GetFontFile(void) const
1628 {
1629         const _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*this);
1630         SysAssertf(pControlImpl != null, "Not yet constructed. Construct() should be called before use.");
1631
1632         return pControlImpl->GetFontFile();
1633 }
1634 }}      // Tizen::Ui