package net.sf.openrocket.gui.dialogs;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collections;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.communication.UpdateInfo;
import net.sf.openrocket.gui.components.URLLabel;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.Chars;
import net.sf.openrocket.util.ComparablePair;
public class UpdateInfoDialog extends JDialog {
private final JCheckBox remind;
private static final Translator trans = Application.getTranslator();
public UpdateInfoDialog(UpdateInfo info) {
//// OpenRocket update available
super((Window)null, "OpenRocket update available", ModalityType.APPLICATION_MODAL);
JPanel panel = new JPanel(new MigLayout("fill"));
panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")),
"spany 100, top");
//// <html><b>OpenRocket version
panel.add(new JLabel("<html><b>OpenRocket version " + info.getLatestVersion() +
" is available!"), "wrap para");
List<ComparablePair<Integer, String>> updates = info.getUpdates();
if (updates.size() > 0) {
//// Updates include:
panel.add(new JLabel("Updates include:"), "wrap rel");
Collections.sort(updates);
int count = 0;
int n = -1;
for (int i=updates.size()-1; i>=0; i--) {
// Add only specific number of top features
if (count >= 4 && n != updates.get(i).getU())
break;
n = updates.get(i).getU();
panel.add(new JLabel(" " + Chars.BULLET + " " + updates.get(i).getV()),
"wrap 0px");
count++;
}
}
//// Download the new version from:
panel.add(new JLabel("Download the new version from:"),
"gaptop para, alignx 50%, wrap unrel");
panel.add(new URLLabel(AboutDialog.OPENROCKET_URL), "alignx 50%, wrap para");
//// Remind me later
remind = new JCheckBox("Remind me later");
//// Show this update also the next time you start OpenRocket
remind.setToolTipText("Show this update also the next time you start OpenRocket");
remind.setSelected(true);
panel.add(remind);
//Close button
JButton button = new JButton(trans.get("dlg.but.close"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
UpdateInfoDialog.this.dispose();
}
});
panel.add(button, "right, gapright para");
this.add(panel);
this.pack();
this.setLocationRelativeTo(null);
GUIUtil.setDisposableDialogOptions(this, button);
}
public boolean isReminderSelected() {
return remind.isSelected();
}
}