Checkstyle: optimize imports

This commit is contained in:
mkpaz 2023-02-09 19:55:44 +04:00
parent 69909a4074
commit a9bc7ace6f
111 changed files with 1020 additions and 693 deletions

@ -1,12 +1,11 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.base.controls; package atlantafx.base.controls;
import java.util.function.Consumer;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
import javafx.scene.control.Control; import javafx.scene.control.Control;
import javafx.scene.control.SkinBase; import javafx.scene.control.SkinBase;
import java.util.function.Consumer;
public abstract class BehaviorSkinBase<C extends Control, B extends BehaviorBase<C, ?>> extends SkinBase<C> { public abstract class BehaviorSkinBase<C extends Control, B extends BehaviorBase<C, ?>> extends SkinBase<C> {
protected B behavior; protected B behavior;

@ -28,17 +28,25 @@
*/ */
package atlantafx.base.controls; package atlantafx.base.controls;
import javafx.beans.property.*; import java.util.UUID;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ObjectPropertyBase;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.event.Event; import javafx.event.Event;
import javafx.event.EventHandler; import javafx.event.EventHandler;
import javafx.event.EventType; import javafx.event.EventType;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.*; import javafx.scene.control.ButtonBase;
import javafx.scene.control.Control;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.Skin;
import javafx.scene.control.TreeItem;
import javafx.scene.layout.Region; import javafx.scene.layout.Region;
import javafx.util.Callback; import javafx.util.Callback;
import java.util.UUID;
/** /**
* Represents a bread crumb bar. This control is useful to visualize and navigate * Represents a bread crumb bar. This control is useful to visualize and navigate
* a hierarchical path structure, such as file systems. * a hierarchical path structure, such as file systems.

@ -29,6 +29,9 @@
package atlantafx.base.controls; package atlantafx.base.controls;
import atlantafx.base.controls.Breadcrumbs.BreadCrumbItem; import atlantafx.base.controls.Breadcrumbs.BreadCrumbItem;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javafx.css.PseudoClass; import javafx.css.PseudoClass;
import javafx.event.Event; import javafx.event.Event;
import javafx.event.EventHandler; import javafx.event.EventHandler;
@ -37,10 +40,6 @@ import javafx.scene.control.ButtonBase;
import javafx.scene.control.SkinBase; import javafx.scene.control.SkinBase;
import javafx.scene.control.TreeItem.TreeModificationEvent; import javafx.scene.control.TreeItem.TreeModificationEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class BreadcrumbsSkin<T> extends SkinBase<Breadcrumbs<T>> { public class BreadcrumbsSkin<T> extends SkinBase<Breadcrumbs<T>> {
protected static final PseudoClass FIRST = PseudoClass.getPseudoClass("first"); protected static final PseudoClass FIRST = PseudoClass.getPseudoClass("first");

@ -26,6 +26,15 @@
*/ */
package atlantafx.base.controls; package atlantafx.base.controls;
import java.time.DateTimeException;
import java.time.LocalDate;
import java.time.chrono.Chronology;
import java.time.chrono.IsoChronology;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty; import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
@ -42,16 +51,6 @@ import javafx.scene.control.DateCell;
import javafx.scene.control.Skin; import javafx.scene.control.Skin;
import javafx.util.Callback; import javafx.util.Callback;
import java.time.DateTimeException;
import java.time.LocalDate;
import java.time.chrono.Chronology;
import java.time.chrono.IsoChronology;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
/** /**
* The DatePicker control allows the user to select a date. The calendar is based on either * The DatePicker control allows the user to select a date. The calendar is based on either
* the standard ISO-8601 chronology or any of the other chronology classes defined in the * the standard ISO-8601 chronology or any of the other chronology classes defined in the

@ -1,17 +1,16 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.base.controls; package atlantafx.base.controls;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import java.time.LocalDate;
import java.time.ZoneId;
import static atlantafx.base.util.PlatformUtils.isMac; import static atlantafx.base.util.PlatformUtils.isMac;
import static java.time.temporal.ChronoUnit.MONTHS; import static java.time.temporal.ChronoUnit.MONTHS;
import static java.time.temporal.ChronoUnit.YEARS; import static java.time.temporal.ChronoUnit.YEARS;
import static javafx.scene.input.KeyCode.ESCAPE; import static javafx.scene.input.KeyCode.ESCAPE;
import java.time.LocalDate;
import java.time.ZoneId;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
public class InlineDatePickerBehavior extends BehaviorBase<InlineDatePicker, InlineDatePickerSkin> { public class InlineDatePickerBehavior extends BehaviorBase<InlineDatePicker, InlineDatePickerSkin> {
public InlineDatePickerBehavior(InlineDatePicker control, InlineDatePickerSkin skin) { public InlineDatePickerBehavior(InlineDatePicker control, InlineDatePickerSkin skin) {

@ -26,21 +26,14 @@
*/ */
package atlantafx.base.controls; package atlantafx.base.controls;
import javafx.beans.binding.Bindings; import static atlantafx.base.controls.InlineDatePicker.isValidDate;
import javafx.beans.binding.ObjectBinding; import static java.time.temporal.ChronoField.DAY_OF_WEEK;
import javafx.beans.property.ObjectProperty; import static java.time.temporal.ChronoField.MONTH_OF_YEAR;
import javafx.beans.property.SimpleObjectProperty; import static java.time.temporal.ChronoUnit.DAYS;
import javafx.event.ActionEvent; import static java.time.temporal.ChronoUnit.MONTHS;
import javafx.event.EventHandler; import static java.time.temporal.ChronoUnit.WEEKS;
import javafx.scene.Node; import static java.time.temporal.ChronoUnit.YEARS;
import javafx.scene.Scene; import static javafx.scene.layout.Region.USE_PREF_SIZE;
import javafx.scene.control.Button;
import javafx.scene.control.DateCell;
import javafx.scene.control.Label;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.util.Callback;
import java.time.DateTimeException; import java.time.DateTimeException;
import java.time.LocalDate; import java.time.LocalDate;
@ -57,12 +50,27 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import javafx.beans.binding.Bindings;
import static atlantafx.base.controls.InlineDatePicker.isValidDate; import javafx.beans.binding.ObjectBinding;
import static java.time.temporal.ChronoField.DAY_OF_WEEK; import javafx.beans.property.ObjectProperty;
import static java.time.temporal.ChronoField.MONTH_OF_YEAR; import javafx.beans.property.SimpleObjectProperty;
import static java.time.temporal.ChronoUnit.*; import javafx.event.ActionEvent;
import static javafx.scene.layout.Region.USE_PREF_SIZE; import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.DateCell;
import javafx.scene.control.Label;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.util.Callback;
public class InlineDatePickerSkin extends BehaviorSkinBase<InlineDatePicker, InlineDatePickerBehavior> { public class InlineDatePickerSkin extends BehaviorSkinBase<InlineDatePicker, InlineDatePickerBehavior> {

@ -28,11 +28,24 @@
*/ */
package atlantafx.base.controls; package atlantafx.base.controls;
import static java.util.Objects.requireNonNull;
import static javafx.scene.input.MouseEvent.MOUSE_CLICKED;
import java.util.Objects;
import java.util.Timer;
import java.util.TimerTask;
import javafx.animation.FadeTransition; import javafx.animation.FadeTransition;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import javafx.beans.WeakInvalidationListener; import javafx.beans.WeakInvalidationListener;
import javafx.beans.property.*; import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
import javafx.beans.value.WeakChangeListener; import javafx.beans.value.WeakChangeListener;
import javafx.event.EventHandler; import javafx.event.EventHandler;
@ -48,13 +61,6 @@ import javafx.stage.Window;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.Objects;
import java.util.Timer;
import java.util.TimerTask;
import static java.util.Objects.requireNonNull;
import static javafx.scene.input.MouseEvent.MOUSE_CLICKED;
/** /**
* The Popover control provides detailed information about an owning node in a * The Popover control provides detailed information about an owning node in a
* popup window. The popup window has a very lightweight appearance (no default * popup window. The popup window has a very lightweight appearance (no default

@ -28,6 +28,14 @@
*/ */
package atlantafx.base.controls; package atlantafx.base.controls;
import static atlantafx.base.controls.Popover.ArrowLocation;
import static java.lang.Double.MAX_VALUE;
import static javafx.geometry.Pos.TOP_RIGHT;
import static javafx.scene.control.ContentDisplay.GRAPHIC_ONLY;
import static javafx.scene.paint.Color.YELLOW;
import java.util.ArrayList;
import java.util.List;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty; import javafx.beans.property.DoubleProperty;
@ -42,18 +50,17 @@ import javafx.scene.control.Skin;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.shape.*; import javafx.scene.shape.Circle;
import javafx.scene.shape.HLineTo;
import javafx.scene.shape.Line;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.scene.shape.PathElement;
import javafx.scene.shape.QuadCurveTo;
import javafx.scene.shape.VLineTo;
import javafx.stage.Window; import javafx.stage.Window;
import java.util.ArrayList;
import java.util.List;
import static atlantafx.base.controls.Popover.ArrowLocation;
import static java.lang.Double.MAX_VALUE;
import static javafx.geometry.Pos.TOP_RIGHT;
import static javafx.scene.control.ContentDisplay.GRAPHIC_ONLY;
import static javafx.scene.paint.Color.YELLOW;
public class PopoverSkin implements Skin<Popover> { public class PopoverSkin implements Skin<Popover> {
private static final String DETACHED_STYLE_CLASS = "detached"; private static final String DETACHED_STYLE_CLASS = "detached";

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.base.controls; package atlantafx.base.controls;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.Interpolator; import javafx.animation.Interpolator;
import javafx.animation.RotateTransition; import javafx.animation.RotateTransition;
@ -21,10 +24,6 @@ import javafx.scene.shape.Arc;
import javafx.scene.shape.Circle; import javafx.scene.shape.Circle;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RingProgressIndicatorSkin extends SkinBase<RingProgressIndicator> { public class RingProgressIndicatorSkin extends SkinBase<RingProgressIndicator> {
protected static final double DEFAULT_ANIMATION_TIME = 3; protected static final double DEFAULT_ANIMATION_TIME = 3;

@ -28,6 +28,9 @@
*/ */
package atlantafx.base.controls; package atlantafx.base.controls;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.TranslateTransition; import javafx.animation.TranslateTransition;
import javafx.beans.property.DoubleProperty; import javafx.beans.property.DoubleProperty;
@ -43,10 +46,6 @@ import javafx.scene.control.SkinBase;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ToggleSwitchSkin extends SkinBase<ToggleSwitch> { public class ToggleSwitchSkin extends SkinBase<ToggleSwitch> {
protected final StackPane thumb; protected final StackPane thumb;

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.base.util; package atlantafx.base.util;
import java.text.DecimalFormat;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.EventHandler; import javafx.event.EventHandler;
@ -10,8 +11,6 @@ import javafx.scene.control.TextField;
import javafx.scene.control.Tooltip; import javafx.scene.control.Tooltip;
import javafx.util.StringConverter; import javafx.util.StringConverter;
import java.text.DecimalFormat;
/** /**
* Converts between user-edited strings and {@link Double} values. * Converts between user-edited strings and {@link Double} values.
* Accepts an optional {@link Runnable} that resets the editor on {@link NumberFormatException}, * Accepts an optional {@link Runnable} that resets the editor on {@link NumberFormatException},

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.base.util; package atlantafx.base.util;
import java.util.function.UnaryOperator;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ReadOnlyStringProperty; import javafx.beans.property.ReadOnlyStringProperty;
@ -10,8 +11,6 @@ import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter; import javafx.scene.control.TextFormatter;
import javafx.util.StringConverter; import javafx.util.StringConverter;
import java.util.function.UnaryOperator;
/** /**
* An alternative for the {@link javafx.scene.control.PasswordField}. * An alternative for the {@link javafx.scene.control.PasswordField}.
* The formatter (un)masks text field content based on boolean property. * The formatter (un)masks text field content based on boolean property.

@ -1,13 +1,13 @@
package atlantafx.base.util; package atlantafx.base.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
public class PasswordTextFormatterTest { public class PasswordTextFormatterTest {
@BeforeAll @BeforeAll

@ -2,18 +2,18 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
width="105mm" width="105mm"
height="105mm" height="105mm"
viewBox="0 0 105 105" viewBox="0 0 105 105"
version="1.1" version="1.1"
id="svg5" id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="icon-rounded.svg" sodipodi:docname="icon-rounded.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"> >
<sodipodi:namedview <sodipodi:namedview
id="namedview7" id="namedview7"
pagecolor="#ffffff" pagecolor="#ffffff"

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

@ -2,18 +2,18 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
width="105mm" width="105mm"
height="105mm" height="105mm"
viewBox="0 0 105 105" viewBox="0 0 105 105"
version="1.1" version="1.1"
id="svg5" id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="square.svg" sodipodi:docname="square.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"> >
<sodipodi:namedview <sodipodi:namedview
id="namedview7" id="namedview7"
pagecolor="#ffffff" pagecolor="#ffffff"

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

@ -2,18 +2,18 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
width="105mm" width="105mm"
height="105mm" height="105mm"
viewBox="0 0 105 105" viewBox="0 0 105 105"
version="1.1" version="1.1"
id="svg5" id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="logo.svg" sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"> >
<sodipodi:namedview <sodipodi:namedview
id="namedview7" id="namedview7"
pagecolor="#ffffff" pagecolor="#ffffff"

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

@ -1,6 +1,12 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler; package atlantafx.sampler;
import static java.lang.Double.MAX_VALUE;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Objects;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -8,13 +14,6 @@ import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.stage.Stage; import javafx.stage.Stage;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Objects;
import static java.lang.Double.MAX_VALUE;
public class DefaultExceptionHandler implements Thread.UncaughtExceptionHandler { public class DefaultExceptionHandler implements Thread.UncaughtExceptionHandler {
private final Stage stage; private final Stage stage;

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler; package atlantafx.sampler;
import static java.nio.charset.StandardCharsets.UTF_8;
import atlantafx.sampler.event.BrowseEvent; import atlantafx.sampler.event.BrowseEvent;
import atlantafx.sampler.event.DefaultEventBus; import atlantafx.sampler.event.DefaultEventBus;
import atlantafx.sampler.event.HotkeyEvent; import atlantafx.sampler.event.HotkeyEvent;
@ -11,6 +13,12 @@ import fr.brouillard.oss.cssfx.CSSFX;
import fr.brouillard.oss.cssfx.api.URIToPathConverter; import fr.brouillard.oss.cssfx.api.URIToPathConverter;
import fr.brouillard.oss.cssfx.impl.log.CSSFXLogger; import fr.brouillard.oss.cssfx.impl.log.CSSFXLogger;
import fr.brouillard.oss.cssfx.impl.log.CSSFXLogger.LogLevel; import fr.brouillard.oss.cssfx.impl.log.CSSFXLogger.LogLevel;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.nio.file.Paths;
import java.util.List;
import java.util.Properties;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.Scene; import javafx.scene.Scene;
@ -21,15 +29,6 @@ import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyEvent; import javafx.scene.input.KeyEvent;
import javafx.stage.Stage; import javafx.stage.Stage;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.nio.file.Paths;
import java.util.List;
import java.util.Properties;
import static java.nio.charset.StandardCharsets.UTF_8;
public class Launcher extends Application { public class Launcher extends Application {
public static final boolean IS_DEV_MODE = "DEV".equalsIgnoreCase( public static final boolean IS_DEV_MODE = "DEV".equalsIgnoreCase(

@ -1,21 +1,26 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.fake; package atlantafx.sampler.fake;
import static atlantafx.sampler.util.Controls.menuItem;
import static javafx.scene.input.KeyCombination.CONTROL_DOWN;
import static javafx.scene.input.KeyCombination.SHIFT_DOWN;
import java.util.stream.IntStream;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.EventHandler; import javafx.event.EventHandler;
import javafx.scene.control.*; import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.ToggleGroup;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCodeCombination;
import net.datafaker.Faker; import net.datafaker.Faker;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.stream.IntStream;
import static atlantafx.sampler.util.Controls.menuItem;
import static javafx.scene.input.KeyCombination.CONTROL_DOWN;
import static javafx.scene.input.KeyCombination.SHIFT_DOWN;
public class SampleMenuBar extends MenuBar { public class SampleMenuBar extends MenuBar {
private static final EventHandler<ActionEvent> PRINT_SOURCE = System.out::println; private static final EventHandler<ActionEvent> PRINT_SOURCE = System.out::println;

@ -1,13 +1,12 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.fake.domain; package atlantafx.sampler.fake.domain;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import net.datafaker.Faker;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import java.util.function.Function; import java.util.function.Function;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import net.datafaker.Faker;
public final class Book { public final class Book {

@ -1,13 +1,12 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.fake.domain; package atlantafx.sampler.fake.domain;
import java.util.Objects;
import java.util.function.Function;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import net.datafaker.Faker; import net.datafaker.Faker;
import java.util.Objects;
import java.util.function.Function;
public final class Product { public final class Product {
private static final int MAX_STOCK_SIZE = 999; private static final int MAX_STOCK_SIZE = 999;

@ -1,12 +1,20 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.layout; package atlantafx.sampler.layout;
import static atlantafx.base.theme.Styles.TEXT_SMALL;
import static atlantafx.base.theme.Styles.TITLE_3;
import static atlantafx.base.theme.Styles.TITLE_4;
import static atlantafx.sampler.Launcher.IS_DEV_MODE;
import static atlantafx.sampler.layout.MainLayer.SIDEBAR_WIDTH;
import atlantafx.base.controls.CustomTextField; import atlantafx.base.controls.CustomTextField;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.sampler.Resources; import atlantafx.sampler.Resources;
import atlantafx.sampler.event.BrowseEvent; import atlantafx.sampler.event.BrowseEvent;
import atlantafx.sampler.event.DefaultEventBus; import atlantafx.sampler.event.DefaultEventBus;
import atlantafx.sampler.event.HotkeyEvent; import atlantafx.sampler.event.HotkeyEvent;
import java.net.URI;
import java.util.function.Consumer;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -25,13 +33,6 @@ import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2MZ; import org.kordamp.ikonli.material2.Material2MZ;
import org.kordamp.ikonli.material2.Material2OutlinedMZ; import org.kordamp.ikonli.material2.Material2OutlinedMZ;
import java.net.URI;
import java.util.function.Consumer;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.Launcher.IS_DEV_MODE;
import static atlantafx.sampler.layout.MainLayer.SIDEBAR_WIDTH;
class HeaderBar extends HBox { class HeaderBar extends HBox {
private static final int HEADER_HEIGHT = 50; private static final int HEADER_HEIGHT = 50;

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.layout; package atlantafx.sampler.layout;
import static atlantafx.base.controls.Popover.ArrowLocation.TOP_CENTER;
import static javafx.scene.layout.Priority.ALWAYS;
import atlantafx.base.controls.Popover; import atlantafx.base.controls.Popover;
import atlantafx.sampler.event.DefaultEventBus; import atlantafx.sampler.event.DefaultEventBus;
import atlantafx.sampler.event.ThemeEvent; import atlantafx.sampler.event.ThemeEvent;
@ -10,6 +13,8 @@ import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.QuickConfigMenu; import atlantafx.sampler.page.QuickConfigMenu;
import atlantafx.sampler.page.components.OverviewPage; import atlantafx.sampler.page.components.OverviewPage;
import atlantafx.sampler.theme.ThemeManager; import atlantafx.sampler.theme.ThemeManager;
import java.io.IOException;
import java.util.Objects;
import javafx.animation.FadeTransition; import javafx.animation.FadeTransition;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.Node; import javafx.scene.Node;
@ -19,12 +24,6 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.util.Duration; import javafx.util.Duration;
import java.io.IOException;
import java.util.Objects;
import static atlantafx.base.controls.Popover.ArrowLocation.TOP_CENTER;
import static javafx.scene.layout.Priority.ALWAYS;
class MainLayer extends BorderPane { class MainLayer extends BorderPane {
static final int SIDEBAR_WIDTH = 220; static final int SIDEBAR_WIDTH = 220;

@ -1,14 +1,20 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.layout; package atlantafx.sampler.layout;
import atlantafx.sampler.page.Page;
import javafx.beans.property.*;
import java.util.Objects;
import static atlantafx.sampler.layout.MainModel.SubLayer.PAGE; import static atlantafx.sampler.layout.MainModel.SubLayer.PAGE;
import static atlantafx.sampler.layout.MainModel.SubLayer.SOURCE_CODE; import static atlantafx.sampler.layout.MainModel.SubLayer.SOURCE_CODE;
import atlantafx.sampler.page.Page;
import java.util.Objects;
import javafx.beans.property.ReadOnlyBooleanProperty;
import javafx.beans.property.ReadOnlyBooleanWrapper;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class MainModel { public class MainModel {
public enum SubLayer { public enum SubLayer {

@ -4,6 +4,8 @@ package atlantafx.sampler.layout;
import atlantafx.sampler.util.Animations; import atlantafx.sampler.util.Animations;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import atlantafx.sampler.util.NodeUtils; import atlantafx.sampler.util.NodeUtils;
import java.util.Objects;
import java.util.function.Consumer;
import javafx.animation.Timeline; import javafx.animation.Timeline;
import javafx.beans.property.ReadOnlyBooleanProperty; import javafx.beans.property.ReadOnlyBooleanProperty;
import javafx.beans.property.ReadOnlyBooleanWrapper; import javafx.beans.property.ReadOnlyBooleanWrapper;
@ -21,9 +23,6 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.Objects;
import java.util.function.Consumer;
public class Overlay extends StackPane { public class Overlay extends StackPane {
public static final String STYLE_CLASS = "overlay"; public static final String STYLE_CLASS = "overlay";

@ -1,10 +1,49 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.layout; package atlantafx.sampler.layout;
import static javafx.scene.control.ScrollPane.ScrollBarPolicy.AS_NEEDED;
import static javafx.scene.layout.Priority.ALWAYS;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.components.*; import atlantafx.sampler.page.components.AccordionPage;
import atlantafx.sampler.page.components.BreadcrumbsPage;
import atlantafx.sampler.page.components.ButtonPage;
import atlantafx.sampler.page.components.ChartPage;
import atlantafx.sampler.page.components.CheckBoxPage;
import atlantafx.sampler.page.components.ColorPickerPage;
import atlantafx.sampler.page.components.ComboBoxPage;
import atlantafx.sampler.page.components.CustomTextFieldPage;
import atlantafx.sampler.page.components.DatePickerPage;
import atlantafx.sampler.page.components.DialogPage;
import atlantafx.sampler.page.components.HTMLEditorPage;
import atlantafx.sampler.page.components.InputGroupPage;
import atlantafx.sampler.page.components.LabelPage;
import atlantafx.sampler.page.components.ListPage;
import atlantafx.sampler.page.components.MenuButtonPage;
import atlantafx.sampler.page.components.MenuPage;
import atlantafx.sampler.page.components.OverviewPage;
import atlantafx.sampler.page.components.PaginationPage;
import atlantafx.sampler.page.components.PopoverPage;
import atlantafx.sampler.page.components.ProgressPage;
import atlantafx.sampler.page.components.RadioButtonPage;
import atlantafx.sampler.page.components.ScrollPanePage;
import atlantafx.sampler.page.components.SeparatorPage;
import atlantafx.sampler.page.components.SliderPage;
import atlantafx.sampler.page.components.SpinnerPage;
import atlantafx.sampler.page.components.SplitPanePage;
import atlantafx.sampler.page.components.TabPanePage;
import atlantafx.sampler.page.components.TablePage;
import atlantafx.sampler.page.components.TextAreaPage;
import atlantafx.sampler.page.components.TextFieldPage;
import atlantafx.sampler.page.components.TitledPanePage;
import atlantafx.sampler.page.components.ToggleButtonPage;
import atlantafx.sampler.page.components.ToggleSwitchPage;
import atlantafx.sampler.page.components.ToolBarPage;
import atlantafx.sampler.page.components.TooltipPage;
import atlantafx.sampler.page.components.TreePage;
import atlantafx.sampler.page.components.TreeTablePage;
import atlantafx.sampler.page.general.IconsPage; import atlantafx.sampler.page.general.IconsPage;
import atlantafx.sampler.page.general.ThemePage; import atlantafx.sampler.page.general.ThemePage;
import atlantafx.sampler.page.general.TypographyPage; import atlantafx.sampler.page.general.TypographyPage;
@ -12,6 +51,14 @@ import atlantafx.sampler.page.showcase.filemanager.FileManagerPage;
import atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage; import atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage;
import atlantafx.sampler.page.showcase.widget.WidgetCollectionPage; import atlantafx.sampler.page.showcase.widget.WidgetCollectionPage;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Predicate;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;
@ -27,12 +74,6 @@ import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import java.util.*;
import java.util.function.Predicate;
import static javafx.scene.control.ScrollPane.ScrollBarPolicy.AS_NEEDED;
import static javafx.scene.layout.Priority.ALWAYS;
@SuppressWarnings("UnnecessaryLambda") @SuppressWarnings("UnnecessaryLambda")
class Sidebar extends StackPane { class Sidebar extends StackPane {

@ -1,21 +1,24 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page; package atlantafx.sampler.page;
import atlantafx.sampler.layout.Overlay; import static atlantafx.sampler.util.Containers.setScrollConstraints;
import javafx.scene.Node; import static javafx.scene.control.ScrollPane.ScrollBarPolicy.AS_NEEDED;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.*;
import net.datafaker.Faker;
import org.kordamp.ikonli.feather.Feather;
import atlantafx.sampler.layout.Overlay;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;
import javafx.scene.Node;
import static atlantafx.sampler.util.Containers.setScrollConstraints; import javafx.scene.control.ScrollPane;
import static javafx.scene.control.ScrollPane.ScrollBarPolicy.AS_NEEDED; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import net.datafaker.Faker;
import org.kordamp.ikonli.feather.Feather;
public abstract class AbstractPage extends BorderPane implements Page { public abstract class AbstractPage extends BorderPane implements Page {

@ -1,19 +1,18 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page; package atlantafx.sampler.page;
import static java.nio.charset.StandardCharsets.UTF_8;
import atlantafx.sampler.Resources; import atlantafx.sampler.Resources;
import atlantafx.sampler.theme.HighlightJSTheme; import atlantafx.sampler.theme.HighlightJSTheme;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import java.io.IOException;
import java.io.InputStream;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.web.WebView; import javafx.scene.web.WebView;
import java.io.IOException;
import java.io.InputStream;
import static java.nio.charset.StandardCharsets.UTF_8;
public class CodeViewer extends AnchorPane { public class CodeViewer extends AnchorPane {
private static final String HLJS_LIB = "assets/highlightjs/highlight.min.js"; private static final String HLJS_LIB = "assets/highlightjs/highlight.min.js";

@ -1,8 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page; package atlantafx.sampler.page;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.TITLE_4;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import java.util.Objects;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -13,10 +19,6 @@ import javafx.scene.layout.VBox;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import java.util.Objects;
import static atlantafx.base.theme.Styles.*;
public abstract class OverlayDialog<T extends Region> extends VBox { public abstract class OverlayDialog<T extends Region> extends VBox {
protected static final int CONTENT_CHILD_INDEX = 1; protected static final int CONTENT_CHILD_INDEX = 1;

@ -1,9 +1,23 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page; package atlantafx.sampler.page;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.TEXT_CAPTION;
import static atlantafx.sampler.theme.ThemeManager.DEFAULT_ZOOM;
import static atlantafx.sampler.theme.ThemeManager.SUPPORTED_ZOOM;
import static javafx.geometry.Pos.CENTER_LEFT;
import static org.kordamp.ikonli.material2.Material2AL.ARROW_BACK;
import static org.kordamp.ikonli.material2.Material2AL.ARROW_FORWARD;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.sampler.page.general.AccentColorSelector; import atlantafx.sampler.page.general.AccentColorSelector;
import atlantafx.sampler.theme.ThemeManager; import atlantafx.sampler.theme.ThemeManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.IntegerProperty; import javafx.beans.property.IntegerProperty;
@ -23,18 +37,6 @@ import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.theme.ThemeManager.DEFAULT_ZOOM;
import static atlantafx.sampler.theme.ThemeManager.SUPPORTED_ZOOM;
import static javafx.geometry.Pos.CENTER_LEFT;
import static org.kordamp.ikonli.material2.Material2AL.ARROW_BACK;
import static org.kordamp.ikonli.material2.Material2AL.ARROW_FORWARD;
// This should really be refactored to more generic control someday. // This should really be refactored to more generic control someday.
// - the whole component to PopoverMenu, that reuses JavaFX MenuItem API // - the whole component to PopoverMenu, that reuses JavaFX MenuItem API
// - font size switcher to flat SpinnerMenuItem // - font size switcher to flat SpinnerMenuItem

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page; package atlantafx.sampler.page;
import java.util.Objects;
import java.util.Random;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -12,9 +14,6 @@ import javafx.scene.text.TextFlow;
import net.datafaker.Faker; import net.datafaker.Faker;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import java.util.Objects;
import java.util.Random;
public class SampleBlock extends VBox { public class SampleBlock extends VBox {
public static final int BLOCK_HGAP = 20; public static final int BLOCK_HGAP = 20;

@ -1,6 +1,10 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.Resources; import atlantafx.sampler.Resources;
@ -22,10 +26,6 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
public class AccordionPage extends AbstractPage { public class AccordionPage extends AbstractPage {
public static final String NAME = "Accordion"; public static final String NAME = "Accordion";

@ -1,6 +1,18 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.BUTTON_OUTLINED;
import static atlantafx.base.theme.Styles.DANGER;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.LARGE;
import static atlantafx.base.theme.Styles.ROUNDED;
import static atlantafx.base.theme.Styles.SMALL;
import static atlantafx.base.theme.Styles.SUCCESS;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
@ -15,9 +27,6 @@ import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
public class ButtonPage extends AbstractPage { public class ButtonPage extends AbstractPage {
public static final String NAME = "Button"; public static final String NAME = "Button";

@ -5,17 +5,6 @@ import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.chart.*;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.util.StringConverter;
import java.time.Month; import java.time.Month;
import java.time.format.TextStyle; import java.time.format.TextStyle;
import java.util.Arrays; import java.util.Arrays;
@ -23,6 +12,27 @@ import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.chart.AreaChart;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.BubbleChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.Chart;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.PieChart;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.StackedAreaChart;
import javafx.scene.chart.StackedBarChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.util.StringConverter;
public class ChartPage extends AbstractPage { public class ChartPage extends AbstractPage {

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
@ -13,9 +16,6 @@ import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class ColorPickerPage extends AbstractPage { public class ColorPickerPage extends AbstractPage {
public static final String NAME = "ColorPicker"; public static final String NAME = "ColorPicker";

@ -1,9 +1,19 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.STATE_DANGER;
import static atlantafx.base.theme.Styles.STATE_SUCCESS;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Containers.H_GROW_NEVER;
import static javafx.collections.FXCollections.observableArrayList;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.geometry.HPos; import javafx.geometry.HPos;
@ -16,17 +26,6 @@ import javafx.scene.layout.VBox;
import org.kordamp.ikonli.Ikon; import org.kordamp.ikonli.Ikon;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static atlantafx.base.theme.Styles.STATE_DANGER;
import static atlantafx.base.theme.Styles.STATE_SUCCESS;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Containers.H_GROW_NEVER;
import static javafx.collections.FXCollections.observableArrayList;
public class ComboBoxPage extends AbstractPage { public class ComboBoxPage extends AbstractPage {
public static final String NAME = "ComboBox"; public static final String NAME = "ComboBox";

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.STATE_DANGER;
import static atlantafx.base.theme.Styles.STATE_SUCCESS;
import atlantafx.base.controls.CustomTextField; import atlantafx.base.controls.CustomTextField;
import atlantafx.base.util.PasswordTextFormatter; import atlantafx.base.util.PasswordTextFormatter;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
@ -10,9 +13,6 @@ import javafx.scene.layout.FlowPane;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.theme.Styles.STATE_DANGER;
import static atlantafx.base.theme.Styles.STATE_SUCCESS;
public class CustomTextFieldPage extends AbstractPage { public class CustomTextFieldPage extends AbstractPage {
public static final String NAME = "CustomTextField"; public static final String NAME = "CustomTextField";

@ -1,6 +1,11 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.scene.layout.GridPane.REMAINING;
import atlantafx.base.controls.InlineDatePicker; import atlantafx.base.controls.InlineDatePicker;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
@ -8,6 +13,12 @@ import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import atlantafx.sampler.theme.CSSFragment; import atlantafx.sampler.theme.CSSFragment;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.chrono.HijrahChronology;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
@ -21,25 +32,17 @@ import javafx.scene.control.Button;
import javafx.scene.control.DateCell; import javafx.scene.control.DateCell;
import javafx.scene.control.DatePicker; import javafx.scene.control.DatePicker;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.*; import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.util.Callback; import javafx.util.Callback;
import javafx.util.Duration; import javafx.util.Duration;
import javafx.util.StringConverter; import javafx.util.StringConverter;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.chrono.HijrahChronology;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.scene.layout.GridPane.REMAINING;
public class DatePickerPage extends AbstractPage { public class DatePickerPage extends AbstractPage {
public static final String NAME = "DatePicker"; public static final String NAME = "DatePicker";

@ -1,27 +1,37 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import atlantafx.base.controls.ToggleSwitch;
import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.StageStyle;
import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP; import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static javafx.scene.control.Alert.AlertType; import static javafx.scene.control.Alert.AlertType;
import static javafx.scene.control.ButtonBar.ButtonData; import static javafx.scene.control.ButtonBar.ButtonData;
import atlantafx.base.controls.ToggleSwitch;
import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ChoiceDialog;
import javafx.scene.control.Label;
import javafx.scene.control.Separator;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextInputDialog;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.StageStyle;
import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon;
public class DialogPage extends AbstractPage { public class DialogPage extends AbstractPage {
public static final String NAME = "Dialog"; public static final String NAME = "Dialog";

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Theme; import atlantafx.base.theme.Theme;
import atlantafx.sampler.event.DefaultEventBus; import atlantafx.sampler.event.DefaultEventBus;
@ -16,8 +18,6 @@ import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import javafx.scene.web.HTMLEditor; import javafx.scene.web.HTMLEditor;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class HTMLEditorPage extends AbstractPage { public class HTMLEditorPage extends AbstractPage {
private static final PseudoClass USE_LOCAL_URL = PseudoClass.getPseudoClass("use-local-url"); private static final PseudoClass USE_LOCAL_URL = PseudoClass.getPseudoClass("use-local-url");

@ -1,22 +1,28 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class InputGroupPage extends AbstractPage { public class InputGroupPage extends AbstractPage {
public static final String NAME = "Input Group"; public static final String NAME = "Input Group";

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
@ -10,9 +13,6 @@ import javafx.scene.layout.VBox;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class LabelPage extends AbstractPage { public class LabelPage extends AbstractPage {
public static final String NAME = "Label"; public static final String NAME = "Label";

@ -1,14 +1,33 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BORDERED;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.STRIPED;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.fake.domain.Book; import atlantafx.sampler.fake.domain.Book;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.cell.CheckBoxListCell; import javafx.scene.control.cell.CheckBoxListCell;
import javafx.scene.control.cell.ChoiceBoxListCell; import javafx.scene.control.cell.ChoiceBoxListCell;
import javafx.scene.control.cell.ComboBoxListCell; import javafx.scene.control.cell.ComboBoxListCell;
@ -21,17 +40,6 @@ import javafx.util.StringConverter;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class ListPage extends AbstractPage { public class ListPage extends AbstractPage {
public static final String NAME = "ListView"; public static final String NAME = "ListView";

@ -1,10 +1,20 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.BUTTON_OUTLINED;
import static atlantafx.base.theme.Styles.DANGER;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.SUCCESS;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.stream.IntStream;
import javafx.geometry.Side; import javafx.geometry.Side;
import javafx.scene.control.MenuButton; import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
@ -16,12 +26,6 @@ import javafx.scene.layout.VBox;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.stream.IntStream;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class MenuButtonPage extends AbstractPage { public class MenuButtonPage extends AbstractPage {
public static final String NAME = "MenuButton"; public static final String NAME = "MenuButton";

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static javafx.scene.input.KeyCombination.CONTROL_DOWN;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.fake.SampleMenuBar; import atlantafx.sampler.fake.SampleMenuBar;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
@ -16,8 +18,6 @@ import javafx.scene.input.KeyCodeCombination;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import static javafx.scene.input.KeyCombination.CONTROL_DOWN;
public class MenuPage extends AbstractPage { public class MenuPage extends AbstractPage {
public static final String NAME = "Menu"; public static final String NAME = "Menu";

@ -1,13 +1,44 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.BUTTON_OUTLINED;
import static atlantafx.base.theme.Styles.DANGER;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.LEFT_PILL;
import static atlantafx.base.theme.Styles.RIGHT_PILL;
import static atlantafx.base.theme.Styles.SUCCESS;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.ProgressSliderSkin; import atlantafx.base.controls.ProgressSliderSkin;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.base.util.IntegerStringConverter; import atlantafx.base.util.IntegerStringConverter;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import javafx.scene.control.*; import java.time.LocalDate;
import java.time.ZoneId;
import java.util.stream.IntStream;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ColorPicker;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.control.PasswordField;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Slider;
import javafx.scene.control.Spinner;
import javafx.scene.control.SplitMenuButton;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
@ -16,14 +47,6 @@ import javafx.scene.shape.Circle;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.stream.IntStream;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class OverviewPage extends AbstractPage { public class OverviewPage extends AbstractPage {
public static final String NAME = "Overview"; public static final String NAME = "Overview";

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
@ -14,9 +17,6 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class PaginationPage extends AbstractPage { public class PaginationPage extends AbstractPage {
public static final String NAME = "Pagination"; public static final String NAME = "Pagination";

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.InlineDatePicker; import atlantafx.base.controls.InlineDatePicker;
import atlantafx.base.controls.Popover; import atlantafx.base.controls.Popover;
import atlantafx.base.controls.Popover.ArrowLocation; import atlantafx.base.controls.Popover.ArrowLocation;
@ -8,6 +11,8 @@ import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import atlantafx.sampler.theme.CSSFragment; import atlantafx.sampler.theme.CSSFragment;
import java.time.LocalDate;
import java.time.ZoneId;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
@ -21,12 +26,6 @@ import javafx.scene.text.TextFlow;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.time.LocalDate;
import java.time.ZoneId;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class PopoverPage extends AbstractPage { public class PopoverPage extends AbstractPage {
public static final String NAME = "Popover"; public static final String NAME = "Popover";

@ -1,6 +1,15 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.LARGE;
import static atlantafx.base.theme.Styles.MEDIUM;
import static atlantafx.base.theme.Styles.SMALL;
import static atlantafx.base.theme.Styles.TITLE_4;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.RingProgressIndicator; import atlantafx.base.controls.RingProgressIndicator;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
@ -12,17 +21,24 @@ import javafx.css.PseudoClass;
import javafx.geometry.HPos; import javafx.geometry.HPos;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.geometry.VPos; import javafx.geometry.VPos;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.layout.*; import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.util.StringConverter; import javafx.util.StringConverter;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
// #javafx-bug Indeterminate (animated) progress bar and also progress indicator // #javafx-bug Indeterminate (animated) progress bar and also progress indicator
// are very resource expensive. It consumes a single CPU core and a lot of memory. // are very resource expensive. It consumes a single CPU core and a lot of memory.
public class ProgressPage extends AbstractPage { public class ProgressPage extends AbstractPage {

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
@ -9,8 +11,6 @@ import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.FlowPane; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class RadioButtonPage extends AbstractPage { public class RadioButtonPage extends AbstractPage {
public static final String NAME = "RadioButton"; public static final String NAME = "RadioButton";

@ -5,7 +5,11 @@ import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
import javafx.scene.layout.*; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
public class ScrollPanePage extends AbstractPage { public class ScrollPanePage extends AbstractPage {

@ -1,6 +1,10 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static javafx.geometry.Orientation.HORIZONTAL;
import static javafx.geometry.Orientation.VERTICAL;
import static javafx.geometry.Pos.CENTER;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
@ -8,11 +12,11 @@ import atlantafx.sampler.page.SampleBlock;
import javafx.geometry.Orientation; import javafx.geometry.Orientation;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.Separator; import javafx.scene.control.Separator;
import javafx.scene.layout.*; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
import static javafx.geometry.Orientation.HORIZONTAL; import javafx.scene.layout.Pane;
import static javafx.geometry.Orientation.VERTICAL; import javafx.scene.layout.StackPane;
import static javafx.geometry.Pos.CENTER; import javafx.scene.layout.VBox;
public final class SeparatorPage extends AbstractPage { public final class SeparatorPage extends AbstractPage {

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static javafx.geometry.Orientation.VERTICAL;
import atlantafx.base.controls.ProgressSliderSkin; import atlantafx.base.controls.ProgressSliderSkin;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
@ -11,8 +13,6 @@ import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import static javafx.geometry.Orientation.VERTICAL;
public class SliderPage extends AbstractPage { public class SliderPage extends AbstractPage {
public static final String NAME = "Slider"; public static final String NAME = "Slider";

@ -1,6 +1,13 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static javafx.scene.control.TabPane.TabClosingPolicy.ALL_TABS;
import static javafx.scene.control.TabPane.TabClosingPolicy.UNAVAILABLE;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
@ -10,15 +17,21 @@ import javafx.application.Platform;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.geometry.Side; import javafx.geometry.Side;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.layout.*; import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.theme.Styles.*;
import static javafx.scene.control.TabPane.TabClosingPolicy.ALL_TABS;
import static javafx.scene.control.TabPane.TabClosingPolicy.UNAVAILABLE;
public class TabPanePage extends AbstractPage { public class TabPanePage extends AbstractPage {
public static final String NAME = "TabPane"; public static final String NAME = "TabPane";

@ -1,6 +1,17 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.BORDERED;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.STRIPED;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.base.theme.Tweaks.ALIGN_CENTER;
import static atlantafx.base.theme.Tweaks.ALIGN_LEFT;
import static atlantafx.base.theme.Tweaks.ALIGN_RIGHT;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.collections.FXCollections.observableArrayList;
import atlantafx.base.controls.CaptionMenuItem; import atlantafx.base.controls.CaptionMenuItem;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
@ -8,14 +19,33 @@ import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.fake.domain.Product; import atlantafx.sampler.fake.domain.Product;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.StringBinding; import javafx.beans.binding.StringBinding;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.transformation.FilteredList; import javafx.collections.transformation.FilteredList;
import javafx.collections.transformation.SortedList; import javafx.collections.transformation.SortedList;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.cell.*; import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.MenuButton;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.scene.control.cell.ChoiceBoxTableCell;
import javafx.scene.control.cell.ComboBoxTableCell;
import javafx.scene.control.cell.ProgressBarTableCell;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
@ -24,16 +54,6 @@ import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.javafx.FontIconTableCell; import org.kordamp.ikonli.javafx.FontIconTableCell;
import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.base.theme.Tweaks.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.collections.FXCollections.observableArrayList;
public class TablePage extends AbstractPage { public class TablePage extends AbstractPage {
public static final String NAME = "TableView"; public static final String NAME = "TableView";

@ -1,17 +1,16 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock;
import javafx.scene.control.TextArea;
import javafx.scene.layout.FlowPane;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static atlantafx.base.theme.Styles.STATE_DANGER; import static atlantafx.base.theme.Styles.STATE_DANGER;
import static atlantafx.base.theme.Styles.STATE_SUCCESS; import static atlantafx.base.theme.Styles.STATE_SUCCESS;
import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javafx.scene.control.TextArea;
import javafx.scene.layout.FlowPane;
public class TextAreaPage extends AbstractPage { public class TextAreaPage extends AbstractPage {
public static final String NAME = "TextArea"; public static final String NAME = "TextArea";

@ -1,6 +1,13 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.LARGE;
import static atlantafx.base.theme.Styles.ROUNDED;
import static atlantafx.base.theme.Styles.SMALL;
import static atlantafx.base.theme.Styles.STATE_DANGER;
import static atlantafx.base.theme.Styles.STATE_SUCCESS;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -9,9 +16,6 @@ import javafx.scene.control.TextField;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
public class TextFieldPage extends AbstractPage { public class TextFieldPage extends AbstractPage {
public static final String NAME = "TextField"; public static final String NAME = "TextField";

@ -1,6 +1,15 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.ELEVATED_2;
import static atlantafx.base.theme.Styles.INTERACTIVE;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.geometry.HPos.RIGHT;
import static javafx.scene.layout.Priority.NEVER;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
@ -11,16 +20,15 @@ import javafx.scene.control.CheckBox;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.Slider; import javafx.scene.control.Slider;
import javafx.scene.control.TitledPane; import javafx.scene.control.TitledPane;
import javafx.scene.layout.*; import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.geometry.HPos.RIGHT;
import static javafx.scene.layout.Priority.NEVER;
public class TitledPanePage extends AbstractPage { public class TitledPanePage extends AbstractPage {
public static final String NAME = "TitledPane"; public static final String NAME = "TitledPane";

@ -1,6 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.CENTER_PILL;
import static atlantafx.base.theme.Styles.LEFT_PILL;
import static atlantafx.base.theme.Styles.RIGHT_PILL;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.util.Controls.toggleButton;
import static javafx.scene.layout.GridPane.REMAINING;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
@ -12,11 +20,6 @@ import javafx.scene.layout.HBox;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.util.Controls.toggleButton;
import static javafx.scene.layout.GridPane.REMAINING;
public class ToggleButtonPage extends AbstractPage { public class ToggleButtonPage extends AbstractPage {
public static final String NAME = "ToggleButton"; public static final String NAME = "ToggleButton";

@ -1,33 +1,57 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.BOTTOM;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.CENTER_PILL;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.LEFT;
import static atlantafx.base.theme.Styles.LEFT_PILL;
import static atlantafx.base.theme.Styles.RIGHT;
import static atlantafx.base.theme.Styles.RIGHT_PILL;
import static atlantafx.base.theme.Styles.TOP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Controls.button;
import static atlantafx.sampler.util.Controls.iconButton;
import static atlantafx.sampler.util.Controls.toggleButton;
import static javafx.geometry.Orientation.HORIZONTAL;
import static javafx.geometry.Orientation.VERTICAL;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.fake.SampleMenuBar; import atlantafx.sampler.fake.SampleMenuBar;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.ArrayList;
import java.util.stream.IntStream;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.geometry.Orientation; import javafx.geometry.Orientation;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.geometry.Side; import javafx.geometry.Side;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.layout.*; import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Separator;
import javafx.scene.control.TitledPane;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.ArrayList;
import java.util.stream.IntStream;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Controls.*;
import static javafx.geometry.Orientation.HORIZONTAL;
import static javafx.geometry.Orientation.VERTICAL;
public class ToolBarPage extends AbstractPage { public class ToolBarPage extends AbstractPage {
public static final String NAME = "ToolBar"; public static final String NAME = "ToolBar";

@ -1,6 +1,10 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.geometry.Orientation.VERTICAL;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
@ -14,10 +18,6 @@ import javafx.scene.layout.VBox;
import javafx.stage.PopupWindow.AnchorLocation; import javafx.stage.PopupWindow.AnchorLocation;
import javafx.util.Duration; import javafx.util.Duration;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static javafx.geometry.Orientation.VERTICAL;
public class TooltipPage extends AbstractPage { public class TooltipPage extends AbstractPage {
public static final String NAME = "Tooltip"; public static final String NAME = "Tooltip";

@ -1,13 +1,27 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.CheckBoxTreeItem;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.control.cell.CheckBoxTreeCell; import javafx.scene.control.cell.CheckBoxTreeCell;
import javafx.scene.control.cell.ChoiceBoxTreeCell; import javafx.scene.control.cell.ChoiceBoxTreeCell;
import javafx.scene.control.cell.ComboBoxTreeCell; import javafx.scene.control.cell.ComboBoxTreeCell;
@ -20,17 +34,6 @@ import javafx.util.StringConverter;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class TreePage extends AbstractPage { public class TreePage extends AbstractPage {
public static final String NAME = "TreeView"; public static final String NAME = "TreeView";

@ -1,6 +1,16 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.components; package atlantafx.sampler.page.components;
import static atlantafx.base.theme.Styles.BORDERED;
import static atlantafx.base.theme.Styles.DENSE;
import static atlantafx.base.theme.Styles.STRIPED;
import static atlantafx.base.theme.Styles.toggleStyleClass;
import static atlantafx.base.theme.Tweaks.ALIGN_CENTER;
import static atlantafx.base.theme.Tweaks.ALIGN_LEFT;
import static atlantafx.base.theme.Tweaks.ALIGN_RIGHT;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import atlantafx.base.controls.CaptionMenuItem; import atlantafx.base.controls.CaptionMenuItem;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.controls.ToggleSwitch; import atlantafx.base.controls.ToggleSwitch;
@ -8,10 +18,26 @@ import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.fake.domain.Product; import atlantafx.sampler.fake.domain.Product;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.cell.*; import javafx.scene.control.MenuButton;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.control.cell.CheckBoxTreeTableCell;
import javafx.scene.control.cell.ChoiceBoxTreeTableCell;
import javafx.scene.control.cell.ComboBoxTreeTableCell;
import javafx.scene.control.cell.TextFieldTreeTableCell;
import javafx.scene.control.cell.TreeItemPropertyValueFactory;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
@ -19,15 +45,6 @@ import javafx.util.Callback;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.base.theme.Tweaks.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
public class TreeTablePage extends AbstractPage { public class TreeTablePage extends AbstractPage {
public static final String NAME = "TreeTableView"; public static final String NAME = "TreeTableView";

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import atlantafx.sampler.theme.AccentColor; import atlantafx.sampler.theme.AccentColor;
import atlantafx.sampler.theme.ThemeManager; import atlantafx.sampler.theme.ThemeManager;
import atlantafx.sampler.util.JColorUtils; import atlantafx.sampler.util.JColorUtils;
@ -11,9 +14,6 @@ import javafx.scene.layout.Region;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
public class AccentColorSelector extends HBox { public class AccentColorSelector extends HBox {
public AccentColorSelector() { public AccentColorSelector() {

@ -1,7 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.sampler.util.Controls.hyperlink;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty;
@ -16,14 +23,6 @@ import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import javafx.util.Duration; import javafx.util.Duration;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
import static atlantafx.sampler.util.Controls.hyperlink;
class ColorPalette extends VBox { class ColorPalette extends VBox {
private final List<ColorPaletteBlock> blocks = new ArrayList<>(); private final List<ColorPaletteBlock> blocks = new ArrayList<>();

@ -1,10 +1,18 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.base.theme.Styles.TITLE_3;
import static atlantafx.sampler.page.general.ContrastChecker.LUMINANCE_THRESHOLD;
import static atlantafx.sampler.page.general.ContrastChecker.PASSED;
import static atlantafx.sampler.util.ContrastLevel.getColorLuminance;
import static atlantafx.sampler.util.ContrastLevel.getContrastRatioOpacityAware;
import static atlantafx.sampler.util.JColorUtils.flattenColor;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import atlantafx.sampler.util.ContrastLevel; import atlantafx.sampler.util.ContrastLevel;
import atlantafx.sampler.util.NodeUtils; import atlantafx.sampler.util.NodeUtils;
import java.util.function.Consumer;
import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -15,15 +23,6 @@ import javafx.scene.text.Text;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import java.util.function.Consumer;
import static atlantafx.base.theme.Styles.TITLE_3;
import static atlantafx.sampler.page.general.ContrastChecker.LUMINANCE_THRESHOLD;
import static atlantafx.sampler.page.general.ContrastChecker.PASSED;
import static atlantafx.sampler.util.ContrastLevel.getColorLuminance;
import static atlantafx.sampler.util.ContrastLevel.getContrastRatioOpacityAware;
import static atlantafx.sampler.util.JColorUtils.flattenColor;
class ColorPaletteBlock extends VBox { class ColorPaletteBlock extends VBox {
private final String fgColorName; private final String fgColorName;

@ -2,6 +2,8 @@
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import java.util.Arrays;
import java.util.List;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.ReadOnlyObjectWrapper;
@ -15,9 +17,6 @@ import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.Arrays;
import java.util.List;
class ColorScale extends VBox { class ColorScale extends VBox {
private final ReadOnlyObjectWrapper<Color> bgBaseColor = new ReadOnlyObjectWrapper<>(Color.WHITE); private final ReadOnlyObjectWrapper<Color> bgBaseColor = new ReadOnlyObjectWrapper<>(Color.WHITE);

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.sampler.util.ContrastLevel.getColorLuminance;
import static atlantafx.sampler.util.JColorUtils.flattenColor;
import atlantafx.sampler.util.JColorUtils; import atlantafx.sampler.util.JColorUtils;
import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -8,9 +11,6 @@ import javafx.scene.control.Label;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import static atlantafx.sampler.util.ContrastLevel.getColorLuminance;
import static atlantafx.sampler.util.JColorUtils.flattenColor;
class ColorScaleBlock extends VBox { class ColorScaleBlock extends VBox {
private static final double BLOCK_WIDTH = 250; private static final double BLOCK_WIDTH = 250;

@ -1,6 +1,12 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.sampler.page.general.ColorPaletteBlock.validateColorName;
import static atlantafx.sampler.util.ContrastLevel.getColorLuminance;
import static atlantafx.sampler.util.ContrastLevel.getContrastRatioOpacityAware;
import static atlantafx.sampler.util.JColorUtils.flattenColor;
import static atlantafx.sampler.util.JColorUtils.toHexWithAlpha;
import atlantafx.base.controls.CustomTextField; import atlantafx.base.controls.CustomTextField;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
@ -9,6 +15,8 @@ import atlantafx.sampler.util.ContrastLevel;
import atlantafx.sampler.util.JColor; import atlantafx.sampler.util.JColor;
import atlantafx.sampler.util.JColorUtils; import atlantafx.sampler.util.JColorUtils;
import atlantafx.sampler.util.PlatformUtils; import atlantafx.sampler.util.PlatformUtils;
import java.util.Map;
import java.util.Objects;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.DoubleBinding; import javafx.beans.binding.DoubleBinding;
import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty;
@ -19,7 +27,12 @@ import javafx.collections.ObservableList;
import javafx.css.PseudoClass; import javafx.css.PseudoClass;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Slider;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
@ -28,15 +41,6 @@ import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import java.util.Map;
import java.util.Objects;
import static atlantafx.sampler.page.general.ColorPaletteBlock.validateColorName;
import static atlantafx.sampler.util.ContrastLevel.getColorLuminance;
import static atlantafx.sampler.util.ContrastLevel.getContrastRatioOpacityAware;
import static atlantafx.sampler.util.JColorUtils.flattenColor;
import static atlantafx.sampler.util.JColorUtils.toHexWithAlpha;
// Inspired by the https://colourcontrast.cc/ // Inspired by the https://colourcontrast.cc/
class ContrastChecker extends GridPane { class ContrastChecker extends GridPane {

@ -1,18 +1,21 @@
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import atlantafx.base.theme.Tweaks; import static atlantafx.base.theme.Styles.TEXT_SMALL;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.control.*;
import org.kordamp.ikonli.Ikon;
import org.kordamp.ikonli.javafx.FontIcon;
import atlantafx.base.theme.Tweaks;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import javafx.beans.property.SimpleObjectProperty;
import static atlantafx.base.theme.Styles.TEXT_SMALL; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Label;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import org.kordamp.ikonli.Ikon;
import org.kordamp.ikonli.javafx.FontIcon;
public class IconBrowser extends TableView<List<Ikon>> { public class IconBrowser extends TableView<List<Ikon>> {

@ -1,11 +1,18 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Controls.hyperlink;
import atlantafx.base.controls.CustomTextField; import atlantafx.base.controls.CustomTextField;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import atlantafx.sampler.theme.CSSFragment; import atlantafx.sampler.theme.CSSFragment;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
@ -20,14 +27,6 @@ import org.kordamp.ikonli.material2.Material2AL;
import org.kordamp.ikonli.material2.Material2MZ; import org.kordamp.ikonli.material2.Material2MZ;
import org.kordamp.ikonli.material2.Material2OutlinedAL; import org.kordamp.ikonli.material2.Material2OutlinedAL;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Controls.hyperlink;
public class IconsPage extends AbstractPage { public class IconsPage extends AbstractPage {
public static final String NAME = "Icons"; public static final String NAME = "Icons";

@ -1,6 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.sampler.event.ThemeEvent.EventType.COLOR_CHANGE;
import static atlantafx.sampler.event.ThemeEvent.EventType.THEME_ADD;
import static atlantafx.sampler.event.ThemeEvent.EventType.THEME_CHANGE;
import static atlantafx.sampler.event.ThemeEvent.EventType.THEME_REMOVE;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Controls.hyperlink;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.event.DefaultEventBus; import atlantafx.sampler.event.DefaultEventBus;
import atlantafx.sampler.event.ThemeEvent; import atlantafx.sampler.event.ThemeEvent;
@ -8,6 +16,9 @@ import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.Page; import atlantafx.sampler.page.Page;
import atlantafx.sampler.theme.SamplerTheme; import atlantafx.sampler.theme.SamplerTheme;
import atlantafx.sampler.theme.ThemeManager; import atlantafx.sampler.theme.ThemeManager;
import java.net.URI;
import java.util.Objects;
import java.util.function.Consumer;
import javafx.geometry.HPos; import javafx.geometry.HPos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox; import javafx.scene.control.ChoiceBox;
@ -22,15 +33,6 @@ import javafx.util.StringConverter;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2OutlinedMZ; import org.kordamp.ikonli.material2.Material2OutlinedMZ;
import java.net.URI;
import java.util.Objects;
import java.util.function.Consumer;
import static atlantafx.sampler.event.ThemeEvent.EventType.*;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.util.Controls.hyperlink;
@SuppressWarnings("UnnecessaryLambda") @SuppressWarnings("UnnecessaryLambda")
public class ThemePage extends AbstractPage { public class ThemePage extends AbstractPage {

@ -1,11 +1,25 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.DANGER;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.base.theme.Styles.TEXT_SMALL;
import static javafx.scene.control.ScrollPane.ScrollBarPolicy.AS_NEEDED;
import static javafx.scene.layout.Priority.ALWAYS;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.sampler.theme.SamplerTheme; import atlantafx.sampler.theme.SamplerTheme;
import atlantafx.sampler.theme.ThemeManager; import atlantafx.sampler.theme.ThemeManager;
import atlantafx.sampler.theme.ThemeRepository; import atlantafx.sampler.theme.ThemeRepository;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import java.io.File;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
import javafx.concurrent.Task; import javafx.concurrent.Task;
import javafx.css.PseudoClass; import javafx.css.PseudoClass;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -19,17 +33,6 @@ import javafx.scene.text.Text;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2OutlinedAL; import org.kordamp.ikonli.material2.Material2OutlinedAL;
import java.io.File;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
import static atlantafx.base.theme.Styles.*;
import static javafx.scene.control.ScrollPane.ScrollBarPolicy.AS_NEEDED;
import static javafx.scene.layout.Priority.ALWAYS;
@SuppressWarnings("UnnecessaryLambda") @SuppressWarnings("UnnecessaryLambda")
class ThemeRepoManager extends VBox { class ThemeRepoManager extends VBox {

@ -3,6 +3,7 @@ package atlantafx.sampler.page.general;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.page.OverlayDialog; import atlantafx.sampler.page.OverlayDialog;
import java.io.File;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.stage.FileChooser; import javafx.stage.FileChooser;
@ -10,8 +11,6 @@ import javafx.stage.FileChooser.ExtensionFilter;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2MZ; import org.kordamp.ikonli.material2.Material2MZ;
import java.io.File;
class ThemeRepoManagerDialog extends OverlayDialog<ThemeRepoManager> { class ThemeRepoManagerDialog extends OverlayDialog<ThemeRepoManager> {
private final ThemeRepoManager repoManager = new ThemeRepoManager(); private final ThemeRepoManager repoManager = new ThemeRepoManager();

@ -1,11 +1,41 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.general; package atlantafx.sampler.page.general;
import static atlantafx.base.theme.Styles.ACCENT;
import static atlantafx.base.theme.Styles.DANGER;
import static atlantafx.base.theme.Styles.SUCCESS;
import static atlantafx.base.theme.Styles.TEXT;
import static atlantafx.base.theme.Styles.TEXT_BOLD;
import static atlantafx.base.theme.Styles.TEXT_BOLDER;
import static atlantafx.base.theme.Styles.TEXT_CAPTION;
import static atlantafx.base.theme.Styles.TEXT_ITALIC;
import static atlantafx.base.theme.Styles.TEXT_LIGHTER;
import static atlantafx.base.theme.Styles.TEXT_MUTED;
import static atlantafx.base.theme.Styles.TEXT_NORMAL;
import static atlantafx.base.theme.Styles.TEXT_OBLIQUE;
import static atlantafx.base.theme.Styles.TEXT_SMALL;
import static atlantafx.base.theme.Styles.TEXT_STRIKETHROUGH;
import static atlantafx.base.theme.Styles.TEXT_SUBTLE;
import static atlantafx.base.theme.Styles.TEXT_UNDERLINED;
import static atlantafx.base.theme.Styles.TITLE_1;
import static atlantafx.base.theme.Styles.TITLE_2;
import static atlantafx.base.theme.Styles.TITLE_3;
import static atlantafx.base.theme.Styles.TITLE_4;
import static atlantafx.base.theme.Styles.WARNING;
import static atlantafx.sampler.event.ThemeEvent.EventType.FONT_CHANGE;
import static atlantafx.sampler.event.ThemeEvent.EventType.THEME_CHANGE;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.theme.ThemeManager.DEFAULT_FONT_FAMILY_NAME;
import static atlantafx.sampler.theme.ThemeManager.SUPPORTED_FONT_SIZE;
import atlantafx.sampler.event.DefaultEventBus; import atlantafx.sampler.event.DefaultEventBus;
import atlantafx.sampler.event.ThemeEvent; import atlantafx.sampler.event.ThemeEvent;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import atlantafx.sampler.theme.ThemeManager; import atlantafx.sampler.theme.ThemeManager;
import java.util.Map;
import java.util.stream.Collectors;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
@ -16,23 +46,16 @@ import javafx.scene.control.ComboBox;
import javafx.scene.control.Hyperlink; import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.Spinner; import javafx.scene.control.Spinner;
import javafx.scene.layout.*; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.Map;
import java.util.stream.Collectors;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.event.ThemeEvent.EventType.FONT_CHANGE;
import static atlantafx.sampler.event.ThemeEvent.EventType.THEME_CHANGE;
import static atlantafx.sampler.page.SampleBlock.BLOCK_HGAP;
import static atlantafx.sampler.page.SampleBlock.BLOCK_VGAP;
import static atlantafx.sampler.theme.ThemeManager.DEFAULT_FONT_FAMILY_NAME;
import static atlantafx.sampler.theme.ThemeManager.SUPPORTED_FONT_SIZE;
public class TypographyPage extends AbstractPage { public class TypographyPage extends AbstractPage {
public static final String NAME = "Typography"; public static final String NAME = "Typography";

@ -1,5 +1,7 @@
package atlantafx.sampler.page.showcase; package atlantafx.sampler.page.showcase;
import static atlantafx.base.theme.Styles.ACCENT;
import atlantafx.sampler.page.AbstractPage; import atlantafx.sampler.page.AbstractPage;
import atlantafx.sampler.util.NodeUtils; import atlantafx.sampler.util.NodeUtils;
import javafx.css.PseudoClass; import javafx.css.PseudoClass;
@ -16,8 +18,6 @@ import javafx.stage.StageStyle;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.theme.Styles.ACCENT;
public abstract class ShowcasePage extends AbstractPage { public abstract class ShowcasePage extends AbstractPage {
protected static final PseudoClass SHOWCASE_MODE = PseudoClass.getPseudoClass("showcase-mode"); protected static final PseudoClass SHOWCASE_MODE = PseudoClass.getPseudoClass("showcase-mode");

@ -1,8 +1,7 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import java.nio.file.Path;
import org.kordamp.ikonli.Ikon; import org.kordamp.ikonli.Ikon;
import java.nio.file.Path;
record Bookmark(String title, Path path, Ikon icon) { } record Bookmark(String title, Path path, Ikon icon) { }

@ -1,5 +1,9 @@
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import static atlantafx.sampler.page.showcase.filemanager.Model.USER_HOME;
import java.nio.file.Files;
import java.nio.file.Path;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.ListCell; import javafx.scene.control.ListCell;
import javafx.scene.control.ListView; import javafx.scene.control.ListView;
@ -7,11 +11,6 @@ import javafx.scene.input.MouseEvent;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.nio.file.Files;
import java.nio.file.Path;
import static atlantafx.sampler.page.showcase.filemanager.Model.USER_HOME;
final class BookmarkList extends ListView<Bookmark> { final class BookmarkList extends ListView<Bookmark> {
public BookmarkList(Model model) { public BookmarkList(Model model) {

@ -1,10 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import javafx.scene.layout.Pane;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.function.Consumer; import java.util.function.Consumer;
import javafx.scene.layout.Pane;
interface DirectoryView { interface DirectoryView {

@ -2,12 +2,11 @@
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import atlantafx.sampler.Resources; import atlantafx.sampler.Resources;
import javafx.scene.image.Image;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javafx.scene.image.Image;
final class FileIconRepository { final class FileIconRepository {

@ -1,6 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import static atlantafx.sampler.page.showcase.filemanager.Utils.isFileHidden;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Comparator;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty; import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
@ -10,15 +18,6 @@ import javafx.collections.transformation.FilteredList;
import javafx.collections.transformation.SortedList; import javafx.collections.transformation.SortedList;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Comparator;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static atlantafx.sampler.page.showcase.filemanager.Utils.isFileHidden;
final class FileList { final class FileList {
static final Comparator<Path> FILE_TYPE_COMPARATOR = static final Comparator<Path> FILE_TYPE_COMPARATOR =

@ -1,16 +1,38 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.sampler.page.showcase.filemanager.FileList.PREDICATE_ANY;
import static atlantafx.sampler.page.showcase.filemanager.FileList.PREDICATE_NOT_HIDDEN;
import static atlantafx.sampler.page.showcase.filemanager.Utils.openFile;
import static atlantafx.sampler.util.Controls.hyperlink;
import static atlantafx.sampler.util.Controls.iconButton;
import atlantafx.base.controls.Breadcrumbs; import atlantafx.base.controls.Breadcrumbs;
import atlantafx.base.controls.Breadcrumbs.BreadCrumbItem; import atlantafx.base.controls.Breadcrumbs.BreadCrumbItem;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.page.showcase.ShowcasePage; import atlantafx.sampler.page.showcase.ShowcasePage;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.control.ButtonBase;
import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.Label;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SplitPane;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
@ -21,22 +43,6 @@ import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import org.kordamp.ikonli.material2.Material2MZ; import org.kordamp.ikonli.material2.Material2MZ;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import static atlantafx.base.theme.Styles.BUTTON_ICON;
import static atlantafx.base.theme.Styles.FLAT;
import static atlantafx.sampler.page.showcase.filemanager.FileList.PREDICATE_ANY;
import static atlantafx.sampler.page.showcase.filemanager.FileList.PREDICATE_NOT_HIDDEN;
import static atlantafx.sampler.page.showcase.filemanager.Utils.openFile;
import static atlantafx.sampler.util.Controls.hyperlink;
import static atlantafx.sampler.util.Controls.iconButton;
public class FileManagerPage extends ShowcasePage { public class FileManagerPage extends ShowcasePage {
public static final String NAME = "File Manager"; public static final String NAME = "File Manager";

@ -1,12 +1,11 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.ReadOnlyObjectWrapper;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Objects; import java.util.Objects;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.ReadOnlyObjectWrapper;
final class Model { final class Model {

@ -1,16 +1,15 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
final class NavigationHistory { final class NavigationHistory {

@ -1,14 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import static javafx.scene.input.KeyCombination.CONTROL_DOWN;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem; import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCodeCombination;
import static javafx.scene.input.KeyCombination.CONTROL_DOWN;
final class RightClickMenu extends ContextMenu { final class RightClickMenu extends ContextMenu {
public RightClickMenu() { public RightClickMenu() {

@ -1,10 +1,24 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import static atlantafx.sampler.page.showcase.filemanager.Utils.fileMTime;
import static atlantafx.sampler.page.showcase.filemanager.Utils.fileSize;
import static atlantafx.sampler.page.showcase.filemanager.Utils.isFileHidden;
import static atlantafx.sampler.util.HumanReadableFormat.byteCount;
import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
import static javafx.scene.control.TableColumn.SortType.ASCENDING;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.base.theme.Tweaks; import atlantafx.base.theme.Tweaks;
import atlantafx.sampler.util.Containers; import atlantafx.sampler.util.Containers;
import atlantafx.sampler.util.HumanReadableFormat; import atlantafx.sampler.util.HumanReadableFormat;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.time.ZoneId;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.stream.Stream;
import javafx.beans.property.SimpleLongProperty; import javafx.beans.property.SimpleLongProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
@ -18,19 +32,6 @@ import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.time.ZoneId;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.stream.Stream;
import static atlantafx.sampler.page.showcase.filemanager.Utils.*;
import static atlantafx.sampler.util.HumanReadableFormat.byteCount;
import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
import static javafx.scene.control.TableColumn.SortType.ASCENDING;
final class TableDirectoryView extends AnchorPane implements DirectoryView { final class TableDirectoryView extends AnchorPane implements DirectoryView {
private static final PseudoClass HIDDEN = PseudoClass.getPseudoClass("hidden"); private static final PseudoClass HIDDEN = PseudoClass.getPseudoClass("hidden");

@ -1,7 +1,7 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.filemanager; package atlantafx.sampler.page.showcase.filemanager;
import java.awt.*; import java.awt.Desktop;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.LinkOption; import java.nio.file.LinkOption;

@ -9,13 +9,17 @@
*/ */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.util.*;
import static java.awt.image.BufferedImage.TYPE_3BYTE_BGR; import static java.awt.image.BufferedImage.TYPE_3BYTE_BGR;
import static java.awt.image.BufferedImage.TYPE_4BYTE_ABGR; import static java.awt.image.BufferedImage.TYPE_4BYTE_ABGR;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@SuppressWarnings({"unused", "NarrowingCompoundAssignment"}) @SuppressWarnings({"unused", "NarrowingCompoundAssignment"})
final class ColorThief { final class ColorThief {

@ -1,18 +1,19 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import atlantafx.sampler.Resources; import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_ALBUM;
import javafx.scene.image.Image; import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_ARTIST;
import javafx.scene.media.Media; import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_TITLE;
import javafx.scene.media.MediaPlayer; import static atlantafx.sampler.page.showcase.musicplayer.Utils.copyImage;
import atlantafx.sampler.Resources;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
import javafx.scene.image.Image;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.*; import javafx.scene.media.Media;
import static atlantafx.sampler.page.showcase.musicplayer.Utils.copyImage; import javafx.scene.media.MediaPlayer;
@SuppressWarnings("StringOperationCanBeSimplified") @SuppressWarnings("StringOperationCanBeSimplified")
record MediaFile(File file) { record MediaFile(File file) {

@ -1,14 +1,16 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import java.util.Objects;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.*; import javafx.beans.property.ReadOnlyBooleanProperty;
import javafx.beans.property.ReadOnlyBooleanWrapper;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import java.util.Objects;
final class Model { final class Model {
private final ObservableList<MediaFile> playlist = FXCollections.observableArrayList(); private final ObservableList<MediaFile> playlist = FXCollections.observableArrayList();

@ -1,7 +1,12 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import static atlantafx.sampler.util.Controls.hyperlink;
import atlantafx.sampler.page.showcase.ShowcasePage; import atlantafx.sampler.page.showcase.ShowcasePage;
import java.net.URI;
import java.util.Objects;
import java.util.Set;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -9,12 +14,6 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import java.net.URI;
import java.util.Objects;
import java.util.Set;
import static atlantafx.sampler.util.Controls.hyperlink;
public class MusicPlayerPage extends ShowcasePage { public class MusicPlayerPage extends ShowcasePage {
public static final String NAME = "Music Player"; public static final String NAME = "Music Player";

@ -1,6 +1,30 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import static atlantafx.base.controls.Popover.ArrowLocation;
import static atlantafx.base.theme.Styles.BUTTON_CIRCLE;
import static atlantafx.base.theme.Styles.SMALL;
import static atlantafx.base.theme.Styles.TEXT_SMALL;
import static atlantafx.base.theme.Styles.TITLE_3;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_ALBUM;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_ARTIST;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_IMAGE;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_TITLE;
import static atlantafx.sampler.page.showcase.musicplayer.Utils.formatDuration;
import static atlantafx.sampler.page.showcase.musicplayer.Utils.getDominantColor;
import static java.lang.Double.MAX_VALUE;
import static javafx.geometry.Orientation.VERTICAL;
import static javafx.geometry.Pos.CENTER;
import static org.kordamp.ikonli.material2.Material2AL.CLEAR_ALL;
import static org.kordamp.ikonli.material2.Material2AL.EQUALS;
import static org.kordamp.ikonli.material2.Material2MZ.PAUSE;
import static org.kordamp.ikonli.material2.Material2MZ.PLAY_ARROW;
import static org.kordamp.ikonli.material2.Material2MZ.SHUFFLE;
import static org.kordamp.ikonli.material2.Material2MZ.VOLUME_OFF;
import static org.kordamp.ikonli.material2.Material2MZ.VOLUME_UP;
import static org.kordamp.ikonli.material2.Material2OutlinedAL.FAST_FORWARD;
import static org.kordamp.ikonli.material2.Material2OutlinedAL.FAST_REWIND;
import atlantafx.base.controls.Popover; import atlantafx.base.controls.Popover;
import atlantafx.base.controls.ProgressSliderSkin; import atlantafx.base.controls.ProgressSliderSkin;
import atlantafx.base.controls.Spacer; import atlantafx.base.controls.Spacer;
@ -24,20 +48,6 @@ import javafx.scene.shape.Rectangle;
import javafx.util.Duration; import javafx.util.Duration;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import static atlantafx.base.controls.Popover.ArrowLocation;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.*;
import static atlantafx.sampler.page.showcase.musicplayer.Utils.formatDuration;
import static atlantafx.sampler.page.showcase.musicplayer.Utils.getDominantColor;
import static java.lang.Double.MAX_VALUE;
import static javafx.geometry.Orientation.VERTICAL;
import static javafx.geometry.Pos.CENTER;
import static org.kordamp.ikonli.material2.Material2AL.CLEAR_ALL;
import static org.kordamp.ikonli.material2.Material2AL.EQUALS;
import static org.kordamp.ikonli.material2.Material2MZ.*;
import static org.kordamp.ikonli.material2.Material2OutlinedAL.FAST_FORWARD;
import static org.kordamp.ikonli.material2.Material2OutlinedAL.FAST_REWIND;
final class PlayerPane extends VBox { final class PlayerPane extends VBox {
private static final int PANEL_MAX_WIDTH = 220; private static final int PANEL_MAX_WIDTH = 220;

@ -1,12 +1,11 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import javafx.scene.control.SplitPane; import static atlantafx.sampler.util.JColorUtils.toHexWithAlpha;
import javafx.scene.paint.Color;
import java.util.Objects; import java.util.Objects;
import javafx.scene.control.SplitPane;
import static atlantafx.sampler.util.JColorUtils.toHexWithAlpha; import javafx.scene.paint.Color;
final class PlayerScreen extends SplitPane { final class PlayerScreen extends SplitPane {

@ -1,26 +1,10 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import atlantafx.base.controls.Spacer; import static atlantafx.base.theme.Styles.FLAT;
import atlantafx.base.theme.Tweaks; import static atlantafx.base.theme.Styles.SMALL;
import javafx.application.Platform; import static atlantafx.base.theme.Styles.TEXT_CAPTION;
import javafx.collections.ListChangeListener; import static atlantafx.base.theme.Styles.TEXT_SMALL;
import javafx.concurrent.Task;
import javafx.css.PseudoClass;
import javafx.geometry.Insets;
import javafx.scene.control.*;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Rectangle;
import javafx.stage.FileChooser;
import org.kordamp.ikonli.javafx.FontIcon;
import java.io.File;
import java.util.List;
import java.util.Objects;
import static atlantafx.base.theme.Styles.*;
import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_IMAGE_ALT; import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_IMAGE_ALT;
import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.SUPPORTED_MEDIA_TYPES; import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.SUPPORTED_MEDIA_TYPES;
import static java.lang.Double.MAX_VALUE; import static java.lang.Double.MAX_VALUE;
@ -30,6 +14,28 @@ import static javafx.stage.FileChooser.ExtensionFilter;
import static org.kordamp.ikonli.material2.Material2AL.ADD; import static org.kordamp.ikonli.material2.Material2AL.ADD;
import static org.kordamp.ikonli.material2.Material2MZ.PLAYLIST_PLAY; import static org.kordamp.ikonli.material2.Material2MZ.PLAYLIST_PLAY;
import atlantafx.base.controls.Spacer;
import atlantafx.base.theme.Tweaks;
import java.io.File;
import java.util.List;
import java.util.Objects;
import javafx.application.Platform;
import javafx.collections.ListChangeListener;
import javafx.concurrent.Task;
import javafx.css.PseudoClass;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Rectangle;
import javafx.stage.FileChooser;
import org.kordamp.ikonli.javafx.FontIcon;
final class PlaylistPane extends VBox { final class PlaylistPane extends VBox {
private final Model model; private final Model model;

@ -1,7 +1,14 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.musicplayer; package atlantafx.sampler.page.showcase.musicplayer;
import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.SUPPORTED_MEDIA_TYPES;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
@ -16,14 +23,6 @@ import javafx.stage.FileChooser.ExtensionFilter;
import org.kordamp.ikonli.feather.Feather; import org.kordamp.ikonli.feather.Feather;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.SUPPORTED_MEDIA_TYPES;
final class StartScreen extends BorderPane { final class StartScreen extends BorderPane {
private final Model model; private final Model model;

@ -1,6 +1,9 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.widget; package atlantafx.sampler.page.showcase.widget;
import static atlantafx.sampler.page.Page.PAGE_HGAP;
import static atlantafx.sampler.page.Page.PAGE_VGAP;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import atlantafx.sampler.Resources; import atlantafx.sampler.Resources;
import atlantafx.sampler.theme.CSSFragment; import atlantafx.sampler.theme.CSSFragment;
@ -21,9 +24,6 @@ import net.datafaker.Faker;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import static atlantafx.sampler.page.Page.PAGE_HGAP;
import static atlantafx.sampler.page.Page.PAGE_VGAP;
public class CardSample extends HBox { public class CardSample extends HBox {
private static final Faker FAKER = new Faker(); private static final Faker FAKER = new Faker();

@ -2,6 +2,8 @@
package atlantafx.sampler.page.showcase.widget; package atlantafx.sampler.page.showcase.widget;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import java.util.Objects;
import java.util.function.Consumer;
import javafx.animation.FadeTransition; import javafx.animation.FadeTransition;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -14,9 +16,6 @@ import javafx.util.Duration;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.material2.Material2AL; import org.kordamp.ikonli.material2.Material2AL;
import java.util.Objects;
import java.util.function.Consumer;
public class Message extends StackPane { public class Message extends StackPane {
private static final int ANIMATION_DURATION = 500; private static final int ANIMATION_DURATION = 500;

@ -3,13 +3,12 @@ package atlantafx.sampler.page.showcase.widget;
import atlantafx.sampler.page.SampleBlock; import atlantafx.sampler.page.SampleBlock;
import atlantafx.sampler.theme.CSSFragment; import atlantafx.sampler.theme.CSSFragment;
import java.util.function.Consumer;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import java.util.function.Consumer;
public class MessageSample extends SampleBlock { public class MessageSample extends SampleBlock {
public MessageSample() { public MessageSample() {

@ -1,6 +1,10 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.widget; package atlantafx.sampler.page.showcase.widget;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
@ -19,11 +23,6 @@ import javafx.scene.layout.Priority;
import org.kordamp.ikonli.Ikon; import org.kordamp.ikonli.Ikon;
import org.kordamp.ikonli.javafx.FontIcon; import org.kordamp.ikonli.javafx.FontIcon;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Stepper extends HBox { public class Stepper extends HBox {
public static final String CSS = """ public static final String CSS = """

@ -1,12 +1,12 @@
/* SPDX-License-Identifier: MIT */ /* SPDX-License-Identifier: MIT */
package atlantafx.sampler.page.showcase.widget; package atlantafx.sampler.page.showcase.widget;
import static javafx.scene.control.ContentDisplay.RIGHT;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import static javafx.scene.control.ContentDisplay.RIGHT;
public class Tag extends Button { public class Tag extends Button {
public static final String CSS = """ public static final String CSS = """

Some files were not shown because too many files have changed in this diff Show More