Package org.ka2ddo.yaac.gui
Class ObjectPacketModel
java.lang.Object
org.ka2ddo.yaac.gui.ObjectPacketModel
- All Implemented Interfaces:
TableModel
,TrackerListener
,AprsMessageContainingModel
,ColumnSizingTableModel
,FastComparableTableModel
public class ObjectPacketModel
extends Object
implements TableModel, TrackerListener, AprsMessageContainingModel, FastComparableTableModel
This class is a table model for viewing all the historical messages received about a given
object, as stored in its associated StationState object.
- Author:
- Andrew Pavlin, KA2DDO
-
Constructor Summary
ConstructorDescriptionObjectPacketModel
(StationState ss, StationTracker tracker) Create a table model for viewing the historical packet traffic of a tracked station. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a listener to the list that is 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.Class<?>
getColumnClass
(int columnIndex) Returns the most specific superclass for all the cell values in the column.int
Returns the number of columns in the model.getColumnName
(int columnIndex) Returns the name of the column atcolumnIndex
.int
getColumnWidth
(int columnIndex) Specifies the default initial width of a column from this model.getMessageAt
(int rowIndex) Fetch the AX25Message object at the specified index.int
Returns the number of rows in the model.getValueAt
(int rowIndex, int columnIndex) Returns the value for the cell atcolumnIndex
androwIndex
.boolean
isCellEditable
(int rowIndex, int columnIndex) Returns true if the cell atrowIndex
andcolumnIndex
is editable.boolean
isSizeToFit
(int columnIndex) Specifies whether setWidthToFit() should be enabled on this columnvoid
messageAdded
(StationState ss, int index, AX25Message msg) Called when a Message 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
Removes a listener from the list that is notified each time a change to the data model occurs.void
setMode
(RawPacketDisplayMode mode) Specify what display mode should be used to present the message body of the specified message when the body's column is requested with the getValueAt() method.void
setValueAt
(Object aValue, int rowIndex, int columnIndex) Sets the value in the cell atcolumnIndex
androwIndex
toaValue
.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
Called when an existing station is updated with new information in the tracker.
-
Constructor Details
-
ObjectPacketModel
Create a table model for viewing the historical packet traffic of a tracked station.- Parameters:
ss
- StationState object of the station or object to displaytracker
- reference to the StationTracker so changes can be listened for
-
-
Method Details
-
getRowCount
public int getRowCount()Returns the number of rows in the model. AJTable
uses this method to determine how many rows it should display. This method should be quick, as it is called frequently during rendering.- Specified by:
getRowCount
in interfaceTableModel
- Returns:
- the number of rows in the model
- See Also:
-
getColumnCount
public int getColumnCount()Returns the number of columns in the model.- Specified by:
getColumnCount
in interfaceTableModel
- Returns:
- the number of columns in the model
- See Also:
-
getColumnName
Returns the name of the column atcolumnIndex
. This is used to initialize the table's column header name. Note: this name does not need to be unique; two columns in a table can have the same name.- Specified by:
getColumnName
in interfaceTableModel
- Parameters:
columnIndex
- the index of the column- Returns:
- the name of the column
-
getColumnClass
Returns the most specific superclass for all the cell values in the column. This is used by theJTable
to set up a default renderer and editor for the column.- Specified by:
getColumnClass
in interfaceTableModel
- Parameters:
columnIndex
- the index of the column- Returns:
- the common ancestor class of the object values in the model.
-
compareRows
public int compareRows(int rowIndex1, int rowIndex2, int columnIndex) Compare the selected column of the two rows.- Specified by:
compareRows
in interfaceFastComparableTableModel
- Parameters:
rowIndex1
- zero-based model row index of first row to comparerowIndex2
- zero-based model row index of second row to comparecolumnIndex
- 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
-
isCellEditable
public boolean isCellEditable(int rowIndex, int columnIndex) Returns true if the cell atrowIndex
andcolumnIndex
is editable. Otherwise,setValueAt
on the cell will not change the value of that cell.- Specified by:
isCellEditable
in interfaceTableModel
- Parameters:
rowIndex
- the row whose value to be queriedcolumnIndex
- the column whose value to be queried- Returns:
- true if the cell is editable
- See Also:
-
getValueAt
Returns the value for the cell atcolumnIndex
androwIndex
.- Specified by:
getValueAt
in interfaceTableModel
- Parameters:
rowIndex
- the row whose value is to be queriedcolumnIndex
- the column whose value is to be queried- Returns:
- the value Object at the specified cell
-
setValueAt
Sets the value in the cell atcolumnIndex
androwIndex
toaValue
.- Specified by:
setValueAt
in interfaceTableModel
- Parameters:
aValue
- the new valuerowIndex
- the row whose value is to be changedcolumnIndex
- the column whose value is to be changed- See Also:
-
addTableModelListener
Adds a listener to the list that is notified each time a change to the data model occurs.- Specified by:
addTableModelListener
in interfaceTableModel
- Parameters:
l
- the TableModelListener
-
removeTableModelListener
Removes a listener from the list that is notified each time a change to the data model occurs.- Specified by:
removeTableModelListener
in interfaceTableModel
- Parameters:
l
- the TableModelListener
-
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 interfaceColumnSizingTableModel
- 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 interfaceColumnSizingTableModel
- 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
-
getMessageAt
Fetch the AX25Message object at the specified index.- Specified by:
getMessageAt
in interfaceAprsMessageContainingModel
- Parameters:
rowIndex
- zero-based index to the specified Message- Returns:
- AX25Message object
- Throws:
IndexOutOfBoundsException
- if the row index is < 0 or >= the size of the Message list
-
setMode
Specify what display mode should be used to present the message body of the specified message when the body's column is requested with the getValueAt() method. This method must be called from the AWT event thread.- Specified by:
setMode
in interfaceAprsMessageContainingModel
- Parameters:
mode
- RawPacketDisplayMode enum specifying the display mode- See Also:
-
stationAdded
Called when a new station is initially added to the tracker.- Specified by:
stationAdded
in interfaceTrackerListener
- Parameters:
ss
- StationState containing the station's information; the initial Message will not yet be stored within the StationState objectindex
- zero-based integer sequence number for this station in the StationTracker
-
stationUpdated
Called when an existing station is updated with new information in the tracker.- Specified by:
stationUpdated
in interfaceTrackerListener
- Parameters:
ss
- StationState containing the station's information; the new Message will not yet be stored within the StationState object
-
stationDeleted
Called when an existing station is deleted from the tracker.- Specified by:
stationDeleted
in interfaceTrackerListener
- Parameters:
ss
- StationState containing the station's informationindex
- zero-based integer sequence number for this station in the StationTracker
-
messageAdded
Called when a Message is added to the history for a station in the tracker.- Specified by:
messageAdded
in interfaceTrackerListener
- Parameters:
ss
- StationState containing the station's informationindex
- zero-based index of the message added to the StationState objectmsg
- AX.25 Message object being added to the tracker
-
messageDeleted
Called when a AX25Message is deleted from the history for a station in the tracker.- Specified by:
messageDeleted
in interfaceTrackerListener
- Parameters:
ss
- StationState containing the station's information; the AX25Message will already be removed from the StationState objectindex
- zero-based index of the message removed from the StationState objectmsg
- 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
-