private void updateDirection() { final Side side = getSkinnable().getSide(); direction = (side == Side.BOTTOM || side == Side.LEFT) ? -1 : 1; }
@Override public double getBaselineOffset() { return getSkinnable().getSide() == Side.TOP ? headersRegion.getBaselineOffset() + snappedTopInset() : 0; }
private boolean isHorizontal() { final Side tabPosition = getSkinnable().getSide(); return Side.TOP.equals(tabPosition) || Side.BOTTOM.equals(tabPosition); }
private void updateSelectionLine(boolean animate) { double offset = 0.0; double selectedTabOffset = 0.0; double selectedTabWidth = 0.0; final Side side = getSkinnable().getSide(); for (Node node : headersRegion.getChildren()) { if (node instanceof TabHeaderContainer) { TabHeaderContainer tabHeader = (TabHeaderContainer) node; double tabHeaderPrefWidth = snapSize(tabHeader.prefWidth(-1)); if (selectedTab != null && selectedTab.equals(tabHeader.tab)) { selectedTabOffset = (side == Side.LEFT || side == Side.BOTTOM) ? -offset - tabHeaderPrefWidth : offset; selectedTabWidth = tabHeaderPrefWidth; break; } offset += tabHeaderPrefWidth; } } // animate the tab selection if(selectedTabWidth > 0){ if (animate) { runTimeline(selectedTabOffset, selectedTabWidth); }else{ selectedTabLine.setTranslateX(selectedTabOffset + scrollOffset * direction); scale.setX(selectedTabWidth); selectedTabLineOffset = selectedTabOffset; } } } }
final Side side = getSkinnable().getSide(); double tabStartX = (side == Side.LEFT || side == Side.BOTTOM) ? snapSize(getWidth()) - scrollOffset : scrollOffset;
private void updateHeaderContainerClip() { final double clipOffset = getClipOffset(); final Side side = getSkinnable().getSide(); double controlPrefWidth = 2 * snapSize(rightControlButton.prefWidth(-1)); // Add the spacer if the control buttons are shown // controlPrefWidth = controlPrefWidth > 0 ? controlPrefWidth + SPACER : controlPrefWidth; measureClosingTabs = true; final double headersPrefWidth = snapSize(headersRegion.prefWidth(-1)); final double headersPrefHeight = snapSize(headersRegion.prefHeight(-1)); measureClosingTabs = false; final double maxWidth = snapSize(getWidth()) - controlPrefWidth - clipOffset; final double clipWidth = headersPrefWidth < maxWidth ? headersPrefWidth : maxWidth; final double clipHeight = headersPrefHeight; clip.setX((side == Side.LEFT || side == Side.BOTTOM) && headersPrefWidth >= maxWidth ? headersPrefWidth - maxWidth : 0); clip.setY(0); clip.setWidth(clipWidth); clip.setHeight(clipHeight); }
inner.setAlignment(Pos.CENTER); inner.getStyleClass().add("tab-container"); inner.setRotate(getSkinnable().getSide().equals(Side.BOTTOM) ? 180.0F : 0.0F); listener.registerChangeListener(getSkinnable().tabMaxHeightProperty(), obs-> updateSkinnableUI()); listener.registerChangeListener(getSkinnable().sideProperty(), obs->{ final Side side = getSkinnable().getSide(); pseudoClassStateChanged(TOP_PSEUDOCLASS_STATE, (side == Side.TOP)); pseudoClassStateChanged(RIGHT_PSEUDOCLASS_STATE, (side == Side.RIGHT)); final Side side = getSkinnable().getSide(); pseudoClassStateChanged(TOP_PSEUDOCLASS_STATE, (side == Side.TOP)); pseudoClassStateChanged(RIGHT_PSEUDOCLASS_STATE, (side == Side.RIGHT));
headerBackground.resize(snapSize(getWidth()), snapSize(getHeight())); final Side side = getSkinnable().getSide(); double startX = 0; double startY = 0;
@Override protected void layoutChildren(final double x, final double y, final double w, final double h) { final double headerHeight = snapSize(header.prefHeight(-1)); final Side side = getSkinnable().getSide(); double tabsX = side == Side.RIGHT ? x + w - headerHeight : x; double tabsY = side == Side.BOTTOM ? y + h - headerHeight : y;