Delete view from toolkit and move cluster into demo
[platform/core/uifw/dali-demo.git] / examples / size-negotiation / size-negotiation-example.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include "shared/view.h"
19 #include <dali/dali.h>
20 #include <dali-toolkit/dali-toolkit.h>
21
22 using namespace Dali;
23
24 using Dali::Toolkit::TextLabel;
25
26 // Define this so that it is interchangeable
27 // "DP" stands for Device independent Pixels
28 #define DP(x) DemoHelper::ScalePointSize(x)
29
30 struct ButtonItem
31 {
32   const char* name;
33   const char* text;
34 };
35
36
37 namespace
38 {
39
40 const char* const BACKGROUND_IMAGE = DALI_IMAGE_DIR "background-gradient.jpg";
41 const char* const TOOLBAR_IMAGE = DALI_IMAGE_DIR "top-bar.png";
42
43 const char* const TOOLBAR_TITLE = "Negotiate Size";
44 const int TOOLBAR_HEIGHT = 62;
45
46 const char* MENU_ICON_IMAGE = DALI_IMAGE_DIR "icon-cluster-none.png";
47
48 const char* const PUSHBUTTON_BUTTON_IMAGE = DALI_IMAGE_DIR "button-up.9.png";
49 const char* const PUSHBUTTON_PRESS_IMAGE = DALI_IMAGE_DIR "button-down.9.png";
50
51 const char* const POPUPS_MENU_ID = "POPUPS_MENU";
52 const char* const TABLEVIEW_MENU_ID = "TABLEVIEW_MENU";
53
54 const char* const POPUP_BUTTON_EMPTY_ID = "POPUP_BUTTON_EMPTY";
55 const char* const POPUP_BUTTON_TITLE_ID = "POPUP_BUTTON_TITLE";
56 const char* const POPUP_BUTTON_BUTTONS_1_ID = "POPUP_BUTTON_BUTTONS_1";
57 const char* const POPUP_BUTTON_BUTTONS_2_ID = "POPUP_BUTTON_BUTTONS_2";
58 const char* const POPUP_BUTTON_TITLE_BUTTONS_ID = "POPUP_BUTTON_TITLE_BUTTONS";
59 const char* const POPUP_BUTTON_CONTENT_TEXT_ID = "POPUP_BUTTON_CONTENT_TEXT";
60 const char* const POPUP_BUTTON_CONTENT_IMAGE_ID = "POPUP_BUTTON_CONTENT_IMAGE";
61 const char* const POPUP_BUTTON_CONTENT_IMAGE_SCALE_ID = "POPUP_BUTTON_CONTENT_IMAGE_SCALE";
62 const char* const POPUP_BUTTON_CONTENT_IMAGE_FIT_ID = "POPUP_BUTTON_CONTENT_IMAGE_FIT";
63 const char* const POPUP_BUTTON_CONTENT_IMAGE_FILL_ID = "POPUP_BUTTON_CONTENT_IMAGE_FILL";
64 const char* const POPUP_BUTTON_TITLE_CONTENT_TEXT_ID = "POPUP_BUTTON_TITLE_CONTENT_TEXT";
65 const char* const POPUP_BUTTON_TITLE_CONTENT_TEXT_BUTTONS_ID = "POPUP_BUTTON_TITLE_CONTENT_TEXT_BUTTONS";
66 const char* const POPUP_BUTTON_COMPLEX_ID = "POPUP_BUTTON_COMPLEX";
67
68 const char* const TABLEVIEW_BUTTON_EMPTY_ID = "TABLEVIEW_BUTTON_EMPTY";
69 const char* const TABLEVIEW_BUTTON_1CELL_ID = "TABLEVIEW_BUTTON_1CELL";
70 const char* const TABLEVIEW_BUTTON_3CELL_ID = "TABLEVIEW_BUTTON_3CELL";
71 const char* const TABLEVIEW_BUTTON_3X3CELL_ID = "TABLEVIEW_BUTTON_3X3CELL";
72 const char* const TABLEVIEW_BUTTON_FIXED1_ID = "TABLEVIEW_BUTTON_FIXED1";
73 const char* const TABLEVIEW_BUTTON_FIXED2_ID = "TABLEVIEW_BUTTON_FIXED2";
74 const char* const TABLEVIEW_BUTTON_FIT1_ID = "TABLEVIEW_BUTTON_FIT1";
75 const char* const TABLEVIEW_BUTTON_FIT2_ID = "TABLEVIEW_BUTTON_FIT2";
76 const char* const TABLEVIEW_BUTTON_NATURAL1_ID = "TABLEVIEW_BUTTON_NATURAL1";
77 const char* const TABLEVIEW_BUTTON_NATURAL2_ID = "TABLEVIEW_BUTTON_NATURAL2";
78 const char* const TABLEVIEW_BUTTON_NATURAL3_ID = "TABLEVIEW_BUTTON_NATURAL3";
79
80 const char* const OKAY_BUTTON_ID = "OKAY_BUTTON";
81 const char* const CANCEL_BUTTON_ID = "CANCEL_BUTTON";
82
83 const char* const CONTENT_TEXT = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
84 const char* const IMAGE1 = DALI_IMAGE_DIR "gallery-medium-5.jpg";
85 const char* const IMAGE2 = DALI_IMAGE_DIR "background-magnifier.jpg";
86 const char* const CHECKBOX_UNCHECKED_IMAGE = DALI_IMAGE_DIR "checkbox-unselected.png";
87 const char* const CHECKBOX_CHECKED_IMAGE = DALI_IMAGE_DIR "checkbox-selected.png";
88
89 const ButtonItem MENU_ITEMS[] = {
90     { POPUPS_MENU_ID,        "Popups" },
91     { TABLEVIEW_MENU_ID,     "TableView" }
92 };
93
94 const unsigned int MENU_ITEMS_COUNT = sizeof( MENU_ITEMS ) / sizeof( MENU_ITEMS[0] );
95
96 const ButtonItem POPUP_BUTTON_ITEMS[] = {
97     { POPUP_BUTTON_COMPLEX_ID,                    "Complex" },
98     { POPUP_BUTTON_EMPTY_ID,                      "Empty" },
99     { POPUP_BUTTON_TITLE_ID,                      "Title" },
100     { POPUP_BUTTON_BUTTONS_1_ID,                  "1 Button" },
101     { POPUP_BUTTON_BUTTONS_2_ID,                  "2 Buttons" },
102     { POPUP_BUTTON_TITLE_BUTTONS_ID,              "Title & Buttons" },
103     { POPUP_BUTTON_CONTENT_TEXT_ID,               "Text" },
104     { POPUP_BUTTON_CONTENT_IMAGE_ID,              "Image" },
105     { POPUP_BUTTON_CONTENT_IMAGE_SCALE_ID,        "Image Scale" },
106     { POPUP_BUTTON_CONTENT_IMAGE_FIT_ID,          "Image Fit" },
107     { POPUP_BUTTON_CONTENT_IMAGE_FILL_ID,         "Image Fill" },
108     { POPUP_BUTTON_TITLE_CONTENT_TEXT_ID,         "Title Text" },
109     { POPUP_BUTTON_TITLE_CONTENT_TEXT_BUTTONS_ID, "Title, text, buttons" }
110
111 };
112
113 const int POPUP_BUTTON_ITEMS_COUNT = sizeof( POPUP_BUTTON_ITEMS ) / sizeof( POPUP_BUTTON_ITEMS[0] );
114
115 const ButtonItem TABLEVIEW_BUTTON_ITEMS[] = {
116     { TABLEVIEW_BUTTON_EMPTY_ID,                    "Empty" },
117     { TABLEVIEW_BUTTON_1CELL_ID,                    "1 Cell" },
118     { TABLEVIEW_BUTTON_3CELL_ID,                    "3 Cell" },
119     { TABLEVIEW_BUTTON_3X3CELL_ID,                  "3x3 Cells" },
120     { TABLEVIEW_BUTTON_FIXED1_ID,                   "Fixed 1" },
121     { TABLEVIEW_BUTTON_FIXED2_ID,                   "Fixed 2" },
122     { TABLEVIEW_BUTTON_FIT1_ID,                     "Fit Top Bottom" },
123     { TABLEVIEW_BUTTON_FIT2_ID,                     "Fit Middle" },
124     { TABLEVIEW_BUTTON_NATURAL1_ID,                 "Natural 1" },
125     { TABLEVIEW_BUTTON_NATURAL2_ID,                 "Natural 2" },
126     { TABLEVIEW_BUTTON_NATURAL3_ID,                 "Natural 3" },
127 };
128
129 const unsigned int TABLEVIEW_BUTTON_ITEMS_COUNT = sizeof( TABLEVIEW_BUTTON_ITEMS ) / sizeof( TABLEVIEW_BUTTON_ITEMS[0] );
130
131 }  // namespace
132
133
134
135 /**
136  * This example shows the usage of size negotiation.
137  */
138 class SizeNegotiationController: public ConnectionTracker, public Toolkit::ItemFactory
139 {
140 public:
141
142   SizeNegotiationController( Application& application )
143     : mApplication( application ),
144       mMenuShown( false ),
145       mDemoState( POPUP )
146   {
147     // Connect to the Application's Init signal
148     mApplication.InitSignal().Connect( this, &SizeNegotiationController::Create );
149   }
150
151   ~SizeNegotiationController()
152   {
153     // Nothing to do here
154   }
155
156   void Create( Application& application )
157   {
158     // The Init signal is received once (only) during the Application lifetime
159
160     DemoHelper::RequestThemeChange();
161
162     Stage stage = Stage::GetCurrent();
163
164     // Respond to key events
165     stage.KeyEventSignal().Connect(this, &SizeNegotiationController::OnKeyEvent);
166
167     // Creates a default view with a default tool bar.
168     // The view is added to the stage.
169     mContentLayer = DemoHelper::CreateView( application,
170                                             mView,
171                                             mToolBar,
172                                             BACKGROUND_IMAGE,
173                                             TOOLBAR_IMAGE,
174                                             std::string("") );
175
176     mTitleActor = DemoHelper::CreateToolBarLabel( "CUSTOM_TOOLBAR_TITLE" );
177
178     SetTitle();
179
180     // Create menu button
181     Toolkit::PushButton viewButton = Toolkit::PushButton::New();
182     viewButton.SetBackgroundImage( ResourceImage::New( MENU_ICON_IMAGE ) );
183     viewButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnMenu );
184     mToolBar.AddControl( viewButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalLeft, DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
185
186     // Add title to the tool bar.
187     const float padding( DemoHelper::DEFAULT_VIEW_STYLE.mToolBarPadding );
188     mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter, Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
189
190     mItemView = Toolkit::ItemView::New( *this );
191     mItemView.SetParentOrigin( ParentOrigin::CENTER );
192     mItemView.SetAnchorPoint( AnchorPoint::CENTER );
193     mItemView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
194
195     // Use a grid layout for tests
196     Toolkit::GridLayoutPtr gridLayout = Toolkit::GridLayout::New();
197     gridLayout->SetNumberOfColumns( 2 );
198     gridLayout->SetTopMargin( DP(TOOLBAR_HEIGHT) + DP(20.0f) );
199     gridLayout->SetBottomMargin( DP(100.0f) );
200     gridLayout->SetRowSpacing( DP(20.0f) );
201     mItemView.AddLayout( *gridLayout );
202
203     Vector2 stageSize = stage.GetSize();
204     float layoutWidth = Toolkit::IsHorizontal( gridLayout->GetOrientation() ) ? stageSize.height : stageSize.width;
205     float gridItemSize = ( layoutWidth / gridLayout->GetNumberOfColumns() ) * 0.5f;
206     gridLayout->SetScrollSpeedFactor( gridLayout->GetNumberOfColumns() / gridItemSize * 0.5f );
207
208     mItemView.ActivateLayout( 0, Vector3(stageSize.x, stageSize.y, stageSize.x), 0.0f );
209
210     mContentLayer.Add( mItemView );
211   }
212
213   void SetTitle()
214   {
215     std::string subTitle = "";
216
217     switch( mDemoState )
218     {
219       case POPUP:
220       {
221         subTitle = "Popups";
222         break;
223       }
224
225       case TABLEVIEW:
226       {
227         subTitle = "TableView";
228         break;
229       }
230
231       default:
232       {
233         break;
234       }
235     }
236
237     mTitleActor.SetProperty( Toolkit::TextLabel::Property::TEXT, std::string( std::string( TOOLBAR_TITLE ) + ": " + subTitle ) );
238   }
239
240   bool OnMenu( Toolkit::Button button )
241   {
242     ShowMenu();
243     return true;
244   }
245
246   void ShowMenu()
247   {
248     Stage stage = Stage::GetCurrent();
249     const float popupWidth = stage.GetSize().x * 0.5f;
250
251     mMenu = Toolkit::Popup::New();
252     mMenu.SetParentOrigin( ParentOrigin::TOP_LEFT );
253     mMenu.SetAnchorPoint( AnchorPoint::TOP_LEFT );
254     mMenu.HideTail();
255     mMenu.OutsideTouchedSignal().Connect( this, &SizeNegotiationController::HideMenu );
256     mMenu.SetSize( popupWidth, 0.0f );
257     mMenu.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
258
259     Toolkit::TableView tableView = Toolkit::TableView::New( 0, 0 );
260     tableView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
261     tableView.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
262     mMenu.Add( tableView );
263
264     for( unsigned int i = 0; i < MENU_ITEMS_COUNT; ++i )
265     {
266       Toolkit::PushButton menuButton = Toolkit::PushButton::New();
267       menuButton.SetName( MENU_ITEMS[ i ].name );
268       menuButton.SetLabel( MENU_ITEMS[ i ].text );
269       menuButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnMenuSelect );
270
271       tableView.Add( menuButton );
272       tableView.SetFitHeight( i );
273     }
274
275     // Show the menu
276     mMenu.Show();
277     mMenuShown = true;
278   }
279
280   void HideMenu()
281   {
282     if( mMenu )
283     {
284       mMenu.Hide();
285       mMenu.Reset();
286     }
287
288     mMenuShown = false;
289   }
290
291   bool OnMenuSelect( Toolkit::Button button )
292   {
293     bool refresh = false;
294
295     if( button.GetName() == POPUPS_MENU_ID )
296     {
297       if( mDemoState != POPUP )
298       {
299         refresh = true;
300         mDemoState = POPUP;
301       }
302     }
303     else if( button.GetName() == TABLEVIEW_MENU_ID )
304     {
305       if( mDemoState != TABLEVIEW )
306       {
307         refresh = true;
308         mDemoState = TABLEVIEW;
309       }
310     }
311
312     if( refresh )
313     {
314       SetTitle();
315
316       mItemView.Refresh();
317     }
318
319     HideMenu();
320     return true;
321   }
322
323   Toolkit::Popup CreatePopup()
324   {
325     Stage stage = Stage::GetCurrent();
326     const float POPUP_WIDTH_DP = stage.GetSize().width * 0.75f;
327
328     Toolkit::Popup popup = Toolkit::Popup::New();
329     popup.SetName( "POPUP" );
330     popup.SetParentOrigin( ParentOrigin::CENTER );
331     popup.SetAnchorPoint( AnchorPoint::CENTER );
332     popup.SetSize( POPUP_WIDTH_DP, 0.0f );
333     popup.HideTail();
334
335     popup.OutsideTouchedSignal().Connect( this, &SizeNegotiationController::OnPopupOutsideTouched );
336
337     return popup;
338   }
339
340   bool OnButtonClicked( Toolkit::Button button )
341   {
342     if( button.GetName() == POPUP_BUTTON_EMPTY_ID )
343     {
344       mPopup = CreatePopup();
345
346       mPopup.Show();
347     }
348     else if( button.GetName() == POPUP_BUTTON_TITLE_ID )
349     {
350       mPopup = CreatePopup();
351       mPopup.SetTitle( "Popup!" );
352
353       mPopup.Show();
354     }
355     else if( button.GetName() == POPUP_BUTTON_BUTTONS_1_ID )
356     {
357       mPopup = CreatePopup();
358
359       Toolkit::PushButton okayButton = Toolkit::PushButton::New();
360       okayButton.SetName( OKAY_BUTTON_ID );
361       okayButton.SetLabel( "OK!" );
362       okayButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
363       okayButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
364
365       okayButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
366
367       mPopup.AddButton( okayButton );
368
369       mPopup.Show();
370     }
371     else if( button.GetName() == POPUP_BUTTON_BUTTONS_2_ID )
372     {
373       mPopup = CreatePopup();
374
375       Toolkit::PushButton cancelButton = Toolkit::PushButton::New();
376       cancelButton.SetName( CANCEL_BUTTON_ID );
377       cancelButton.SetLabel( "Cancel" );
378       cancelButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
379       cancelButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
380
381       cancelButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
382
383       mPopup.AddButton( cancelButton );
384
385       Toolkit::PushButton okayButton = Toolkit::PushButton::New();
386       okayButton.SetName( OKAY_BUTTON_ID );
387       okayButton.SetLabel( "OK!" );
388       okayButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
389       okayButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
390
391       okayButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
392
393       mPopup.AddButton( okayButton );
394
395       mPopup.Show();
396     }
397     else if( button.GetName() == POPUP_BUTTON_TITLE_BUTTONS_ID )
398     {
399       mPopup = CreatePopup();
400       mPopup.SetTitle( "Popup!" );
401
402       Toolkit::PushButton cancelButton = Toolkit::PushButton::New();
403       cancelButton.SetName( CANCEL_BUTTON_ID );
404       cancelButton.SetLabel( "Cancel" );
405       cancelButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
406       cancelButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
407
408       cancelButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
409
410       mPopup.AddButton( cancelButton );
411
412       Toolkit::PushButton okayButton = Toolkit::PushButton::New();
413       okayButton.SetName( OKAY_BUTTON_ID );
414       okayButton.SetLabel( "OK!" );
415       okayButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
416       okayButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
417
418       okayButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
419
420       mPopup.AddButton( okayButton );
421
422       mPopup.Show();
423     }
424     else if( button.GetName() == POPUP_BUTTON_CONTENT_TEXT_ID )
425     {
426       mPopup = CreatePopup();
427
428       TextLabel text = TextLabel::New( CONTENT_TEXT );
429       text.SetName( "POPUP_CONTENT_TEXT" );
430       text.SetProperty( TextLabel::Property::MULTI_LINE, true );
431       text.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
432       text.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
433       text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
434       text.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
435       text.SetPadding( Padding( 20.0f, 20.0f, 20.0f, 20.0f ) );
436
437       mPopup.Add( text );
438
439       mPopup.Show();
440     }
441     else if( button.GetName() == POPUP_BUTTON_CONTENT_IMAGE_ID )
442     {
443       mPopup = CreatePopup();
444
445       ImageActor image = ImageActor::New( ResourceImage::New( IMAGE2 ) );
446       image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
447       image.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
448       image.SetPadding( Padding( 20.0f, 20.0f, 20.0f, 20.0f ) );
449
450       mPopup.Add( image );
451
452       mPopup.Show();
453     }
454     else if( button.GetName() == POPUP_BUTTON_CONTENT_IMAGE_SCALE_ID )
455     {
456       mPopup = CreatePopup();
457
458       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
459       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
460
461       ImageActor image = ImageActor::New( ResourceImage::New( IMAGE2 ) );
462       image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
463
464       mPopup.Add( image );
465
466       mPopup.Show();
467     }
468     else if( button.GetName() == POPUP_BUTTON_CONTENT_IMAGE_FIT_ID )
469     {
470       mPopup = CreatePopup();
471
472       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
473       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
474
475       ImageActor image = ImageActor::New( ResourceImage::New( IMAGE2 ) );
476       image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
477       image.SetSizeScalePolicy( SizeScalePolicy::FIT_WITH_ASPECT_RATIO );
478
479       mPopup.Add( image );
480
481       mPopup.Show();
482     }
483     else if( button.GetName() == POPUP_BUTTON_CONTENT_IMAGE_FILL_ID )
484     {
485       mPopup = CreatePopup();
486
487       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
488       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
489
490       ImageActor image = ImageActor::New( ResourceImage::New( IMAGE2 ) );
491       image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
492       image.SetSizeScalePolicy( SizeScalePolicy::FILL_WITH_ASPECT_RATIO );
493
494       mPopup.Add( image );
495
496       mPopup.Show();
497     }
498     else if( button.GetName() == POPUP_BUTTON_TITLE_CONTENT_TEXT_ID )
499     {
500       mPopup = CreatePopup();
501       mPopup.SetTitle( "Popup!" );
502
503       Toolkit::TextLabel text = Toolkit::TextLabel::New( CONTENT_TEXT );
504       text.SetName( "POPUP_CONTENT_TEXT" );
505       text.SetProperty( TextLabel::Property::MULTI_LINE, true );
506       text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
507       text.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
508       text.SetPadding( Padding( 20.0f, 20.0f, 20.0f, 20.0f ) );
509
510       mPopup.Add( text );
511
512       mPopup.Show();
513     }
514     else if( button.GetName() == POPUP_BUTTON_TITLE_CONTENT_TEXT_BUTTONS_ID )
515     {
516       mPopup = CreatePopup();
517       mPopup.SetTitle( "Popup!" );
518
519       Toolkit::TextLabel text = Toolkit::TextLabel::New( CONTENT_TEXT );
520       text.SetName( "POPUP_CONTENT_TEXT" );
521       text.SetProperty( TextLabel::Property::MULTI_LINE, true );
522       text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
523       text.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
524       text.SetPadding( Padding( 10.0f, 10.0f, 20.0f, 0.0f ) );
525
526       mPopup.Add( text );
527
528       Toolkit::PushButton cancelButton = Toolkit::PushButton::New();
529       cancelButton.SetName( CANCEL_BUTTON_ID );
530       cancelButton.SetLabel( "Cancel" );
531       cancelButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
532       cancelButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
533
534       cancelButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
535
536       mPopup.AddButton( cancelButton );
537
538       Toolkit::PushButton okayButton = Toolkit::PushButton::New();
539       okayButton.SetName( OKAY_BUTTON_ID );
540       okayButton.SetLabel( "OK!" );
541       okayButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
542       okayButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
543
544       okayButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
545
546       mPopup.AddButton( okayButton );
547
548       mPopup.Show();
549     }
550     else if( button.GetName() == POPUP_BUTTON_COMPLEX_ID )
551     {
552       mPopup = CreatePopup();
553       mPopup.SetTitle( "Warning" );
554
555       // Content
556       Toolkit::TableView content = Toolkit::TableView::New( 2, 2 );
557       content.SetName( "COMPLEX_TABLEVIEW" );
558       content.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
559       content.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
560       content.SetFitHeight( 0 );
561       content.SetFitHeight( 1 );
562       content.SetPadding( Padding( 20.0f, 20.0f, 20.0f, 0.0f ) );
563
564       // Text
565       {
566         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Do you really want to quit?" );
567         text.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true );
568         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
569         text.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
570
571         content.AddChild( text, Toolkit::TableView::CellPosition( 0, 0 ) );
572       }
573
574       // Image
575       {
576         ImageActor image = ImageActor::New( ResourceImage::New( IMAGE1 ) );
577         image.SetName( "COMPLEX_IMAGE" );
578         image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
579         image.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
580         image.SetPadding( Padding( 20.0f, 0.0f, 0.0f, 0.0f ) );
581         content.AddChild( image, Toolkit::TableView::CellPosition( 0, 1 ) );
582       }
583
584       // Text 2
585       {
586         Toolkit::TableView root = Toolkit::TableView::New( 1, 2 );
587         root.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
588         root.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
589         root.SetFitHeight( 0 );
590         root.SetFitWidth( 0 );
591         root.SetPadding( Padding( 0.0f, 0.0f, 0.0f, 20.0f ) );
592
593         Dali::Image unchecked = Dali::ResourceImage::New( CHECKBOX_UNCHECKED_IMAGE );
594         Dali::Image checked = Dali::ResourceImage::New( CHECKBOX_CHECKED_IMAGE );
595         Toolkit::CheckBoxButton checkBox = Toolkit::CheckBoxButton::New();
596         checkBox.SetBackgroundImage( unchecked );
597         checkBox.SetSelectedImage( checked );
598         checkBox.SetSize( 48, 48 );
599
600         root.AddChild( checkBox, Toolkit::TableView::CellPosition( 0, 0 ) );
601
602         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Don't show again" );
603         Actor textActor = text;
604         textActor.SetPadding( Padding( 20.0f, 0.0f, 0.0f, 10.0f ) );
605
606         root.AddChild( text, Toolkit::TableView::CellPosition( 0, 1 ) );
607
608         content.AddChild( root, Toolkit::TableView::CellPosition( 1, 0 ) );
609       }
610
611       mPopup.Add( content );
612
613       // Buttons
614       Toolkit::PushButton cancelButton = Toolkit::PushButton::New();
615       cancelButton.SetName( CANCEL_BUTTON_ID );
616       cancelButton.SetLabel( "Cancel" );
617       cancelButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
618       cancelButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
619
620       cancelButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
621
622       mPopup.AddButton( cancelButton );
623
624       Toolkit::PushButton okayButton = Toolkit::PushButton::New();
625       okayButton.SetName( OKAY_BUTTON_ID );
626       okayButton.SetLabel( "OK!" );
627       okayButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
628       okayButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
629
630       okayButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
631
632       mPopup.AddButton( okayButton );
633
634       mPopup.Show();
635     }
636     else if( button.GetName() == TABLEVIEW_BUTTON_EMPTY_ID )
637     {
638       mPopup = CreatePopup();
639       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
640       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
641
642
643       Toolkit::TableView table = Toolkit::TableView::New( 0, 0 );
644       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
645
646       mPopup.Add( table );
647
648       mPopup.Show();
649     }
650     else if( button.GetName() == TABLEVIEW_BUTTON_1CELL_ID )
651     {
652       mPopup = CreatePopup();
653       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
654       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
655
656
657       Toolkit::TableView table = Toolkit::TableView::New( 0, 0 );
658       table.SetName( "TABLEVIEW_BUTTON_1CELL_ID" );
659       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
660
661       Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
662       backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
663       table.Add( backing );
664
665       mPopup.Add( table );
666
667       mPopup.Show();
668     }
669     else if( button.GetName() == TABLEVIEW_BUTTON_3CELL_ID )
670     {
671       mPopup = CreatePopup();
672       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
673       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
674
675
676       Toolkit::TableView table = Toolkit::TableView::New( 0, 0 );
677       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
678
679       {
680         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
681         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
682         table.Add( backing );
683       }
684       {
685         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
686         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
687         table.Add( backing );
688       }
689       {
690         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
691         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
692         table.Add( backing );
693       }
694
695       mPopup.Add( table );
696
697       mPopup.Show();
698     }
699     else if( button.GetName() == TABLEVIEW_BUTTON_3X3CELL_ID )
700     {
701       mPopup = CreatePopup();
702       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
703       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
704
705
706       Toolkit::TableView table = Toolkit::TableView::New( 3, 3 );
707       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
708
709       // Column 0
710       {
711         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
712         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
713         table.AddChild( backing, Toolkit::TableView::CellPosition( 0, 0 ) );
714       }
715       {
716         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
717         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
718         table.AddChild( backing, Toolkit::TableView::CellPosition( 1, 0 ) );
719       }
720       {
721         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
722         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
723         table.AddChild( backing, Toolkit::TableView::CellPosition( 2, 0 ) );
724       }
725
726       // Column 1
727       {
728         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 1.0f, 1.0f ) );
729         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
730         table.AddChild( backing, Toolkit::TableView::CellPosition( 0, 1 ) );
731       }
732       {
733         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 1.0f, 1.0f ) );
734         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
735         table.AddChild( backing, Toolkit::TableView::CellPosition( 1, 1 ) );
736       }
737       {
738         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 0.0f, 1.0f, 1.0f ) );
739         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
740         table.AddChild( backing, Toolkit::TableView::CellPosition( 2, 1 ) );
741       }
742
743       // Column 2
744       {
745         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 0.0f, 0.0f, 1.0f ) );
746         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
747         table.AddChild( backing, Toolkit::TableView::CellPosition( 0, 2 ) );
748       }
749       {
750         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.5f, 0.5f, 0.5f, 1.0f ) );
751         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
752         table.AddChild( backing, Toolkit::TableView::CellPosition( 1, 2 ) );
753       }
754       {
755         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.5f, 0.0f, 1.0f ) );
756         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
757         table.AddChild( backing, Toolkit::TableView::CellPosition( 2, 2 ) );
758       }
759
760       mPopup.Add( table );
761
762       mPopup.Show();
763     }
764     else if( button.GetName() == TABLEVIEW_BUTTON_FIXED1_ID )
765     {
766       mPopup = CreatePopup();
767       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
768       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
769
770
771       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
772       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
773       table.SetFixedHeight( 0, 50.0f );
774
775       {
776         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
777         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
778         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fixed" );
779         text.SetParentOrigin( ParentOrigin::CENTER );
780         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
781         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
782         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
783         backing.Add( text );
784         table.Add( backing );
785       }
786       {
787         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
788         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
789         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fill" );
790         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
791         text.SetParentOrigin( ParentOrigin::CENTER );
792         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
793         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
794         backing.Add( text );
795         table.Add( backing );
796       }
797       {
798         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
799         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
800         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fill" );
801         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
802         text.SetParentOrigin( ParentOrigin::CENTER );
803         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
804         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
805         backing.Add( text );
806         table.Add( backing );
807       }
808
809       mPopup.Add( table );
810
811       mPopup.Show();
812     }
813     else if( button.GetName() == TABLEVIEW_BUTTON_FIXED2_ID )
814     {
815       mPopup = CreatePopup();
816       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
817       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
818
819
820       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
821       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
822       table.SetFixedHeight( 0, 50.0f );
823       table.SetFixedHeight( 2, 50.0f );
824
825       {
826         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
827         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
828         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fixed" );
829         text.SetAnchorPoint( AnchorPoint::CENTER );
830         text.SetParentOrigin( ParentOrigin::CENTER );
831         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
832         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
833         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
834
835         backing.Add( text );
836         table.Add( backing );
837       }
838       {
839         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
840         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
841         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fill" );
842         text.SetAnchorPoint( AnchorPoint::CENTER );
843         text.SetParentOrigin( ParentOrigin::CENTER );
844         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
845         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
846         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
847
848         backing.Add( text );
849         table.Add( backing );
850       }
851       {
852         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
853         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
854         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fixed" );
855         text.SetAnchorPoint( AnchorPoint::CENTER );
856         text.SetParentOrigin( ParentOrigin::CENTER );
857         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
858         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
859         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
860
861         backing.Add( text );
862         table.Add( backing );
863       }
864
865       mPopup.Add( table );
866
867       mPopup.Show();
868     }
869     else if( button.GetName() == TABLEVIEW_BUTTON_FIT1_ID )
870     {
871       mPopup = CreatePopup();
872       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
873       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
874
875
876       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
877       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
878       table.SetFitHeight( 0 );
879       table.SetFitHeight( 2 );
880
881       {
882         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
883         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
884         backing.SetSize( 0.0f, 100.0f );
885
886         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
887         text.SetAnchorPoint( AnchorPoint::CENTER );
888         text.SetParentOrigin( ParentOrigin::CENTER );
889         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
890         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
891         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
892
893         backing.Add( text );
894
895         table.Add( backing );
896       }
897       {
898         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
899         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
900
901         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fill" );
902         text.SetAnchorPoint( AnchorPoint::CENTER );
903         text.SetParentOrigin( ParentOrigin::CENTER );
904         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
905         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
906         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
907
908         backing.Add( text );
909
910         table.Add( backing );
911       }
912       {
913         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
914         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
915         backing.SetSize( 0.0f, 100.0f );
916
917         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
918         text.SetAnchorPoint( AnchorPoint::CENTER );
919         text.SetParentOrigin( ParentOrigin::CENTER );
920         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
921         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
922         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
923
924         backing.Add( text );
925
926         table.Add( backing );
927       }
928
929       mPopup.Add( table );
930
931       mPopup.Show();
932     }
933     else if( button.GetName() == TABLEVIEW_BUTTON_FIT2_ID )
934     {
935       mPopup = CreatePopup();
936       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
937       mPopup.SetSizeModeFactor( Vector3( 0.75f, 0.5f, 1.0f ) );
938
939       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
940       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
941       table.SetFitHeight( 1 );
942
943       {
944         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
945         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
946
947         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fill" );
948         text.SetAnchorPoint( AnchorPoint::CENTER );
949         text.SetParentOrigin( ParentOrigin::CENTER );
950         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
951         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
952         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
953
954         backing.Add( text );
955
956         table.Add( backing );
957       }
958       {
959         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
960         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
961         backing.SetSize( 0.0f, 200.0f );
962
963         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
964         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
965         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
966         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
967
968         text.SetAnchorPoint( AnchorPoint::CENTER );
969         text.SetParentOrigin( ParentOrigin::CENTER );
970         backing.Add( text );
971
972         table.Add( backing );
973       }
974       {
975         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
976         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
977
978         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fill" );
979         text.SetAnchorPoint( AnchorPoint::CENTER );
980         text.SetParentOrigin( ParentOrigin::CENTER );
981         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
982         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
983         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
984
985         backing.Add( text );
986
987         table.Add( backing );
988       }
989
990       mPopup.Add( table );
991
992       mPopup.Show();
993     }
994     else if( button.GetName() == TABLEVIEW_BUTTON_NATURAL1_ID )
995     {
996       mPopup = CreatePopup();
997       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH );
998       mPopup.SetSizeModeFactor( Vector3( 0.75f, 1.0f, 1.0f ) );
999       mPopup.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
1000
1001       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
1002       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1003       table.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
1004       table.SetFitHeight( 0 );
1005       table.SetFitHeight( 1 );
1006       table.SetFitHeight( 2 );
1007
1008       {
1009         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
1010         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1011         backing.SetSize( 0.0f, 100.0f );
1012
1013         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
1014         text.SetAnchorPoint( AnchorPoint::CENTER );
1015         text.SetParentOrigin( ParentOrigin::CENTER );
1016         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1017         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1018         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1019
1020         backing.Add( text );
1021
1022         table.Add( backing );
1023       }
1024       {
1025         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 1.0f, 0.0f, 1.0f ) );
1026         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1027         backing.SetSize( 0.0f, 200.0f );
1028
1029         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
1030         text.SetAnchorPoint( AnchorPoint::CENTER );
1031         text.SetParentOrigin( ParentOrigin::CENTER );
1032         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1033         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1034         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1035
1036         backing.Add( text );
1037
1038         table.Add( backing );
1039       }
1040       {
1041         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
1042         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1043         backing.SetSize( 0.0f, 300.0f );
1044
1045         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
1046         text.SetAnchorPoint( AnchorPoint::CENTER );
1047         text.SetParentOrigin( ParentOrigin::CENTER );
1048         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1049         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1050         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1051
1052         backing.Add( text );
1053
1054         table.Add( backing );
1055       }
1056
1057       mPopup.Add( table );
1058
1059       mPopup.Show();
1060     }
1061     else if( button.GetName() == TABLEVIEW_BUTTON_NATURAL2_ID )
1062     {
1063       mPopup = CreatePopup();
1064       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH );
1065       mPopup.SetSizeModeFactor( Vector3( 0.75f, 1.0f, 1.0f ) );
1066       mPopup.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
1067
1068       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
1069       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1070       table.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
1071       table.SetFitHeight( 0 );
1072       table.SetFitHeight( 1 );
1073
1074       {
1075         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
1076         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1077         backing.SetResizePolicy( ResizePolicy::FIXED, Dimension::HEIGHT );
1078         backing.SetSize( 0.0f, 100.0f );
1079
1080         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
1081         text.SetAnchorPoint( AnchorPoint::CENTER );
1082         text.SetParentOrigin( ParentOrigin::CENTER );
1083         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1084         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1085         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1086
1087         backing.Add( text );
1088
1089         table.Add( backing );
1090       }
1091       {
1092         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
1093         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1094         backing.SetSize( 0.0f, 200.0f );
1095
1096         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
1097         text.SetAnchorPoint( AnchorPoint::CENTER );
1098         text.SetParentOrigin( ParentOrigin::CENTER );
1099         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1100         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1101         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1102
1103         backing.Add( text );
1104
1105         table.Add( backing );
1106       }
1107
1108       mPopup.Add( table );
1109
1110       mPopup.Show();
1111     }
1112     else if( button.GetName() == TABLEVIEW_BUTTON_NATURAL3_ID )
1113     {
1114       mPopup = CreatePopup();
1115       mPopup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH );
1116       mPopup.SetSizeModeFactor( Vector3( 0.75f, 1.0f, 1.0f ) );
1117       mPopup.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
1118
1119       Toolkit::TableView table = Toolkit::TableView::New( 3, 1 );
1120       table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1121       table.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
1122       table.SetFixedHeight( 0, 20.0f );
1123       table.SetFitHeight( 1 );
1124
1125       {
1126         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 1.0f, 0.0f, 0.0f, 1.0f ) );
1127         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1128
1129         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fixed" );
1130         text.SetAnchorPoint( AnchorPoint::CENTER );
1131         text.SetParentOrigin( ParentOrigin::CENTER );
1132         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1133         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1134         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1135
1136         backing.Add( text );
1137
1138         table.Add( backing );
1139       }
1140       {
1141         Actor backing = Toolkit::CreateSolidColorActor( Vector4( 0.0f, 1.0f, 0.0f, 1.0f ) );
1142         backing.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1143         backing.SetSize( 0.0f, 200.0f );
1144
1145         Toolkit::TextLabel text = Toolkit::TextLabel::New( "Fit" );
1146         text.SetAnchorPoint( AnchorPoint::CENTER );
1147         text.SetParentOrigin( ParentOrigin::CENTER );
1148         text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1149         text.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
1150         text.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
1151
1152         backing.Add( text );
1153
1154         table.Add( backing );
1155       }
1156
1157       mPopup.Add( table );
1158
1159       mPopup.Show();
1160     }
1161     else if( button.GetName() == OKAY_BUTTON_ID || button.GetName() == CANCEL_BUTTON_ID )
1162     {
1163       if( mPopup )
1164       {
1165         mPopup.Hide();
1166       }
1167     }
1168
1169     return true;
1170   }
1171
1172   void OnPopupOutsideTouched()
1173   {
1174     if( mPopup )
1175     {
1176       mPopup.Hide();
1177     }
1178   }
1179
1180   void OnKeyEvent( const KeyEvent& event )
1181   {
1182     if( event.state == KeyEvent::Down )
1183     {
1184       if( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) )
1185       {
1186         // Exit application when click back or escape.
1187         mApplication.Quit();
1188       }
1189     }
1190   }
1191
1192 public: // From ItemFactory
1193
1194   /**
1195    * @brief Return the number of items to display in the item view
1196    *
1197    * @return Return the number of items to display
1198    */
1199   virtual unsigned int GetNumberOfItems()
1200   {
1201     switch( mDemoState )
1202     {
1203       case POPUP:
1204       {
1205         return POPUP_BUTTON_ITEMS_COUNT;
1206       }
1207
1208       case TABLEVIEW:
1209       {
1210         return TABLEVIEW_BUTTON_ITEMS_COUNT;
1211       }
1212
1213       default:
1214       {
1215         break;
1216       }
1217     }
1218
1219     return 0;
1220   }
1221
1222   /**
1223    * @brief Create a new item to populate the item view with
1224    *
1225    * @param[in] itemId The index of the item to create
1226    * @return Return the created actor for the given ID
1227    */
1228   virtual Actor NewItem(unsigned int itemId)
1229   {
1230     const ButtonItem* buttonDataArray = NULL;
1231     switch( mDemoState )
1232     {
1233       case POPUP:
1234       {
1235         buttonDataArray = POPUP_BUTTON_ITEMS;
1236         break;
1237       }
1238
1239       case TABLEVIEW:
1240       {
1241         buttonDataArray = TABLEVIEW_BUTTON_ITEMS;
1242         break;
1243       }
1244
1245       default:
1246       {
1247         break;
1248       }
1249     }
1250
1251     if( buttonDataArray )
1252     {
1253       Toolkit::PushButton popupButton = Toolkit::PushButton::New();
1254       popupButton.SetName( buttonDataArray[ itemId ].name );
1255       popupButton.SetLabel( buttonDataArray[ itemId ].text );
1256       popupButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
1257
1258       popupButton.SetSelectedImage( Dali::ResourceImage::New( PUSHBUTTON_PRESS_IMAGE ) );
1259       popupButton.SetButtonImage( Dali::ResourceImage::New( PUSHBUTTON_BUTTON_IMAGE ) );
1260
1261       popupButton.ClickedSignal().Connect( this, &SizeNegotiationController::OnButtonClicked );
1262
1263       return popupButton;
1264     }
1265
1266     return Actor();
1267   }
1268
1269 private:
1270
1271   enum DemoState
1272   {
1273     POPUP,
1274     TABLEVIEW
1275   };
1276
1277   Application&      mApplication;
1278   Toolkit::Control  mView;                   ///< The View instance.
1279   Toolkit::ToolBar  mToolBar;                ///< The View's Toolbar.
1280   Layer             mContentLayer;           ///< Content layer
1281
1282   Toolkit::TextLabel mTitleActor;             ///< Title text
1283
1284   Toolkit::Popup    mMenu;                   ///< The navigation menu
1285   bool              mMenuShown;              ///< If the navigation menu is currently being displayed or not
1286
1287   Toolkit::Popup    mPopup;
1288
1289   Toolkit::ItemView mItemView;               ///< ItemView to hold test images
1290
1291   DemoState mDemoState;
1292 };
1293
1294 void RunTest( Application& application )
1295 {
1296   SizeNegotiationController test( application );
1297
1298   application.MainLoop();
1299 }
1300
1301 // Entry point for Linux & SLP applications
1302 //
1303 int main( int argc, char **argv )
1304 {
1305   Application application = Application::New( &argc, &argv );
1306
1307   RunTest( application );
1308
1309   return 0;
1310 }