/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * CheckUpdatesDialog.java
 *
 * Created on Apr 28, 2009, 3:21:43 PM
 */

package org.statcato;

import org.statcato.utils.HelperFunctions;
import org.statcato.file.ExtensionFileFilter;
import org.statcato.file.DownloadFile;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.io.File;

/**
 * A dialog that checks if a new version is available from the Statcato web
 * site.  A download button is shown if a new version is available.  It allows
 * the user to download the latest version by clicking the download button.
 * 
 * @author Margaret Yau
 * @version %I%, %G%
 * @since 1.0
 */
public class CheckUpdatesDialog extends StatcatoDialog {
    String currentVersion;

    /** Creates new form CheckUpdatesDialog */
    public CheckUpdatesDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        this.app = (Statcato)parent;
        initComponents();
        setHelpFile("updates");
        name = "Check for Updates";
        DownloadButton.setVisible(false);
        
        // check for new version
        currentVersion = HelperFunctions.getVersionNumberFromWeb();
        thisVersionLabel.setText("This is Statcato version " +
                Statcato.VERSION + ".");
        if (currentVersion.equals("error")) {
            CurrentVersionLabel.setText("Error obtaining the current " +
                    "number from web.  Check network connection.");
        }
        else if (currentVersion.equals(Statcato.VERSION)) {
            // this is the current version
            CurrentVersionLabel.setText("No new updates.");
        }
        else if (currentVersion.compareTo(Statcato.VERSION) < 0) {
            // this is a pre-release version 
            CurrentVersionLabel.setText("No new updates - pre-release.");
        }
        else {
            // new version available
            CurrentVersionLabel.setText(
                    "New version " + currentVersion +
                    " is available.
" + " Visit " + "http://www.statcato.org to obtain the latest" + " version."); DownloadButton.setVisible(true); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { thisVersionLabel = new javax.swing.JLabel(); ResultPanel = new javax.swing.JPanel(); CurrentVersionLabel = new javax.swing.JLabel(); DownloadButton = new javax.swing.JButton(); OKButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Statcato Updates"); thisVersionLabel.setText("This is Statcato version"); ResultPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("")); CurrentVersionLabel.setText("New version"); DownloadButton.setText("Download the Latest Version"); DownloadButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { DownloadButtonActionPerformed(evt); } }); javax.swing.GroupLayout ResultPanelLayout = new javax.swing.GroupLayout(ResultPanel); ResultPanel.setLayout(ResultPanelLayout); ResultPanelLayout.setHorizontalGroup( ResultPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ResultPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(ResultPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(CurrentVersionLabel) .addComponent(DownloadButton)) .addContainerGap(79, Short.MAX_VALUE)) ); ResultPanelLayout.setVerticalGroup( ResultPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ResultPanelLayout.createSequentialGroup() .addGap(19, 19, 19) .addComponent(CurrentVersionLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 42, Short.MAX_VALUE) .addComponent(DownloadButton) .addContainerGap()) ); OKButton.setText("OK"); OKButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { OKButtonActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(21, 21, 21) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(OKButton) .addComponent(ResultPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(thisVersionLabel)) .addContainerGap(19, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(67, 67, 67) .addComponent(thisVersionLabel) .addGap(18, 18, 18) .addComponent(ResultPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE) .addComponent(OKButton) .addGap(23, 23, 23)) ); pack(); }// //GEN-END:initComponents private void DownloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DownloadButtonActionPerformed // download latest version from web String fileName = "statcato_" + currentVersion + ".zip"; JFileChooser fc = new JFileChooser(); fc.setSelectedFile(new File(fileName)); ExtensionFileFilter ZipFilter = new ExtensionFileFilter("Zip (*.zip)", "zip"); fc.addChoosableFileFilter(ZipFilter); fc.setAcceptAllFileFilterUsed(false); int returnValue = fc.showSaveDialog(this); if (returnValue == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String path = file.getPath(); if (file.exists()) { // file exists already Object[] options = {"Overwrite file", "Cancel"}; int choice = JOptionPane.showOptionDialog(this, "The specified file already exists. Overwrite existing file?", "Overwrite file?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]); if (choice != 0) // don't overwrite return; } // download file DownloadFile d = new DownloadFile( "http://www.statcato.org/versions/statcato_" + currentVersion + ".zip"); int totalDownload = d.download(path); if (totalDownload <= 0) { JOptionPane.showMessageDialog(this, "Download failed.", "Download error", JOptionPane.ERROR_MESSAGE); } else { JOptionPane.showMessageDialog(this, "The latest version is downloaded to " + path, "Download complete", JOptionPane.PLAIN_MESSAGE); } } }//GEN-LAST:event_DownloadButtonActionPerformed private void OKButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OKButtonActionPerformed dispose(); }//GEN-LAST:event_OKButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel CurrentVersionLabel; private javax.swing.JButton DownloadButton; private javax.swing.JButton OKButton; private javax.swing.JPanel ResultPanel; private javax.swing.JLabel thisVersionLabel; // End of variables declaration//GEN-END:variables }

Ads help maintain this website.