Skip to content

Commit f410ed5

Browse files
committed
Change animationState to read-only property with public access
1 parent 9727b14 commit f410ed5

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

tabpanepro-core/src/main/java/com/techsenger/tabpanepro/core/skin/TabPaneProSkin.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* commit 72c1c21a76ba752439c877aba599b0b5f8bf9332 (tag: 25+20), and modified on:
2929
* June 18, 2025; June 20, 2025; June 21, 2025; June 22, 2025; June 23, 2025; June 24, 2025;
3030
* June 25, 2025; June 26, 2025; July 05, 2025; July 09, 2025; July 11, 2025; July 14, 2025;
31-
* July 18, 2025; August 12, 2025; August 20, 2025; August 31, 2025.
31+
* July 18, 2025; August 12, 2025; August 20, 2025; August 31, 2025; October 22, 2025.
3232
*/
3333

3434
package com.techsenger.tabpanepro.core.skin;
@@ -62,6 +62,8 @@
6262
import javafx.beans.property.ReadOnlyBooleanWrapper;
6363
import javafx.beans.property.ReadOnlyDoubleProperty;
6464
import javafx.beans.property.ReadOnlyDoubleWrapper;
65+
import javafx.beans.property.ReadOnlyObjectProperty;
66+
import javafx.beans.property.ReadOnlyObjectWrapper;
6567
import javafx.beans.property.SimpleBooleanProperty;
6668
import javafx.beans.property.SimpleDoubleProperty;
6769
import javafx.beans.property.SimpleObjectProperty;
@@ -143,7 +145,7 @@ private enum TabAnimation {
143145
// In future we could add FADE, ...
144146
}
145147

146-
private enum TabAnimationState {
148+
public enum TabAnimationState {
147149
SHOWING, HIDING, NONE;
148150
}
149151

@@ -539,14 +541,14 @@ private void removeTabs(List<? extends Tab> removedList) {
539541
removeTabContent(tab);
540542

541543
EventHandler<ActionEvent> cleanup = ae -> {
542-
tabRegion.animationState = TabAnimationState.NONE;
544+
tabRegion.setAnimationState(TabAnimationState.NONE);
543545

544546
tabHeaderArea.removeTab(tab);
545547
tabHeaderArea.requestLayout();
546548
};
547549

548550
if (Platform.isFxApplicationThread() && (closeTabAnimation.get() == TabAnimation.GROW)) {
549-
tabRegion.animationState = TabAnimationState.HIDING;
551+
tabRegion.setAnimationState(TabAnimationState.HIDING);
550552
Timeline closedTabTimeline = tabRegion.currentAnimation =
551553
createTimeline(tabRegion, Duration.millis(ANIMATION_SPEED), 0.0F, cleanup);
552554
closedTabTimeline.play();
@@ -577,7 +579,7 @@ private void addTabs(List<? extends Tab> addedList, int from) {
577579
List<Node> headers = new ArrayList<>(tabHeaderArea.headersRegion.getChildren());
578580
for (Node n : headers) {
579581
TabHeaderSkin header = (TabHeaderSkin) n;
580-
if (header.animationState == TabAnimationState.HIDING) {
582+
if (header.getAnimationState() == TabAnimationState.HIDING) {
581583
stopCurrentAnimation(header.tab);
582584
}
583585
}
@@ -592,11 +594,11 @@ private void addTabs(List<? extends Tab> addedList, int from) {
592594
final TabHeaderSkin tabRegion = tabHeaderArea.getTabHeaderSkin(tab);
593595
if (tabRegion != null) {
594596
if (Platform.isFxApplicationThread() && (openTabAnimation.get() == TabAnimation.GROW)) {
595-
tabRegion.animationState = TabAnimationState.SHOWING;
597+
tabRegion.setAnimationState(TabAnimationState.SHOWING);
596598
tabRegion.animationTransition.setValue(0.0);
597599
tabRegion.setVisible(true);
598600
tabRegion.currentAnimation = createTimeline(tabRegion, Duration.millis(ANIMATION_SPEED), 1.0, event -> {
599-
tabRegion.animationState = TabAnimationState.NONE;
601+
tabRegion.setAnimationState(TabAnimationState.NONE);
600602
tabRegion.setVisible(true);
601603
tabRegion.inner.requestLayout();
602604
});
@@ -2852,7 +2854,7 @@ public void handle(MouseEvent me) {
28522854
labelHeight = maxHeight;
28532855
}
28542856

2855-
if (animationState != TabAnimationState.NONE) {
2857+
if (getAnimationState() != TabAnimationState.NONE) {
28562858
// if (prefWidth.getValue() < labelAreaWidth) {
28572859
// labelAreaWidth = prefWidth.getValue();
28582860
// }
@@ -3069,7 +3071,8 @@ private void dispose() {
30693071
setOnMousePressed(null);
30703072
}
30713073

3072-
private TabAnimationState animationState = TabAnimationState.NONE;
3074+
private ReadOnlyObjectWrapper<TabAnimationState> animationState =
3075+
new ReadOnlyObjectWrapper(TabAnimationState.NONE);
30733076
private Timeline currentAnimation;
30743077

30753078
@Override protected double computePrefWidth(double height) {
@@ -3308,6 +3311,19 @@ public TabHeaderContext getContext() {
33083311
private TabPanePro getSkinnable() {
33093312
return context.getSkinnable();
33103313
}
3314+
3315+
public TabAnimationState getAnimationState() {
3316+
return animationState.get();
3317+
}
3318+
3319+
public ReadOnlyObjectProperty<TabAnimationState> animationStateProperty() {
3320+
return animationState.getReadOnlyProperty();
3321+
}
3322+
3323+
private void setAnimationState(TabAnimationState state) {
3324+
animationState.set(state);
3325+
}
3326+
33113327
} /* End TabHeaderSkin */
33123328

33133329
private static final PseudoClass SELECTED_PSEUDOCLASS_STATE =

0 commit comments

Comments
 (0)