/* * $Id$ * * Copyright (c) 2005 by Rodney Kinney * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.configure; import java.awt.Frame; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JOptionPane; import VASSAL.build.GameModule; import VASSAL.build.module.documentation.HelpFile; import VASSAL.tools.ErrorDialog; import VASSAL.tools.ZipUpdater; import VASSAL.tools.filechooser.FileChooser; public class ModuleUpdaterDialog extends JDialog { private static final long serialVersionUID = 1L; public ModuleUpdaterDialog(Frame owner) throws HeadlessException { super(owner, false); setTitle("Module Updater"); setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); final FileConfigurer fileConfig = new FileConfigurer(null, "File containing older version: "); add(fileConfig.getControls()); Box b = Box.createHorizontalBox(); final JButton saveButton = new JButton("Create Updater"); saveButton.setEnabled(false); fileConfig.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { saveButton.setEnabled(fileConfig.getValue() != null); } }); saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final FileChooser fc = GameModule.getGameModule().getFileChooser(); if (fc.showSaveDialog(getOwner()) != FileChooser.APPROVE_OPTION) return; final File output = fc.getSelectedFile(); ZipUpdater updater = null; try { updater = new ZipUpdater((File) fileConfig.getValue()); updater.createUpdater( new File(GameModule.getGameModule().getArchiveWriter().getName()), output ); } // FIXME: review error message catch (IOException e1) { String msg = e1.getMessage(); if (msg == null) { msg = "Unable to create updater."; } JOptionPane.showMessageDialog(ModuleUpdaterDialog.this, msg, "Error writing updater", JOptionPane.ERROR_MESSAGE); } } }); JButton cancelButton = new JButton("Close"); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); JButton helpButton = new JButton("Help"); add(b); HelpFile hf = null; try { hf = new HelpFile(null, new File(new File( VASSAL.build.module.Documentation.getDocumentationBaseDir(), "ReferenceManual"), "ModuleUpdater.htm")); } catch (MalformedURLException ex) { ErrorDialog.bug(ex); } helpButton.addActionListener(new ShowHelpAction(hf.getContents(), null)); b.add(saveButton); b.add(helpButton); b.add(cancelButton); add(b); pack(); setLocationRelativeTo(getOwner()); } }