- 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( Toolkit::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].SetProperty(Actor::Property::SIZE, 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::Button::Property::UNSELECTED_BACKGROUND_VISUAL, propertyMap);
+ mColorButtons[index].SetProperty(Toolkit::Button::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::Button::Property::SELECTED_BACKGROUND_VISUAL, propertyMap);
+
+ mColorButtons[index].SetProperty(Toolkit::Button::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].SetProperty(Actor::Property::OPACITY, 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].SetProperty(Actor::Property::POSITION_Y, -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);