mirror of
https://github.com/AppleCommander/AppleCommander.git
synced 2025-01-03 10:29:19 +00:00
Add Swing file open dialog
This commit is contained in:
parent
7c9b7f1caa
commit
77ffc781c5
@ -88,6 +88,7 @@ public class Disk {
|
|||||||
public static final int APPLE_32MB_HARDDISK = 33553920; // short one block!
|
public static final int APPLE_32MB_HARDDISK = 33553920; // short one block!
|
||||||
|
|
||||||
private static FilenameFilter[] filenameFilters;
|
private static FilenameFilter[] filenameFilters;
|
||||||
|
private static String[] allFileExtensions = null;
|
||||||
private TextBundle textBundle = StorageBundle.getInstance();
|
private TextBundle textBundle = StorageBundle.getInstance();
|
||||||
private String filename;
|
private String filename;
|
||||||
private boolean newImage = false;
|
private boolean newImage = false;
|
||||||
@ -106,6 +107,17 @@ public class Disk {
|
|||||||
return filenameFilters;
|
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.
|
* 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$
|
new FilenameFilter(textBundle.get("Disk.AllFiles"), //$NON-NLS-1$
|
||||||
"*.*") //$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$
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -23,18 +23,30 @@ import java.awt.BorderLayout;
|
|||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JToolBar;
|
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.UiBundle;
|
||||||
import com.webcodepro.applecommander.ui.UserPreferences;
|
import com.webcodepro.applecommander.ui.UserPreferences;
|
||||||
import com.webcodepro.applecommander.util.TextBundle;
|
import com.webcodepro.applecommander.util.TextBundle;
|
||||||
|
|
||||||
public class SwingAppleCommander extends JFrame implements ActionListener {
|
public class SwingAppleCommander extends JFrame implements ActionListener {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -3302293994498495537L;
|
||||||
private UserPreferences userPreferences = UserPreferences.getInstance();
|
private UserPreferences userPreferences = UserPreferences.getInstance();
|
||||||
private TextBundle textBundle = UiBundle.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.setToolTipText(textBundle.get("SwtAppleCommander.OpenDiskImageTooltip")); //$NON-NLS-1$
|
||||||
aButton.setHorizontalTextPosition(JLabel.CENTER);
|
aButton.setHorizontalTextPosition(JLabel.CENTER);
|
||||||
aButton.setVerticalTextPosition(JLabel.BOTTOM);
|
aButton.setVerticalTextPosition(JLabel.BOTTOM);
|
||||||
|
aButton.addActionListener(this);
|
||||||
toolBar.add(aButton);
|
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$
|
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.setToolTipText(textBundle.get("SwtAppleCommander.CreateDiskImageTooltip")); //$NON-NLS-1$
|
||||||
aButton2.setHorizontalTextPosition(JLabel.CENTER);
|
aButton2.setHorizontalTextPosition(JLabel.CENTER);
|
||||||
aButton2.setVerticalTextPosition(JLabel.BOTTOM);
|
aButton2.setVerticalTextPosition(JLabel.BOTTOM);
|
||||||
|
aButton2.addActionListener(this);
|
||||||
toolBar.add(aButton2);
|
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$
|
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.setToolTipText(textBundle.get("SwtAppleCommander.CompareDiskImageTooltip")); //$NON-NLS-1$
|
||||||
aButton3.setHorizontalTextPosition(JLabel.CENTER);
|
aButton3.setHorizontalTextPosition(JLabel.CENTER);
|
||||||
aButton3.setVerticalTextPosition(JLabel.BOTTOM);
|
aButton3.setVerticalTextPosition(JLabel.BOTTOM);
|
||||||
|
aButton3.addActionListener(this);
|
||||||
toolBar.add(aButton3);
|
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$
|
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.setToolTipText(textBundle.get("SwtAppleCommander.AboutTooltip")); //$NON-NLS-1$
|
||||||
aButton4.setHorizontalTextPosition(JLabel.CENTER);
|
aButton4.setHorizontalTextPosition(JLabel.CENTER);
|
||||||
aButton4.setVerticalTextPosition(JLabel.BOTTOM);
|
aButton4.setVerticalTextPosition(JLabel.BOTTOM);
|
||||||
|
aButton4.addActionListener(this);
|
||||||
toolBar.add(aButton4);
|
toolBar.add(aButton4);
|
||||||
SwingAppleCommander application = new SwingAppleCommander();
|
SwingAppleCommander application = new SwingAppleCommander();
|
||||||
application.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/com/webcodepro/applecommander/ui/images/diskicon.gif"))); //$NON-NLS-1$
|
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.pack();
|
||||||
application.setVisible(true);
|
application.setVisible(true);
|
||||||
UserPreferences.getInstance().save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -91,7 +106,56 @@ public class SwingAppleCommander extends JFrame implements ActionListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user