public class HistoryBrowserModel extends ChangeNotifier implements MainLayerManager.ActiveLayerChangeListener, DataSetListener
History
of a specific OsmPrimitive
History
called the PointInTimeType.REFERENCE_POINT_IN_TIME
History
called the PointInTimeType.CURRENT_POINT_IN_TIME
HistoryBrowser
always compares the PointInTimeType.REFERENCE_POINT_IN_TIME
with the
PointInTimeType.CURRENT_POINT_IN_TIME
.
This model provides various TableModel
s for JTable
s used in HistoryBrowser
, for
instance:
getTagTableModel(PointInTimeType)
replies a TableModel
for the tags of either of
the two selected versionsgetNodeListTableModel(PointInTimeType)
replies a TableModel
for the list of nodes of
the two selected versions (if the current history provides information about a Way
getRelationMemberTableModel(PointInTimeType)
replies a TableModel
for the list of relation
members of the two selected versions (if the current history provides information about a Relation
HistoryBrowser
Modifier and Type | Class and Description |
---|---|
(package private) static class |
HistoryBrowserModel.HistoryPrimitiveBuilder
Creates a
HistoryOsmPrimitive from a OsmPrimitive |
Modifier and Type | Field and Description |
---|---|
private HistoryOsmPrimitive |
current |
private DiffTableModel |
currentNodeListTableModel |
private DiffTableModel |
currentRelationMemberTableModel |
private TagTableModel |
currentTagTableModel |
private History |
history
the history of an OsmPrimitive
|
private HistoryOsmPrimitive |
latest
latest isn't a reference of history.
|
private HistoryOsmPrimitive |
reference |
private DiffTableModel |
referenceNodeListTableModel |
private DiffTableModel |
referenceRelationMemberTableModel |
private TagTableModel |
referenceTagTableModel |
private VersionTableModel |
versionTableModel |
Constructor and Description |
---|
HistoryBrowserModel()
constructor
|
HistoryBrowserModel(History history)
Creates a new history browser model for a given history.
|
Modifier and Type | Method and Description |
---|---|
void |
activeOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)
Called whenever the active or edit layer changed.
|
private boolean |
canShowAsLatest(OsmPrimitive primitive) |
void |
dataChanged(DataChangedEvent event)
Called after big changes in dataset.
|
private void |
fireModelChange() |
HistoryOsmPrimitive |
getCurrentPointInTime()
Replies the history OSM primitive for the
PointInTimeType.CURRENT_POINT_IN_TIME |
History |
getHistory()
replies the history managed by this model
|
java.util.Set<java.lang.String> |
getKeySet()
Returns the key set (union of current and reference point in type key sets).
|
HistoryOsmPrimitive |
getLatest()
Returns the latest
HistoryOsmPrimitive . |
DiffTableModel |
getNodeListTableModel(PointInTimeType pointInTimeType)
Replies the node list table model for the respective point in time.
|
HistoryOsmPrimitive |
getPointInTime(PointInTimeType type)
replies the history OSM primitive for a given point in time
|
HistoryOsmPrimitive |
getPrimitive(int row)
Returns the
HistoryPrimitive at the given row. |
HistoryOsmPrimitive |
getReferencePointInTime()
Replies the history OSM primitive for the
PointInTimeType.REFERENCE_POINT_IN_TIME |
DiffTableModel |
getRelationMemberTableModel(PointInTimeType pointInTimeType)
Replies the relation member table model for the respective point in time.
|
TagTableModel |
getTagTableModel(PointInTimeType pointInTimeType)
Replies the tag table model for the respective point in time.
|
VersionTableModel |
getVersionTableModel()
Replies the table model to be used in a
JTable which
shows the list of versions in this history. |
private void |
initMemberListTableModels() |
private void |
initNodeListTableModels()
Should be called every time either reference of current changes to update the diff.
|
private void |
initTagTableModels() |
boolean |
isCurrentPointInTime(int row)
Determines if the given row is the current point in time.
|
boolean |
isLatest(HistoryOsmPrimitive primitive)
Returns true if
primitive is the latest primitive
representing the version currently edited in the current data layer. |
boolean |
isLatest(int row)
Determines if the given row is the latest.
|
boolean |
isReferencePointInTime(int row)
Determines if the given row is the reference point in time.
|
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 |
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.
|
void |
relationMembersChanged(RelationMembersChangedEvent event)
A relation's members have changed.
|
void |
setCurrentPointInTime(HistoryOsmPrimitive current)
Sets the
HistoryOsmPrimitive which plays the role of the current point
in time (see PointInTimeType ). |
void |
setCurrentPointInTime(int row)
Sets the current point in time to the given row.
|
void |
setHistory(History history)
sets the history to be managed by this model
|
protected void |
setLatest(HistoryOsmPrimitive latest)
Sets the latest
HistoryOsmPrimitive . |
void |
setReferencePointInTime(HistoryOsmPrimitive reference)
Sets the
HistoryOsmPrimitive which plays the role of a reference point
in time (see PointInTimeType ). |
void |
setReferencePointInTime(int row)
Sets the reference point in time to the given row.
|
void |
tagsChanged(TagsChangedEvent event)
There was some change in the tag set of a primitive.
|
void |
unlinkAsListener()
Removes this model as listener for data change and layer change events.
|
void |
wayNodesChanged(WayNodesChangedEvent event)
A way's node list was changed.
|
addChangeListener, fireStateChanged, removeChangeListener
private HistoryOsmPrimitive reference
private HistoryOsmPrimitive current
private HistoryOsmPrimitive latest
OsmPrimitive
in the current edit layer.private final VersionTableModel versionTableModel
private final TagTableModel currentTagTableModel
private final TagTableModel referenceTagTableModel
private final DiffTableModel currentRelationMemberTableModel
private final DiffTableModel referenceRelationMemberTableModel
private final DiffTableModel referenceNodeListTableModel
private final DiffTableModel currentNodeListTableModel
public HistoryBrowserModel()
public HistoryBrowserModel(History history)
history
- the history. Must not be null.java.lang.IllegalArgumentException
- if history is nullpublic History getHistory()
private boolean canShowAsLatest(OsmPrimitive primitive)
public void setHistory(History history)
history
- the historyprivate void fireModelChange()
public VersionTableModel getVersionTableModel()
JTable
which
shows the list of versions in this history.private void initTagTableModels()
private void initNodeListTableModels()
private void initMemberListTableModels()
public TagTableModel getTagTableModel(PointInTimeType pointInTimeType)
pointInTimeType
- the type of the point in time (must not be null)java.lang.IllegalArgumentException
- if pointInTimeType is nullpublic DiffTableModel getNodeListTableModel(PointInTimeType pointInTimeType)
pointInTimeType
- the type of the point in time (must not be null)java.lang.IllegalArgumentException
- if pointInTimeType is nullpublic DiffTableModel getRelationMemberTableModel(PointInTimeType pointInTimeType)
pointInTimeType
- the type of the point in time (must not be null)java.lang.IllegalArgumentException
- if pointInTimeType is nullpublic void setReferencePointInTime(HistoryOsmPrimitive reference)
HistoryOsmPrimitive
which plays the role of a reference point
in time (see PointInTimeType
).reference
- the reference history primitive. Must not be null.java.lang.IllegalArgumentException
- if reference is nulljava.lang.IllegalStateException
- if this model isn't a assigned a history yetjava.lang.IllegalArgumentException
- if reference isn't an history primitive for the history managed by this modesetHistory(History)
,
PointInTimeType
public void setCurrentPointInTime(HistoryOsmPrimitive current)
HistoryOsmPrimitive
which plays the role of the current point
in time (see PointInTimeType
).current
- the reference history primitive. Must not be null
.java.lang.IllegalArgumentException
- if reference is null
java.lang.IllegalStateException
- if this model isn't a assigned a history yetjava.lang.IllegalArgumentException
- if reference isn't an history primitive for the history managed by this modesetHistory(History)
,
PointInTimeType
public HistoryOsmPrimitive getCurrentPointInTime()
PointInTimeType.CURRENT_POINT_IN_TIME
PointInTimeType.CURRENT_POINT_IN_TIME
(may be null)public HistoryOsmPrimitive getReferencePointInTime()
PointInTimeType.REFERENCE_POINT_IN_TIME
PointInTimeType.REFERENCE_POINT_IN_TIME
(may be null)public HistoryOsmPrimitive getPointInTime(PointInTimeType type)
type
- the type of the point in time (must not be null)java.lang.IllegalArgumentException
- if type is nullpublic boolean isLatest(HistoryOsmPrimitive primitive)
primitive
is the latest primitive
representing the version currently edited in the current data layer.primitive
- the primitive to checkprimitive
is the latest primitivepublic void setReferencePointInTime(int row)
row
- row numberpublic void setCurrentPointInTime(int row)
row
- row numberpublic boolean isReferencePointInTime(int row)
row
- row numbertrue
if the given row is the reference point in timepublic boolean isCurrentPointInTime(int row)
row
- row numbertrue
if the given row is the current point in timepublic HistoryOsmPrimitive getPrimitive(int row)
HistoryPrimitive
at the given row.row
- row numberHistoryPrimitive
at the given rowpublic boolean isLatest(int row)
row
- row numbertrue
if the given row is the latestpublic HistoryOsmPrimitive getLatest()
HistoryOsmPrimitive
.HistoryOsmPrimitive
public java.util.Set<java.lang.String> getKeySet()
protected void setLatest(HistoryOsmPrimitive latest)
HistoryOsmPrimitive
.latest
- the latest HistoryOsmPrimitive
public void unlinkAsListener()
public void nodeMoved(NodeMovedEvent event)
DataSetListener
nodeMoved
in interface DataSetListener
event
- The event for the node that was moved.public 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 dataChanged(DataChangedEvent event)
DataSetListener
DataSetListener.dataChanged(DataChangedEvent event)
is called.dataChanged
in interface DataSetListener
event
- data change eventpublic void otherDatasetChange(AbstractDatasetChangedEvent event)
DataSetListener
otherDatasetChange
in interface DataSetListener
event
- the event for data modificationpublic void activeOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)
MainLayerManager.ActiveLayerChangeListener
You can be sure that this layer is still contained in this set.
Listeners are called in the EDT thread and you can manipulate the layer manager in the current thread.
activeOrEditLayerChanged
in interface MainLayerManager.ActiveLayerChangeListener
e
- The change event.