/* * StartUpDialog.java * * Created on Jan 6, 2010, 10:46:02 PM */ package mekhq.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FilenameFilter; import java.util.ResourceBundle; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JFileChooser; import javax.swing.JFrame; import megamek.common.util.EncodeControl; import mekhq.MekHQ; import mekhq.Utilities; import mekhq.gui.dialog.DataLoadingDialog; /** * * @author Jay */ public class StartUpGUI extends javax.swing.JPanel { private static final long serialVersionUID = 8376874926997734492L; MekHQ app; JFrame frame; File lastSave; Image imgSplash; public StartUpGUI(MekHQ app) { this.app = app; lastSave = Utilities.lastFileModified(MekHQ.CAMPAIGN_DIRECTORY, new FilenameFilter() { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".cpnx") || name.toLowerCase().endsWith(".xml"); } }); initComponents(); } private void initComponents() { frame = new JFrame("MekHQ"); ResourceBundle resourceMap = ResourceBundle.getBundle("mekhq.resources.StartUpDialog", new EncodeControl()); //$NON-NLS-1$ btnNewGame = new javax.swing.JButton(resourceMap.getString("btnNewGame.text")); btnNewGame.setMinimumSize(new Dimension(200, 25)); btnNewGame.setPreferredSize(new Dimension(200, 25)); btnNewGame.setMaximumSize(new Dimension(200, 25)); btnNewGame.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newCampaign(); } }); btnLoadGame = new javax.swing.JButton(resourceMap.getString("btnLoadGame.text")); btnLoadGame.setMinimumSize(new Dimension(200, 25)); btnLoadGame.setPreferredSize(new Dimension(200, 25)); btnLoadGame.setMaximumSize(new Dimension(200, 25)); btnLoadGame.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { File f = selectLoadCampaignFile(); if(null != f) { loadCampaign(f); } } }); btnLastSave = new javax.swing.JButton(resourceMap.getString("btnLastSave.text")); btnLastSave.setMinimumSize(new Dimension(200, 25)); btnLastSave.setPreferredSize(new Dimension(200, 25)); btnLastSave.setMaximumSize(new Dimension(200, 25)); if(null == lastSave) { btnLastSave.setEnabled(false); } btnLastSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadCampaign(lastSave); } }); btnQuit = new javax.swing.JButton(resourceMap.getString("btnQuit.text")); btnQuit.setMinimumSize(new Dimension(200, 25)); btnQuit.setPreferredSize(new Dimension(200, 25)); btnQuit.setMaximumSize(new Dimension(200, 25)); btnQuit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } }); // initialize splash image imgSplash = getToolkit().getImage("data/images/misc/mekhq-splash.png"); //$NON-NLS-1$ // wait for splash image to load completely MediaTracker tracker = new MediaTracker(frame); tracker.addImage(imgSplash, 0); try { tracker.waitForID(0); } catch (InterruptedException e) { // really should never come here } setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); add(Box.createRigidArea(new Dimension(0,5))); add(btnNewGame); add(Box.createRigidArea(new Dimension(0,5))); add(btnLoadGame); add(Box.createRigidArea(new Dimension(0,5))); add(btnLastSave); add(Box.createRigidArea(new Dimension(0,5))); add(btnQuit); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); frame.setSize(500, 350); frame.setResizable(false); // Determine the new location of the window int w = frame.getSize().width; int h = frame.getSize().height; int x = (dim.width-w)/2; int y = (dim.height-h)/2; // Move the window frame.setLocation(x, y); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(this, BorderLayout.CENTER); frame.validate(); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { frame.setVisible(false); System.exit(0); } }); frame.setVisible(true); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(imgSplash, 1, 1, null); } private void newCampaign() { loadCampaign(null); } private void loadCampaign(File f) { DataLoadingDialog dataLoadingDialog = new DataLoadingDialog(app, frame, f); dataLoadingDialog.setVisible(true); } private File selectLoadCampaignFile() { JFileChooser loadCpgn = new JFileChooser(MekHQ.CAMPAIGN_DIRECTORY); loadCpgn.setDialogTitle("Load Campaign"); loadCpgn.setFileFilter(new CampaignFileFilter()); int returnVal = loadCpgn.showOpenDialog(frame); if ((returnVal != JFileChooser.APPROVE_OPTION) || (loadCpgn.getSelectedFile() == null)) { // I want a file, y'know! return null; } File file = loadCpgn.getSelectedFile(); return file; } private javax.swing.JButton btnNewGame; private javax.swing.JButton btnLoadGame; private javax.swing.JButton btnLastSave; private javax.swing.JButton btnQuit; }