1
package org.helioviewer.jhv.gui.dialogs;
3
import java.awt.BorderLayout;
4
import java.awt.FlowLayout;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
8
import javax.swing.BorderFactory;
9
import javax.swing.JButton;
10
import javax.swing.JDialog;
11
import javax.swing.JEditorPane;
12
import javax.swing.JPanel;
13
import javax.swing.event.HyperlinkEvent;
14
import javax.swing.event.HyperlinkListener;
16
import org.helioviewer.jhv.JHVGlobals;
17
import org.helioviewer.jhv.gui.ImageViewerGui;
18
import org.helioviewer.jhv.gui.interfaces.ShowableDialog;
21
* Dialog to show that a new version is available
23
* @author Helge Dietert
25
public class NewVersionDialog extends JDialog implements ActionListener, ShowableDialog, HyperlinkListener {
27
private static final long serialVersionUID = 1L;
30
* New setting for check.update.next
32
private int nextCheck = 0;
34
* Suspended startups when clicked remindMeLater
36
private final int suspendedStarts = 5;
39
* Creates a dialog with the given parameters
42
* new version which is available
44
* Message for this new version
46
* If false show suspension buttons
48
public NewVersionDialog(String newVersion, String message, boolean verbose) {
49
super(ImageViewerGui.getMainFrame(), "JHelioviewer " + newVersion + " is now available", false);
50
setLayout(new BorderLayout());
53
JEditorPane messagePane = new JEditorPane("text/html", message);
55
messagePane.setEditable(false);
56
messagePane.setOpaque(false);
57
messagePane.addHyperlinkListener(this);
58
messagePane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
59
add(messagePane, BorderLayout.CENTER);
61
JPanel closeButtonContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT));
63
final JButton downloadButton = new JButton("Download");
64
closeButtonContainer.add(downloadButton);
65
downloadButton.addActionListener(this);
66
downloadButton.addActionListener(new ActionListener() {
67
public void actionPerformed(ActionEvent arg0) {
68
JHVGlobals.openURL("http://jhelioviewer.org");
73
final JButton laterButton = new JButton("Remind me later");
74
closeButtonContainer.add(laterButton);
75
laterButton.addActionListener(this);
76
laterButton.addActionListener(new ActionListener() {
77
public void actionPerformed(ActionEvent arg) {
78
nextCheck = suspendedStarts;
83
final JButton closeButton = new JButton("Close");
84
closeButton.addActionListener(this);
85
closeButtonContainer.add(closeButton);
86
add(closeButtonContainer, BorderLayout.SOUTH);
92
public void showDialog() {
94
setSize(getPreferredSize());
95
setLocationRelativeTo(ImageViewerGui.getMainFrame());
102
public void actionPerformed(ActionEvent a) {
107
* Opens a browser or email client after clicking on a hyperlink.
109
public void hyperlinkUpdate(HyperlinkEvent e) {
110
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
111
JHVGlobals.openURL(e.getURL().toString());
116
* New proposed setting for udpate.check.next
118
public int getNextCheck() {