Archived
This repository was created as an interim solution until the docking component of TiwulFX was separated from TiwulFX 3.1. Please refer to the following repository for more details:
https://github.com/panemu/tiwulfx-dock
PitchDockFX
PitchDockFX is yet another JavaFX 11 docking framework. Dockable panels provide a way to rearrange major application components.
Code in this repository extracted and simplified from TiwulFX 3.1.
Demo
Run the demo as follows:
- Open the project in IntelliJ.
- Expand
com.keenwrite.dock.demo
under src/test. - Open
Launcher
. - Run
main
.
The application launches:
Alternatives
This section reviews numerous JavaFX docking solutions. Except for TiwulFX, none of the other libraries could meet the requirements.
Requirements
Hard (must) and soft (should) requirements include:
- Must work on Linux (X11, Wayland), Windows (7, 10), and OSX, minimally
- Must support drag-and-drop, tab reordering
- Must support JavaFX 11
- Must have demo Java code
- Must take < 10 minutes to run demo code (including upgrade to JavaFX 11)
- Must support Gradle 6.6.1 (or greater)
- Must have license
- Should have a small footprint (< 100 kb)
- Should be pane-based, but a tab-based solution is acceptable
- Should support styling (skins), including dark and light
- Should have hooks for persistence (coordinates, splitter positions)
- Should be well-documented
- Should have a burgeoning following (> 25 stargazers)
Solutions
A number of solutions exist; this section reviews the pros and cons of each library. A ✔ indicates that it may be suitable for integration; a ✘ means the library is unsuitable (the reason for elimination is marked bold in the cons list); no mark means the library has not been put on trial.
PitchDockFX (fork)
✔Forked from TiwulFX 3 (below) to extract docking functionality.
- Pros: Small footprint, can be styled, works on Linux, lightweight
- Cons: < 10 stargazers, tab-based, LGPLv2, forked
DraggableTabs
✘- Pros: Small footprint, Apache License, can be styled, works on Linux, lightweight
- Cons: < 10 stargazers, minor bugs, tab-based, tab rearrangement is finicky at best, no reorder support
fx-docking-9
✘- Pros: Potentially works with Linux and does not require tab-panes?
- Cons: No external documentation, < 10 stargazers, no license
TiwulFX 3
✘- Pros: Recently updated, demo video looks good, supports JavaFX 11, works on Linux
- Cons: Framework, tab-based, LGPLv2.1, spreadsheet support, no small footprint (many dependencies, including POI)
- Demo
DockFX
✘- Pros: Looks great, exact functionality required, clean API, well-documented code, small size, 100+ stargazers
- Cons: LGPLv3, could be broken on Linux, unresolved issues dating to 2015, no JavaFX 11 support.
- Screenshot
DockFX (fork)
✘Fork of DockFX that includes numerous fixes.
- Cons: No JavaFX 11 support.
DesktopPaneFX
✘- Pros: May not suffer from Linux-related issues, updated recently, looks good.
- Cons: Doesn't appear to be dockable, per se; < 100 stargazers; minimized windows take up screen real-estate; XFCE (X11?) hotkeys could have trouble being passed to the internal windows, no JavaFX 11 support.
- Screenshot
DndDockFX
✘- Pros: Small footprint, MIT license, true cross-platform, excellent summary of issues with other docking APIs
- Cons: < 50 stargazers, tab-based, no Linux support
DockSystemFX
✘- Pros: Well-documented, Apache 2 License, looks great, skinnable, panels can be hidden various ways
- Cons: < 10 stargazers, fixed-layout, no drag-and-drop support
MiniDockFx
✘- Pros: Small footprint, BSD license, true cross-platform, identifies issues with other dockers, updated recently, stores split positions as preferences
- Cons: < 10 stargazers, tab-based, fixed-layout
- Screenshot
AnchorFX
✘- Pros: Looks good, pane-based, simple API, 100+ stargazers
- Cons: LGPLv3, no recent activity, no Linux support
- Screenshot
FxDock
✘- Pros: Simple framework, Apache License, recent activity
- Cons: < 50 stargazers, tab-based, no Linux support
- Screenshot
Drombler FX
✘- Pros: Well-documented, well-organized, OSGi-compliant
- Cons: < 100 stargazers, Tab-based, duplicate functionality with existing code base, more of an application framework than docking widget, no drag-and-drop support (JDK bug)
- Example
FxDocking
✘- Pros: Very small footprint
- Cons: Tab-based, < 10 stargazers, incomplete, no Linux support
- Screenshot
javafx.DndTabPane
✘- Pros: Small footprint, skinnable, EPL license, true cross-platform
- Cons: < 10 stargazers, tab-based, no Java demo code
iroshell
I did not run (or create) a demo for this framework.
- Pros: Provides multi-document interface (presumably dockable), MIT license, updated recently
- Cons: < 10 stargazers, UI framework (not a simple widget)