From 8b1183c7ca3d8abd61b13328df37cb3b2bf05206 Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Tue, 10 Nov 2020 15:30:45 -0500 Subject: Rename some things --- firmal/src/main/java/bjc/firmal/Firmal.java | 2 +- firmal/src/main/java/bjc/firmal/FirmalBrowser.java | 220 --------------------- .../main/java/bjc/firmal/FirmalBrowserPanel.java | 220 +++++++++++++++++++++ firmal/src/main/java/bjc/firmal/FirmalFrame.java | 65 ++++++ firmal/src/main/java/bjc/firmal/FirmalPane.java | 65 ------ 5 files changed, 286 insertions(+), 286 deletions(-) delete mode 100644 firmal/src/main/java/bjc/firmal/FirmalBrowser.java create mode 100644 firmal/src/main/java/bjc/firmal/FirmalBrowserPanel.java create mode 100644 firmal/src/main/java/bjc/firmal/FirmalFrame.java delete mode 100644 firmal/src/main/java/bjc/firmal/FirmalPane.java (limited to 'firmal/src/main') diff --git a/firmal/src/main/java/bjc/firmal/Firmal.java b/firmal/src/main/java/bjc/firmal/Firmal.java index 57bbf19..715a16a 100644 --- a/firmal/src/main/java/bjc/firmal/Firmal.java +++ b/firmal/src/main/java/bjc/firmal/Firmal.java @@ -17,7 +17,7 @@ public class Firmal { * @param args Currently unused CLI args. */ public static void main(String[] args) { - JFrame frame = FirmalPane.createFirmalPane(); + JFrame frame = FirmalFrame.createFirmalPane(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.pack(); diff --git a/firmal/src/main/java/bjc/firmal/FirmalBrowser.java b/firmal/src/main/java/bjc/firmal/FirmalBrowser.java deleted file mode 100644 index 96ca02e..0000000 --- a/firmal/src/main/java/bjc/firmal/FirmalBrowser.java +++ /dev/null @@ -1,220 +0,0 @@ -package bjc.firmal; - -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.event.KeyEvent; -import java.io.File; -import java.io.IOException; - -import javax.swing.JButton; -import javax.swing.JEditorPane; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import bjc.esodata.SingleTape; -import bjc.esodata.Tape; -import bjc.utils.gui.SimpleDialogs; -import bjc.utils.gui.SimpleKeyedButton; -import bjc.utils.gui.layout.VLayout; - -/** - * Main browser for Firmal. - * @author Ben Culkin - * - */ -public class FirmalBrowser extends JPanel { - /** - * Exception thrown when we got a directory when should've gotten a non directory. - * @author Ben Culkin - * - */ - public class DirectoryExpected extends RuntimeException { - private static final long serialVersionUID = 6614868098505684922L; - - /** - * Create a new exception. - * @param pth The path to the directory. - */ - public DirectoryExpected(String pth) { - super(String.format("Non-directory '%s' passed where a directory was expected", pth)); - } - } - - private static final long serialVersionUID = 9078988253392361649L; - - private JEditorPane contentPane; - - private String dirName; - private String dirPath; - - private Tape loadedFiles; - - private JFrame root; - - /** - * Create a new browser. - * - * @param root The root window. - */ - public FirmalBrowser(JFrame root) { - super(); - - this.loadedFiles = new SingleTape<>(); - this.root = root; - - setLayout(new BorderLayout()); - - contentPane = new JEditorPane(); - contentPane.setEditable(false); - contentPane.setContentType("text/html;charset=UTF-8"); - - JScrollPane scrollPane = new JScrollPane(contentPane); - - JPanel buttonPanel = new JPanel(new VLayout(2)); - - JButton refreshButton = new JButton("Refresh"); - - JPanel navButtonPanel = new JPanel(); - navButtonPanel.setLayout(new GridLayout(2, 2)); - - SimpleKeyedButton firstButton = new SimpleKeyedButton("<< First"); - firstButton.setGlobalDefaultKeystroke("firstFile", "control shift P", (aev) -> { - moveFirst(); - }); - firstButton.setMnemonic(KeyEvent.VK_F); - - SimpleKeyedButton prevButton = new SimpleKeyedButton("< Previous"); - prevButton.setGlobalDefaultKeystroke("prevFile", "control P", (ev) -> { - movePrevious(); - }); - - SimpleKeyedButton lastButton = new SimpleKeyedButton("Last >>"); - lastButton.setGlobalDefaultKeystroke("lastFile", "control shift N", (ev) -> { - moveLast(); - }); - - SimpleKeyedButton nextButton = new SimpleKeyedButton("Next >"); - nextButton.setGlobalDefaultKeystroke("nextFile", "control N", (ev) -> { - moveNext(); - }); - - navButtonPanel.add(firstButton); - navButtonPanel.add(lastButton); - navButtonPanel.add(prevButton); - navButtonPanel.add(nextButton); - - buttonPanel.add(refreshButton); - buttonPanel.add(navButtonPanel); - - add(BorderLayout.PAGE_END, buttonPanel); - add(BorderLayout.CENTER, scrollPane); - } - - /** - * Move the browser to the next file. - */ - public void moveNext() { - boolean res = loadedFiles.right(); - if (!res) { - SimpleDialogs.showMessage(this, "Already There", "No next file. Already at the last one."); - return; - } - - loadFile(loadedFiles.item()); - } - - /** - * Move the browser to the last file. - */ - public void moveLast() { - if (loadedFiles.atEnd()) { - SimpleDialogs.showMessage(this, "Already There", "Already at the last file"); - return; - } - - loadedFiles.last(); - - loadFile(loadedFiles.item()); - } - - /** - * Move the browser to the previous file. - */ - public void movePrevious() { - boolean res = loadedFiles.left(); - if (!res) { - SimpleDialogs.showMessage(this, "Already There", "No previous file. Already at the first one."); - return; - } - - loadFile(loadedFiles.item()); - } - - /** - * Move the browser to the first file. - */ - public void moveFirst() { - if (loadedFiles.position() == 0) { - SimpleDialogs.showMessage(this, "Already There", "Already at the first file"); - return; - } - - loadedFiles.first(); - - loadFile(loadedFiles.item()); - } - - /** - * Opens a directory, populating the list of files. - * @param dir The directory to open. - * - * @throws DirectoryExpected The argument must be a directory. - */ - public void openDirectory(File dir) { - if (!dir.isDirectory()) - throw new DirectoryExpected(dir.getAbsolutePath()); - - dirPath = dir.getAbsolutePath(); - dirName = dir.getName(); - - loadedFiles = new SingleTape<>(); - - // NOTE: Currently; ignores sub-directories. These should probably be handled in - // some way (flag/dialog box?) - for (File fle : dir.listFiles()) { - if (fle.isDirectory()) - continue; // See above - - // We don't handle non-html file types for now. - if (fle.getName().endsWith(".htm") || fle.getName().endsWith(".html")) { - loadedFiles.append(fle); - } else { - System.err.printf("WARN: Ignoring non-HTML file '%s' in directory '%s' (%s)", fle.getName(), dirName, - dirPath); - } - } - - loadedFiles.first(); - - File curFile = loadedFiles.item(); - loadFile(curFile); - } - - private void loadFile(File curFile) { - try { - contentPane.setPage(curFile.toURI().toURL()); - - String msg = String.format("Firmal Browser (Browsing: %s) - %s - %d of %d", dirPath, curFile.getName(), - loadedFiles.position(), loadedFiles.size()); - root.setTitle(msg); - } catch (IOException ioex) { - String msg = String.format("Couldn't load file '%s' from directory '%s' because %s", curFile, dirName, - ioex.getMessage()); - - SimpleDialogs.showError(this, "Error loading File", msg); - - ioex.printStackTrace(); - } - } -} diff --git a/firmal/src/main/java/bjc/firmal/FirmalBrowserPanel.java b/firmal/src/main/java/bjc/firmal/FirmalBrowserPanel.java new file mode 100644 index 0000000..4eef8e6 --- /dev/null +++ b/firmal/src/main/java/bjc/firmal/FirmalBrowserPanel.java @@ -0,0 +1,220 @@ +package bjc.firmal; + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.KeyEvent; +import java.io.File; +import java.io.IOException; + +import javax.swing.JButton; +import javax.swing.JEditorPane; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import bjc.esodata.SingleTape; +import bjc.esodata.Tape; +import bjc.utils.gui.SimpleDialogs; +import bjc.utils.gui.SimpleKeyedButton; +import bjc.utils.gui.layout.VLayout; + +/** + * Main browser for Firmal. + * @author Ben Culkin + * + */ +public class FirmalBrowserPanel extends JPanel { + /** + * Exception thrown when we got a directory when should've gotten a non directory. + * @author Ben Culkin + * + */ + public class DirectoryExpected extends RuntimeException { + private static final long serialVersionUID = 6614868098505684922L; + + /** + * Create a new exception. + * @param pth The path to the directory. + */ + public DirectoryExpected(String pth) { + super(String.format("Non-directory '%s' passed where a directory was expected", pth)); + } + } + + private static final long serialVersionUID = 9078988253392361649L; + + private JEditorPane contentPane; + + private String dirName; + private String dirPath; + + private Tape loadedFiles; + + private JFrame root; + + /** + * Create a new browser. + * + * @param root The root window. + */ + public FirmalBrowserPanel(JFrame root) { + super(); + + this.loadedFiles = new SingleTape<>(); + this.root = root; + + setLayout(new BorderLayout()); + + contentPane = new JEditorPane(); + contentPane.setEditable(false); + contentPane.setContentType("text/html;charset=UTF-8"); + + JScrollPane scrollPane = new JScrollPane(contentPane); + + JPanel buttonPanel = new JPanel(new VLayout(2)); + + JButton refreshButton = new JButton("Refresh"); + + JPanel navButtonPanel = new JPanel(); + navButtonPanel.setLayout(new GridLayout(2, 2)); + + SimpleKeyedButton firstButton = new SimpleKeyedButton("<< First"); + firstButton.setGlobalDefaultKeystroke("firstFile", "control shift P", (aev) -> { + moveFirst(); + }); + firstButton.setMnemonic(KeyEvent.VK_F); + + SimpleKeyedButton prevButton = new SimpleKeyedButton("< Previous"); + prevButton.setGlobalDefaultKeystroke("prevFile", "control P", (ev) -> { + movePrevious(); + }); + + SimpleKeyedButton lastButton = new SimpleKeyedButton("Last >>"); + lastButton.setGlobalDefaultKeystroke("lastFile", "control shift N", (ev) -> { + moveLast(); + }); + + SimpleKeyedButton nextButton = new SimpleKeyedButton("Next >"); + nextButton.setGlobalDefaultKeystroke("nextFile", "control N", (ev) -> { + moveNext(); + }); + + navButtonPanel.add(firstButton); + navButtonPanel.add(lastButton); + navButtonPanel.add(prevButton); + navButtonPanel.add(nextButton); + + buttonPanel.add(refreshButton); + buttonPanel.add(navButtonPanel); + + add(BorderLayout.PAGE_END, buttonPanel); + add(BorderLayout.CENTER, scrollPane); + } + + /** + * Move the browser to the next file. + */ + public void moveNext() { + boolean res = loadedFiles.right(); + if (!res) { + SimpleDialogs.showMessage(this, "Already There", "No next file. Already at the last one."); + return; + } + + loadFile(loadedFiles.item()); + } + + /** + * Move the browser to the last file. + */ + public void moveLast() { + if (loadedFiles.atEnd()) { + SimpleDialogs.showMessage(this, "Already There", "Already at the last file"); + return; + } + + loadedFiles.last(); + + loadFile(loadedFiles.item()); + } + + /** + * Move the browser to the previous file. + */ + public void movePrevious() { + boolean res = loadedFiles.left(); + if (!res) { + SimpleDialogs.showMessage(this, "Already There", "No previous file. Already at the first one."); + return; + } + + loadFile(loadedFiles.item()); + } + + /** + * Move the browser to the first file. + */ + public void moveFirst() { + if (loadedFiles.position() == 0) { + SimpleDialogs.showMessage(this, "Already There", "Already at the first file"); + return; + } + + loadedFiles.first(); + + loadFile(loadedFiles.item()); + } + + /** + * Opens a directory, populating the list of files. + * @param dir The directory to open. + * + * @throws DirectoryExpected The argument must be a directory. + */ + public void openDirectory(File dir) { + if (!dir.isDirectory()) + throw new DirectoryExpected(dir.getAbsolutePath()); + + dirPath = dir.getAbsolutePath(); + dirName = dir.getName(); + + loadedFiles = new SingleTape<>(); + + // NOTE: Currently; ignores sub-directories. These should probably be handled in + // some way (flag/dialog box?) + for (File fle : dir.listFiles()) { + if (fle.isDirectory()) + continue; // See above + + // We don't handle non-html file types for now. + if (fle.getName().endsWith(".htm") || fle.getName().endsWith(".html")) { + loadedFiles.append(fle); + } else { + System.err.printf("WARN: Ignoring non-HTML file '%s' in directory '%s' (%s)", fle.getName(), dirName, + dirPath); + } + } + + loadedFiles.first(); + + File curFile = loadedFiles.item(); + loadFile(curFile); + } + + private void loadFile(File curFile) { + try { + contentPane.setPage(curFile.toURI().toURL()); + + String msg = String.format("Firmal Browser (Browsing: %s) - %s - %d of %d", dirPath, curFile.getName(), + loadedFiles.position(), loadedFiles.size()); + root.setTitle(msg); + } catch (IOException ioex) { + String msg = String.format("Couldn't load file '%s' from directory '%s' because %s", curFile, dirName, + ioex.getMessage()); + + SimpleDialogs.showError(this, "Error loading File", msg); + + ioex.printStackTrace(); + } + } +} diff --git a/firmal/src/main/java/bjc/firmal/FirmalFrame.java b/firmal/src/main/java/bjc/firmal/FirmalFrame.java new file mode 100644 index 0000000..fa093ff --- /dev/null +++ b/firmal/src/main/java/bjc/firmal/FirmalFrame.java @@ -0,0 +1,65 @@ +package bjc.firmal; + +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; + +import bjc.utils.gui.SimpleFileChooser; +import bjc.utils.gui.layout.AutosizeLayout; + +/** + * Pane for Firmal. + * @author Ben Culkin + * + */ +public class FirmalFrame { + /** + * Create a new Firmal Pane. + * @return The firmal pane. + */ + public static JFrame createFirmalPane() { + JFrame mainframe = new JFrame("Firmal Browser"); + mainframe.setLayout(new AutosizeLayout()); + + FirmalBrowserPanel browser = new FirmalBrowserPanel(mainframe); + + JMenuBar menuBar = new JMenuBar(); + + JMenu fileMenu = new JMenu("File"); + + JMenuItem openItem = new JMenuItem("Open..."); + openItem.addActionListener((ev) -> { + File dir = SimpleFileChooser.pickDirectory(mainframe, "Pick Directory to Browse..."); + + // Didn't pick a directory + if (dir == null) return; + + browser.openDirectory(dir); + }); + openItem.setMnemonic(KeyEvent.VK_O); + openItem.setAccelerator(KeyStroke.getKeyStroke("control O")); + + fileMenu.add(openItem); + + menuBar.add(fileMenu); + + mainframe.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent mev) { + if (mev.getButton() == 4) browser.moveNext(); + if (mev.getButton() == 5) browser.movePrevious(); + } + }); + mainframe.setJMenuBar(menuBar); + mainframe.add(browser); + + return mainframe; + } +} diff --git a/firmal/src/main/java/bjc/firmal/FirmalPane.java b/firmal/src/main/java/bjc/firmal/FirmalPane.java deleted file mode 100644 index 33c125f..0000000 --- a/firmal/src/main/java/bjc/firmal/FirmalPane.java +++ /dev/null @@ -1,65 +0,0 @@ -package bjc.firmal; - -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.io.File; - -import javax.swing.JFrame; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.KeyStroke; - -import bjc.utils.gui.SimpleFileChooser; -import bjc.utils.gui.layout.AutosizeLayout; - -/** - * Pane for Firmal. - * @author Ben Culkin - * - */ -public class FirmalPane { - /** - * Create a new Firmal Pane. - * @return The firmal pane. - */ - public static JFrame createFirmalPane() { - JFrame mainframe = new JFrame("Firmal Browser"); - mainframe.setLayout(new AutosizeLayout()); - - FirmalBrowser browser = new FirmalBrowser(mainframe); - - JMenuBar menuBar = new JMenuBar(); - - JMenu fileMenu = new JMenu("File"); - - JMenuItem openItem = new JMenuItem("Open..."); - openItem.addActionListener((ev) -> { - File dir = SimpleFileChooser.pickDirectory(mainframe, "Pick Directory to Browse..."); - - // Didn't pick a directory - if (dir == null) return; - - browser.openDirectory(dir); - }); - openItem.setMnemonic(KeyEvent.VK_O); - openItem.setAccelerator(KeyStroke.getKeyStroke("control O")); - - fileMenu.add(openItem); - - menuBar.add(fileMenu); - - mainframe.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent mev) { - if (mev.getButton() == 4) browser.moveNext(); - if (mev.getButton() == 5) browser.movePrevious(); - } - }); - mainframe.setJMenuBar(menuBar); - mainframe.add(browser); - - return mainframe; - } -} -- cgit v1.2.3