diff --git a/demo-multi-app/src/basic/MainFrame.java b/demo-multi-app/src/basic/MainFrame.java index 207eb33e..0a401b95 100644 --- a/demo-multi-app/src/basic/MainFrame.java +++ b/demo-multi-app/src/basic/MainFrame.java @@ -27,14 +27,13 @@ of this software and associated documentation files (the "Software"), to deal import ModernDocking.exception.DockingLayoutException; import ModernDocking.layouts.ApplicationLayout; import ModernDocking.layouts.DockingLayouts; -import ModernDocking.api.WindowLayoutBuilderAPI; import ModernDocking.settings.Settings; import com.formdev.flatlaf.FlatDarkLaf; import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme; import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme; -import docking.ui.DockingUI; +import ModernDocking.ext.ui.DockingUI; import exception.FailOnThreadViolationRepaintManager; import picocli.CommandLine; diff --git a/demo-multi-app/src/basic/MultipleInstances.java b/demo-multi-app/src/basic/MultipleInstances.java index 835b653e..cdbcbd5a 100644 --- a/demo-multi-app/src/basic/MultipleInstances.java +++ b/demo-multi-app/src/basic/MultipleInstances.java @@ -21,12 +21,6 @@ of this software and associated documentation files (the "Software"), to deal */ package basic; -import docking.ui.DockingUI; -import picocli.CommandLine; - -import javax.swing.*; -import java.io.File; - public class MultipleInstances { } diff --git a/demo-single-app/src/basic/BasePanel.java b/demo-single-app/src/basic/BasePanel.java index c9056327..c7d07fd4 100644 --- a/demo-single-app/src/basic/BasePanel.java +++ b/demo-single-app/src/basic/BasePanel.java @@ -22,7 +22,7 @@ of this software and associated documentation files (the "Software"), to deal package basic; import ModernDocking.Dockable; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import javax.swing.*; import java.awt.*; diff --git a/demo-single-app/src/basic/DialogWithDocking.java b/demo-single-app/src/basic/DialogWithDocking.java index ad4b7aa2..b9350fe4 100644 --- a/demo-single-app/src/basic/DialogWithDocking.java +++ b/demo-single-app/src/basic/DialogWithDocking.java @@ -23,6 +23,8 @@ of this software and associated documentation files (the "Software"), to deal import ModernDocking.*; import ModernDocking.api.RootDockingPanelAPI; +import ModernDocking.app.Docking; +import ModernDocking.app.RootDockingPanel; import javax.swing.*; diff --git a/demo-single-app/src/basic/Example.java b/demo-single-app/src/basic/Example.java index 7be8af07..716e4bea 100644 --- a/demo-single-app/src/basic/Example.java +++ b/demo-single-app/src/basic/Example.java @@ -22,6 +22,9 @@ of this software and associated documentation files (the "Software"), to deal package basic; import ModernDocking.*; +import ModernDocking.app.AppState; +import ModernDocking.app.Docking; +import ModernDocking.app.RootDockingPanel; import ModernDocking.exception.DockingLayoutException; import javax.swing.*; diff --git a/demo-single-app/src/basic/FloatingSample.java b/demo-single-app/src/basic/FloatingSample.java index 88cff9b5..07f920cf 100644 --- a/demo-single-app/src/basic/FloatingSample.java +++ b/demo-single-app/src/basic/FloatingSample.java @@ -22,9 +22,9 @@ of this software and associated documentation files (the "Software"), to deal package basic; import ModernDocking.Dockable; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import ModernDocking.DockingRegion; -import ModernDocking.RootDockingPanel; +import ModernDocking.app.RootDockingPanel; import javax.swing.*; import java.awt.*; diff --git a/demo-single-app/src/basic/MainFrame.java b/demo-single-app/src/basic/MainFrame.java index 0b9e60ca..a5a40889 100644 --- a/demo-single-app/src/basic/MainFrame.java +++ b/demo-single-app/src/basic/MainFrame.java @@ -22,6 +22,7 @@ of this software and associated documentation files (the "Software"), to deal package basic; import ModernDocking.*; +import ModernDocking.app.*; import ModernDocking.exception.DockingLayoutException; import ModernDocking.layouts.ApplicationLayout; import ModernDocking.layouts.DockingLayouts; @@ -31,7 +32,7 @@ of this software and associated documentation files (the "Software"), to deal import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme; import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme; -import docking.ui.DockingUI; +import ModernDocking.ext.ui.DockingUI; import exception.FailOnThreadViolationRepaintManager; import picocli.CommandLine; diff --git a/demo-single-app/src/basic/OutputPanel.java b/demo-single-app/src/basic/OutputPanel.java index f68d04c6..4c4bab5d 100644 --- a/demo-single-app/src/basic/OutputPanel.java +++ b/demo-single-app/src/basic/OutputPanel.java @@ -1,6 +1,6 @@ package basic; -import ModernDocking.AppState; +import ModernDocking.app.AppState; import ModernDocking.DockableStyle; import ModernDocking.DockingProperty; diff --git a/demo-single-app/src/basic/PropertiesDemoPanel.java b/demo-single-app/src/basic/PropertiesDemoPanel.java index 8b7791c7..201d4e56 100644 --- a/demo-single-app/src/basic/PropertiesDemoPanel.java +++ b/demo-single-app/src/basic/PropertiesDemoPanel.java @@ -21,10 +21,9 @@ of this software and associated documentation files (the "Software"), to deal */ package basic; -import ModernDocking.AppState; +import ModernDocking.app.AppState; import ModernDocking.DockingProperty; import ModernDocking.DockingRegion; -import ModernDocking.internal.DockableProperties; import javax.swing.*; import javax.swing.text.*; diff --git a/demo-single-app/src/examples/Docking_dock.java b/demo-single-app/src/examples/Docking_dock.java index ed02b4ec..bd9f24ba 100644 --- a/demo-single-app/src/examples/Docking_dock.java +++ b/demo-single-app/src/examples/Docking_dock.java @@ -22,9 +22,9 @@ of this software and associated documentation files (the "Software"), to deal package examples; import ModernDocking.Dockable; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import ModernDocking.DockingRegion; -import ModernDocking.RootDockingPanel; +import ModernDocking.app.RootDockingPanel; import javax.swing.*; import java.awt.*; diff --git a/demo-single-app/src/examples/NewWindow.java b/demo-single-app/src/examples/NewWindow.java index 6ece2169..db714651 100644 --- a/demo-single-app/src/examples/NewWindow.java +++ b/demo-single-app/src/examples/NewWindow.java @@ -1,10 +1,10 @@ package examples; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import ModernDocking.DockingRegion; -import ModernDocking.RootDockingPanel; +import ModernDocking.app.RootDockingPanel; import ModernDocking.ui.DefaultDockingPanel; -import docking.ui.DockingUI; +import ModernDocking.ext.ui.DockingUI; import javax.swing.*; import java.awt.*; diff --git a/demo-single-app/src/packets/MainFrame.java b/demo-single-app/src/packets/MainFrame.java index 2e80c070..99aab7ef 100644 --- a/demo-single-app/src/packets/MainFrame.java +++ b/demo-single-app/src/packets/MainFrame.java @@ -21,10 +21,10 @@ of this software and associated documentation files (the "Software"), to deal */ package packets; -import ModernDocking.AppState; -import ModernDocking.DockableMenuItem; -import ModernDocking.Docking; -import ModernDocking.RootDockingPanel; +import ModernDocking.app.AppState; +import ModernDocking.app.DockableMenuItem; +import ModernDocking.app.Docking; +import ModernDocking.app.RootDockingPanel; import ModernDocking.exception.DockingLayoutException; import com.formdev.flatlaf.FlatDarkLaf; import com.formdev.flatlaf.FlatLaf; diff --git a/demo-single-app/src/packets/PacketBytesPanel.java b/demo-single-app/src/packets/PacketBytesPanel.java index b6430736..e3a9e908 100644 --- a/demo-single-app/src/packets/PacketBytesPanel.java +++ b/demo-single-app/src/packets/PacketBytesPanel.java @@ -23,7 +23,7 @@ of this software and associated documentation files (the "Software"), to deal import ModernDocking.Dockable; import ModernDocking.DockableStyle; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import javax.swing.*; diff --git a/demo-single-app/src/packets/PacketInfoPanel.java b/demo-single-app/src/packets/PacketInfoPanel.java index 39ff380e..dd2efff4 100644 --- a/demo-single-app/src/packets/PacketInfoPanel.java +++ b/demo-single-app/src/packets/PacketInfoPanel.java @@ -23,7 +23,7 @@ of this software and associated documentation files (the "Software"), to deal import ModernDocking.Dockable; import ModernDocking.DockableStyle; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import javax.swing.*; diff --git a/demo-single-app/src/packets/PacketListPanel.java b/demo-single-app/src/packets/PacketListPanel.java index df94abc5..000af77e 100644 --- a/demo-single-app/src/packets/PacketListPanel.java +++ b/demo-single-app/src/packets/PacketListPanel.java @@ -22,7 +22,7 @@ of this software and associated documentation files (the "Software"), to deal package packets; import ModernDocking.Dockable; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import javax.swing.*; diff --git a/demo-single-app/src/tests/DeregisterTests.java b/demo-single-app/src/tests/DeregisterTests.java index f4abd521..4420866e 100644 --- a/demo-single-app/src/tests/DeregisterTests.java +++ b/demo-single-app/src/tests/DeregisterTests.java @@ -21,11 +21,11 @@ of this software and associated documentation files (the "Software"), to deal */ package tests; -import ModernDocking.Docking; +import ModernDocking.app.Docking; import ModernDocking.DockingRegion; -import ModernDocking.RootDockingPanel; +import ModernDocking.app.RootDockingPanel; import ModernDocking.ui.DefaultDockingPanel; -import docking.ui.DockingUI; +import ModernDocking.ext.ui.DockingUI; import javax.swing.*; import java.awt.*; diff --git a/demo-single-app/src/tests/WindowLayoutBuilderTests.java b/demo-single-app/src/tests/WindowLayoutBuilderTests.java index f5c14e0b..8822ef1a 100644 --- a/demo-single-app/src/tests/WindowLayoutBuilderTests.java +++ b/demo-single-app/src/tests/WindowLayoutBuilderTests.java @@ -22,9 +22,12 @@ of this software and associated documentation files (the "Software"), to deal package tests; import ModernDocking.*; +import ModernDocking.app.ApplicationLayoutMenuItem; +import ModernDocking.app.Docking; +import ModernDocking.app.RootDockingPanel; +import ModernDocking.app.WindowLayoutBuilder; import ModernDocking.event.DockingLayoutEvent; import ModernDocking.event.DockingLayoutListener; -import ModernDocking.layouts.ApplicationLayout; import ModernDocking.layouts.DockingLayouts; import basic.SimplePanel; import com.formdev.flatlaf.FlatDarkLaf; diff --git a/docking-api/src/ModernDocking/api/WindowLayoutBuilderAPI.java b/docking-api/src/ModernDocking/api/WindowLayoutBuilderAPI.java index 2b427232..2baa0603 100644 --- a/docking-api/src/ModernDocking/api/WindowLayoutBuilderAPI.java +++ b/docking-api/src/ModernDocking/api/WindowLayoutBuilderAPI.java @@ -24,12 +24,17 @@ of this software and associated documentation files (the "Software"), to deal import ModernDocking.DockingRegion; import ModernDocking.layouts.*; +import java.util.HashMap; +import java.util.Map; + /** * Utility to help create layouts without directly applying them to the actual app */ public class WindowLayoutBuilderAPI { private final DockingLayoutRootNode rootNode; + private final Map> properties = new HashMap<>(); + /** * Start building a new layout * @@ -106,6 +111,16 @@ public WindowLayoutBuilderAPI display(String persistentID) { return this; } + public WindowLayoutBuilderAPI addProperty(String persistentID, String property, String value) { + Map props = properties.getOrDefault(persistentID, new HashMap<>()); + + props.put(property, value); + + properties.put(persistentID, props); + + return this; + } + // build a WindowLayout using the rootNode public WindowLayout build() { return new WindowLayout(rootNode.getNode()); diff --git a/docking-api/src/module-info.java b/docking-api/src/module-info.java index 28a3f49f..d61b6d55 100644 --- a/docking-api/src/module-info.java +++ b/docking-api/src/module-info.java @@ -1,7 +1,7 @@ /** * Module for the Modern Docking framework */ -module modern_docking { +module modern.docking.api { requires java.desktop; requires java.logging; @@ -12,4 +12,5 @@ exports ModernDocking.persist; exports ModernDocking.ui; exports ModernDocking.api; + exports ModernDocking.internal; } \ No newline at end of file diff --git a/docking-single-app/src/ModernDocking/AppState.java b/docking-single-app/src/ModernDocking/app/AppState.java similarity index 98% rename from docking-single-app/src/ModernDocking/AppState.java rename to docking-single-app/src/ModernDocking/app/AppState.java index 52e51c94..3898e160 100644 --- a/docking-single-app/src/ModernDocking/AppState.java +++ b/docking-single-app/src/ModernDocking/app/AppState.java @@ -19,8 +19,9 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; +import ModernDocking.Dockable; import ModernDocking.api.AppStateAPI; import ModernDocking.exception.DockingLayoutException; import ModernDocking.layouts.ApplicationLayout; diff --git a/docking-single-app/src/ModernDocking/ApplicationLayoutMenuItem.java b/docking-single-app/src/ModernDocking/app/ApplicationLayoutMenuItem.java similarity index 99% rename from docking-single-app/src/ModernDocking/ApplicationLayoutMenuItem.java rename to docking-single-app/src/ModernDocking/app/ApplicationLayoutMenuItem.java index c24bffbb..768699d6 100644 --- a/docking-single-app/src/ModernDocking/ApplicationLayoutMenuItem.java +++ b/docking-single-app/src/ModernDocking/app/ApplicationLayoutMenuItem.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; import ModernDocking.layouts.ApplicationLayout; import ModernDocking.layouts.DockingLayouts; diff --git a/docking-single-app/src/ModernDocking/DockableMenuItem.java b/docking-single-app/src/ModernDocking/app/DockableMenuItem.java similarity index 98% rename from docking-single-app/src/ModernDocking/DockableMenuItem.java rename to docking-single-app/src/ModernDocking/app/DockableMenuItem.java index 7057cb2d..d9188e14 100644 --- a/docking-single-app/src/ModernDocking/DockableMenuItem.java +++ b/docking-single-app/src/ModernDocking/app/DockableMenuItem.java @@ -19,8 +19,9 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; +import ModernDocking.Dockable; import ModernDocking.exception.DockableRegistrationFailureException; import ModernDocking.internal.DockingInternal; diff --git a/docking-single-app/src/ModernDocking/Docking.java b/docking-single-app/src/ModernDocking/app/Docking.java similarity index 99% rename from docking-single-app/src/ModernDocking/Docking.java rename to docking-single-app/src/ModernDocking/app/Docking.java index 63843418..14f9a70a 100644 --- a/docking-single-app/src/ModernDocking/Docking.java +++ b/docking-single-app/src/ModernDocking/app/Docking.java @@ -19,8 +19,10 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; +import ModernDocking.Dockable; +import ModernDocking.DockingRegion; import ModernDocking.api.DockingAPI; import ModernDocking.api.RootDockingPanelAPI; import ModernDocking.event.DockingListener; diff --git a/docking-single-app/src/ModernDocking/DockingState.java b/docking-single-app/src/ModernDocking/app/DockingState.java similarity index 99% rename from docking-single-app/src/ModernDocking/DockingState.java rename to docking-single-app/src/ModernDocking/app/DockingState.java index c6a44937..66aef10d 100644 --- a/docking-single-app/src/ModernDocking/DockingState.java +++ b/docking-single-app/src/ModernDocking/app/DockingState.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; import ModernDocking.api.DockingStateAPI; import ModernDocking.layouts.ApplicationLayout; diff --git a/docking-single-app/src/ModernDocking/LayoutPersistence.java b/docking-single-app/src/ModernDocking/app/LayoutPersistence.java similarity index 99% rename from docking-single-app/src/ModernDocking/LayoutPersistence.java rename to docking-single-app/src/ModernDocking/app/LayoutPersistence.java index 3b3f650b..90b0ebb8 100644 --- a/docking-single-app/src/ModernDocking/LayoutPersistence.java +++ b/docking-single-app/src/ModernDocking/app/LayoutPersistence.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; import ModernDocking.api.LayoutPersistenceAPI; import ModernDocking.exception.DockingLayoutException; diff --git a/docking-single-app/src/ModernDocking/LayoutsMenu.java b/docking-single-app/src/ModernDocking/app/LayoutsMenu.java similarity index 98% rename from docking-single-app/src/ModernDocking/LayoutsMenu.java rename to docking-single-app/src/ModernDocking/app/LayoutsMenu.java index 2fbb6db2..5ee478fe 100644 --- a/docking-single-app/src/ModernDocking/LayoutsMenu.java +++ b/docking-single-app/src/ModernDocking/app/LayoutsMenu.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; import ModernDocking.event.DockingLayoutEvent; import ModernDocking.event.DockingLayoutListener; diff --git a/docking-single-app/src/ModernDocking/RootDockingPanel.java b/docking-single-app/src/ModernDocking/app/RootDockingPanel.java similarity index 98% rename from docking-single-app/src/ModernDocking/RootDockingPanel.java rename to docking-single-app/src/ModernDocking/app/RootDockingPanel.java index 006f4dd2..3f64d3d9 100644 --- a/docking-single-app/src/ModernDocking/RootDockingPanel.java +++ b/docking-single-app/src/ModernDocking/app/RootDockingPanel.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; import ModernDocking.api.RootDockingPanelAPI; import ModernDocking.ui.ToolbarLocation; diff --git a/docking-single-app/src/ModernDocking/WindowLayoutBuilder.java b/docking-single-app/src/ModernDocking/app/WindowLayoutBuilder.java similarity index 97% rename from docking-single-app/src/ModernDocking/WindowLayoutBuilder.java rename to docking-single-app/src/ModernDocking/app/WindowLayoutBuilder.java index 1633beb5..60494d9e 100644 --- a/docking-single-app/src/ModernDocking/WindowLayoutBuilder.java +++ b/docking-single-app/src/ModernDocking/app/WindowLayoutBuilder.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package ModernDocking; +package ModernDocking.app; import ModernDocking.api.WindowLayoutBuilderAPI; diff --git a/docking-single-app/src/module-info.java b/docking-single-app/src/module-info.java new file mode 100644 index 00000000..dbf37e06 --- /dev/null +++ b/docking-single-app/src/module-info.java @@ -0,0 +1,9 @@ +/** + * Module for the Modern Docking framework + */ +module modern.docking.ui { + requires modern.docking.api; + requires java.desktop; + + exports ModernDocking.app; +} \ No newline at end of file diff --git a/docking-ui/src/docking/ui/DockingUI.java b/docking-ui/src/ModernDocking/ext/ui/DockingUI.java similarity index 98% rename from docking-ui/src/docking/ui/DockingUI.java rename to docking-ui/src/ModernDocking/ext/ui/DockingUI.java index 537152dd..1832f1f3 100644 --- a/docking-ui/src/docking/ui/DockingUI.java +++ b/docking-ui/src/ModernDocking/ext/ui/DockingUI.java @@ -19,7 +19,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package docking.ui; +package ModernDocking.ext.ui; import ModernDocking.internal.DockedTabbedPanel; import ModernDocking.internal.DockingInternal; diff --git a/docking-ui/src/docking/ui/FlatLafHeaderUI.java b/docking-ui/src/ModernDocking/ext/ui/FlatLafHeaderUI.java old mode 100755 new mode 100644 similarity index 96% rename from docking-ui/src/docking/ui/FlatLafHeaderUI.java rename to docking-ui/src/ModernDocking/ext/ui/FlatLafHeaderUI.java index 70a445fa..774eceb4 --- a/docking-ui/src/docking/ui/FlatLafHeaderUI.java +++ b/docking-ui/src/ModernDocking/ext/ui/FlatLafHeaderUI.java @@ -1,78 +1,78 @@ -/* -Copyright (c) 2022-2023 Andrew Auclair - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - */ -package docking.ui; - -import ModernDocking.ui.*; -import com.formdev.flatlaf.extras.FlatSVGIcon; - -import java.awt.*; - -/** - * Custom DefaultHeaderUI that uses SVG Icons for settings and close when using FlatLaf - */ -public class FlatLafHeaderUI extends DefaultHeaderUI implements DockingHeaderUI { - /** - * Settings icon for the header. Uses an SVG icon for sharper icons - */ - private final FlatSVGIcon settingsIcon = new FlatSVGIcon("icons/settings.svg"); - - /** - * Close icon for the header. Uses an SVG icon for sharper icons - */ - private final FlatSVGIcon closeIcon = new FlatSVGIcon("icons/close.svg"); - - /** - * Construct a new FlatLafHeaderUI - * - * @param headerController Header controller to use for this UI - * @param headerModel Header model to use for this UI - */ - public FlatLafHeaderUI(HeaderController headerController, HeaderModel headerModel) { - super(headerController, headerModel); - - setBackground(DockingSettings.getHeaderBackground()); - Color foreground = DockingSettings.getHeaderForeground(); - - settingsIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> foreground)); - closeIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> foreground)); - } - - @Override - protected void init() { - super.init(); - - settings.setIcon(settingsIcon); - close.setIcon(closeIcon); - } - - @Override - public void setForeground(Color fg) { - super.setForeground(fg); - - if (settingsIcon != null) { - settingsIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> fg)); - } - if (closeIcon != null) { - closeIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> fg)); - } - } -} +/* +Copyright (c) 2022-2023 Andrew Auclair + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + */ +package ModernDocking.ext.ui; + +import ModernDocking.ui.*; +import com.formdev.flatlaf.extras.FlatSVGIcon; + +import java.awt.*; + +/** + * Custom DefaultHeaderUI that uses SVG Icons for settings and close when using FlatLaf + */ +public class FlatLafHeaderUI extends DefaultHeaderUI implements DockingHeaderUI { + /** + * Settings icon for the header. Uses an SVG icon for sharper icons + */ + private final FlatSVGIcon settingsIcon = new FlatSVGIcon("icons/settings.svg"); + + /** + * Close icon for the header. Uses an SVG icon for sharper icons + */ + private final FlatSVGIcon closeIcon = new FlatSVGIcon("icons/close.svg"); + + /** + * Construct a new FlatLafHeaderUI + * + * @param headerController Header controller to use for this UI + * @param headerModel Header model to use for this UI + */ + public FlatLafHeaderUI(HeaderController headerController, HeaderModel headerModel) { + super(headerController, headerModel); + + setBackground(DockingSettings.getHeaderBackground()); + Color foreground = DockingSettings.getHeaderForeground(); + + settingsIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> foreground)); + closeIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> foreground)); + } + + @Override + protected void init() { + super.init(); + + settings.setIcon(settingsIcon); + close.setIcon(closeIcon); + } + + @Override + public void setForeground(Color fg) { + super.setForeground(fg); + + if (settingsIcon != null) { + settingsIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> fg)); + } + if (closeIcon != null) { + closeIcon.setColorFilter(new FlatSVGIcon.ColorFilter(color -> fg)); + } + } +} diff --git a/docking-ui/src/module-info.java b/docking-ui/src/module-info.java new file mode 100644 index 00000000..c4744a6d --- /dev/null +++ b/docking-ui/src/module-info.java @@ -0,0 +1,10 @@ +/** + * Module for the Modern Docking framework + */ +module modern.docking.ui { + requires modern.docking.api; + requires java.desktop; + requires com.formdev.flatlaf.extras; + + exports ModernDocking.ext.ui; +} \ No newline at end of file