package org.jabref.gui.help; import java.awt.Cursor; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.event.MouseInputAdapter; import org.jabref.Globals; import org.jabref.gui.JabRefDialog; import org.jabref.gui.desktop.JabRefDesktop; import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.Version; import org.jabref.preferences.VersionPreferences; public class NewVersionDialog extends JabRefDialog { public NewVersionDialog(JFrame frame, Version currentVersion, Version latestVersion) { super(frame, NewVersionDialog.class); setTitle(Localization.lang("New version available")); JLabel lblTitle = new JLabel(Localization.lang("A new version of JabRef has been released.")); JLabel lblCurrentVersion = new JLabel(Localization.lang("Installed version") + ": " + currentVersion.getFullVersion()); JLabel lblLatestVersion = new JLabel(Localization.lang("Latest version") + ": " + latestVersion.getFullVersion()); String localization = Localization.lang("To see what is new view the changelog."); JLabel lblMoreInformation = new JLabel("<HTML><a href=" + latestVersion.getChangelogUrl() + "'>" + localization + "</a></HTML>"); lblMoreInformation.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); lblMoreInformation.addMouseListener(new MouseInputAdapter() { @Override public void mouseClicked(MouseEvent e) { JabRefDesktop.openBrowserShowPopup(latestVersion.getChangelogUrl()); } }); JButton btnIgnoreUpdate = new JButton(Localization.lang("Ignore this update")); btnIgnoreUpdate.addActionListener(e -> { Globals.prefs.storeVersionPreferences(new VersionPreferences(latestVersion)); dispose(); }); JButton btnDownloadUpdate = new JButton(Localization.lang("Download update")); btnDownloadUpdate.addActionListener(e -> { JabRefDesktop.openBrowserShowPopup(Version.JABREF_DOWNLOAD_URL); dispose(); }); JButton btnRemindMeLater = new JButton(Localization.lang("Remind me later")); btnRemindMeLater.addActionListener(e -> dispose()); JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridheight = 1; c.fill = GridBagConstraints.BOTH; c.insets = new Insets(2, 5, 5, 2); c.gridx = c.gridy = 0; c.gridwidth = 3; panel.add(lblTitle, c); c.gridy = 1; panel.add(lblCurrentVersion, c); c.gridy = 2; panel.add(lblLatestVersion, c); c.gridy = 3; panel.add(lblMoreInformation, c); c.gridy = 4; c.gridx = 0; c.gridwidth = 1; panel.add(btnDownloadUpdate, c); c.gridx = 1; panel.add(btnIgnoreUpdate, c); c.gridx = 2; panel.add(btnRemindMeLater, c); add(panel); pack(); setLocationRelativeTo(frame); setModalityType(ModalityType.APPLICATION_MODAL); setVisible(true); } }