public final class AutoFilterManager extends java.lang.Object implements NavigatableComponent.ZoomChangeListener, MapFrame.MapModeChangeListener, DataSetListener, PreferenceChangedListener, LayerManager.LayerChangeListener
Modifier and Type | Class and Description |
---|---|
(package private) static class |
AutoFilterManager.CompiledFilter |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,AutoFilterButton> |
buttons
The buttons currently displayed in map view.
|
private AutoFilter |
currentAutoFilter
The currently selected auto filter, if any.
|
private AutoFilterRule |
enabledRule
The currently enabled rule, if any.
|
private static AutoFilterManager |
instance
The unique instance.
|
private OSDLabel |
lblOSD
A helper for
drawOSDText(Graphics2D) . |
private FilterModel |
model
The filter model.
|
private static BooleanProperty |
PROP_AUTO_FILTER_DEFAULTS
Property to determine if the auto filter should assume sensible defaults for values (such as layer=1 for bridge=yes).
|
static BooleanProperty |
PROP_AUTO_FILTER_ENABLED
Property to determines if the auto filter feature is enabled.
|
static StringProperty |
PROP_AUTO_FILTER_RULE
Property to determine the current auto filter rule.
|
private java.util.List<AutoFilterRule> |
rules
The list of registered auto filter rules.
|
Modifier | Constructor and Description |
---|---|
private |
AutoFilterManager() |
Modifier and Type | Method and Description |
---|---|
private void |
addNewButtons(java.util.NavigableSet<java.lang.String> values) |
void |
dataChanged(DataChangedEvent event)
Called after big changes in dataset.
|
void |
drawOSDText(java.awt.Graphics2D g)
Draws a text on the map display that indicates that filters are active.
|
void |
enableAutoFilterRule(AutoFilterRule rule)
Sets the currently enabled auto filter rule.
|
void |
enableAutoFilterRule(java.lang.String key)
Sets the currently enabled auto filter rule to the one defined for the given OSM key.
|
AutoFilterRule |
getAutoFilterRule(java.lang.String key)
Returns the auto filter rule defined for the given OSM key.
|
java.util.List<AutoFilterRule> |
getAutoFilterRules()
Returns the list of registered auto filter rules.
|
AutoFilter |
getCurrentAutoFilter()
Returns the currently selected auto filter, if any.
|
static AutoFilterManager |
getInstance()
Returns the unique instance.
|
private static java.util.NavigableSet<java.lang.String> |
getNumericValues(java.lang.String key,
java.util.Comparator<java.lang.String> comparator) |
private static java.util.Set<java.lang.String> |
getTagValues(java.lang.String key) |
(package private) static java.util.stream.Stream<java.lang.String> |
getTagValuesForPrimitive(java.lang.String key,
OsmPrimitive osm) |
void |
layerAdded(LayerManager.LayerAddEvent e)
Notifies this listener that a layer has been added.
|
void |
layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
Notifies this listener that the order of layers was changed.
|
void |
layerRemoving(LayerManager.LayerRemoveEvent e)
Notifies this listener that a alayer was just removed.
|
void |
mapModeChange(MapMode oldMapMode,
MapMode newMapMode)
Trigerred when map mode changes.
|
void |
nodeMoved(NodeMovedEvent event)
A node's coordinates were modified.
|
void |
otherDatasetChange(AbstractDatasetChangedEvent event)
Minor dataset change, currently only changeset id changed is supported, but can
be extended in future.
|
void |
preferenceChanged(PreferenceChangeEvent e)
Triggered when a preference entry value changes.
|
void |
primitivesAdded(PrimitivesAddedEvent event)
A bunch of primitives were added into the DataSet, or existing
deleted/invisible primitives were resurrected.
|
void |
primitivesRemoved(PrimitivesRemovedEvent event)
A bunch of primitives were removed from the DataSet, or preexisting
primitives were marked as deleted.
|
boolean |
registerAutoFilterRules(AutoFilterRule... filterRules)
Registers new auto filter rule(s).
|
void |
relationMembersChanged(RelationMembersChangedEvent event)
A relation's members have changed.
|
private void |
removeAllButtons() |
private void |
resetCurrentAutoFilter() |
void |
setCurrentAutoFilter(AutoFilter autoFilter)
Sets the currently selected auto filter, if any.
|
void |
tagsChanged(TagsChangedEvent event)
There was some change in the tag set of a primitive.
|
boolean |
unregisterAutoFilterRule(AutoFilterRule rule)
Unregisters an auto filter rule.
|
private void |
updateButtons() |
private void |
updateFiltersEvent(AbstractDatasetChangedEvent event,
boolean affectedOnly) |
private void |
updateFiltersFull() |
void |
wayNodesChanged(WayNodesChangedEvent event)
A way's node list was changed.
|
void |
zoomChanged()
Method called when the zoom area has changed.
|
public static final BooleanProperty PROP_AUTO_FILTER_ENABLED
public static final StringProperty PROP_AUTO_FILTER_RULE
private static final BooleanProperty PROP_AUTO_FILTER_DEFAULTS
private static volatile AutoFilterManager instance
private final java.util.Map<java.lang.String,AutoFilterButton> buttons
private final java.util.List<AutoFilterRule> rules
private final OSDLabel lblOSD
drawOSDText(Graphics2D)
.private final FilterModel model
private AutoFilterRule enabledRule
private AutoFilter currentAutoFilter
private AutoFilterManager()
public static AutoFilterManager getInstance()
private void updateButtons()
private void addNewButtons(java.util.NavigableSet<java.lang.String> values)
private void removeAllButtons()
private static java.util.NavigableSet<java.lang.String> getNumericValues(java.lang.String key, java.util.Comparator<java.lang.String> comparator)
private static java.util.Set<java.lang.String> getTagValues(java.lang.String key)
static java.util.stream.Stream<java.lang.String> getTagValuesForPrimitive(java.lang.String key, OsmPrimitive osm)
public void zoomChanged()
NavigatableComponent.ZoomChangeListener
zoomChanged
in interface NavigatableComponent.ZoomChangeListener
public void dataChanged(DataChangedEvent event)
DataSetListener
DataSetListener.dataChanged(DataChangedEvent event)
is called.dataChanged
in interface DataSetListener
event
- data change eventpublic void nodeMoved(NodeMovedEvent event)
DataSetListener
nodeMoved
in interface DataSetListener
event
- The event for the node that was moved.public void otherDatasetChange(AbstractDatasetChangedEvent event)
DataSetListener
otherDatasetChange
in interface DataSetListener
event
- the event for data modificationpublic void primitivesAdded(PrimitivesAddedEvent event)
DataSetListener
primitivesAdded
in interface DataSetListener
event
- An event for an collection of newly-visible primitivespublic void primitivesRemoved(PrimitivesRemovedEvent event)
DataSetListener
primitivesRemoved
in interface DataSetListener
event
- An event for an collection of newly-invisible primitivespublic void relationMembersChanged(RelationMembersChangedEvent event)
DataSetListener
relationMembersChanged
in interface DataSetListener
event
- The event for the relation that was modified.public void tagsChanged(TagsChangedEvent event)
DataSetListener
tagsChanged
in interface DataSetListener
event
- the event for the primitive, whose tags were affected.public void wayNodesChanged(WayNodesChangedEvent event)
DataSetListener
wayNodesChanged
in interface DataSetListener
event
- The event for the way that was modified.public void mapModeChange(MapMode oldMapMode, MapMode newMapMode)
MapFrame.MapModeChangeListener
mapModeChange
in interface MapFrame.MapModeChangeListener
oldMapMode
- old map modenewMapMode
- new map modeprivate void updateFiltersFull()
private void updateFiltersEvent(AbstractDatasetChangedEvent event, boolean affectedOnly)
public boolean registerAutoFilterRules(AutoFilterRule... filterRules)
filterRules
- new auto filter rules. Must not be nulltrue
if the list changed as a result of the calljava.lang.NullPointerException
- if filterRules
is nullpublic boolean unregisterAutoFilterRule(AutoFilterRule rule)
rule
- auto filter rule to remove. Must not be nulltrue
if the list contained the specified rulejava.lang.NullPointerException
- if rule
is nullpublic java.util.List<AutoFilterRule> getAutoFilterRules()
public AutoFilterRule getAutoFilterRule(java.lang.String key)
key
- OSM key used to identify rule. Can't be null.java.lang.NullPointerException
- if key is nullpublic void enableAutoFilterRule(java.lang.String key)
key
- OSM key used to identify new rule to enable. Null to disable the auto filter feature.public void enableAutoFilterRule(AutoFilterRule rule)
rule
- new rule to enable. Null to disable the auto filter feature.public AutoFilter getCurrentAutoFilter()
public void setCurrentAutoFilter(AutoFilter autoFilter)
autoFilter
- the currently selected auto filter, or nullpublic void drawOSDText(java.awt.Graphics2D g)
g
- The graphics to draw that text on.private void resetCurrentAutoFilter()
public void preferenceChanged(PreferenceChangeEvent e)
PreferenceChangedListener
preferenceChanged
in interface PreferenceChangedListener
e
- the preference change eventpublic void layerAdded(LayerManager.LayerAddEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
layerAdded
in interface LayerManager.LayerChangeListener
e
- The new added layer eventpublic void layerRemoving(LayerManager.LayerRemoveEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread after the layer was removed.
Use LayerManager.LayerRemoveEvent.scheduleRemoval(Collection)
to remove more layers.
You should not do blocking or long-running tasks in this method.
layerRemoving
in interface LayerManager.LayerChangeListener
e
- The layer to be removed (as event)public void layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
layerOrderChanged
in interface LayerManager.LayerChangeListener
e
- The order change event.