Interface SafeSkinning
Safe Skinning
The skinning mechanism is extremely powerful and gives you the ability to change internal functionality of components. While this is useful for workarounds, you should think through any properties you override, considering what will happen with future versions of Smart GWT, where the defaults may change or be expanded.The following kinds of overrides are generally very safe:
- Change
styleName
orbaseStyle
to provide a custom CSS style or series of styles - Change a media path such as the
src
of theWindow.minimizeButton
. - Change the
size of any part of the UI that has a fixed pixel size, such as the height and width of the
Window.minimizeButton
, especially when this is done to match the size of media you have created - Set properties such as
Button.showRollOver
that cause a component to visually react to more or fewer UI states (disabled, over, down, etc)
- Adding custom behaviors by passing in
event handlers such as (eg
showContextMenu()
). If future versions of the component add more functionality, you may prevent new features from functioning, cause them to function only partially, or break.If you want to ensure that you do not break new functionality added in future Smart GWT versions, be sure to call Super() for methods you override, and do not prevent events from bubbling.
If you want to ensure that only your custom behavior is used if a future version of a Smart GWT component adds functionality, override all methods involved in the interaction, even if your methods do nothing. For example, for a custom drop interaction, override dropOver, dropMove, dropOut and drop, even if you do nothing on dropMove(). Then, do not call Super() if there is no superclass behavior required for the interaction you've implemented. Also, for any event handlers (such as drop()) return false if you consider your code to have completely handled the event (no parent component should react).
- Providing a global
ID
to a subcomponent (only works once). - Overriding
Canvas.backgroundColor
,border
,margin
,padding
, or in general any single attribute otherwise controlled by CSS. Future Smart GWT versions may change the base CSS style, rendering your single-property customization senseless. Change the entire CSS style viastyleName
instead.