What I meant was that I don't like that you have to be aware from
library code that calling setXXX(value) screws up CSS so you have to use
applyStyle(null, value). I wish there was some way of knowing that the
setXXX is happening inside library code so this kind of usage wasn't an
issue.
It would be best to have a bug to track this.
On 5/20/14, 8:45 AM, Tom Schindl wrote:
Would it be better to simply use a boolean flag instead of modifing the
property, something along:
try {
disableAnimation = true;
// ...
} finally {
disableAnimation = false;
}
Tom
On 20.05.14 14:26, David Grieve wrote:
Good find. The code needs to save off the StyleOrigin and use applyStyle
instead of set. I don't like that you have to deal with this level of
detail, but I haven't figured out any way around it yet. I'm open to ideas.
// save and set tab animation to none - as it is not
a good idea
// to animate on the same data for open and close.
TabAnimation prevOpenAnimation =
openTabAnimation.get();
StyleOrigin prevOpenOrigin =
((StyleableProperty<TabAnimation>)openTabAnimation).getStyleOrigin();
TabAnimation prevCloseAnimation =
closeTabAnimation.get();
StyleOrigin prevCloseOrigin =
((StyleableProperty<TabAnimation>)closeTabAnimation).getStyleOrigin();
((StyleableProperty<TabAnimation>)openTabAnimation).applyStyle(null,
TabAnimation.NONE);
((StyleableProperty<TabAnimation>)closeTabAnimation).applyStyle(null,
TabAnimation.NONE);
for (int i = c.getFrom(); i < c.getTo(); i++) {
permutatedTabs.add(tabs.get(i));
}
removeTabs(permutatedTabs);
addTabs(permutatedTabs, c.getFrom());
((StyleableProperty<TabAnimation>)openTabAnimation).applyStyle(prevOpenOrigin,
prevOpenAnimation);
((StyleableProperty<TabAnimation>)closeTabAnimation).applyStyle(prevCloseOrigin,
prevCloseAnimation);
getSkinnable().getSelectionModel().select(selTab);
On 5/20/14, 7:26 AM, Tom Schindl wrote:
Hi,
This question is mostly for David but others might be able to support my
feeling that TabPaneSkin works against the CSS-Engine inside its
initializeTabListener-method where it does something like this:
// save and set tab animation to none - as it is
not a good idea
// to animate on the same data for open and close.
TabAnimation prevOpenAnimation =
openTabAnimation.get();
TabAnimation prevCloseAnimation =
closeTabAnimation.get();
openTabAnimation.set(TabAnimation.NONE);
closeTabAnimation.set(TabAnimation.NONE);
for (int i = c.getFrom(); i < c.getTo(); i++) {
permutatedTabs.add(tabs.get(i));
}
removeTabs(permutatedTabs);
addTabs(permutatedTabs, c.getFrom());
openTabAnimation.set(prevOpenAnimation);
closeTabAnimation.set(prevCloseAnimation);
if I now appropriately understand the working of the CSS-Engine it will
never set a value from CSS afterwards because the property origin is set
to user.
Minor detail - the code of remembering and restoring the state should
most likely be wrapped in a try-finally statement.
Tom