From 59f794906eafb1f06988f6b1670180fae78bfe06 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Fri, 26 Jun 2020 14:39:05 +1000 Subject: [PATCH] moving common functions inhouse --- .../bytezone/diskbrowser/gui/AboutAction.java | 2 +- .../diskbrowser/gui/CreateDatabaseAction.java | 2 +- .../diskbrowser/gui/DuplicateAction.java | 2 +- .../diskbrowser/gui/InterleaveAction.java | 2 +- .../bytezone/diskbrowser/gui/MenuHandler.java | 2 +- .../diskbrowser/gui/PreferencesAction.java | 2 +- .../bytezone/diskbrowser/gui/PrintAction.java | 2 +- .../diskbrowser/gui/RefreshTreeAction.java | 2 +- .../diskbrowser/gui/RootDirectoryAction.java | 5 +- .../diskbrowser/gui/SaveSectorsAction.java | 5 +- .../diskbrowser/gui/SaveTempFileAction.java | 2 +- .../diskbrowser/utilities/DefaultAction.java | 46 ++++++++++ .../utilities/EnvironmentAction.java | 85 +++++++++++++++++++ 13 files changed, 144 insertions(+), 15 deletions(-) create mode 100644 src/com/bytezone/diskbrowser/utilities/DefaultAction.java create mode 100755 src/com/bytezone/diskbrowser/utilities/EnvironmentAction.java diff --git a/src/com/bytezone/diskbrowser/gui/AboutAction.java b/src/com/bytezone/diskbrowser/gui/AboutAction.java index 9fcec6c..6575ace 100755 --- a/src/com/bytezone/diskbrowser/gui/AboutAction.java +++ b/src/com/bytezone/diskbrowser/gui/AboutAction.java @@ -7,7 +7,7 @@ import javax.swing.Action; import javax.swing.JOptionPane; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; +import com.bytezone.diskbrowser.utilities.DefaultAction; // this is not being used // -----------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/gui/CreateDatabaseAction.java b/src/com/bytezone/diskbrowser/gui/CreateDatabaseAction.java index 4030b4c..84a6ef2 100644 --- a/src/com/bytezone/diskbrowser/gui/CreateDatabaseAction.java +++ b/src/com/bytezone/diskbrowser/gui/CreateDatabaseAction.java @@ -4,7 +4,7 @@ import java.awt.event.ActionEvent; import javax.swing.JOptionPane; -import com.bytezone.common.DefaultAction; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class CreateDatabaseAction extends DefaultAction diff --git a/src/com/bytezone/diskbrowser/gui/DuplicateAction.java b/src/com/bytezone/diskbrowser/gui/DuplicateAction.java index 0d92dc1..9b4585d 100644 --- a/src/com/bytezone/diskbrowser/gui/DuplicateAction.java +++ b/src/com/bytezone/diskbrowser/gui/DuplicateAction.java @@ -9,9 +9,9 @@ import javax.swing.Action; import javax.swing.JOptionPane; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; import com.bytezone.diskbrowser.duplicates.DiskDetails; import com.bytezone.diskbrowser.duplicates.RootFolderData; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// public class DuplicateAction extends DefaultAction implements RootDirectoryChangeListener diff --git a/src/com/bytezone/diskbrowser/gui/InterleaveAction.java b/src/com/bytezone/diskbrowser/gui/InterleaveAction.java index 1847272..3208813 100755 --- a/src/com/bytezone/diskbrowser/gui/InterleaveAction.java +++ b/src/com/bytezone/diskbrowser/gui/InterleaveAction.java @@ -5,8 +5,8 @@ import java.awt.event.ActionEvent; import javax.swing.Action; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; import com.bytezone.diskbrowser.disk.FormattedDisk; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class InterleaveAction extends DefaultAction diff --git a/src/com/bytezone/diskbrowser/gui/MenuHandler.java b/src/com/bytezone/diskbrowser/gui/MenuHandler.java index 5d2eade..20a79f0 100755 --- a/src/com/bytezone/diskbrowser/gui/MenuHandler.java +++ b/src/com/bytezone/diskbrowser/gui/MenuHandler.java @@ -17,7 +17,6 @@ import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; -import com.bytezone.common.EnvironmentAction; import com.bytezone.common.FontAction; import com.bytezone.diskbrowser.applefile.AssemblerProgram; import com.bytezone.diskbrowser.applefile.BasicProgram; @@ -28,6 +27,7 @@ import com.bytezone.diskbrowser.applefile.VisicalcFile; import com.bytezone.diskbrowser.disk.DataDisk; import com.bytezone.diskbrowser.disk.FormattedDisk; import com.bytezone.diskbrowser.prodos.ProdosDisk; +import com.bytezone.diskbrowser.utilities.EnvironmentAction; // -----------------------------------------------------------------------------------// class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitListener, diff --git a/src/com/bytezone/diskbrowser/gui/PreferencesAction.java b/src/com/bytezone/diskbrowser/gui/PreferencesAction.java index 9e07752..e492de9 100644 --- a/src/com/bytezone/diskbrowser/gui/PreferencesAction.java +++ b/src/com/bytezone/diskbrowser/gui/PreferencesAction.java @@ -8,7 +8,7 @@ import javax.swing.Action; import javax.swing.JFrame; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; +import com.bytezone.diskbrowser.utilities.DefaultAction; // ********** not currently used *********** diff --git a/src/com/bytezone/diskbrowser/gui/PrintAction.java b/src/com/bytezone/diskbrowser/gui/PrintAction.java index d917be7..f35d4fc 100755 --- a/src/com/bytezone/diskbrowser/gui/PrintAction.java +++ b/src/com/bytezone/diskbrowser/gui/PrintAction.java @@ -10,7 +10,7 @@ import java.awt.print.PrinterJob; import javax.swing.Action; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class PrintAction extends DefaultAction diff --git a/src/com/bytezone/diskbrowser/gui/RefreshTreeAction.java b/src/com/bytezone/diskbrowser/gui/RefreshTreeAction.java index 266c07b..5ae3a8b 100755 --- a/src/com/bytezone/diskbrowser/gui/RefreshTreeAction.java +++ b/src/com/bytezone/diskbrowser/gui/RefreshTreeAction.java @@ -6,7 +6,7 @@ import java.awt.event.KeyEvent; import javax.swing.Action; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class RefreshTreeAction extends DefaultAction diff --git a/src/com/bytezone/diskbrowser/gui/RootDirectoryAction.java b/src/com/bytezone/diskbrowser/gui/RootDirectoryAction.java index c5ede98..1a3da76 100755 --- a/src/com/bytezone/diskbrowser/gui/RootDirectoryAction.java +++ b/src/com/bytezone/diskbrowser/gui/RootDirectoryAction.java @@ -11,8 +11,7 @@ import javax.swing.Action; import javax.swing.JFileChooser; import javax.swing.KeyStroke; -import com.bytezone.common.DefaultAction; -import com.bytezone.common.Platform; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class RootDirectoryAction extends DefaultAction implements QuitListener @@ -40,7 +39,7 @@ class RootDirectoryAction extends DefaultAction implements QuitListener public void actionPerformed (ActionEvent e) // ---------------------------------------------------------------------------------// { - JFileChooser chooser = new JFileChooser (Platform.userHome); + JFileChooser chooser = new JFileChooser (System.getProperty ("user.home")); chooser.setDialogTitle ("Select FOLDER containing disk images"); chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY); if (rootFolder != null) diff --git a/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java b/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java index d344f55..5291172 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveSectorsAction.java @@ -9,7 +9,7 @@ import java.nio.file.StandardOpenOption; import javax.swing.JFileChooser; import javax.swing.JOptionPane; -import com.bytezone.common.DefaultAction; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class SaveSectorsAction extends DefaultAction implements SectorSelectionListener @@ -35,8 +35,7 @@ class SaveSectorsAction extends DefaultAction implements SectorSelectionListener System.out.println ("No sectors"); return; } - byte[] buffer = - event.getFormattedDisk ().getDisk ().readBlocks (event.getSectors ()); + byte[] buffer = event.getFormattedDisk ().getDisk ().readBlocks (event.getSectors ()); JFileChooser fileChooser = new JFileChooser (); fileChooser.setDialogTitle ("Save sectors"); diff --git a/src/com/bytezone/diskbrowser/gui/SaveTempFileAction.java b/src/com/bytezone/diskbrowser/gui/SaveTempFileAction.java index 51e27af..49b8cc9 100644 --- a/src/com/bytezone/diskbrowser/gui/SaveTempFileAction.java +++ b/src/com/bytezone/diskbrowser/gui/SaveTempFileAction.java @@ -8,8 +8,8 @@ import java.nio.file.Files; import javax.swing.JFileChooser; import javax.swing.JOptionPane; -import com.bytezone.common.DefaultAction; import com.bytezone.diskbrowser.disk.FormattedDisk; +import com.bytezone.diskbrowser.utilities.DefaultAction; // -----------------------------------------------------------------------------------// class SaveTempFileAction extends DefaultAction diff --git a/src/com/bytezone/diskbrowser/utilities/DefaultAction.java b/src/com/bytezone/diskbrowser/utilities/DefaultAction.java new file mode 100644 index 0000000..375cbdf --- /dev/null +++ b/src/com/bytezone/diskbrowser/utilities/DefaultAction.java @@ -0,0 +1,46 @@ +package com.bytezone.diskbrowser.utilities; + +import java.net.URL; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; + +// -----------------------------------------------------------------------------------// +public abstract class DefaultAction extends AbstractAction +// -----------------------------------------------------------------------------------// +{ + final String baseURL; + + // ---------------------------------------------------------------------------------// + public DefaultAction (String text, String tip) + // ---------------------------------------------------------------------------------// + { + super (text); + this.baseURL = null; + putValue (Action.SHORT_DESCRIPTION, tip); + } + + // ---------------------------------------------------------------------------------// + public DefaultAction (String text, String tip, String baseURL) + // ---------------------------------------------------------------------------------// + { + super (text); + this.baseURL = baseURL; + putValue (Action.SHORT_DESCRIPTION, tip); + } + + // ---------------------------------------------------------------------------------// + protected void setIcon (String iconType, String iconName) + // ---------------------------------------------------------------------------------// + { + if (baseURL == null) + { + System.out.println ("Base URL not set"); + return; + } + URL url = this.getClass ().getResource (baseURL + iconName); + if (url != null) + putValue (iconType, new ImageIcon (url)); + } +} \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/utilities/EnvironmentAction.java b/src/com/bytezone/diskbrowser/utilities/EnvironmentAction.java new file mode 100755 index 0000000..87015ce --- /dev/null +++ b/src/com/bytezone/diskbrowser/utilities/EnvironmentAction.java @@ -0,0 +1,85 @@ +package com.bytezone.diskbrowser.utilities; + +import java.awt.Font; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +// -----------------------------------------------------------------------------------// +public class EnvironmentAction extends AbstractAction +// -----------------------------------------------------------------------------------// +{ + // ---------------------------------------------------------------------------------// + public EnvironmentAction () + // ---------------------------------------------------------------------------------// + { + super ("Environment..."); + + putValue (Action.SHORT_DESCRIPTION, "Display java details"); + int mask = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMaskEx (); + putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke (KeyEvent.VK_E, mask)); + } + + // ---------------------------------------------------------------------------------// + @Override + public void actionPerformed (ActionEvent e) + // ---------------------------------------------------------------------------------// + { + TextFormatter textFormatter = new TextFormatter (); + textFormatter.addLine ("Java version", System.getProperty ("java.runtime.version")); + textFormatter.addLine (); + + String path = System.getProperty ("java.class.path"); + for (String s : path.split (File.pathSeparator)) + textFormatter.addLine ("Classpath", s); + + JOptionPane.showMessageDialog (null, textFormatter.toLabel (), "Java Environment", + JOptionPane.INFORMATION_MESSAGE); + } + + // ---------------------------------------------------------------------------------// + class TextFormatter + // ---------------------------------------------------------------------------------// + { + List titles = new ArrayList<> (); + List texts = new ArrayList<> (); + + void addLine (String title, String text) + { + titles.add (title); + texts.add (text); + } + + void addLine () + { + addLine ("", ""); + } + + JLabel toLabel () + { + StringBuilder text = new StringBuilder (""); + for (int i = 0; i < texts.size (); i++) + { + String title = titles.get (i); + if (title.length () == 0) + text.append ("
"); + else + text.append (String.format ("%s : %s
", title, texts.get (i))); + } + text.append (""); + + JLabel label = new JLabel (text.toString ()); + label.setFont (new Font ("Monospaced", Font.PLAIN, 13)); + return label; + } + } +} \ No newline at end of file