summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/gui/awt
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/gui/awt')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gui/awt/ExtensionFileFilter.java37
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gui/awt/SimpleFileDialog.java58
2 files changed, 95 insertions, 0 deletions
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<String> 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<String> 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);
+ }
+}