org.ka2ddo.yaac.gui
Class StationListViewer

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by org.ka2ddo.yaac.gui.StationListViewer
All Implemented Interfaces:
java.awt.event.ActionListener, java.beans.PropertyChangeListener, java.io.Serializable, java.lang.Runnable, java.util.EventListener, javax.swing.table.TableModel, TrackerListener, FilterChangeListener, ColumnSizingTableModel, FastComparableTableModel

public class StationListViewer
extends javax.swing.table.AbstractTableModel
implements ColumnSizingTableModel, TrackerListener, java.lang.Runnable, java.beans.PropertyChangeListener, java.awt.event.ActionListener, FilterChangeListener, FastComparableTableModel

This provides a sortable, filterable situational status display, as a backing TableModel for a JTable view.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
StationListViewer(java.util.ResourceBundle msgBundle, boolean isOneShot)
          Create a StationListViewer TableModel, obtaining column labels from the specified ResourceBundle.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
          Do not call.
 void addTableModelListener(javax.swing.event.TableModelListener l)
          Adds a listener to the list that's notified each time a change to the data model occurs.
 int compareRows(int rowIndex1, int rowIndex2, int columnIndex)
          Compare the selected column of the two rows.
 void filterSettingsChanged(Filter changedFilter, boolean changedByUser)
          Called when the specified Filter's matching criteria have been changed.
 java.lang.Class<?> getColumnClass(int columnIndex)
          Returns the data Class for the specified column.
 int getColumnCount()
          Returns the number of columns in the model.
 java.lang.String getColumnName(int column)
          Returns the localized name for the column.
 int getColumnWidth(int columnIndex)
          Specifies the default initial width of a column from this model.
 ListViewMode getListViewMode()
          Get the current mode for viewing the list of stations and objects.
 int getObjectCount()
          Get the current number of objects known to YAAC, regardless of the view mode.
 int getRowCount()
          Returns the number of rows in the model.
 StationState getSortedRow(int rowIndex)
          Return the object state record for the specified index into the sorted list of objects that is backing the table model.
 int getStationCount()
          Get the current number of stations known to YAAC, regardless of the view mode.
 java.lang.Object getValueAt(int rowIndex, int columnIndex)
          Returns the value for the cell at columnIndex and rowIndex.
 boolean isApplyFilter()
          Report whether the currently defined filters should restrict the contents of the station/object list.
 boolean isCellEditable(int rowIndex, int columnIndex)
           
 boolean isSizeToFit(int columnIndex)
          Specifies whether setWidthToFit() should be enabled on this column
 void messageAdded(StationState ss, int index, AX25Message msg)
          Called when a AX25Message is added to the history for a station in the tracker.
 void messageDeleted(StationState ss, int index, AX25Message msg)
          Called when a AX25Message is deleted from the history for a station in the tracker.
 void propertyChange(java.beans.PropertyChangeEvent evt)
          This method gets called when a bound property is changed.
 void removeTableModelListener(javax.swing.event.TableModelListener l)
          Removes a listener from the list that's notified each time a change to the data model occurs.
 void run()
           
 void setApplyFilter(boolean applyFilter)
          Specify whether filters should be applied when generating the list of stations and objects.
 void setListViewMode(ListViewMode listViewMode)
          Set the current view mode.
 void setValueAt(java.lang.Object aValue, int rowIndex, int columnIndex)
          Allow changing the editable columns of the table.
 void stationAdded(StationState ss, int index)
          Called when a new station is initially added to the tracker.
 void stationDeleted(StationState ss, int index)
          Called when an existing station is deleted from the tracker.
 void stationUpdated(StationState ss)
          Called when an existing station is updated with new information in the tracker.
 
Methods inherited from class javax.swing.table.AbstractTableModel
findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StationListViewer

public StationListViewer(java.util.ResourceBundle msgBundle,
                         boolean isOneShot)
Create a StationListViewer TableModel, obtaining column labels from the specified ResourceBundle.

Parameters:
msgBundle - ResourceBundle providing localized column titles
isOneShot - boolean true if model does not refresh itself; useful for mini-webserver
Method Detail

getRowCount

public int getRowCount()
Returns the number of rows in the model.

Specified by:
getRowCount in interface javax.swing.table.TableModel
Returns:
the number of rows in the model
See Also:
getColumnCount()

getColumnCount

public int getColumnCount()
Returns the number of columns in the model.

Specified by:
getColumnCount in interface javax.swing.table.TableModel
Returns:
the number of columns in the model
See Also:
getRowCount()

getSortedRow

public StationState getSortedRow(int rowIndex)
Return the object state record for the specified index into the sorted list of objects that is backing the table model.

Parameters:
rowIndex - zero-based row index
Returns:
StationState record describing the Object or Item

getValueAt

public java.lang.Object getValueAt(int rowIndex,
                                   int columnIndex)
Returns the value for the cell at columnIndex and rowIndex.

Specified by:
getValueAt in interface javax.swing.table.TableModel
Parameters:
rowIndex - the row whose value is to be queried
columnIndex - the column whose value is to be queried
Returns:
the value Object at the specified cell

compareRows

public int compareRows(int rowIndex1,
                       int rowIndex2,
                       int columnIndex)
Compare the selected column of the two rows.

Specified by:
compareRows in interface FastComparableTableModel
Parameters:
rowIndex1 - zero-based model row index of first row to compare
rowIndex2 - zero-based model row index of second row to compare
columnIndex - zero-based model column index of column to compare
Returns:
+1 if the 1st row's column is after the 2nd row's column, -1 if before, or 0 if equal precedence

getColumnClass

public java.lang.Class<?> getColumnClass(int columnIndex)
Returns the data Class for the specified column.

Specified by:
getColumnClass in interface javax.swing.table.TableModel
Overrides:
getColumnClass in class javax.swing.table.AbstractTableModel
Parameters:
columnIndex - the column being queried
Returns:
the Class object for the column's data

isCellEditable

public boolean isCellEditable(int rowIndex,
                              int columnIndex)
Specified by:
isCellEditable in interface javax.swing.table.TableModel
Overrides:
isCellEditable in class javax.swing.table.AbstractTableModel

getColumnName

public java.lang.String getColumnName(int column)
Returns the localized name for the column.

Specified by:
getColumnName in interface javax.swing.table.TableModel
Overrides:
getColumnName in class javax.swing.table.AbstractTableModel
Parameters:
column - the column being queried
Returns:
a string containing the name of column

setValueAt

public void setValueAt(java.lang.Object aValue,
                       int rowIndex,
                       int columnIndex)
Allow changing the editable columns of the table. Note that only column 11 (alias) and column 12 (alternate symbol) is editable.

Specified by:
setValueAt in interface javax.swing.table.TableModel
Overrides:
setValueAt in class javax.swing.table.AbstractTableModel
Parameters:
aValue - value to assign to cell
rowIndex - row of cell
columnIndex - column of cell

getColumnWidth

public int getColumnWidth(int columnIndex)
Specifies the default initial width of a column from this model. Should only be queried at table creation time.

Specified by:
getColumnWidth in interface ColumnSizingTableModel
Parameters:
columnIndex - int index of the model's column whose width should be obtained
Returns:
the width, in the same units used by the TableColumn class's setWidth() method, or -1 to indicate the width should not be forced

isSizeToFit

public boolean isSizeToFit(int columnIndex)
Specifies whether setWidthToFit() should be enabled on this column

Specified by:
isSizeToFit in interface ColumnSizingTableModel
Parameters:
columnIndex - int index of the model's column whose width should be obtained
Returns:
boolean true if sizeWidthToFit() should be called on this column

getListViewMode

public ListViewMode getListViewMode()
Get the current mode for viewing the list of stations and objects.

Returns:
current ListViewMode

setListViewMode

public void setListViewMode(ListViewMode listViewMode)
Set the current view mode.

Parameters:
listViewMode - ListViewMode to use for future display of stations/objects

getStationCount

public int getStationCount()
Get the current number of stations known to YAAC, regardless of the view mode.

Returns:
count of station records in tracker

getObjectCount

public int getObjectCount()
Get the current number of objects known to YAAC, regardless of the view mode.

Returns:
count of object records in tracker

addTableModelListener

public void addTableModelListener(javax.swing.event.TableModelListener l)
Adds a listener to the list that's notified each time a change to the data model occurs.

Specified by:
addTableModelListener in interface javax.swing.table.TableModel
Overrides:
addTableModelListener in class javax.swing.table.AbstractTableModel
Parameters:
l - the TableModelListener

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
Do not call. Here to support the above timer.

Specified by:
actionPerformed in interface java.awt.event.ActionListener

removeTableModelListener

public void removeTableModelListener(javax.swing.event.TableModelListener l)
Removes a listener from the list that's notified each time a change to the data model occurs.

Specified by:
removeTableModelListener in interface javax.swing.table.TableModel
Overrides:
removeTableModelListener in class javax.swing.table.AbstractTableModel
Parameters:
l - the TableModelListener

isApplyFilter

public boolean isApplyFilter()
Report whether the currently defined filters should restrict the contents of the station/object list.

Returns:
boolean true if filters will be applied

setApplyFilter

public void setApplyFilter(boolean applyFilter)
Specify whether filters should be applied when generating the list of stations and objects.

Parameters:
applyFilter - boolean true if filters should be used

messageAdded

public void messageAdded(StationState ss,
                         int index,
                         AX25Message msg)
Called when a AX25Message is added to the history for a station in the tracker.

Specified by:
messageAdded in interface TrackerListener
Parameters:
ss - StationState containing the station's information
index - zero-based index of the message added to the StationState object
msg - APRS Message object being added to the tracker; note that non-APRS packets that can still be decoded (such as OpenTRAC) will also be passed here; AX25Frames that cannot be decoded will pass null here

messageDeleted

public void messageDeleted(StationState ss,
                           int index,
                           AX25Message msg)
Called when a AX25Message is deleted from the history for a station in the tracker.

Specified by:
messageDeleted in interface TrackerListener
Parameters:
ss - StationState containing the station's information; the initial Message will already be removed from the StationState object
index - zero-based index of the message removed from the StationState object
msg - APRS Message object being removed from the tracker; note that non-APRS packets that can still be decoded (such as OpenTRAC) will also be passed here; AX25Frames that cannot be decoded will pass null here

stationAdded

public void stationAdded(StationState ss,
                         int index)
Called when a new station is initially added to the tracker.

Specified by:
stationAdded in interface TrackerListener
Parameters:
ss - StationState containing the station's information; the initial AX25Message will not yet be stored within the StationState object
index - zero-based integer sequence number for this station in the StationTracker

stationUpdated

public void stationUpdated(StationState ss)
Called when an existing station is updated with new information in the tracker.

Specified by:
stationUpdated in interface TrackerListener
Parameters:
ss - StationState containing the station's information; the new AX25Message will not yet be stored within the StationState object

stationDeleted

public void stationDeleted(StationState ss,
                           int index)
Called when an existing station is deleted from the tracker.

Specified by:
stationDeleted in interface TrackerListener
Parameters:
ss - StationState containing the station's information
index - zero-based integer sequence number for this station in the StationTracker

run

public void run()
Specified by:
run in interface java.lang.Runnable

filterSettingsChanged

public void filterSettingsChanged(Filter changedFilter,
                                  boolean changedByUser)
Called when the specified Filter's matching criteria have been changed.

Specified by:
filterSettingsChanged in interface FilterChangeListener
Parameters:
changedFilter - Filter that has changed
changedByUser - boolean true if change was manually made by user, false if change was made automatically by dynamic filter logic

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
This method gets called when a bound property is changed.

Specified by:
propertyChange in interface java.beans.PropertyChangeListener
Parameters:
evt - A PropertyChangeEvent object describing the event source and the property that has changed.