java: Bump java library versions for next release
[fw/altos] / altosuilib / AltosInfoTable.java
index 24a895eb22dafb7ac294baecdb54abb25d9c9533..ce986ac598b0097d2582a989388a898c20eaa7d9 100644 (file)
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altosuilib_2;
+package org.altusmetrum.altosuilib_3;
 
 import java.awt.*;
+import java.awt.event.*;
 import javax.swing.*;
 import javax.swing.table.*;
-import org.altusmetrum.altoslib_4.*;
+import org.altusmetrum.altoslib_5.*;
 
-public class AltosInfoTable extends JTable implements AltosFlightDisplay {
+public class AltosInfoTable extends JTable implements AltosFlightDisplay, HierarchyListener {
        private AltosFlightInfoTableModel model;
 
        static final int info_columns = 3;
        static final int info_rows = 17;
 
+       private AltosState              last_state;
+       private AltosListenerState      last_listener_state;
+
        int desired_row_height() {
                FontMetrics     infoValueMetrics = getFontMetrics(AltosUILib.table_value_font);
                return (infoValueMetrics.getHeight() + infoValueMetrics.getLeading()) * 18 / 10;
@@ -56,6 +60,7 @@ public class AltosInfoTable extends JTable implements AltosFlightDisplay {
                super(new AltosFlightInfoTableModel(info_rows, info_columns));
                model = (AltosFlightInfoTableModel) getModel();
                setFont(AltosUILib.table_value_font);
+               addHierarchyListener(this);
                setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS);
                setShowGrid(true);
                set_layout();
@@ -71,6 +76,17 @@ public class AltosInfoTable extends JTable implements AltosFlightDisplay {
        public void units_changed(boolean imperial_units) {
        }
 
+       public void hierarchyChanged(HierarchyEvent e) {
+               if (last_state != null && isShowing()) {
+                       AltosState              state = last_state;
+                       AltosListenerState      listener_state = last_listener_state;
+
+                       last_state = null;
+                       last_listener_state = null;
+                       show(state, listener_state);
+               }
+       }
+
        public Dimension getPreferredScrollableViewportSize() {
                return getPreferredSize();
        }
@@ -107,7 +123,16 @@ public class AltosInfoTable extends JTable implements AltosFlightDisplay {
                model.clear();
        }
 
+       public String getName() { return "Table"; }
+
        public void show(AltosState state, AltosListenerState listener_state) {
+
+               if (!isShowing()) {
+                       last_state = state;
+                       last_listener_state = listener_state;
+                       return;
+               }
+
                reset();
                if (state != null) {
                        if (state.device_type != AltosLib.MISSING)