# dlsc-software-consulting-gmbh/gemsfx architecture

> Architecture diagram of the GitHub repository dlsc-software-consulting-gmbh/gemsfx, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dlsc-software-consulting-gmbh/gemsfx
- Repository: https://github.com/dlsc-software-consulting-gmbh/gemsfx

## Overview

GemsFX is a JavaFX controls and utilities library, with a showcase application that lets users find and try its controls. The documented journey is to browse or search the catalog, open a control’s manual, or launch its demo; the showcase also supports theme switching. The graph includes the library’s major control domains and selected utility and skin layers. README capabilities guide the showcase links; source excerpts were limited, so uncertain internal call relationships are omitted.

Main entry points: [`gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseApp.java`](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseApp.java) (Showcase App), [`gemsfx/src/main/java/com/dlsc/gemsfx/skins`](https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/skins) (Control Skins), [`gemsfx/src/main/java/com/dlsc/gemsfx/util/PreferencesHistoryManager.java`](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/PreferencesHistoryManager.java) (Preferences History), [`gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseThemeManager.java`](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseThemeManager.java) (Theme Manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_showcase["Showcase"]
  node_showcase_app["Showcase App<br/>[ShowcaseApp.java]"]
  node_showcase_registry["Control Catalog"]
  node_theme_manager["Theme Manager"]
  node_manuals["Developer Manuals"]
  node_demo_apps["Control Demos"]
end

subgraph group_controls["Control Domains"]
  node_date_controls["Date &amp; Time"]
  node_input_controls["Text &amp; Input<br/>[SearchField.java]"]
  node_collection_controls["Lists &amp; Tables"]
  node_layout_controls["Layout &amp; Feedback"]
  node_graphic_controls["Images &amp; Graphics<br/>[PhotoView.java]"]
end

subgraph group_runtime["Runtime Layers"]
  node_skins["Control Skins"]
  node_paging_service["Paging Loader"]
end

subgraph group_utilities["Utilities"]
  node_history["History Management"]
  node_preferences_history["Preferences History"]
  node_session_manager["Session State"]
  node_stage_manager["Window State<br/>[StageManager.java]"]
end

node_user(("Developer"))
node_preferences[("Java Preferences")]
node_atlantafx["AtlantaFX"]

node_user -->|"opens"| node_showcase_app
node_showcase_app -->|"browses catalog"| node_showcase_registry
node_showcase_app -->|"opens manual"| node_manuals
node_showcase_app -->|"launches demo"| node_demo_apps
node_user -->|"Shift double-click"| node_demo_apps
node_showcase_app -->|"switches themes"| node_theme_manager
node_theme_manager -.->|"applies theme"| node_atlantafx
node_date_controls -->|"rendered by"| node_skins
node_input_controls -->|"rendered by"| node_skins
node_collection_controls -->|"rendered by"| node_skins
node_layout_controls -->|"rendered by"| node_skins
node_graphic_controls -->|"rendered by"| node_skins
node_paging_service -->|"loads requested pages"| node_user
node_preferences_history -->|"extends"| node_history
node_preferences_history -->|"persists history"| node_preferences
node_session_manager -->|"persists properties"| node_preferences
node_stage_manager -->|"persists window state"| node_preferences

click node_showcase_app "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseApp.java"
click node_showcase_registry "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseRegistry.java"
click node_theme_manager "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseThemeManager.java"
click node_manuals "https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/docs/manuals"
click node_demo_apps "https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx-demo/src/main/java/com/dlsc/gemsfx/demo"
click node_date_controls "https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/daterange"
click node_input_controls "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/SearchField.java"
click node_collection_controls "https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/paging"
click node_layout_controls "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/ResponsivePane.java"
click node_graphic_controls "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/PhotoView.java"
click node_skins "https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/skins"
click node_paging_service "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/paging/LoadingService.java"
click node_history "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/HistoryManager.java"
click node_preferences_history "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/PreferencesHistoryManager.java"
click node_session_manager "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/SessionManager.java"
click node_stage_manager "https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/StageManager.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_showcase_app,node_showcase_registry,node_theme_manager,node_manuals,node_demo_apps toneBlue
class node_date_controls,node_input_controls,node_collection_controls,node_layout_controls,node_graphic_controls,node_preferences toneAmber
class node_skins,node_paging_service toneMint
class node_history,node_preferences_history,node_session_manager,node_stage_manager toneRose
class node_user,node_atlantafx toneIndigo
```

## Components

### Showcase

- [Showcase App](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseApp.java): `gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseApp.java`
- [Control Catalog](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseRegistry.java): `gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseRegistry.java`
- [Theme Manager](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseThemeManager.java): `gemsfx-showcase/src/main/java/com/dlsc/gemsfx/showcase/ShowcaseThemeManager.java`
- [Developer Manuals](https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/docs/manuals): `docs/manuals`
- [Control Demos](https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx-demo/src/main/java/com/dlsc/gemsfx/demo): `gemsfx-demo/src/main/java/com/dlsc/gemsfx/demo`

### Control Domains

- [Date & Time](https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/daterange): `gemsfx/src/main/java/com/dlsc/gemsfx/daterange`
- [Text & Input](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/SearchField.java): `gemsfx/src/main/java/com/dlsc/gemsfx/SearchField.java`
- [Lists & Tables](https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/paging): `gemsfx/src/main/java/com/dlsc/gemsfx/paging`
- [Layout & Feedback](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/ResponsivePane.java): `gemsfx/src/main/java/com/dlsc/gemsfx/ResponsivePane.java`
- [Images & Graphics](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/PhotoView.java): `gemsfx/src/main/java/com/dlsc/gemsfx/PhotoView.java`

### Runtime Layers

- [Control Skins](https://github.com/dlsc-software-consulting-gmbh/gemsfx/tree/master/gemsfx/src/main/java/com/dlsc/gemsfx/skins): `gemsfx/src/main/java/com/dlsc/gemsfx/skins`
- [Paging Loader](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/paging/LoadingService.java): `gemsfx/src/main/java/com/dlsc/gemsfx/paging/LoadingService.java`

### Utilities

- [History Management](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/HistoryManager.java): `gemsfx/src/main/java/com/dlsc/gemsfx/util/HistoryManager.java`
- [Preferences History](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/PreferencesHistoryManager.java): `gemsfx/src/main/java/com/dlsc/gemsfx/util/PreferencesHistoryManager.java`
- [Session State](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/SessionManager.java): `gemsfx/src/main/java/com/dlsc/gemsfx/util/SessionManager.java`
- [Window State](https://github.com/dlsc-software-consulting-gmbh/gemsfx/blob/master/gemsfx/src/main/java/com/dlsc/gemsfx/util/StageManager.java): `gemsfx/src/main/java/com/dlsc/gemsfx/util/StageManager.java`

### Other components

- **Developer**
- **Java Preferences**
- **AtlantaFX**

## Connections

- Developer → Showcase App: opens
- Showcase App → Control Catalog: browses catalog
- Showcase App → Developer Manuals: opens manual
- Showcase App → Control Demos: launches demo
- Developer → Control Demos: Shift double-click
- Showcase App → Theme Manager: switches themes
- Theme Manager → AtlantaFX: applies theme
- Date & Time → Control Skins: rendered by
- Text & Input → Control Skins: rendered by
- Lists & Tables → Control Skins: rendered by
- Layout & Feedback → Control Skins: rendered by
- Images & Graphics → Control Skins: rendered by
- Paging Loader → Developer: loads requested pages
- Preferences History → History Management: extends
- Preferences History → Java Preferences: persists history
- Session State → Java Preferences: persists properties
- Window State → Java Preferences: persists window state
