Added filename filters to file chooser dialogs
diff --git a/java/com/tigervnc/vncviewer/Dialog.java b/java/com/tigervnc/vncviewer/Dialog.java
index 4419159..6204ba1 100644
--- a/java/com/tigervnc/vncviewer/Dialog.java
+++ b/java/com/tigervnc/vncviewer/Dialog.java
@@ -34,6 +34,7 @@
import java.io.File;
import javax.swing.*;
import javax.swing.border.*;
+import javax.swing.filechooser.*;
import javax.swing.text.*;
class Dialog extends JDialog implements ActionListener,
@@ -137,17 +138,29 @@
return width + gap;
}
- public static File showChooser(String title, File defFile, Container c) {
+ public static File showChooser(String title, File defFile,
+ Container c, FileNameExtensionFilter f) {
JFileChooser fc = new JFileChooser(defFile);
fc.setDialogTitle(title);
fc.setApproveButtonText("OK \u21B5");
fc.setFileHidingEnabled(false);
+ if (f != null)
+ fc.setFileFilter(f);
if (fc.showOpenDialog(c) == JFileChooser.APPROVE_OPTION)
return fc.getSelectedFile();
else
return null;
}
+ public static File showChooser(String title, File defFile, Container c) {
+ return showChooser(title, defFile, c, null);
+ }
+
+ protected File showChooser(String title, File defFile,
+ FileNameExtensionFilter f) {
+ return showChooser(title, defFile, this, f);
+ }
+
protected File showChooser(String title, File defFile) {
return showChooser(title, defFile, this);
}
diff --git a/java/com/tigervnc/vncviewer/F8Menu.java b/java/com/tigervnc/vncviewer/F8Menu.java
index 6aadb2d..d7f9e48 100644
--- a/java/com/tigervnc/vncviewer/F8Menu.java
+++ b/java/com/tigervnc/vncviewer/F8Menu.java
@@ -23,6 +23,7 @@
import java.awt.Cursor;
import java.awt.event.*;
import java.io.File;
+import javax.swing.filechooser.*;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFrame;
@@ -139,7 +140,9 @@
File dflt = new File(FileUtils.getVncHomeDir().concat("default.tigervnc"));
if (!dflt.exists() || !dflt.isFile())
dflt = new File(FileUtils.getVncHomeDir());
- File f = Dialog.showChooser(title, dflt, this);
+ FileNameExtensionFilter filter =
+ new FileNameExtensionFilter("TigerVNC configuration (*.tigervnc)", "tigervnc");
+ File f = Dialog.showChooser(title, dflt, this, filter);
while (f != null && f.exists() && f.isFile()) {
String msg = f.getAbsolutePath();
msg = msg.concat(" already exists. Do you want to overwrite?");
@@ -154,7 +157,7 @@
if (op.getValue() == options[0])
break;
else
- f = Dialog.showChooser(title, f, this);
+ f = Dialog.showChooser(title, f, this, filter);
}
if (f != null && (!f.exists() || f.canWrite()))
saveViewerParameters(f.getAbsolutePath(), vncServerName.getValue());
diff --git a/java/com/tigervnc/vncviewer/OptionsDialog.java b/java/com/tigervnc/vncviewer/OptionsDialog.java
index 8d49a2e..4bcb7d8 100644
--- a/java/com/tigervnc/vncviewer/OptionsDialog.java
+++ b/java/com/tigervnc/vncviewer/OptionsDialog.java
@@ -27,6 +27,7 @@
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.border.*;
+import javax.swing.filechooser.*;
import javax.swing.UIManager.*;
import javax.swing.text.*;
import java.util.*;
@@ -779,7 +780,9 @@
public void actionPerformed(ActionEvent e) {
JComponent c = ((JButton)e.getSource()).getRootPane();
File dflt = new File(CSecurityTLS.X509CA.getValueStr());
- File f = showChooser("Path to X509 CA certificate", dflt, c);
+ FileNameExtensionFilter filter =
+ new FileNameExtensionFilter("X.509 certificate", "crt", "cer", "pem");
+ File f = showChooser("Path to X509 CA certificate", dflt, c, filter);
if (f != null && f.exists() && f.canRead())
caInput.setText(f.getAbsolutePath());
}
@@ -791,7 +794,9 @@
public void actionPerformed(ActionEvent e) {
JComponent c = ((JButton)e.getSource()).getRootPane();
File dflt = new File(CSecurityTLS.X509CRL.getValueStr());
- File f = showChooser("Path to X509 CRL file", dflt, c);
+ FileNameExtensionFilter filter =
+ new FileNameExtensionFilter("X.509 CRL", "crl");
+ File f = showChooser("Path to X509 CRL file", dflt, c, filter);
if (f != null && f.exists() && f.canRead())
crlInput.setText(f.getAbsolutePath());
}
diff --git a/java/com/tigervnc/vncviewer/ServerDialog.java b/java/com/tigervnc/vncviewer/ServerDialog.java
index 338e626..4b3f26b 100644
--- a/java/com/tigervnc/vncviewer/ServerDialog.java
+++ b/java/com/tigervnc/vncviewer/ServerDialog.java
@@ -24,6 +24,7 @@
import java.io.File;
import javax.swing.*;
import javax.swing.border.*;
+import javax.swing.filechooser.*;
import javax.swing.WindowConstants.*;
import java.util.*;
@@ -221,7 +222,9 @@
private void handleLoad() {
String title = "Select a TigerVNC configuration file";
File dflt = new File(FileUtils.getVncHomeDir().concat("default.tigervnc"));
- File f = showChooser(title, dflt);
+ FileNameExtensionFilter filter =
+ new FileNameExtensionFilter("TigerVNC configuration (*.tigervnc)", "tigervnc");
+ File f = showChooser(title, dflt, filter);
if (f != null && f.exists() && f.canRead())
loadViewerParameters(f.getAbsolutePath());
}
@@ -231,7 +234,9 @@
File dflt = new File(FileUtils.getVncHomeDir().concat("default.tigervnc"));
if (!dflt.exists() || !dflt.isFile())
dflt = new File(FileUtils.getVncHomeDir());
- File f = showChooser(title, dflt);
+ FileNameExtensionFilter filter =
+ new FileNameExtensionFilter("TigerVNC configuration (*.tigervnc)", "tigervnc");
+ File f = showChooser(title, dflt, filter);
while (f != null && f.exists() && f.isFile()) {
String msg = f.getAbsolutePath();
msg = msg.concat(" already exists. Do you want to overwrite?");
@@ -246,7 +251,7 @@
if (op.getValue() == options[0])
break;
else
- f = showChooser(title, f);
+ f = showChooser(title, f, filter);
}
if (f != null && (!f.exists() || f.canWrite()))
saveViewerParameters(f.getAbsolutePath(), (String)server.getSelectedItem());