import libaltosJNI.SWIGTYPE_p_altos_file;
import libaltosJNI.SWIGTYPE_p_altos_list;
-class AltosEepromItem extends JPanel implements ActionListener {
+class AltosEepromItem implements ActionListener {
AltosEepromLog log;
+ JLabel label;
JCheckBox download;
JCheckBox delete;
- JLabel label;
public void actionPerformed(ActionEvent e) {
- System.out.printf("eeprom item action %s %d\n", e.getActionCommand(), e.getID());
if (e.getSource() == download) {
log.download = download.isSelected();
- System.out.printf("download set to %b\n", log.download);
} else if (e.getSource() == delete) {
log.delete = delete.isSelected();
- System.out.printf("delete set to %b\n", log.delete);
}
}
public AltosEepromItem(AltosEepromLog in_log) {
log = in_log;
- download = new JCheckBox("Download", log.download);
+ String text;
+ if (log.year != 0)
+ text = String.format("Flight #%02d - %04d-%02d-%02d",
+ log.flight, log.year, log.month, log.day);
+ else
+ text = String.format("Flight #%02d", log.flight);
+
+ label = new JLabel(text);
+
+ download = new JCheckBox("", log.download);
download.addActionListener(this);
- add(download);
- delete = new JCheckBox("Delete", log.delete);
+
+ delete = new JCheckBox("", log.delete);
delete.addActionListener(this);
- add(delete);
- label = new JLabel(String.format("Flight %d %4d-%02d-%02d",
- log.flight, log.year, log.month, log.day));
- add(label);
}
}
super(in_frame, String.format("Flight list for serial %d", flights.config_data.serial), true);
frame = in_frame;
+ /* Create the container for the dialog */
+ Container contentPane = getContentPane();
+
+ /* First, we create a pane containing the dialog's header/title */
JLabel selectLabel = new JLabel("Select flights to download and/or delete", SwingConstants.CENTER);
JPanel labelPane = new JPanel();
labelPane.add(selectLabel);
labelPane.add(Box.createHorizontalGlue());
- JPanel flightPane = new JPanel();
- flightPane.setLayout(new BoxLayout(flightPane, BoxLayout.Y_AXIS));
+ /* Add the header to the container. */
+ contentPane.add(labelPane, BorderLayout.PAGE_START);
+
+
+ /* Now we create the evilness that is a GridBag for the flight details */
+ GridBagConstraints c;
+ Insets i = new Insets(4,4,4,4);
+ JPanel flightPane = new JPanel();
+ flightPane.setLayout(new GridBagLayout());
flightPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
+
+ /* Flight Header */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = 0;
+ c.fill = GridBagConstraints.NONE;
+ c.weightx = 0.5;
+ c.anchor = GridBagConstraints.CENTER;
+ c.insets = i;
+ JLabel flightHeaderLabel = new JLabel("Flight");
+ flightPane.add(flightHeaderLabel, c);
+
+ /* Download Header */
+ c = new GridBagConstraints();
+ c.gridx = 1; c.gridy = 0;
+ c.fill = GridBagConstraints.NONE;
+ c.weightx = 0.5;
+ c.anchor = GridBagConstraints.CENTER;
+ c.insets = i;
+ JLabel downloadHeaderLabel = new JLabel("Download");
+ flightPane.add(downloadHeaderLabel, c);
+
+ /* Delete Header */
+ c = new GridBagConstraints();
+ c.gridx = 2; c.gridy = 0;
+ c.fill = GridBagConstraints.NONE;
+ c.weightx = 0.5;
+ c.anchor = GridBagConstraints.CENTER;
+ c.insets = i;
+ JLabel deleteHeaderLabel = new JLabel("Delete");
+ flightPane.add(deleteHeaderLabel, c);
+
+ /* Add the flights to the GridBag */
+ AltosEepromItem item;
+ int itemNumber = 1;
for (AltosEepromLog flight : flights) {
- flightPane.add(new AltosEepromItem(flight));
+ /* Create a flight object with handlers and
+ * appropriate UI items
+ */
+ item = new AltosEepromItem(flight);
+
+ /* Add a decriptive label for the flight */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = itemNumber;
+ c.fill = GridBagConstraints.NONE;
+ c.weightx = 0.5;
+ c.anchor = GridBagConstraints.CENTER;
+ c.insets = i;
+ flightPane.add(item.label, c);
+
+ /* Add a download checkbox for the flight */
+ c = new GridBagConstraints();
+ c.gridx = 1; c.gridy = itemNumber;
+ c.fill = GridBagConstraints.NONE;
+ c.weightx = 0.5;
+ c.anchor = GridBagConstraints.CENTER;
+ c.insets = i;
+ flightPane.add(item.download, c);
+
+ /* Add a delete checkbox for the flight */
+ c = new GridBagConstraints();
+ c.gridx = 2; c.gridy = itemNumber;
+ c.fill = GridBagConstraints.NONE;
+ c.weightx = 0.5;
+ c.anchor = GridBagConstraints.CENTER;
+ c.insets = i;
+ flightPane.add(item.delete, c);
+
+ itemNumber++;
}
+ /* Add the GridBag to the container */
+ contentPane.add(flightPane, BorderLayout.CENTER);
+
+ /* Create the dialog buttons */
ok = new JButton("OK");
ok.addActionListener(this);
ok.setActionCommand("ok");
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(ok);
- Container contentPane = getContentPane();
-
- contentPane.add(labelPane, BorderLayout.PAGE_START);
- contentPane.add(flightPane, BorderLayout.CENTER);
+ /* Add the buttons to the container */
contentPane.add(buttonPane, BorderLayout.PAGE_END);
+ /* Pack the window! */
pack();
}
}