Roger Whitcomb created PIVOT-1014:
-------------------------------------
Summary: Specify skin default styles in JSON file so they can be
easily changed
Key: PIVOT-1014
URL: https://issues.apache.org/jira/browse/PIVOT-1014
Project: Pivot
Issue Type: Improvement
Components: wtk-terra
Reporter: Roger Whitcomb
Assignee: Roger Whitcomb
Priority: Minor
Fix For: 2.1
I have noticed some inconsistencies in the way default styles (things like
colors, fonts, padding/margins, etc.) are set in the constructors of the
Terra*Skin classes, such as:
* Color values set directly from the theme vs. set through the setter methods.
* Missing color setter methods using the theme color index.
* Derived colors being set in two different places, potentially leading to
inconsistencies because of the duplication.
* Possible inconsistencies between controls in the theme colors used (such as
for backgrounds, borders, etc.) -- this has not been verified, because it will
require a lot of research.
* Since these defaults are all set in code, even though (for instance) the
theme colors themselves are set in the "TerraTheme_default.json" file, changing
the overall look-and-feel is difficult at present.
So, for all these reasons I propose to use a new "terra_theme_defaults.json"
file, which can be overridden by a new setting in the "TerraTheme*.json"
file(s) which will set all the defaults for all the Terra*Skin classes similar
to this (taken from TerraExpanderSkin):
Previously:
{code:java}
setBackgroundColor(theme.getColor(4));
titleBarBackgroundColor = theme.getColor(10);
titleBarBorderColor = theme.getColor(7);
titleBarColor = theme.getColor(12);
shadeButtonColor = theme.getColor(12);
disabledShadeButtonColor = theme.getColor(7);
borderColor = theme.getColor(7);
padding = new Insets(4);
{code}
New:
{code:java}
TerraExpanderSkin : {
backgroundColor : 4,
titleBarBackgroundColor : 10,
titleBarBorderColor : 7,
titleBarColor : 12,
shadeButtonColor : 12,
disabledShadeButtonColor : 7,
borderColor : 7,
padding : 4
},
{code}
Note: this approach also fits well with the overall Pivot philosophy of doing
things in a "declarative" fashion (via BXML / JSON files) rather than in code,
where possible.
I have prototyped this in a couple of classes and it seems to work well, AND it
has revealed a number of the color properties that were missing the "setXXX(int
index)" methods.
Note: there is potential for slowdown during control construction since we're
executing a LOT more code to set these defaults (including expensive reflection
operations inside BeanAdapter), but I have not yet been able to measure the
speed differential to see if it will be of concern.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)