From beb0830c25022747244341c9ba94789877a7a22a Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Tue, 1 Jun 2021 20:29:34 +1000 Subject: [PATCH] created more listeners --- .../diskbrowser/gui/ColourQuirksAction.java | 25 ++++++++++++++++--- .../bytezone/diskbrowser/gui/DataPanel.java | 20 ++++++++++----- .../diskbrowser/gui/MonochromeAction.java | 25 ++++++++++++++++--- 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/src/com/bytezone/diskbrowser/gui/ColourQuirksAction.java b/src/com/bytezone/diskbrowser/gui/ColourQuirksAction.java index c5dab3f..d3ef43d 100644 --- a/src/com/bytezone/diskbrowser/gui/ColourQuirksAction.java +++ b/src/com/bytezone/diskbrowser/gui/ColourQuirksAction.java @@ -2,6 +2,8 @@ package com.bytezone.diskbrowser.gui; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; @@ -12,17 +14,16 @@ import javax.swing.KeyStroke; public class ColourQuirksAction extends AbstractAction // -----------------------------------------------------------------------------------// { - private final DataPanel owner; + List listeners = new ArrayList<> (); // ---------------------------------------------------------------------------------// - public ColourQuirksAction (DataPanel owner) + public ColourQuirksAction () // ---------------------------------------------------------------------------------// { super ("Smear HGR"); putValue (Action.SHORT_DESCRIPTION, "Display pixels like a TV screen"); putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt Q")); putValue (Action.MNEMONIC_KEY, KeyEvent.VK_Q); - this.owner = owner; } // ---------------------------------------------------------------------------------// @@ -30,6 +31,22 @@ public class ColourQuirksAction extends AbstractAction public void actionPerformed (ActionEvent e) // ---------------------------------------------------------------------------------// { - owner.setColourQuirks (((JMenuItem) e.getSource ()).isSelected ()); + for (ColourQuirksListener listener : listeners) + listener.setColourQuirks (((JMenuItem) e.getSource ()).isSelected ()); + } + + // ---------------------------------------------------------------------------------// + public void addColourQuirksListener (ColourQuirksListener listener) + // ---------------------------------------------------------------------------------// + { + if (!listeners.contains (listener)) + listeners.add (listener); + } + + // ---------------------------------------------------------------------------------// + public interface ColourQuirksListener + // ---------------------------------------------------------------------------------// + { + public void setColourQuirks (boolean value); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/gui/DataPanel.java b/src/com/bytezone/diskbrowser/gui/DataPanel.java index 1e79f5b..3ee0632 100755 --- a/src/com/bytezone/diskbrowser/gui/DataPanel.java +++ b/src/com/bytezone/diskbrowser/gui/DataPanel.java @@ -37,15 +37,17 @@ import com.bytezone.diskbrowser.applefile.QuickDrawFont; import com.bytezone.diskbrowser.applefile.SHRPictureFile2; import com.bytezone.diskbrowser.disk.DiskAddress; import com.bytezone.diskbrowser.disk.SectorList; +import com.bytezone.diskbrowser.gui.ColourQuirksAction.ColourQuirksListener; import com.bytezone.diskbrowser.gui.DebuggingAction.DebugListener; import com.bytezone.diskbrowser.gui.FontAction.FontChangeEvent; import com.bytezone.diskbrowser.gui.FontAction.FontChangeListener; +import com.bytezone.diskbrowser.gui.MonochromeAction.MonochromeListener; // -----------------------------------------------------------------------------------// -public class DataPanel extends JTabbedPane - implements DiskSelectionListener, FileSelectionListener, SectorSelectionListener, - FileNodeSelectionListener, FontChangeListener, BasicPreferencesListener, - AssemblerPreferencesListener, TextPreferencesListener, DebugListener +public class DataPanel extends JTabbedPane implements DiskSelectionListener, + FileSelectionListener, SectorSelectionListener, FileNodeSelectionListener, + FontChangeListener, BasicPreferencesListener, AssemblerPreferencesListener, + TextPreferencesListener, DebugListener, ColourQuirksListener, MonochromeListener // -----------------------------------------------------------------------------------// { private static final int TEXT_WIDTH = 65; @@ -157,8 +159,13 @@ public class DataPanel extends JTabbedPane menuHandler.lineWrapItem.setAction (lineWrapAction); lineWrapAction.addListener (formattedText); - menuHandler.colourQuirksItem.setAction (new ColourQuirksAction (this)); - menuHandler.monochromeItem.setAction (new MonochromeAction (this)); + ColourQuirksAction colourQuirksAction = new ColourQuirksAction (); + colourQuirksAction.addColourQuirksListener (this); + menuHandler.colourQuirksItem.setAction (colourQuirksAction); + + MonochromeAction monochromeAction = new MonochromeAction (); + monochromeAction.addMonochromeListener (this); + menuHandler.monochromeItem.setAction (monochromeAction); DebuggingAction debuggingAction = new DebuggingAction (); debuggingAction.addDebugListener (this); @@ -213,6 +220,7 @@ public class DataPanel extends JTabbedPane } // ---------------------------------------------------------------------------------// + @Override public void setColourQuirks (boolean value) // ---------------------------------------------------------------------------------// { diff --git a/src/com/bytezone/diskbrowser/gui/MonochromeAction.java b/src/com/bytezone/diskbrowser/gui/MonochromeAction.java index 97a2271..10fbbb8 100644 --- a/src/com/bytezone/diskbrowser/gui/MonochromeAction.java +++ b/src/com/bytezone/diskbrowser/gui/MonochromeAction.java @@ -2,6 +2,8 @@ package com.bytezone.diskbrowser.gui; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; @@ -12,17 +14,16 @@ import javax.swing.KeyStroke; class MonochromeAction extends AbstractAction // -----------------------------------------------------------------------------------// { - private final DataPanel owner; + List listeners = new ArrayList<> (); // ---------------------------------------------------------------------------------// - MonochromeAction (DataPanel owner) + MonochromeAction () // ---------------------------------------------------------------------------------// { super ("Monochrome"); putValue (Action.SHORT_DESCRIPTION, "Display image in monochrome or color"); putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt M")); putValue (Action.MNEMONIC_KEY, KeyEvent.VK_M); - this.owner = owner; } // ---------------------------------------------------------------------------------// @@ -30,6 +31,22 @@ class MonochromeAction extends AbstractAction public void actionPerformed (ActionEvent e) // ---------------------------------------------------------------------------------// { - owner.setMonochrome (((JMenuItem) e.getSource ()).isSelected ()); + for (MonochromeListener listener : listeners) + listener.setMonochrome (((JMenuItem) e.getSource ()).isSelected ()); + } + + // ---------------------------------------------------------------------------------// + public void addMonochromeListener (MonochromeListener listener) + // ---------------------------------------------------------------------------------// + { + if (!listeners.contains (listener)) + listeners.add (listener); + } + + // ---------------------------------------------------------------------------------// + public interface MonochromeListener + // ---------------------------------------------------------------------------------// + { + public void setMonochrome (boolean value); } } \ No newline at end of file