From 265b0037274d9eae744175751aa28d3f20b2be9a Mon Sep 17 00:00:00 2001 From: astrapi69 Date: Fri, 24 Nov 2023 17:55:37 +0100 Subject: [PATCH] new method for get the main frame with a given component --- .../swing/component/ComponentExtensions.java | 16 ++++++++++++++++ .../base/ApplicationBasePanelFrameExample.java | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/io/github/astrapi69/swing/component/ComponentExtensions.java b/src/main/java/io/github/astrapi69/swing/component/ComponentExtensions.java index 69f2368..d794003 100644 --- a/src/main/java/io/github/astrapi69/swing/component/ComponentExtensions.java +++ b/src/main/java/io/github/astrapi69/swing/component/ComponentExtensions.java @@ -26,9 +26,12 @@ import java.awt.Component; import java.awt.Container; +import java.awt.Frame; import java.util.Optional; import java.util.logging.Level; +import javax.swing.SwingUtilities; + import lombok.NonNull; import lombok.experimental.UtilityClass; import lombok.extern.java.Log; @@ -96,4 +99,17 @@ public static void setComponentEnabled(Component container, boolean enable) log.log(Level.INFO, exception.getMessage(), exception); } } + + /** + * Resolves the application frame from the given Component + * + * @param eventSource + * the event source + * @return the application frame + */ + public static Frame getApplicationFrame(Component eventSource) + { + Frame frame = (Frame)SwingUtilities.getAncestorOfClass(Frame.class, eventSource); + return frame; + } } diff --git a/src/test/java/io/github/astrapi69/swing/base/ApplicationBasePanelFrameExample.java b/src/test/java/io/github/astrapi69/swing/base/ApplicationBasePanelFrameExample.java index 6e762b9..bbde597 100644 --- a/src/test/java/io/github/astrapi69/swing/base/ApplicationBasePanelFrameExample.java +++ b/src/test/java/io/github/astrapi69/swing/base/ApplicationBasePanelFrameExample.java @@ -24,6 +24,7 @@ */ package io.github.astrapi69.swing.base; +import java.awt.Component; import java.awt.Frame; import javax.swing.Icon; @@ -35,6 +36,7 @@ import io.github.astrapi69.model.BaseModel; import io.github.astrapi69.swing.button.IconButtonFactory; import io.github.astrapi69.swing.button.builder.JButtonInfo; +import io.github.astrapi69.swing.component.ComponentExtensions; import io.github.astrapi69.swing.plaf.LookAndFeels; import io.github.astrapi69.test.object.ApplicationTestModel; @@ -122,6 +124,8 @@ protected JToolBar newJToolBar() JButton hardDriveToolButton = IconButtonFactory.newIconButton(hardDriveIcon); hardDriveToolButton.addActionListener(event -> { System.out.println("hardDriveToolButton ...."); + Frame applicationFrame = ComponentExtensions + .getApplicationFrame((Component)event.getSource()); ApplicationTestModel applicationTestModel = ApplicationTestModel . builder().model("bla").build(); LabelBasePanel labelPanel = new LabelBasePanel(BaseModel.of(applicationTestModel));