TabPaneSkin modification of styleable property
Tom Schindl
tom.schindl at bestsolution.at
Tue May 20 12:45:51 UTC 2014
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
>
More information about the openjfx-dev
mailing list