updates for 0.9.4
[debian/openrocket] / src / net / sf / openrocket / gui / dialogs / UpdateInfoDialog.java
1 package net.sf.openrocket.gui.dialogs;
2
3 import java.awt.Window;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import java.util.Collections;
7 import java.util.List;
8
9 import javax.swing.JButton;
10 import javax.swing.JDialog;
11 import javax.swing.JLabel;
12 import javax.swing.JPanel;
13
14 import net.miginfocom.swing.MigLayout;
15 import net.sf.openrocket.communication.UpdateInfo;
16 import net.sf.openrocket.gui.components.URLLabel;
17 import net.sf.openrocket.util.Chars;
18 import net.sf.openrocket.util.ComparablePair;
19 import net.sf.openrocket.util.GUIUtil;
20 import net.sf.openrocket.util.Icons;
21
22 public class UpdateInfoDialog extends JDialog {
23
24         public UpdateInfoDialog(UpdateInfo info) {
25                 super((Window)null, "OpenRocket update available", ModalityType.APPLICATION_MODAL);
26                 
27                 JPanel panel = new JPanel(new MigLayout("fill"));
28                 
29
30                 panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), 
31                                 "spany 100, top");
32                 
33                 
34                 panel.add(new JLabel("<html><b>OpenRocket version " + info.getLatestVersion() +
35                                 " is available!"), "wrap para");
36                 
37                 List<ComparablePair<Integer, String>> updates = info.getUpdates();
38                 if (updates.size() > 0) {
39                         panel.add(new JLabel("Updates include:"), "wrap rel");
40                         
41                         Collections.sort(updates);
42                         int count = 0;
43                         int n = -1;
44                         for (int i=updates.size()-1; i>=0; i--) {
45                                 // Add only specific number of top features
46                                 if (count >= 4 && n != updates.get(i).getU())
47                                         break;
48                                 n = updates.get(i).getU();
49                                 panel.add(new JLabel("   " + Chars.BULLET + " " + updates.get(i).getV()), 
50                                                 "wrap 0px");
51                                 count++;
52                         }
53                 }
54
55                 panel.add(new JLabel("Download the new version from:"), 
56                                 "gaptop para, alignx 50%, wrap unrel");
57                 panel.add(new URLLabel(AboutDialog.OPENROCKET_URL), "alignx 50%, wrap para");
58                 
59                 JButton button = new JButton("Close");
60                 button.addActionListener(new ActionListener() {
61                         @Override
62                         public void actionPerformed(ActionEvent e) {
63                                 UpdateInfoDialog.this.dispose();
64                         }
65                 });
66                 panel.add(button, "right");
67                 
68                 this.add(panel);
69                 
70                 this.pack();
71                 this.setLocationRelativeTo(null);
72                 GUIUtil.setDisposableDialogOptions(this, button);
73         }
74         
75 }