A multi-module Java/JavaFX framework for IDE-style docking layouts — drag-and-drop panels, floating windows, minimize/maximize, tab groups, and JSON session persistence.
PapiflyFX Docking provides composable UI building blocks for desktop applications that need flexible, resizable, dockable panel layouts (similar to IntelliJ IDEA, VS Code, or Eclipse). The project is organized as a Maven multi-module build targeting Java 25 with JavaFX 23.0.1.
| Tool | Version |
|---|---|
| Java | 25 (Zulu FX recommended) |
| Maven | ≥ 3.9 (wrapper included — ./mvnw) |
| JavaFX | 23.0.1 (managed via Maven, auto-resolved per platform) |
sdk use java 25.0.1.fx-zulu# compile all modules
./mvnw compile
# full build (compile + test + package)
./mvnw clean package# docks demo
./mvnw javafx:run -pl papiflyfx-docking-docks
# samples demo
./mvnw javafx:run -pl papiflyfx-docking-samplesThe project uses JUnit Jupiter 5 and TestFX for UI tests.
# run all tests
./mvnw test
# run tests for a single module
./mvnw test -pl papiflyfx-docking-docks
# headless UI tests (CI / no display)
./mvnw -Dtestfx.headless=true test
# headless for a single module
./mvnw -Dtestfx.headless=true test -pl papiflyfx-docking-docksNo special environment variables are required for building or running. SDKMAN is used to manage the Java version (see Requirements).
papiflyfx-docking/
├── pom.xml # root aggregator POM
├── mvnw / mvnw.cmd # Maven wrapper
├── papiflyfx-docking-api/ # shared API & interfaces
├── papiflyfx-docking-docks/ # core docking framework (drag-drop, tabs, floating, persistence)
├── papiflyfx-docking-code/ # code-editor docking panel
├── papiflyfx-docking-tree/ # tree-view docking panel
├── papiflyfx-docking-media/ # media (audio/video) viewer panels
├── papiflyfx-docking-samples/ # demo applications
└── spec/ # architecture specs & design docs
├── papiflyfx-docking-api/
├── papiflyfx-docking-code/
├── papiflyfx-docking-docks/
├── papiflyfx-docking-media/
├── papiflyfx-docking-samples/
└── papiflyfx-docking-tree/
| Module | Description |
|---|---|
papiflyfx-docking-api |
Shared interfaces and data types used across modules |
papiflyfx-docking-docks |
Core docking/layout UI — drag-and-drop, floating windows, minimize/maximize, JSON session persistence |
papiflyfx-docking-code |
Code-editor panel integration |
papiflyfx-docking-tree |
Tree-view panel component |
papiflyfx-docking-media |
Audio and video viewer panels with transport controls |
papiflyfx-docking-samples |
Demo/sample applications showcasing the framework |
- Module specs and design docs:
spec/directory - Docks implementation plan:
spec/papiflyfx-docking-docks/IMPLEMENTATION_PLAN.md