Index: route-converter/src/main/java/slash/navigation/converter/gui/models/PositionsModelImpl.java =================================================================== @@ -50,7 +50,12 @@ + private PositionsTableColumnModel positionsTableColumnModel; + public void setPositionsTableColumnModel( PositionsTableColumnModel pmtcm) { + positionsTableColumnModel = pmtcm; + } + @@ -65,7 +70,10 @@ + if ( null != positionsTableColumnModel ) + return positionsTableColumnModel.getColumnCount(); + return 0; Index: route-converter/src/main/java/slash/navigation/converter/gui/models/FormatAndRoutesModel.java =================================================================== @@ -72,6 +72,14 @@ + public void setPositionsTableColumnModel( PositionsTableColumnModel ptcm ){ + if ( null != getPositionsModel() ) { + UndoPositionsModel upm = (UndoPositionsModel) getPositionsModel(); + if (null != upm) { + upm.setPositionsTableColumnModel( ptcm ); + } + } + } Index: route-converter/src/main/java/slash/navigation/converter/gui/undo/UndoPositionsModel.java =================================================================== @@ -7,6 +7,7 @@ +import slash.navigation.converter.gui.models.PositionsTableColumnModel; @@ -29,6 +30,10 @@ + public void setPositionsTableColumnModel( PositionsTableColumnModel pmtcm) { + delegate.setPositionsTableColumnModel(pmtcm); + } + Index: mapview/src/main/java/slash/navigation/converter/gui/models/PositionsModel.java =================================================================== @@ -64,4 +64,10 @@ + public int getRowCount(); + public int getColumnCount(); + public String getColumnName( int columnIndex ); + public Class getColumnClass( int columnIndex ); + public Object getValueAt( int rowIndex, int columnIndex ); Index: route-converter/src/main/java/slash/navigation/converter/gui/panels/ConvertPanel.java =================================================================== @@ -104,13 +105,16 @@ +import javax.swing.table.TableRowSorter; @@ -141,6 +145,7 @@ + private TableRowSorter sorter; @@ -194,7 +199,7 @@ + int[] selectedRows = retrieveSelectedRows(); @@ -204,7 +209,7 @@ - int[] selectedRows = tablePositions.getSelectedRows(); + int[] selectedRows = retrieveSelectedRows(); @@ -217,7 +222,7 @@ - int[] selectedRows = tablePositions.getSelectedRows(); @@ -227,7 +232,7 @@ - int[] selectedRows = tablePositions.getSelectedRows(); + int[] selectedRows = retrieveSelectedRows(); @@ -265,12 +270,16 @@ + sorter = new TableRowSorter( getPositionsModel() ); + tablePositions.setRowSorter( sorter ); getPositionsModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { handlePositionsUpdate(); } }); + formatAndRoutesModel.setPositionsTableColumnModel( tableColumnModel ); + @@ -780,7 +823,7 @@ - int[] selectedRows = tablePositions.getSelectedRows(); + int[] selectedRows = retrieveSelectedRows(); @@ -1181,4 +1225,59 @@ + private int[] retrieveSelectedRows() { + + int[] selectedRows = tablePositions.getSelectedRows(); + + int[] convertedRows = new int[ selectedRows.length ]; + + int index; + + int count = 0; + + for (int i = 0; i < selectedRows.length; ++i){ + index = selectedRows[i]; + if ( 0 > index ) { + // we shouldn't get here!?! + convertedRows[i] = -1; + } else { + + index = tablePositions.convertRowIndexToModel( index ); + convertedRows[i] = index; + count++; + + } + } + + selectedRows = new int[count]; + + for (int k = 0, i= 0; k < count; ++k) { + if (0 <= convertedRows[k]) { + + selectedRows[i] = convertedRows[k]; + ++i; + } + } + + return selectedRows; + } +}