private void resize() {
        width  = getSkinnable().getWidth();
        height = getSkinnable().getHeight();
        size   = width < height ? width : height;

        if (width > 0 && height > 0) {
            if (aspectRatio * width > height) {
                width = 1 / (aspectRatio / height);
            } else if (1 / (aspectRatio / height) > width) {
                height = aspectRatio * width;
            }

            font = Font.font("Open Sans", FontWeight.BOLD, FontPosture.REGULAR, height * 0.5);

            background.setPrefSize(width, height);

            symbol.setPrefSize(height * 0.59375 * getSkinnable().getSymbolType().WIDTH_FACTOR, height * 0.59375 * getSkinnable().getSymbolType().HEIGHT_FACTOR);
            symbol.relocate(height * 0.15 + (height * 0.59375 - height * 0.59375 * getSkinnable().getSymbolType().WIDTH_FACTOR) * 0.5,
                            height * 0.18 + (height * 0.59375 - height * 0.59375 * getSkinnable().getSymbolType().HEIGHT_FACTOR) * 0.5);

            text.setFont(font);
            text.setVisible(!getSkinnable().getText().isEmpty() && SymbolType.NONE == getSkinnable().getSymbolType());
            text.setPrefSize(height * 0.59375, height * 0.59375);
            text.relocate(height * 0.125, height * 0.15);

            thumb.setPrefSize((height * 0.75), (height * 0.75));
            thumb.setTranslateX(getSkinnable().isSelected() ? height * 1.625 : height * 0.875);
            thumb.setTranslateY(height * 0.125);

            moveToDeselected.setFromX(height * 1.625);
            moveToDeselected.setToX(height * 0.875);

            moveToSelected.setFromX(height * 0.875);
            moveToSelected.setToX(height * 1.625);
        }
    }