001 /****************************************************************************** 002 * Copyright (C) MActor Developers. All rights reserved. * 003 * ---------------------------------------------------------------------------* 004 * This file is part of MActor. * 005 * * 006 * MActor is free software; you can redistribute it and/or modify * 007 * it under the terms of the GNU General Public License as published by * 008 * the Free Software Foundation; either version 2 of the License, or * 009 * (at your option) any later version. * 010 * * 011 * MActor is distributed in the hope that it will be useful, * 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 014 * GNU General Public License for more details. * 015 * * 016 * You should have received a copy of the GNU General Public License * 017 * along with MActor; if not, write to the Free Software * 018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * 019 ******************************************************************************/ 020 package org.mactor.ui.gui; 021 022 import java.awt.BorderLayout; 023 import java.awt.Color; 024 import java.awt.Cursor; 025 import java.awt.Frame; 026 import java.awt.event.ActionEvent; 027 import java.awt.event.ActionListener; 028 import java.awt.event.MouseAdapter; 029 import java.awt.event.MouseEvent; 030 import java.net.URL; 031 032 import javax.swing.BorderFactory; 033 import javax.swing.JButton; 034 import javax.swing.JDialog; 035 import javax.swing.JLabel; 036 import javax.swing.JPanel; 037 import javax.swing.SwingUtilities; 038 039 public class VersionDlg extends JDialog { 040 JLabel status = new JLabel(); 041 JLabel link = new JLabel("http://mactor.sourceforge.net"); 042 JButton b = new JButton("Ok"); 043 public VersionDlg(Frame parent) { 044 super(parent); 045 setModal(true); 046 setLayout(new BorderLayout()); 047 setTitle("MActor - Check for new version"); 048 link.setForeground(Color.blue); 049 status.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 050 link.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 10)); 051 add(status, BorderLayout.WEST); 052 add(link, BorderLayout.EAST); 053 // link.setFont(link.getFont().) 054 JPanel bp = new JPanel(); 055 bp.add(b); 056 add(bp, BorderLayout.SOUTH); 057 b.addActionListener(new ActionListener() { 058 public void actionPerformed(ActionEvent arg0) { 059 VersionDlg.this.setVisible(false); 060 } 061 }); 062 link.addMouseListener(new MouseAdapter() { 063 @Override 064 public void mouseClicked(MouseEvent arg0) { 065 try { 066 BrowserUtil.openURL(new URL(link.getText())); 067 } catch (Exception e) { 068 e.printStackTrace();// ignore 069 } 070 } 071 }); 072 pack(); 073 setResizable(false); 074 } 075 public void performCheck() { 076 link.setVisible(false); 077 status.setText("Checking for new version.."); 078 b.setEnabled(false); 079 this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 080 pack(); 081 SwingUtilities.invokeLater(new Runnable() { 082 public void run() { 083 String version = VersionUtil.getVersion(); 084 String newVersion = VersionUtil.getLatestVersion(); 085 if (newVersion == null) { 086 status.setText("Unable to check if a new version is available"); 087 } else if (!version.equals(newVersion)) { 088 status.setText("Version " + newVersion + " is available for download at: "); 089 link.setVisible(true); 090 } else { 091 status.setText("Your version is up to date!"); 092 } 093 b.setEnabled(true); 094 setCursor(Cursor.getDefaultCursor()); 095 validate(); 096 pack(); 097 } 098 }); 099 } 100 }