Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 2.0-Alpha3
-
Component/s: ICE-Components
-
Labels:None
-
Environment:ICEfaces 2.0 w/ Sparkle Component Platform.
-
Affects:Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial, Compatibility/Configuration
Description
For the new ICEfaces 2.0 "Sparkle" components we want to support standard effects for state-changes within a given component that are readily usable and customizable by application developers, and also support theming.
For example, the Tab component could use effects for the following state-change:
- tab selection change (hide current tab pane contents, display newly selected tab pane contents)
For each of these component state-changes there are a finite number of effect-types that could be used that would result in an aesthetically pleasing result, such as fade-out + fade-in, cross-fade, slide up / slide-down, etc. To simplify customization by the app. developer, each component should have an attribute for each state-change that can be used to set the effect-type to be used for that state-change, such as "tabTransitionEffect='fade'".
In addition, each effect-type may have a time-interval or period associated with it to adjust the duration that the effect takes to complete. In order to simplify the customization of the time intervals by the application developer, and ensure a consistent reaction-time for all components on the page, we should identify pre-defined values for adjusting the effect time, such as "fast, normal, slow" that can be defined via an attribute on the component, such as "tabTransitionEffectSpeed='fast'.
Each theme could provide a definition for the standard effect labels ("fade", "xfade", "slideX", "slideY", etc.) and speed/durations ("slow", "normal", "fast") that would provide the desired effect behaviors for that theme. A master/default set could be used if the theme did not provide an implementation of its' own to ease supporting effects with custom themes without forcing each theme to implement the effects configuration code. While it would be nice to be able to use CSS or perhaps XML to define the theme effects, initially an pure JavaScript implementation would suffice.
For example, the Tab component could use effects for the following state-change:
- tab selection change (hide current tab pane contents, display newly selected tab pane contents)
For each of these component state-changes there are a finite number of effect-types that could be used that would result in an aesthetically pleasing result, such as fade-out + fade-in, cross-fade, slide up / slide-down, etc. To simplify customization by the app. developer, each component should have an attribute for each state-change that can be used to set the effect-type to be used for that state-change, such as "tabTransitionEffect='fade'".
In addition, each effect-type may have a time-interval or period associated with it to adjust the duration that the effect takes to complete. In order to simplify the customization of the time intervals by the application developer, and ensure a consistent reaction-time for all components on the page, we should identify pre-defined values for adjusting the effect time, such as "fast, normal, slow" that can be defined via an attribute on the component, such as "tabTransitionEffectSpeed='fast'.
Each theme could provide a definition for the standard effect labels ("fade", "xfade", "slideX", "slideY", etc.) and speed/durations ("slow", "normal", "fast") that would provide the desired effect behaviors for that theme. A master/default set could be used if the theme did not provide an implementation of its' own to ease supporting effects with custom themes without forcing each theme to implement the effects configuration code. While it would be nice to be able to use CSS or perhaps XML to define the theme effects, initially an pure JavaScript implementation would suffice.
Also, effects could sorted into 3 main categories: showing, hiding, getting attention. So, for example, fade in would be a showing effect, and fade out would be a hiding effect, and pulsate would be a getting attention effect. It would be nice if applications could simply ask for a hiding effect, and be given some default one to use. Maybe this could be tied in with the theme, so that each category would have a default in the theme.