From d8b3b3c5e4441cecec98c06a36fc81570008c888 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Tue, 26 Jan 2016 11:32:41 -0500 Subject: Updates to various things, and addition of a graph class. --- .../bjc/utils/gui/awt/ExtensionFileFilter.java | 37 ++++++++++++++ .../java/bjc/utils/gui/awt/SimpleFileDialog.java | 58 ++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 BJC-Utils2/src/main/java/bjc/utils/gui/awt/ExtensionFileFilter.java create mode 100644 BJC-Utils2/src/main/java/bjc/utils/gui/awt/SimpleFileDialog.java (limited to 'BJC-Utils2/src/main/java/bjc/utils/gui/awt') diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/awt/ExtensionFileFilter.java b/BJC-Utils2/src/main/java/bjc/utils/gui/awt/ExtensionFileFilter.java new file mode 100644 index 0000000..fb857eb --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/gui/awt/ExtensionFileFilter.java @@ -0,0 +1,37 @@ +package bjc.utils.gui.awt; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.ArrayList; +import java.util.List; + +import bjc.utils.funcdata.FunctionalList; + +public class ExtensionFileFilter implements FilenameFilter { + private FunctionalList extensions; + + /** + * Create a new filter only showing files with the specified extensions. + * @param exts The extensions to show in this filter. + */ + public ExtensionFileFilter(String... exts) { + extensions = new FunctionalList<>(new ArrayList<>(exts.length)); + + for (String ext : exts) { + extensions.add(ext); + } + } + + /** + * Create a new filter only showing files with the specified extensions. + * @param exts The extensions to show in this filter. + */ + public ExtensionFileFilter(List exts) { + extensions = new FunctionalList<>(exts); + } + + @Override + public boolean accept(File dir, String name) { + return extensions.anyMatch(name::endsWith); + } +} \ No newline at end of file diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/awt/SimpleFileDialog.java b/BJC-Utils2/src/main/java/bjc/utils/gui/awt/SimpleFileDialog.java new file mode 100644 index 0000000..1d14903 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/gui/awt/SimpleFileDialog.java @@ -0,0 +1,58 @@ +package bjc.utils.gui.awt; + +import java.awt.FileDialog; +import java.awt.Frame; +import java.io.File; +import java.io.FilenameFilter; + +import bjc.utils.gui.SimpleDialogs; + +public class SimpleFileDialog { + public static File getOpenFile(Frame par, String title, + String... extensions) { + FileDialog fd = new FileDialog(par, title, FileDialog.LOAD); + + if (extensions != null) { + FilenameFilter filter = new ExtensionFileFilter(extensions); + fd.setFilenameFilter(filter); + } + + fd.setVisible(true); + + while (fd.getFile() == null) { + SimpleDialogs.showError(par, "File I/O Error", + "Please choose a file to open."); + fd.setVisible(true); + } + + return fd.getFiles()[0]; + } + + public static File getOpenFile(Frame par, String title) { + return getOpenFile(par, title, (String[]) null); + } + + public static File getSaveFile(Frame par, String title, + String... extensions) { + FileDialog fd = new FileDialog(par, title, FileDialog.SAVE); + + if (extensions != null) { + FilenameFilter filter = new ExtensionFileFilter(extensions); + fd.setFilenameFilter(filter); + } + + fd.setVisible(true); + + while (fd.getFile() == null) { + SimpleDialogs.showError(par, "File I/O Error", + "Please choose a file to save to."); + fd.setVisible(true); + } + + return fd.getFiles()[0]; + } + + public static File getSaveFile(Frame par, String title) { + return getSaveFile(par, title, (String[]) null); + } +} -- cgit v1.2.3