From 9ee50dba4f26387c4c15ae4af614b9588c0728a8 Mon Sep 17 00:00:00 2001
From: Daniel Schramm <xschramm@fi.muni.cz>
Date: Sun, 12 Sep 2021 22:52:03 +0200
Subject: [PATCH] Action event extended to carry additional data

---
 .../fidentis/analyst/core/ControlPanel.java   | 14 +++++++++
 .../analyst/core/LoadedActionEvent.java       | 31 +++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 GUI/src/main/java/cz/fidentis/analyst/core/LoadedActionEvent.java

diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanel.java b/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanel.java
index 02017a85..b859a2ed 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/core/ControlPanel.java
@@ -58,4 +58,18 @@ public abstract class ControlPanel extends JPanel {
             }  
         };
     }
+    
+    protected final ActionListener createListener(ActionListener action, String command, Object data) {
+        return new AbstractAction() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                action.actionPerformed(new LoadedActionEvent(
+                        e.getSource(), 
+                        ActionEvent.ACTION_PERFORMED, 
+                        command,
+                        data)
+                ); 
+            }  
+        };
+    }
 }
diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/LoadedActionEvent.java b/GUI/src/main/java/cz/fidentis/analyst/core/LoadedActionEvent.java
new file mode 100644
index 00000000..b10c96e8
--- /dev/null
+++ b/GUI/src/main/java/cz/fidentis/analyst/core/LoadedActionEvent.java
@@ -0,0 +1,31 @@
+package cz.fidentis.analyst.core;
+
+import java.awt.event.ActionEvent;
+
+/**
+ *
+ * @author Daniel Schramm
+ */
+public class LoadedActionEvent extends ActionEvent {
+    
+    private final Object data;
+
+    public LoadedActionEvent(Object source, int id, String command, Object data) {
+        super(source, id, command);
+        this.data = data;
+    }
+
+    public LoadedActionEvent(Object source, int id, String command, int modifiers, Object data) {
+        super(source, id, command, modifiers);
+        this.data = data;
+    }
+
+    public LoadedActionEvent(Object source, int id, String command, long when, int modifiers, Object data) {
+        super(source, id, command, when, modifiers);
+        this.data = data;
+    }
+
+    public Object getData() {
+        return data;
+    }
+}
-- 
GitLab