created more listeners

This commit is contained in:
Denis Molony 2021-06-01 20:29:34 +10:00
parent ae1188ae27
commit beb0830c25
3 changed files with 56 additions and 14 deletions

View File

@ -2,6 +2,8 @@ package com.bytezone.diskbrowser.gui;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.Action; import javax.swing.Action;
@ -12,17 +14,16 @@ import javax.swing.KeyStroke;
public class ColourQuirksAction extends AbstractAction public class ColourQuirksAction extends AbstractAction
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
private final DataPanel owner; List<ColourQuirksListener> listeners = new ArrayList<> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public ColourQuirksAction (DataPanel owner) public ColourQuirksAction ()
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
super ("Smear HGR"); super ("Smear HGR");
putValue (Action.SHORT_DESCRIPTION, "Display pixels like a TV screen"); putValue (Action.SHORT_DESCRIPTION, "Display pixels like a TV screen");
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt Q")); putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt Q"));
putValue (Action.MNEMONIC_KEY, KeyEvent.VK_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) 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);
} }
} }

View File

@ -37,15 +37,17 @@ import com.bytezone.diskbrowser.applefile.QuickDrawFont;
import com.bytezone.diskbrowser.applefile.SHRPictureFile2; import com.bytezone.diskbrowser.applefile.SHRPictureFile2;
import com.bytezone.diskbrowser.disk.DiskAddress; import com.bytezone.diskbrowser.disk.DiskAddress;
import com.bytezone.diskbrowser.disk.SectorList; 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.DebuggingAction.DebugListener;
import com.bytezone.diskbrowser.gui.FontAction.FontChangeEvent; import com.bytezone.diskbrowser.gui.FontAction.FontChangeEvent;
import com.bytezone.diskbrowser.gui.FontAction.FontChangeListener; import com.bytezone.diskbrowser.gui.FontAction.FontChangeListener;
import com.bytezone.diskbrowser.gui.MonochromeAction.MonochromeListener;
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
public class DataPanel extends JTabbedPane public class DataPanel extends JTabbedPane implements DiskSelectionListener,
implements DiskSelectionListener, FileSelectionListener, SectorSelectionListener, FileSelectionListener, SectorSelectionListener, FileNodeSelectionListener,
FileNodeSelectionListener, FontChangeListener, BasicPreferencesListener, FontChangeListener, BasicPreferencesListener, AssemblerPreferencesListener,
AssemblerPreferencesListener, TextPreferencesListener, DebugListener TextPreferencesListener, DebugListener, ColourQuirksListener, MonochromeListener
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
private static final int TEXT_WIDTH = 65; private static final int TEXT_WIDTH = 65;
@ -157,8 +159,13 @@ public class DataPanel extends JTabbedPane
menuHandler.lineWrapItem.setAction (lineWrapAction); menuHandler.lineWrapItem.setAction (lineWrapAction);
lineWrapAction.addListener (formattedText); lineWrapAction.addListener (formattedText);
menuHandler.colourQuirksItem.setAction (new ColourQuirksAction (this)); ColourQuirksAction colourQuirksAction = new ColourQuirksAction ();
menuHandler.monochromeItem.setAction (new MonochromeAction (this)); colourQuirksAction.addColourQuirksListener (this);
menuHandler.colourQuirksItem.setAction (colourQuirksAction);
MonochromeAction monochromeAction = new MonochromeAction ();
monochromeAction.addMonochromeListener (this);
menuHandler.monochromeItem.setAction (monochromeAction);
DebuggingAction debuggingAction = new DebuggingAction (); DebuggingAction debuggingAction = new DebuggingAction ();
debuggingAction.addDebugListener (this); debuggingAction.addDebugListener (this);
@ -213,6 +220,7 @@ public class DataPanel extends JTabbedPane
} }
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@Override
public void setColourQuirks (boolean value) public void setColourQuirks (boolean value)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {

View File

@ -2,6 +2,8 @@ package com.bytezone.diskbrowser.gui;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.Action; import javax.swing.Action;
@ -12,17 +14,16 @@ import javax.swing.KeyStroke;
class MonochromeAction extends AbstractAction class MonochromeAction extends AbstractAction
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
private final DataPanel owner; List<MonochromeListener> listeners = new ArrayList<> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
MonochromeAction (DataPanel owner) MonochromeAction ()
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
super ("Monochrome"); super ("Monochrome");
putValue (Action.SHORT_DESCRIPTION, "Display image in monochrome or color"); putValue (Action.SHORT_DESCRIPTION, "Display image in monochrome or color");
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt M")); putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt M"));
putValue (Action.MNEMONIC_KEY, KeyEvent.VK_M); putValue (Action.MNEMONIC_KEY, KeyEvent.VK_M);
this.owner = owner;
} }
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@ -30,6 +31,22 @@ class MonochromeAction extends AbstractAction
public void actionPerformed (ActionEvent e) 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);
} }
} }