org.openstreetmap.josm.gui.conflict.pair.tags
Class TagMergeModel

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by javax.swing.table.DefaultTableModel
          extended by org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeModel
All Implemented Interfaces:
java.io.Serializable, javax.swing.table.TableModel

public class TagMergeModel
extends javax.swing.table.DefaultTableModel

This is the TableModel used in the tables of the TagMerger. The model can populate(OsmPrimitive, OsmPrimitive) itself from the conflicts in the tag sets of two OsmPrimitives. Internally, it keeps a list of TagMergeItems. decide(int, MergeDecisionType) and decide(int[], MergeDecisionType) can be used to remember a merge decision for a specific row in the model. The model notifies PropertyChangeListeners about updates of the number of undecided tags (see PROP_NUM_UNDECIDED_TAGS).

See Also:
Serialized Form

Field Summary
private  java.util.List<java.beans.PropertyChangeListener> listeners
          the property change listeners
private  int numUndecidedTags
           
static java.lang.String PROP_NUM_UNDECIDED_TAGS
           
private  java.util.List<TagMergeItem> tagMergeItems
          the list of tag merge items
 
Fields inherited from class javax.swing.table.DefaultTableModel
columnIdentifiers, dataVector
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
TagMergeModel()
           
 
Method Summary
 void addItem(TagMergeItem item)
          add a TagMergeItem to the model
 void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
           
 TagConflictResolveCommand buildResolveCommand(Conflict<? extends OsmPrimitive> conflict)
           
 void decide(int[] rows, MergeDecisionType decision)
          set the merge decision of all TagMergeItem given by indices in rows to decision.
 void decide(int row, MergeDecisionType decision)
          set the merge decision of the TagMergeItem in row row to decision.
protected  void fireNumUndecidedTagsChanged(int oldValue, int newValue)
          notifies PropertyChangeListeners about an update of PROP_NUM_UNDECIDED_TAGS
 int getFirstUndecided(int startIndex)
           
 int getNumResolvedConflicts()
           
 int getRowCount()
           
 java.lang.Object getValueAt(int row, int column)
           
 boolean isCellEditable(int row, int column)
           
 boolean isResolvedCompletely()
           
 void populate(OsmPrimitive my, OsmPrimitive their)
          Populate the model with conflicts between the tag sets of the two OsmPrimitive my and their.
protected  void refreshNumUndecidedTags()
          refreshes the number of undecided tag conflicts after an update in the list of TagMergeItems.
protected  void rememberDecision(int row, MergeDecisionType decision)
           
 void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
           
 
Methods inherited from class javax.swing.table.DefaultTableModel
addColumn, addColumn, addColumn, addRow, addRow, convertToVector, convertToVector, getColumnCount, getColumnName, getDataVector, insertRow, insertRow, moveRow, newDataAvailable, newRowsAdded, removeRow, rowsRemoved, setColumnCount, setColumnIdentifiers, setColumnIdentifiers, setDataVector, setDataVector, setNumRows, setRowCount, setValueAt
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, removeTableModelListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROP_NUM_UNDECIDED_TAGS

public static final java.lang.String PROP_NUM_UNDECIDED_TAGS

tagMergeItems

private final java.util.List<TagMergeItem> tagMergeItems
the list of tag merge items


listeners

private final java.util.List<java.beans.PropertyChangeListener> listeners
the property change listeners


numUndecidedTags

private int numUndecidedTags
Constructor Detail

TagMergeModel

public TagMergeModel()
Method Detail

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)

fireNumUndecidedTagsChanged

protected void fireNumUndecidedTagsChanged(int oldValue,
                                           int newValue)
notifies PropertyChangeListeners about an update of PROP_NUM_UNDECIDED_TAGS

Parameters:
oldValue - the old value
newValue - the new value

refreshNumUndecidedTags

protected void refreshNumUndecidedTags()
refreshes the number of undecided tag conflicts after an update in the list of TagMergeItems. Notifies PropertyChangeListener if necessary.


populate

public void populate(OsmPrimitive my,
                     OsmPrimitive their)
Populate the model with conflicts between the tag sets of the two OsmPrimitive my and their.

Parameters:
my - my primitive (i.e. the primitive from the local dataset)
their - their primitive (i.e. the primitive from the server dataset)

addItem

public void addItem(TagMergeItem item)
add a TagMergeItem to the model

Parameters:
item - the item

rememberDecision

protected void rememberDecision(int row,
                                MergeDecisionType decision)

decide

public void decide(int row,
                   MergeDecisionType decision)
set the merge decision of the TagMergeItem in row row to decision.

Parameters:
row - the row
decision - the decision

decide

public void decide(int[] rows,
                   MergeDecisionType decision)
set the merge decision of all TagMergeItem given by indices in rows to decision.

Parameters:
row - the array of row indices
decision - the decision

getRowCount

public int getRowCount()
Specified by:
getRowCount in interface javax.swing.table.TableModel
Overrides:
getRowCount in class javax.swing.table.DefaultTableModel

getValueAt

public java.lang.Object getValueAt(int row,
                                   int column)
Specified by:
getValueAt in interface javax.swing.table.TableModel
Overrides:
getValueAt in class javax.swing.table.DefaultTableModel

isCellEditable

public boolean isCellEditable(int row,
                              int column)
Specified by:
isCellEditable in interface javax.swing.table.TableModel
Overrides:
isCellEditable in class javax.swing.table.DefaultTableModel

buildResolveCommand

public TagConflictResolveCommand buildResolveCommand(Conflict<? extends OsmPrimitive> conflict)

isResolvedCompletely

public boolean isResolvedCompletely()

getNumResolvedConflicts

public int getNumResolvedConflicts()

getFirstUndecided

public int getFirstUndecided(int startIndex)


JOSM