summaryrefslogtreecommitdiff
path: root/altosui/AltosIdleMonitorUI.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-02-10 11:58:36 -0800
committerKeith Packard <keithp@keithp.com>2013-02-10 11:58:36 -0800
commitcc0ea39fee73417ecd69c020d9eca723ebb2cf65 (patch)
treec65bc805624474c2bd460bead228324442568346 /altosui/AltosIdleMonitorUI.java
parentbf88c5f829ea5d32043431945e862a9f6c96740a (diff)
altosui: Add callsign to Monitor Idle window (Trac #62)
This makes it a lot more obvious that the callsign is relevant to the Monitor Idle process. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosui/AltosIdleMonitorUI.java')
-rw-r--r--altosui/AltosIdleMonitorUI.java74
1 files changed, 52 insertions, 22 deletions
diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java
index 89a3c122..462bff18 100644
--- a/altosui/AltosIdleMonitorUI.java
+++ b/altosui/AltosIdleMonitorUI.java
@@ -20,12 +20,13 @@ package altosui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
+import javax.swing.event.*;
import java.io.*;
import java.util.concurrent.*;
import org.altusmetrum.altoslib_1.*;
import org.altusmetrum.altosuilib_1.*;
-public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener, AltosIdleMonitorListener {
+public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener, AltosIdleMonitorListener, DocumentListener {
AltosDevice device;
JTabbedPane pane;
AltosPad pad;
@@ -87,6 +88,45 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl
Container bag;
AltosFreqList frequencies;
+ JTextField callsign_value;
+
+ /* DocumentListener interface methods */
+ public void changedUpdate(DocumentEvent e) {
+ if (callsign_value != null)
+ AltosUIPreferences.set_callsign(callsign_value.getText());
+ }
+
+ public void insertUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
+ public void removeUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
+ int row = 0;
+
+ public GridBagConstraints constraints (int x, int width, int fill) {
+ GridBagConstraints c = new GridBagConstraints();
+ Insets insets = new Insets(4, 4, 4, 4);
+
+ c.insets = insets;
+ c.fill = fill;
+ if (width == 3)
+ c.anchor = GridBagConstraints.CENTER;
+ else if (x == 2)
+ c.anchor = GridBagConstraints.EAST;
+ else
+ c.anchor = GridBagConstraints.WEST;
+ c.gridx = x;
+ c.gridwidth = width;
+ c.gridy = row;
+ return c;
+ }
+
+ public GridBagConstraints constraints(int x, int width) {
+ return constraints(x, width, GridBagConstraints.NONE);
+ }
public AltosIdleMonitorUI(JFrame in_owner)
throws FileNotFoundException, AltosSerialInUseException, TimeoutException, InterruptedException {
@@ -100,8 +140,6 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl
bag = getContentPane();
bag.setLayout(new GridBagLayout());
- GridBagConstraints c = new GridBagConstraints();
-
setTitle(String.format("AltOS %s", device.toShortString()));
/* Stick frequency selector at top of table for telemetry monitoring */
@@ -116,23 +154,21 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl
frequency);
}
});
- c.gridx = 0;
- c.gridy = 0;
- c.insets = new Insets(3, 3, 3, 3);
- c.anchor = GridBagConstraints.WEST;
- bag.add (frequencies, c);
+ bag.add (frequencies, constraints(0, 1));
+ bag.add (new JLabel("Callsign:"), constraints(1, 1));
+ /* Add callsign configuration */
+ callsign_value = new JTextField(AltosUIPreferences.callsign());
+ callsign_value.getDocument().addDocumentListener(this);
+ callsign_value.setToolTipText("Callsign sent in packet mode");
+ bag.add(callsign_value, constraints(2, 1, GridBagConstraints.BOTH));
+ row++;
}
/* Flight status is always visible */
flightStatus = new AltosFlightStatus();
- c.gridx = 0;
- c.gridy = 1;
- c.fill = GridBagConstraints.HORIZONTAL;
- c.weightx = 1;
- c.gridwidth = 2;
- bag.add(flightStatus, c);
- c.gridwidth = 1;
+ bag.add(flightStatus, constraints(0, 3, GridBagConstraints.HORIZONTAL));
+ row++;
/* The rest of the window uses a tabbed pane to
* show one of the alternate data views
@@ -146,13 +182,7 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl
pane.add("Table", new JScrollPane(flightInfo));
/* Make the tabbed pane use the rest of the window space */
- c.gridx = 0;
- c.gridy = 2;
- c.fill = GridBagConstraints.BOTH;
- c.weightx = 1;
- c.weighty = 1;
- c.gridwidth = 2;
- bag.add(pane, c);
+ bag.add(pane, constraints(0, 3, GridBagConstraints.BOTH));
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);