~josejuan-sanchez/+junk/original-jhv-experimental-version

« back to all changes in this revision

Viewing changes to src/jhv/src/org/helioviewer/jhv/gui/dialogs/NewVersionDialog.java

  • Committer: José Juan Sánchez Hernández
  • Date: 2013-02-05 13:32:08 UTC
  • Revision ID: josejuan.sanchez@gmail.com-20130205133208-dfz1sh1uge5pjkny
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.helioviewer.jhv.gui.dialogs;
 
2
 
 
3
import java.awt.BorderLayout;
 
4
import java.awt.FlowLayout;
 
5
import java.awt.event.ActionEvent;
 
6
import java.awt.event.ActionListener;
 
7
 
 
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;
 
15
 
 
16
import org.helioviewer.jhv.JHVGlobals;
 
17
import org.helioviewer.jhv.gui.ImageViewerGui;
 
18
import org.helioviewer.jhv.gui.interfaces.ShowableDialog;
 
19
 
 
20
/**
 
21
 * Dialog to show that a new version is available
 
22
 * 
 
23
 * @author Helge Dietert
 
24
 */
 
25
public class NewVersionDialog extends JDialog implements ActionListener, ShowableDialog, HyperlinkListener {
 
26
 
 
27
    private static final long serialVersionUID = 1L;
 
28
 
 
29
    /**
 
30
     * New setting for check.update.next
 
31
     */
 
32
    private int nextCheck = 0;
 
33
    /**
 
34
     * Suspended startups when clicked remindMeLater
 
35
     */
 
36
    private final int suspendedStarts = 5;
 
37
 
 
38
    /**
 
39
     * Creates a dialog with the given parameters
 
40
     * 
 
41
     * @param newVersion
 
42
     *            new version which is available
 
43
     * @param message
 
44
     *            Message for this new version
 
45
     * @param verbose
 
46
     *            If false show suspension buttons
 
47
     */
 
48
    public NewVersionDialog(String newVersion, String message, boolean verbose) {
 
49
        super(ImageViewerGui.getMainFrame(), "JHelioviewer " + newVersion + " is now available", false);
 
50
        setLayout(new BorderLayout());
 
51
        setResizable(false);
 
52
 
 
53
        JEditorPane messagePane = new JEditorPane("text/html", message);
 
54
 
 
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);
 
60
 
 
61
        JPanel closeButtonContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT));
 
62
 
 
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");
 
69
            }
 
70
        });
 
71
 
 
72
        if (!verbose) {
 
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;
 
79
                }
 
80
            });
 
81
        }
 
82
 
 
83
        final JButton closeButton = new JButton("Close");
 
84
        closeButton.addActionListener(this);
 
85
        closeButtonContainer.add(closeButton);
 
86
        add(closeButtonContainer, BorderLayout.SOUTH);
 
87
    }
 
88
 
 
89
    /**
 
90
     * {@inheritDoc}
 
91
     */
 
92
    public void showDialog() {
 
93
        pack();
 
94
        setSize(getPreferredSize());
 
95
        setLocationRelativeTo(ImageViewerGui.getMainFrame());
 
96
        setVisible(true);
 
97
    }
 
98
 
 
99
    /**
 
100
     * Closes the dialog.
 
101
     */
 
102
    public void actionPerformed(ActionEvent a) {
 
103
        this.dispose();
 
104
    }
 
105
 
 
106
    /**
 
107
     * Opens a browser or email client after clicking on a hyperlink.
 
108
     */
 
109
    public void hyperlinkUpdate(HyperlinkEvent e) {
 
110
        if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
 
111
            JHVGlobals.openURL(e.getURL().toString());
 
112
        }
 
113
    }
 
114
 
 
115
    /**
 
116
     * New proposed setting for udpate.check.next
 
117
     */
 
118
    public int getNextCheck() {
 
119
        return nextCheck;
 
120
    }
 
121
}