Skip to content

org-metalib/papiflyfx-docking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

172 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

papiflyfx-docking

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.

Overview

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.

Requirements

Tool Version
Java 25 (Zulu FX recommended)
Maven ≥ 3.9 (wrapper included — ./mvnw)
JavaFX 23.0.1 (managed via Maven, auto-resolved per platform)

Java setup (SDKMAN)

sdk use java 25.0.1.fx-zulu

Build & Run

# compile all modules
./mvnw compile

# full build (compile + test + package)
./mvnw clean package

Run demos

# docks demo
./mvnw javafx:run -pl papiflyfx-docking-docks

# samples demo
./mvnw javafx:run -pl papiflyfx-docking-samples

Tests

The 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-docks

Environment Variables

No special environment variables are required for building or running. SDKMAN is used to manage the Java version (see Requirements).

Project Structure

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 summary

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

Documentation

  • Module specs and design docs: spec/ directory
  • Docks implementation plan: spec/papiflyfx-docking-docks/IMPLEMENTATION_PLAN.md

Similar Projects

License

Apache License, Version 2.0

Packages

 
 
 

Contributors