- mColorButtons[index] = RadioButton::New();
- mColorButtons[index].SetPosition( mButtonSize.width, mStageSize.height * STYLE_BUTTON_POSTION_RELATIVE_TO_STAGE - ( mButtonSize.width * (index+1) ) );
- mColorButtons[index].SetSize( mButtonSize );
- mColorButtons[index].ClickedSignal().Connect( this, &TextLabelExample::OnColorSelected );
- mColorButtons[index].SetProperty( Button::Property::TOGGLABLE, true );
- Property::Map propertyMap;
- propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
- propertyMap.Insert(ColorVisual::Property::MIX_COLOR, AVAILABLE_COLORS[ index ]);
- mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, propertyMap );
- mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::UNSELECTED_VISUAL, propertyMap );
-
- propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
- propertyMap.Insert(ColorVisual::Property::MIX_COLOR, AVAILABLE_COLORS[ index ]);
- mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, propertyMap );
-
- mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::SELECTED_VISUAL,
- Property::Map().Add( Visual::Property::TYPE, Visual::BORDER )
- .Add( BorderVisual::Property::COLOR, Color::WHITE )
- .Add( BorderVisual::Property::SIZE, 2.0f )
- .Add( BorderVisual::Property::ANTI_ALIASING, true ) );
-
- Stage::GetCurrent().Add( mColorButtons[index] );
+ if( !mColorButtonsAnimation )
+ {
+ mColorButtonsAnimation = Animation::New( 0.15f );
+ mColorButtonsAnimation.FinishedSignal().Connect( this, &TextLabelExample::OnColorButtonAnimationFinished );
+ }
+
+ // Create a color button
+ if ( ! mColorButtons[index] )
+ {
+ mColorButtons[index] = RadioButton::New();
+ mColorButtons[index].SetSize( mButtonSize );
+ mColorButtons[index].ClickedSignal().Connect( this, &TextLabelExample::OnColorSelected );
+ mColorButtons[index].SetProperty( Button::Property::TOGGLABLE, true );
+ Property::Map propertyMap;
+ propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
+ propertyMap.Insert(ColorVisual::Property::MIX_COLOR, AVAILABLE_COLORS[ index ]);
+ mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, propertyMap );
+ mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::UNSELECTED_VISUAL, propertyMap );
+ mColorButtons[index].SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
+ mColorButtons[index].SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER );
+
+
+ propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
+ propertyMap.Insert(ColorVisual::Property::MIX_COLOR, AVAILABLE_COLORS[ index ]);
+ mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, propertyMap );
+
+ mColorButtons[index].SetProperty( Toolkit::DevelButton::Property::SELECTED_VISUAL,
+ Property::Map().Add( Visual::Property::TYPE, Visual::BORDER )
+ .Add( BorderVisual::Property::COLOR, Color::WHITE )
+ .Add( BorderVisual::Property::SIZE, 4.0f )
+ .Add( BorderVisual::Property::ANTI_ALIASING, true ) );
+
+ // Use a white button with 50% transparency as a clear color button
+ if ( Color::WHITE == AVAILABLE_COLORS[ index ] && styleButtonIndex != StyleType::TEXT_COLOR )
+ {
+ mColorButtons[index].SetOpacity(0.5f);
+
+ mColorButtons[index].SetProperty( Toolkit::Button::Property::LABEL,
+ Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
+ .Add( Toolkit::TextVisual::Property::HORIZONTAL_ALIGNMENT, HorizontalAlignment::CENTER )
+ .Add( Toolkit::TextVisual::Property::TEXT, "off") );
+
+ }
+ }
+
+ SetInitialSelectedColorButton( mStyleActivatedForColor );
+
+ mColorButtons[index].Unparent();
+
+ mStyleButtons[styleButtonIndex].Add( mColorButtons[index] );
+ mColorButtons[index].Lower();
+
+ // Position button using nice animation
+ mColorButtons[index].SetY( -GAP_BETWEEN_BUTTONS );
+ float desiredPosition = -( mButtonSize.height + GAP_BETWEEN_BUTTONS ) * (index);
+ AlphaFunction focusedAlphaFunction = AlphaFunction( Vector2 ( 0.32f, 0.08f ), Vector2( 0.38f, 1.72f ) );
+ mColorButtonsAnimation.AnimateBy( Property( mColorButtons[index], Actor::Property::POSITION_Y ), desiredPosition, focusedAlphaFunction );