Class MemberTableModel
- java.lang.Object
-
- javax.swing.table.AbstractTableModel
-
- org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel
-
- All Implemented Interfaces:
java.io.Serializable,java.util.EventListener,javax.swing.event.TableModelListener,javax.swing.table.TableModel,DataSelectionListener,DataSetListener,ReorderableModel<RelationMember>,SortableModel<RelationMember>,ReorderableTableModel<RelationMember>,SortableTableModel<RelationMember>,OsmPrimitivesTableModel
public class MemberTableModel extends javax.swing.table.AbstractTableModel implements javax.swing.event.TableModelListener, DataSelectionListener, DataSetListener, OsmPrimitivesTableModel, SortableTableModel<RelationMember>
This is the base model used for theMemberTable. It holds the member data.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.openstreetmap.josm.data.osm.DataSelectionListener
DataSelectionListener.AbstractSelectionEvent, DataSelectionListener.SelectionAddEvent, DataSelectionListener.SelectionChangeEvent, DataSelectionListener.SelectionRemoveEvent, DataSelectionListener.SelectionReplaceEvent, DataSelectionListener.SelectionToggleEvent
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<WayConnectionType>connectionTypeprivate OsmDataLayerlayerprivate java.util.concurrent.CopyOnWriteArrayList<IMemberModelListener>listenersprivate javax.swing.DefaultListSelectionModellistSelectionModelprivate java.util.List<RelationMember>membersdata of the table model: The list of members and the cached WayConnectionType of each member.private TaggingPresetHandlerpresetHandlerprivate Relationrelationprivate RelationSorterrelationSorterprivate WayConnectionTypeCalculatorwayConnectionTypeCalculator
-
Constructor Summary
Constructors Constructor Description MemberTableModel(Relation relation, OsmDataLayer layer, TaggingPresetHandler presetHandler)constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddMemberModelListener(IMemberModelListener listener)Add a new member model listener.voidaddMembersAfterIdx(java.util.List<? extends OsmPrimitive> primitives, int idx)voidaddMembersAtBeginning(java.util.List<? extends OsmPrimitive> primitives)voidaddMembersAtEnd(java.util.List<? extends OsmPrimitive> primitives)private voidaddMembersAtIndex(java.util.List<? extends OsmPrimitive> primitives, int index)(package private) voidaddMembersAtIndexKeepingOldSelection(java.lang.Iterable<RelationMember> newMembers, int index)voidaddMembersBeforeIdx(java.util.List<? extends OsmPrimitive> primitives, int idx)private intaddToSelectedMembers(java.util.BitSet selectedIndices)Add one or more members indices to the selection.voidapplyToRelation(Relation relation)Applies this member model to the given relation.booleancanRemove(int... rows)Checks that a range of rows can be removed.voiddataChanged(DataChangedEvent event)Called after big changes in dataset.protected voidfireMakeMemberVisible(int index)java.util.Set<OsmPrimitive>getChildPrimitives(java.util.Collection<? extends OsmPrimitive> referenceSet)Replies the set of selected referrers.intgetColumnCount()java.util.Set<OsmPrimitive>getIncompleteMemberPrimitives()Replies the set of incomplete primitivesOsmDataLayergetLayer()Returns the data layer.intgetNumMembersWithPrimitive(OsmPrimitive primitive)Replies the number of members which refer to a particular primitiveOsmPrimitivegetReferredPrimitive(int idx)Gets the primitive at a given row index(package private) RelationMembergetRelationMemberForPrimitive(OsmPrimitive primitive)intgetRowCount()Returns the number of rows in the list/table.java.util.Collection<OsmPrimitive>getSelectedChildPrimitives()Replies the set of selected referrers.java.util.Set<OsmPrimitive>getSelectedIncompleteMemberPrimitives()Replies the set of selected incomplete primitivesjava.util.Collection<RelationMember>getSelectedMembers()Get the currently selected relation membersjavax.swing.DefaultListSelectionModelgetSelectionModel()Returns the selection model.RelationMembergetValue(int index)Get object value at given index.java.lang.ObjectgetValueAt(int rowIndex, int columnIndex)(package private) WayConnectionTypegetWayConnection(int i)booleanhasIncompleteMembers()Replies true if at least one the relation members is incompletebooleanhasIncompleteSelectedMembers()Replies true if at least one of the selected members is incompletebooleanhasMembersReferringTo(java.util.Collection<OsmPrimitive> primitives)Replies true if there is at least one relation member in this model which refers to at least on the primitives inprimitives.static booleanhasMembersReferringTo(java.util.Collection<RelationMember> members, java.util.Collection<OsmPrimitive> primitives)Replies true if there is at least one relation member given asmemberswhich refers to at least on the primitives inprimitives.booleanhasSameMembersAs(Relation relation)Determines if this model has the same members as the given relation.private voidinvalidateConnectionType()booleanisCellEditable(int rowIndex, int columnIndex)booleanisEditableRelation(int index)Replies true if the index-th relation members refers to an editable relation, i.e.booleanisInJosmSelection(OsmPrimitive primitive)Replies true ifprimitiveis currently selected in the layer this model is attached tobooleanmove(int delta, int... selectedRows)Move selected rows by any number of positions, if possible.voidnodeMoved(NodeMovedEvent event)A node's coordinates were modified.voidotherDatasetChange(AbstractDatasetChangedEvent event)Minor dataset change, currently only changeset id changed is supported, but can be extended in future.voidpopulate(Relation relation)Populates this model from the given relation.voidprimitivesAdded(PrimitivesAddedEvent event)A bunch of primitives were added into the DataSet, or existing deleted/invisible primitives were resurrected.voidprimitivesRemoved(PrimitivesRemovedEvent event)A bunch of primitives were removed from the DataSet, or preexisting primitives were marked as deleted.voidregister()Registers listeners (selection change and dataset change).voidrelationMembersChanged(RelationMembersChangedEvent event)A relation's members have changed.voidremove(int... selectedRows)Remove selected rows, if possible.voidremoveMemberModelListener(IMemberModelListener listener)Remove a member model listener.voidremoveMembersReferringTo(java.util.List<? extends OsmPrimitive> primitives)Remove members referring to the given list of primitives.voidreverse()Reverse the relation members.voidselectionChanged(DataSelectionListener.SelectionChangeEvent event)Called whenever the selection is changed.voidselectMembersReferringTo(java.util.Collection<? extends OsmPrimitive> primitives)Selects all members which refer toOsmPrimitives in the collectionsprimitives.voidsetSelectedMembers(java.util.Collection<RelationMember> selectedMembers)Selects the members in the collection selectedMembersvoidsetSelectedMembersIdx(java.util.Collection<java.lang.Integer> selectedIndices)Selects the members in the collection selectedIndicesRelationMembersetValue(int index, RelationMember value)Set object value at given index.voidsetValueAt(java.lang.Object value, int rowIndex, int columnIndex)voidsort()Sort the selected relation members by the way they are linked.voidsortBelow()Sort the selected relation members and all members below by the way they are linked.voidtableChanged(javax.swing.event.TableModelEvent e)voidtagsChanged(TagsChangedEvent event)There was some change in the tag set of a primitive.voidunregister()Unregisters listeners (selection change and dataset change).voidupdateRole(int[] idx, java.lang.String role)updates the role of the members given by the indices inidxvoidwayNodesChanged(WayNodesChangedEvent event)A way's node list was changed.-
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getColumnName, getListeners, getTableModelListeners, removeTableModelListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.openstreetmap.josm.data.osm.event.DataSetListener
dataChangedIndividualEvents
-
Methods inherited from interface org.openstreetmap.josm.data.ReorderableModel
canMove, canMoveDown, canMoveUp, doMove
-
Methods inherited from interface org.openstreetmap.josm.gui.util.ReorderableTableModel
canMove, canMoveDown, canMoveDown, canMoveUp, canMoveUp, getSelectedIndices, moveDown, moveDown, moveUp, moveUp, selectedIndices
-
-
-
-
Field Detail
-
members
private final transient java.util.List<RelationMember> members
data of the table model: The list of members and the cached WayConnectionType of each member.
-
connectionType
private transient java.util.List<WayConnectionType> connectionType
-
listSelectionModel
private javax.swing.DefaultListSelectionModel listSelectionModel
-
listeners
private final transient java.util.concurrent.CopyOnWriteArrayList<IMemberModelListener> listeners
-
layer
private final transient OsmDataLayer layer
-
presetHandler
private final transient TaggingPresetHandler presetHandler
-
wayConnectionTypeCalculator
private final transient WayConnectionTypeCalculator wayConnectionTypeCalculator
-
relationSorter
private final transient RelationSorter relationSorter
-
-
Constructor Detail
-
MemberTableModel
public MemberTableModel(Relation relation, OsmDataLayer layer, TaggingPresetHandler presetHandler)
constructor- Parameters:
relation- relationlayer- data layerpresetHandler- tagging preset handler
-
-
Method Detail
-
getLayer
public OsmDataLayer getLayer()
Returns the data layer.- Returns:
- the data layer
-
register
public void register()
Registers listeners (selection change and dataset change).
-
unregister
public void unregister()
Unregisters listeners (selection change and dataset change).
-
selectionChanged
public void selectionChanged(DataSelectionListener.SelectionChangeEvent event)
Description copied from interface:DataSelectionListenerCalled whenever the selection is changed. You get notified about the new selection, the elements that were added and removed and the layer that triggered the event.- Specified by:
selectionChangedin interfaceDataSelectionListener- Parameters:
event- The selection change event.- See Also:
DataSelectionListener.SelectionChangeEvent
-
dataChanged
public void dataChanged(DataChangedEvent event)
Description copied from interface:DataSetListenerCalled after big changes in dataset. Usually other events are stopped using Dataset.beginUpdate() and after operation is completed (Dataset.endUpdate()),DataSetListener.dataChanged(DataChangedEvent event)is called.- Specified by:
dataChangedin interfaceDataSetListener- Parameters:
event- data change event
-
nodeMoved
public void nodeMoved(NodeMovedEvent event)
Description copied from interface:DataSetListenerA node's coordinates were modified.- Specified by:
nodeMovedin interfaceDataSetListener- Parameters:
event- The event for the node that was moved.
-
primitivesAdded
public void primitivesAdded(PrimitivesAddedEvent event)
Description copied from interface:DataSetListenerA bunch of primitives were added into the DataSet, or existing deleted/invisible primitives were resurrected.- Specified by:
primitivesAddedin interfaceDataSetListener- Parameters:
event- An event for an collection of newly-visible primitives
-
primitivesRemoved
public void primitivesRemoved(PrimitivesRemovedEvent event)
Description copied from interface:DataSetListenerA bunch of primitives were removed from the DataSet, or preexisting primitives were marked as deleted.- Specified by:
primitivesRemovedin interfaceDataSetListener- Parameters:
event- An event for an collection of newly-invisible primitives
-
relationMembersChanged
public void relationMembersChanged(RelationMembersChangedEvent event)
Description copied from interface:DataSetListenerA relation's members have changed.- Specified by:
relationMembersChangedin interfaceDataSetListener- Parameters:
event- The event for the relation that was modified.
-
tagsChanged
public void tagsChanged(TagsChangedEvent event)
Description copied from interface:DataSetListenerThere was some change in the tag set of a primitive. It can have been a tag addition, tag removal or change in tag value.- Specified by:
tagsChangedin interfaceDataSetListener- Parameters:
event- the event for the primitive, whose tags were affected.
-
wayNodesChanged
public void wayNodesChanged(WayNodesChangedEvent event)
Description copied from interface:DataSetListenerA way's node list was changed.- Specified by:
wayNodesChangedin interfaceDataSetListener- Parameters:
event- The event for the way that was modified.
-
otherDatasetChange
public void otherDatasetChange(AbstractDatasetChangedEvent event)
Description copied from interface:DataSetListenerMinor dataset change, currently only changeset id changed is supported, but can be extended in future.- Specified by:
otherDatasetChangein interfaceDataSetListener- Parameters:
event- the event for data modification
-
addMemberModelListener
public void addMemberModelListener(IMemberModelListener listener)
Add a new member model listener.- Parameters:
listener- member model listener to add
-
removeMemberModelListener
public void removeMemberModelListener(IMemberModelListener listener)
Remove a member model listener.- Parameters:
listener- member model listener to remove
-
fireMakeMemberVisible
protected void fireMakeMemberVisible(int index)
-
populate
public void populate(Relation relation)
Populates this model from the given relation.- Parameters:
relation- relation
-
getColumnCount
public int getColumnCount()
- Specified by:
getColumnCountin interfacejavax.swing.table.TableModel
-
getRowCount
public int getRowCount()
Description copied from interface:ReorderableTableModelReturns the number of rows in the list/table.- Specified by:
getRowCountin interfaceReorderableTableModel<RelationMember>- Specified by:
getRowCountin interfacejavax.swing.table.TableModel- Returns:
- the number of rows in the list/table
- See Also:
ListModel.getSize(),TableModel.getRowCount()
-
getValueAt
public java.lang.Object getValueAt(int rowIndex, int columnIndex)
- Specified by:
getValueAtin interfacejavax.swing.table.TableModel
-
isCellEditable
public boolean isCellEditable(int rowIndex, int columnIndex)
- Specified by:
isCellEditablein interfacejavax.swing.table.TableModel- Overrides:
isCellEditablein classjavax.swing.table.AbstractTableModel
-
setValueAt
public void setValueAt(java.lang.Object value, int rowIndex, int columnIndex)
- Specified by:
setValueAtin interfacejavax.swing.table.TableModel- Overrides:
setValueAtin classjavax.swing.table.AbstractTableModel
-
getReferredPrimitive
public OsmPrimitive getReferredPrimitive(int idx)
Description copied from interface:OsmPrimitivesTableModelGets the primitive at a given row index- Specified by:
getReferredPrimitivein interfaceOsmPrimitivesTableModel- Parameters:
idx- The row- Returns:
- The primitive in that row
-
move
public boolean move(int delta, int... selectedRows)
Description copied from interface:ReorderableTableModelMove selected rows by any number of positions, if possible.- Specified by:
movein interfaceReorderableTableModel<RelationMember>- Parameters:
delta- negative or positive deltaselectedRows- rows to move- Returns:
trueif the move was performed- See Also:
ReorderableTableModel.canMove(int)
-
remove
public void remove(int... selectedRows)
Remove selected rows, if possible.- Parameters:
selectedRows- rows to remove- See Also:
canRemove(int...)
-
canRemove
public boolean canRemove(int... rows)
Checks that a range of rows can be removed.- Parameters:
rows- indexes of rows to remove- Returns:
trueif rows can be removed
-
getSelectionModel
public javax.swing.DefaultListSelectionModel getSelectionModel()
Description copied from interface:ReorderableTableModelReturns the selection model.- Specified by:
getSelectionModelin interfaceReorderableTableModel<RelationMember>- Returns:
- the selection model (never null)
- See Also:
JList.getSelectionModel(),JTable.getSelectionModel()
-
getValue
public RelationMember getValue(int index)
Description copied from interface:ReorderableModelGet object value at given index.- Specified by:
getValuein interfaceReorderableModel<RelationMember>- Parameters:
index- index- Returns:
- object value at given index
-
setValue
public RelationMember setValue(int index, RelationMember value)
Description copied from interface:ReorderableModelSet object value at given index.- Specified by:
setValuein interfaceReorderableModel<RelationMember>- Parameters:
index- indexvalue- new value- Returns:
- the value previously at the specified position
-
removeMembersReferringTo
public void removeMembersReferringTo(java.util.List<? extends OsmPrimitive> primitives)
Remove members referring to the given list of primitives.- Parameters:
primitives- list of OSM primitives
-
applyToRelation
public void applyToRelation(Relation relation)
Applies this member model to the given relation.- Parameters:
relation- relation
-
hasSameMembersAs
public boolean hasSameMembersAs(Relation relation)
Determines if this model has the same members as the given relation.- Parameters:
relation- relation- Returns:
trueif this model has the same members asrelation
-
getIncompleteMemberPrimitives
public java.util.Set<OsmPrimitive> getIncompleteMemberPrimitives()
Replies the set of incomplete primitives- Returns:
- the set of incomplete primitives
-
getSelectedIncompleteMemberPrimitives
public java.util.Set<OsmPrimitive> getSelectedIncompleteMemberPrimitives()
Replies the set of selected incomplete primitives- Returns:
- the set of selected incomplete primitives
-
hasIncompleteMembers
public boolean hasIncompleteMembers()
Replies true if at least one the relation members is incomplete- Returns:
- true if at least one the relation members is incomplete
-
hasIncompleteSelectedMembers
public boolean hasIncompleteSelectedMembers()
Replies true if at least one of the selected members is incomplete- Returns:
- true if at least one of the selected members is incomplete
-
addMembersAtIndex
private void addMembersAtIndex(java.util.List<? extends OsmPrimitive> primitives, int index)
-
getRelationMemberForPrimitive
RelationMember getRelationMemberForPrimitive(OsmPrimitive primitive)
-
addMembersAtIndexKeepingOldSelection
void addMembersAtIndexKeepingOldSelection(java.lang.Iterable<RelationMember> newMembers, int index)
-
addMembersAtBeginning
public void addMembersAtBeginning(java.util.List<? extends OsmPrimitive> primitives)
-
addMembersAtEnd
public void addMembersAtEnd(java.util.List<? extends OsmPrimitive> primitives)
-
addMembersBeforeIdx
public void addMembersBeforeIdx(java.util.List<? extends OsmPrimitive> primitives, int idx)
-
addMembersAfterIdx
public void addMembersAfterIdx(java.util.List<? extends OsmPrimitive> primitives, int idx)
-
getNumMembersWithPrimitive
public int getNumMembersWithPrimitive(OsmPrimitive primitive)
Replies the number of members which refer to a particular primitive- Parameters:
primitive- the primitive- Returns:
- the number of members which refer to a particular primitive
-
updateRole
public void updateRole(int[] idx, java.lang.String role)
updates the role of the members given by the indices inidx- Parameters:
idx- the array of indicesrole- the new role
-
getSelectedMembers
public java.util.Collection<RelationMember> getSelectedMembers()
Get the currently selected relation members- Returns:
- a collection with the currently selected relation members
-
getSelectedChildPrimitives
public java.util.Collection<OsmPrimitive> getSelectedChildPrimitives()
Replies the set of selected referrers. Never null, but may be empty.- Returns:
- the set of selected referrers
-
getChildPrimitives
public java.util.Set<OsmPrimitive> getChildPrimitives(java.util.Collection<? extends OsmPrimitive> referenceSet)
Replies the set of selected referrers. Never null, but may be empty.- Parameters:
referenceSet- reference set- Returns:
- the set of selected referrers
-
setSelectedMembers
public void setSelectedMembers(java.util.Collection<RelationMember> selectedMembers)
Selects the members in the collection selectedMembers- Parameters:
selectedMembers- the collection of selected members
-
setSelectedMembersIdx
public void setSelectedMembersIdx(java.util.Collection<java.lang.Integer> selectedIndices)
Selects the members in the collection selectedIndices- Parameters:
selectedIndices- the collection of selected member indices
-
addToSelectedMembers
private int addToSelectedMembers(java.util.BitSet selectedIndices)
Add one or more members indices to the selection. Detect groups of consecutive indices. Only one costly call of addSelectionInterval is performed for each group- Parameters:
selectedIndices- selected indices as a bitset- Returns:
- number of groups
-
isEditableRelation
public boolean isEditableRelation(int index)
Replies true if the index-th relation members refers to an editable relation, i.e. a relation which is not incomplete.- Parameters:
index- the index- Returns:
- true, if the index-th relation members refers to an editable relation, i.e. a relation which is not incomplete
-
hasMembersReferringTo
public static boolean hasMembersReferringTo(java.util.Collection<RelationMember> members, java.util.Collection<OsmPrimitive> primitives)
Replies true if there is at least one relation member given asmemberswhich refers to at least on the primitives inprimitives.- Parameters:
members- the membersprimitives- the collection of primitives- Returns:
- true if there is at least one relation member in this model
which refers to at least on the primitives in
primitives; false otherwise
-
hasMembersReferringTo
public boolean hasMembersReferringTo(java.util.Collection<OsmPrimitive> primitives)
Replies true if there is at least one relation member in this model which refers to at least on the primitives inprimitives.- Parameters:
primitives- the collection of primitives- Returns:
- true if there is at least one relation member in this model
which refers to at least on the primitives in
primitives; false otherwise
-
selectMembersReferringTo
public void selectMembersReferringTo(java.util.Collection<? extends OsmPrimitive> primitives)
Selects all members which refer toOsmPrimitives in the collectionsprimitives. Does nothing is primitives is null.- Parameters:
primitives- the collection of primitives
-
isInJosmSelection
public boolean isInJosmSelection(OsmPrimitive primitive)
Replies true ifprimitiveis currently selected in the layer this model is attached to- Parameters:
primitive- the primitive- Returns:
- true if
primitiveis currently selected in the layer this model is attached to, false otherwise
-
sort
public void sort()
Sort the selected relation members by the way they are linked.- Specified by:
sortin interfaceSortableModel<RelationMember>
-
sortBelow
public void sortBelow()
Sort the selected relation members and all members below by the way they are linked.
-
getWayConnection
WayConnectionType getWayConnection(int i)
-
tableChanged
public void tableChanged(javax.swing.event.TableModelEvent e)
- Specified by:
tableChangedin interfacejavax.swing.event.TableModelListener
-
invalidateConnectionType
private void invalidateConnectionType()
-
reverse
public void reverse()
Reverse the relation members.- Specified by:
reversein interfaceSortableModel<RelationMember>
-
-