org.ka2ddo.yaac.filter
Class SymbolFilter

java.lang.Object
  extended by org.ka2ddo.yaac.filter.Filter
      extended by org.ka2ddo.yaac.filter.SymbolFilter
All Implemented Interfaces:
java.lang.Cloneable, PersistingFilter

public class SymbolFilter
extends Filter
implements java.lang.Cloneable, PersistingFilter

This filter selects messages by the APRS symbol code, indicated by symbol table ID and symbol type. The selection information is presented as a table of symbol codes and icons, plus a checkbox to specify which station types are enabled and disabled.


Nested Class Summary
 class SymbolFilter.SymbolFlag
          This class associates a SymbolAttr (description of one APRS symbol) with a boolean enable flag for controlling the filtering by symbol.
 
Field Summary
 
Fields inherited from class org.ka2ddo.yaac.filter.Filter
RESULT_NEUTRAL, RESULT_PASS, RESULT_REJECT, RESULT_WEAK_PASS, RESULT_WEAK_REJECT
 
Constructor Summary
SymbolFilter()
          Create a filter that will select messages and stations based on the symbol code.
 
Method Summary
 int acceptAX25Frame(AX25Frame frame)
          Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).
 int acceptMessage(AX25Message axmsg)
          Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).
 int acceptStation(StationState ss)
          Indicate whether the specified station should be displayed.
 void addFilterChangeListener(FilterChangeListener l)
          Register a listener for changes of this Filter.
 void buildSymbolArray()
          Build the currently known symbols (APRS 1.0.1 basic or APRS 1.2 extended) into the filter.
 java.lang.Object clone()
          Creates and returns a copy of this object.
 java.lang.String getFilterHelpTagName()
          Report a tag name used to look up JavaHelp for a filter editor.
 java.lang.String getFilterTypeTagName()
          Report a tag name used to look up the labelling for an editor panel for this editor instance in a ResourceBundle of translated names.
 java.lang.String getFilterUIName()
          Get the class name of a dynamically loadable class for the the GUI for this filter.
 int getMaxOverlaysPerCode()
          Get the greatest number of possible symbol table/overlay values for any symbol code.
 java.lang.String getPrefPrefix()
          Get the persistence name prefix for this Filter.
 SymbolFilter.SymbolFlag[][] getTypeEnableFlags()
          Get all the symbol flags in arrays indexed by symbol code, then by symbol table ID/overlay.
 void removeFilterChangeListener(FilterChangeListener l)
          Deregisters a listener.
 void setPrefPrefix(java.lang.String prefPrefix)
          Change the persisted parameter prefix for this Filter instance.
 void setToPassall()
          Reset the filter to a configuration that would pass the maximum amount of messages, packets, and stations.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SymbolFilter

public SymbolFilter()
Create a filter that will select messages and stations based on the symbol code. Note that, if APRS 1.2 extended symbols are enabled, matches for overlaid symbols will only match if either the overlay matches a defined extended symbol, or will match the alternate table symbol if no pre-defined extended overlay meaning is defined.

Method Detail

setPrefPrefix

public void setPrefPrefix(java.lang.String prefPrefix)
Change the persisted parameter prefix for this Filter instance.

Specified by:
setPrefPrefix in interface PersistingFilter
Parameters:
prefPrefix - prefix String (can be empty string "") or null to indicate this filter should not be persisted

getPrefPrefix

public java.lang.String getPrefPrefix()
Get the persistence name prefix for this Filter.

Returns:
String prefix to be used on persistence value names, or null to indicate this filter is not persisted.

buildSymbolArray

public void buildSymbolArray()
Build the currently known symbols (APRS 1.0.1 basic or APRS 1.2 extended) into the filter.


getFilterTypeTagName

public java.lang.String getFilterTypeTagName()
Report a tag name used to look up the labelling for an editor panel for this editor instance in a ResourceBundle of translated names.

Specified by:
getFilterTypeTagName in class Filter
Returns:
String to use in looking up form label for this filter's editor

getFilterHelpTagName

public java.lang.String getFilterHelpTagName()
Report a tag name used to look up JavaHelp for a filter editor.

Specified by:
getFilterHelpTagName in class Filter
Returns:
String name (as defined in HelpMap.jhm) for this filter's online help

getFilterUIName

public java.lang.String getFilterUIName()
Get the class name of a dynamically loadable class for the the GUI for this filter. The name is allowed to have a wildcard '*' in it where a GUI type ("gui" for standard Java or "android" for Android) can be substituted.

Specified by:
getFilterUIName in class Filter
Returns:
String name of GUI class for this filter

getMaxOverlaysPerCode

public int getMaxOverlaysPerCode()
Get the greatest number of possible symbol table/overlay values for any symbol code.

Returns:
maximum overlays + 2 (for the base tables)

getTypeEnableFlags

public SymbolFilter.SymbolFlag[][] getTypeEnableFlags()
Get all the symbol flags in arrays indexed by symbol code, then by symbol table ID/overlay.

Returns:
2-dimensional array of SymbolFlag structures

acceptAX25Frame

public int acceptAX25Frame(AX25Frame frame)
Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).

Specified by:
acceptAX25Frame in class Filter
Parameters:
frame - the timestamped AX25 frame record to analyze
Returns:
RESULT_xxx constant indicating if message information should be displayed

acceptMessage

public int acceptMessage(AX25Message axmsg)
Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).

Specified by:
acceptMessage in class Filter
Parameters:
axmsg - the AX25Message record to analyze
Returns:
RESULT_xxx constant indicating if message information should be displayed

acceptStation

public int acceptStation(StationState ss)
Indicate whether the specified station should be displayed. The acceptMessage() and acceptAX25Frame() methods may be called to assist in the determination.

Specified by:
acceptStation in class Filter
Parameters:
ss - StationState record to analyze
Returns:
RESULT_xxx constant indicating if station information should be displayed

addFilterChangeListener

public void addFilterChangeListener(FilterChangeListener l)
Register a listener for changes of this Filter.

Specified by:
addFilterChangeListener in class Filter
Parameters:
l - FilterChangeListener to register

removeFilterChangeListener

public void removeFilterChangeListener(FilterChangeListener l)
Deregisters a listener. The listener will no longer be informed of changes to this filter.

Specified by:
removeFilterChangeListener in class Filter
Parameters:
l - FilterChangeListener to deregister

setToPassall

public void setToPassall()
Reset the filter to a configuration that would pass the maximum amount of messages, packets, and stations.

Specified by:
setToPassall in class Filter

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Creates and returns a copy of this object.

Overrides:
clone in class Filter
Returns:
a clone of this instance.
Throws:
java.lang.CloneNotSupportedException - if the object's class does not support the Cloneable interface. Subclasses that override the clone method can also throw this exception to indicate that an instance cannot be cloned.
See Also:
Cloneable