Package org.jmule.ui.swing.versionchecker

Source Code of org.jmule.ui.swing.versionchecker.VersionChecker

/*
*  JMule - Java file sharing client
*  Copyright (C) 2007-2008 JMule team ( jmule@jmule.org / http://jmule.org )
*
*  Any parts of this program derived from other projects, or contributed
*  by third-party developers are copyrighted by their respective authors.
*
*  This program is free software; you can redistribute it and/or
*  modify it under the terms of the GNU General Public License
*  as published by the Free Software Foundation; either version 2
*  of the License, or (at your option) any later version.
*
*  This program 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 General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*
*/
package org.jmule.ui.swing.versionchecker;

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;

import org.jmule.core.JMConstants;
import org.jmule.ui.localizer.Localizer;
import org.jmule.ui.swing.BrowserLauncher;
import org.jmule.ui.swing.SwingPreferences;
import org.jmule.updater.JMUpdater;

/**
*
* Created on Oct 11, 2008
* @author javajox
* @version $Revision: 1.3 $
* Last changed by $Author: javajox $ on $Date: 2010/01/13 16:05:51 $
*/
public class VersionChecker extends JDialog {

  private JLabel jmule_version_label = new JLabel("JMule version");
  private JLabel available_version_label = new JLabel("Available version");
  private JLabel last_update_label = new JLabel("Last update");
  private JScrollPane changelog_scroll_panel = new JScrollPane();
  private JLabel available_version_value = new JLabel();
  private JCheckBox check_for_update_checkbox = new JCheckBox("Check for updates at startup");
  private JButton ok_button = new JButton("OK");
  private JLabel last_update_value = new JLabel();
  private JLabel jmule_version_value = new JLabel(JMConstants.JMULE_FULL_NAME);
  private JEditorPane changelog_editor_panel = new JEditorPane();
  private JLabel download_new_version_label = new JLabel();
  private JFrame parent;
 
  private JMUpdater jmule_updater = JMUpdater.getInstance();
  private SwingPreferences _pref = SwingPreferences.getSingleton();
 
  private Font dialog_font = new java.awt.Font("Dialog", 1, 13);
 
  public VersionChecker(JFrame parent) {
    super(parent, "Version checker", true);
    try {
      jmule_updater.checkForUpdates();
    }catch(Throwable t) {
      JOptionPane.showMessageDialog(this, "An error occured", "Error",JOptionPane.ERROR_MESSAGE);
      this.setVisible(false);
    }
    this.parent = parent;
    init();
    if(jmule_updater.isNewVersionAvailable()) {
      available_version_value.setForeground(new Color(0x24bb00));
      jmule_version_value.setForeground(Color.RED);
      available_version_value.setText(jmule_updater.getVersion());
      download_new_version_label.setText("Download new version");
      changelog_editor_panel.setEnabled(true);
      changelog_editor_panel.setFont(new Font("Courir", Font.PLAIN, 12));
      changelog_editor_panel.setText(jmule_updater.getChangeLog());
     
      download_new_version_label.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent event) {
           BrowserLauncher.openURL(JMConstants.JMULE_DOWNLOAD_PAGE);
         }
         public void mouseEntered(MouseEvent event) {
           download_new_version_label.setForeground(Color.BLUE);
           setCursor( Cursor.getPredefinedCursor( Cursor.HAND_CURSOR ) );
         }
         public void mouseExited(MouseEvent event) {
           download_new_version_label.setForeground(Color.BLACK);
           setCursor( Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR ) );
         }
      });
     
    } else {
      download_new_version_label.setText("No new version available");
    }
    long check_time = jmule_updater.getLastUpdateTime();
    if (check_time != 0) {
      Calendar calendar = new GregorianCalendar();
      calendar.setTimeInMillis(check_time);
      String upate_date = format(calendar.get(Calendar.DAY_OF_MONTH)) + "." +format(calendar.get(Calendar.MONTH) + 1) +"."+ format(calendar.get(Calendar.YEAR));
      upate_date += "  "+format(calendar.get(Calendar.HOUR_OF_DAY)) + ":"+format(calendar.get(Calendar.MINUTE))+":"+format(calendar.get(Calendar.SECOND));
      last_update_value.setText(upate_date);
    }
  }
 
  private void init() {
    check_for_update_checkbox.setSelected(_pref.isCheckForUpdatesAtStartup());
    GridBagLayout thisLayout = new GridBagLayout();
    thisLayout.rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1};
    thisLayout.rowHeights = new int[] {17, 20, 20, 20, 29, 175, 7};
    thisLayout.columnWeights = new double[] {0.0, 0.0, 0.0, 0.1, 0.0};
    thisLayout.columnWidths = new int[] {7, 158, 18, 7, 7};
    getContentPane().setLayout(thisLayout);
    getContentPane().add(jmule_version_label, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
        getContentPane().add(available_version_label, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    getContentPane().add(last_update_label, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    getContentPane().add(download_new_version_label, new GridBagConstraints(1, 4, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
        getContentPane().add(changelog_scroll_panel, new GridBagConstraints(1, 5, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0));
    changelog_scroll_panel.setBorder(BorderFactory.createTitledBorder("Changelog"));
    changelog_scroll_panel.setViewportView(changelog_editor_panel);
        getContentPane().add(jmule_version_value, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
      getContentPane().add(available_version_value, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    getContentPane().add(last_update_value, new GridBagConstraints(3, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    getContentPane().add(check_for_update_checkbox, new GridBagConstraints(1, 6, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    getContentPane().add(ok_button, new GridBagConstraints(3, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 50, 0, 0), 0, 0));
    changelog_editor_panel.setEditable(false);
    changelog_editor_panel.setEnabled(false);
    download_new_version_label.setHorizontalAlignment(SwingConstants.CENTER);
    jmule_version_value.setFont(dialog_font);
    jmule_version_value.setHorizontalAlignment(SwingConstants.LEFT);
    available_version_value.setFont(dialog_font);
    available_version_value.setHorizontalAlignment(SwingConstants.LEFT);
    last_update_value.setFont(dialog_font);
    last_update_value.setHorizontalAlignment(SwingConstants.LEFT);
    ok_button.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent event) { 
          _pref.setCheckForUpdatesAtStartup(check_for_update_checkbox.isSelected());
            setVisible(false);   
       }
    });
    this.setSize(380, 357);
  }
 
  private String format(int value) {
    return value<10 ? "0"+value : value+"";
 
}
TOP

Related Classes of org.jmule.ui.swing.versionchecker.VersionChecker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.