Add Swing file open dialog

This commit is contained in:
2008-06-08 03:02:53 +00:00
parent 7c9b7f1caa
commit 77ffc781c5
3 changed files with 124 additions and 2 deletions

View File

@ -88,6 +88,7 @@ public class Disk {
public static final int APPLE_32MB_HARDDISK = 33553920; // short one block!
private static FilenameFilter[] filenameFilters;
private static String[] allFileExtensions = null;
private TextBundle textBundle = StorageBundle.getInstance();
private String filename;
private boolean newImage = false;
@ -106,6 +107,17 @@ public class Disk {
return filenameFilters;
}
/**
* Get the supported file extensions supported by the Disk interface.
* This is used by the Swing UI to populate the open file dialog box.
*/
public static String[] getAllExtensions() {
if (allFileExtensions == null) {
new Disk();
}
return allFileExtensions;
}
/**
* Constructor for a Disk - used only to generate FilenameFilter objects.
*/
@ -128,6 +140,21 @@ public class Disk {
new FilenameFilter(textBundle.get("Disk.AllFiles"), //$NON-NLS-1$
"*.*") //$NON-NLS-1$
};
allFileExtensions = new String[] {
".do", //$NON-NLS-1$
".dsk", //$NON-NLS-1$
".po", //$NON-NLS-1$
".nib", //$NON-NLS-1$
".2mg", //$NON-NLS-1$
".2img", //$NON-NLS-1$
".hdv", //$NON-NLS-1$
".do.gz", //$NON-NLS-1$
".dsk.gz", //$NON-NLS-1$
".po.gz", //$NON-NLS-1$
".nib.gz", //$NON-NLS-1$
".2mg.gz", //$NON-NLS-1$
".2img.gz" //$NON-NLS-1$
};
}
/**

View File

@ -0,0 +1,31 @@
package com.webcodepro.applecommander.ui.swing;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import com.webcodepro.applecommander.storage.Disk;
import com.webcodepro.applecommander.storage.StorageBundle;
import com.webcodepro.applecommander.util.TextBundle;
public class EmulatorFileFilter extends FileFilter {
private TextBundle textBundle = StorageBundle.getInstance();
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
// if it's *.po, it's ok...
String[] st = Disk.getAllExtensions();
for (int i = 0;i < st.length; i++) {
if (f.getName().endsWith(st[i]))
return true;
}
return false;
}
public String getDescription() {
return textBundle.get("Disk.AllImages");
}
}

View File

@ -23,18 +23,30 @@ import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.filechooser.FileFilter;
import com.webcodepro.applecommander.storage.Disk;
import com.webcodepro.applecommander.storage.FormattedDisk;
import com.webcodepro.applecommander.storage.Disk.FilenameFilter;
import com.webcodepro.applecommander.ui.AppleCommander;
import com.webcodepro.applecommander.ui.UiBundle;
import com.webcodepro.applecommander.ui.UserPreferences;
import com.webcodepro.applecommander.util.TextBundle;
public class SwingAppleCommander extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = -3302293994498495537L;
private UserPreferences userPreferences = UserPreferences.getInstance();
private TextBundle textBundle = UiBundle.getInstance();
@ -54,21 +66,25 @@ public class SwingAppleCommander extends JFrame implements ActionListener {
aButton.setToolTipText(textBundle.get("SwtAppleCommander.OpenDiskImageTooltip")); //$NON-NLS-1$
aButton.setHorizontalTextPosition(JLabel.CENTER);
aButton.setVerticalTextPosition(JLabel.BOTTOM);
aButton.addActionListener(this);
toolBar.add(aButton);
JButton aButton2 = new JButton(textBundle.get("CreateButton"), new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/com/webcodepro/applecommander/ui/images/newdisk.gif")))); //$NON-NLS-1$
aButton2.setToolTipText(textBundle.get("SwtAppleCommander.CreateDiskImageTooltip")); //$NON-NLS-1$
aButton2.setHorizontalTextPosition(JLabel.CENTER);
aButton2.setVerticalTextPosition(JLabel.BOTTOM);
aButton2.addActionListener(this);
toolBar.add(aButton2);
JButton aButton3 = new JButton(textBundle.get("CompareButton"), new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/com/webcodepro/applecommander/ui/images/comparedisks.gif")))); //$NON-NLS-1$
aButton3.setToolTipText(textBundle.get("SwtAppleCommander.CompareDiskImageTooltip")); //$NON-NLS-1$
aButton3.setHorizontalTextPosition(JLabel.CENTER);
aButton3.setVerticalTextPosition(JLabel.BOTTOM);
aButton3.addActionListener(this);
toolBar.add(aButton3);
JButton aButton4 = new JButton(textBundle.get("AboutButton"), new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/com/webcodepro/applecommander/ui/images/about.gif")))); //$NON-NLS-1$
aButton4.setToolTipText(textBundle.get("SwtAppleCommander.AboutTooltip")); //$NON-NLS-1$
aButton4.setHorizontalTextPosition(JLabel.CENTER);
aButton4.setVerticalTextPosition(JLabel.BOTTOM);
aButton4.addActionListener(this);
toolBar.add(aButton4);
SwingAppleCommander application = new SwingAppleCommander();
application.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/com/webcodepro/applecommander/ui/images/diskicon.gif"))); //$NON-NLS-1$
@ -80,7 +96,6 @@ public class SwingAppleCommander extends JFrame implements ActionListener {
application.pack();
application.setVisible(true);
UserPreferences.getInstance().save();
}
/**
@ -91,7 +106,56 @@ public class SwingAppleCommander extends JFrame implements ActionListener {
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals(textBundle.get("AboutButton"))) { //$NON-NLS-1$
showAboutAppleCommander();
} else if (e.getActionCommand().equals(textBundle.get("OpenButton"))) { //$NON-NLS-1$
openFile();
}
}
/**
* Open a file.
*/
protected void openFile() {
JFileChooser jc = new JFileChooser();
jc.setCurrentDirectory(new File(userPreferences.getDiskImageDirectory()));
EmulatorFileFilter ff = new EmulatorFileFilter();
jc.setFileFilter(ff);
int rc = jc.showDialog(this, textBundle.get("Open")); //$NON-NLS-1$
if (rc == 0) {
userPreferences.setDiskImageDirectory(jc.getSelectedFile().getParent());
UserPreferences.getInstance().save();
}
}
/*
fileDialog.setFilterNames(names);
fileDialog.setFilterExtensions(extensions);
fileDialog.setFilterPath(userPreferences.getDiskImageDirectory());
String fullpath = fileDialog.open();
if (fullpath != null) {
userPreferences.setDiskImageDirectory(fileDialog.getFilterPath());
try {
Disk disk = new Disk(fullpath);
FormattedDisk[] formattedDisks = disk.getFormattedDisks();
if (formattedDisks != null) {
DiskWindow window = new DiskWindow(shell, formattedDisks, imageManager);
window.open();
} else {
showUnrecognizedDiskFormatMessage(fullpath);
}
} catch (Exception ignored) {
ignored.printStackTrace();
showUnrecognizedDiskFormatMessage(fullpath);
}
}
*/
public void showAboutAppleCommander() {
JOptionPane.showMessageDialog(null,
textBundle.format("SwtAppleCommander.AboutMessage", //$NON-NLS-1$
new Object[] { AppleCommander.VERSION, textBundle.get("Copyright") }), textBundle.get("SwtAppleCommander.AboutTitle"), //$NON-NLS-1$
JOptionPane.INFORMATION_MESSAGE);
}
}