Basics

Guides

API Reference

Menu

Basics

Guides

API Reference

TilesFX Usage Guide

TilesFX adds dashboard-style JavaFX tiles to Aussom under fx.hansolo.tilesfx. It is useful when you want compact, highly visual status widgets such as gauges, counters, clocks, charts, and KPI tiles without building each component from scratch.

The Aussom wrapper is builder-first and AJI-based. The common Tile builder flow is wrapped directly, while less common or skin-specific APIs remain reachable through AJI.

What It Is Good For

  • dashboards and operations screens
  • KPI cards and compact metric displays
  • gauges, clocks, and chart-oriented tiles
  • visual threshold and status displays with sections and alarms

Key Concepts

Concept Meaning
tilesfx.newTileBuilder() Main entry point for creating a tile.
Tile The runtime tile control you add to the scene graph.
TileBuilder Fluent builder used to configure a tile before build().
TileSection Numeric range band used by gauge-style tiles.
TileTimeSection Time range band used by clock-style tiles.
TileAlarm Alarm marker data used by clock-like tiles.
TileChartData Named chart item used by chart-based tile skins.

Getting Started

Include the module and the normal JavaFX layout helpers you need:

include fx;
include fx.Color;
include fx.VBox;
include fx.hansolo.tilesfx.tilesfx;

Example 1: Gauge Tile With Threshold Sections

include fx;
include fx.Color;
include fx.VBox;
include fx.hansolo.tilesfx.tilesfx;

app = fx.fxApp("TilesFX Gauge", 420, 420);

green = new Color("#37A169");
orange = new Color("#DD6B20");
red = new Color("#E53E3E");

normal = new TileSection(0.0, 70.0, "Normal", green);
warn = new TileSection(70.0, 90.0, "Warn", orange);
hot = new TileSection(90.0, 100.0, "Hot", red);

tile = tilesfx.newTileBuilder()
    .skinType("GAUGE")
    .title("CPU")
    .unit("%")
    .value(42.0)
    .minValue(0.0)
    .maxValue(100.0)
    .threshold(85.0)
    .animated(false)
    .sections([normal, warn, hot])
    .prefSize(320.0, 320.0)
    .build();

root = new VBox();
root.add(tile);

app.setLayout(root);
app.show(true);
fx.shutdown();

Example 2: Clock Tile With Time Sections and Alarm

include fx;
include fx.Color;
include fx.VBox;
include fx.hansolo.tilesfx.tilesfx;

app = fx.fxApp("TilesFX Clock", 420, 420);

blue = new Color("#3182CE");
red = new Color("#E53E3E");

workHours = new TileTimeSection(
    tilesfx.localTime(9, 0),
    tilesfx.localTime(17, 0),
    "Work",
    blue
);

lunchAlarm = new TileAlarm("2026-04-19T12:00:00Z", "ONCE", true, "Lunch", red);

tile = tilesfx.newTileBuilder()
    .skinType("CLOCK")
    .title("UTC")
    .text("Ops")
    .timeIso("2026-04-19T12:00:00Z")
    .running(false)
    .dateVisible(true)
    .textVisible(true)
    .timeSections([workHours])
    .alarms([lunchAlarm])
    .prefSize(320.0, 320.0)
    .build();

root = new VBox();
root.add(tile);

app.setLayout(root);
app.show(true);
fx.shutdown();

Example 3: Bar Chart Tile

include fx;
include fx.Color;
include fx.VBox;
include fx.hansolo.tilesfx.tilesfx;

app = fx.fxApp("TilesFX Chart", 520, 360);

blue = new Color("#3182CE");
teal = new Color("#319795");
green = new Color("#37A169");

api = new TileChartData("API", 42.0, blue);
db = new TileChartData("DB", 31.0, teal);
cache = new TileChartData("Cache", 19.0, green);

tile = tilesfx.newTileBuilder()
    .skinType("BAR_CHART")
    .title("Services")
    .text("Requests")
    .chartData([api, db, cache])
    .animated(false)
    .textVisible(true)
    .prefSize(420.0, 320.0)
    .build();

app.setLayout(tile);
app.show(true);
fx.shutdown();

Tips and Gotchas

  • Prefer the builder path for new tiles. It is the cleanest wrapper surface.
  • Create TilesFX support objects after JavaFX startup in tests and demos if you run into constructor issues before the toolkit is initialized.
  • Use animated(false) in tests and deterministic demos when you want stable values immediately.
  • TileSection, TileTimeSection, and TileAlarm are optional. Only attach them when the chosen skin type actually uses them.
  • The wrapper covers the high-value common path. For skin-specific behavior not exposed yet, use tile.obj and AJI.
  • Large headless TilesFX scenes can still log renderer noise during snapshot tests even when rendering succeeds. Treat the visual result and assertions as the real signal.