private void setDelegate(PositionsModel positionsModel) { this.delegate = positionsModel; positionsModel.addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { updateAdapterFromDelegate(e); } }); }
int findSuccessorWithTime(PositionsModel positionsModel, int index) { while (index < positionsModel.getRowCount()) { NavigationPosition position = positionsModel.getPosition(index); if (position.hasTime()) return index; index++; } return -1; }
public BaseRoute getRoute() { return delegate.getRoute(); }
private void removePosition(LatLong latLong, Double threshold) { int row = positionsModel.getClosestPosition(latLong.longitude, latLong.latitude, threshold); log.info("Deleting position at " + latLong + " from row " + row); if (row != -1) { positionsModel.remove(new int[]{row}); } }
private int getAddRow() { NavigationPosition position = lastSelectedPositions.size() > 0 ? lastSelectedPositions.get(lastSelectedPositions.size() - 1) : null; // quite crude logic to be as robust as possible on failures if (position == null && positionsModel.getRowCount() > 0) position = positionsModel.getPosition(positionsModel.getRowCount() - 1); return position != null ? positionsModel.getIndex(position) + 1 : 0; }
selectedPositions.add(positionsModel.getPosition(i)); for (int i = 0; i < selectedPositions.size(); i++) { if (i == positionsModel.getRowCount() - 1 || i == selectedPositions.size() - 1) continue; final List<BaseNavigationPosition> positions = new ArrayList<>(); for (NavigationPosition position : result.getPositions()) { positions.add(positionsModel.getRoute().createPosition(position.getLongitude(), position.getLatitude(), position.getElevation(), null, null, null)); final int insertRow = positionsModel.getIndex(selectedPositions.get(i)) + 1;
private void movePosition(int row, Double longitude, Double latitude) { NavigationPosition reference = positionsModel.getPosition(row); Double diffLongitude = reference != null ? longitude - reference.getLongitude() : 0.0; Double diffLatitude = reference != null ? latitude - reference.getLatitude() : 0.0; minimum = index; NavigationPosition position = positionsModel.getPosition(index); if (position == null) continue; continue; positionsModel.edit(index, new PositionColumnValues(asList(LONGITUDE_COLUMN_INDEX, LATITUDE_COLUMN_INDEX), Arrays.asList(position.getLongitude() + diffLongitude, position.getLatitude() + diffLatitude)), false, true); } else { positionsModel.edit(index, new PositionColumnValues(asList(LONGITUDE_COLUMN_INDEX, LATITUDE_COLUMN_INDEX), Arrays.asList(longitude, latitude)), false, true); positionsModel.edit(index, new PositionColumnValues(DATE_TIME_COLUMN_INDEX, null), false, false); if (cleanElevation) positionsModel.edit(index, new PositionColumnValues(ELEVATION_COLUMN_INDEX, null), false, false); size = positionsModel.getRoute().getPositions().size() - 1; haveToRepaintRouteImmediately = true; routeUpdateReason = "move position"; positionsModel.fireTableRowsUpdated(minimum, size, ALL_COLUMNS);
public boolean run(int index, NavigationPosition position) { NavigationPosition predecessor = index > 0 && index < positionsModel.getRowCount() ? positionsModel.getPosition(index - 1) : null; if (predecessor != null) { String previousSpeed = formatSpeed(position.getSpeed()); String nextSpeed = formatSpeed(position.calculateSpeed(predecessor)); boolean changed = nextSpeed != null && !nextSpeed.equals(previousSpeed); if (changed) positionsModel.edit(index, new PositionColumnValues(SPEED_COLUMN_INDEX, nextSpeed), false, true); return changed; } return false; }
private NavigationPosition insertRow(int row, NavigationPosition position) { String description = getBatchPositionAugmenter().createDescription(positionsModel.getRowCount() + 1, null); positionsModel.add(row, position.getLongitude(), position.getLatitude(), position.getElevation(), position.getSpeed(), position.getTime(), description); return positionsModel.getPosition(row); }
private void insertPosition(int row, Double longitude, Double latitude) { positionsModel.add(row, longitude, latitude, null, null, null, mapViewCallback.createDescription(positionsModel.getRowCount() + 1, null)); int[] rows = new int[]{row}; positionsSelectionModel.setSelectedPositions(rows, true); if (preferences.getBoolean(COMPLEMENT_DATA_PREFERENCE, false)) mapViewCallback.complementData(rows, true, true, true, true, false); }
private void initialize() { handleAdd(0, positions.getRowCount() - 1); positions.addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { switch (e.getType()) { case INSERT: handleAdd(e.getFirstRow(), e.getLastRow()); break; case UPDATE: handleUpdate(e.getFirstRow(), e.getLastRow(), e.getColumn()); break; case DELETE: if (getPositions().isContinousRange()) return; handleRemove(e.getFirstRow(), e.getLastRow()); break; default: throw new IllegalArgumentException("Event type " + e.getType() + " is not supported"); } } }); }
public NavigationPosition getPosition(int rowIndex) { return delegate.getPosition(rowIndex); }
public void run() { // remove all from previous event map updater eventMapUpdater.handleRemove(0, MAX_VALUE); // select current event map updater and let him add all eventMapUpdater = getEventMapUpdaterFor(positionsModel.getRoute().getCharacteristics()); eventMapUpdater.handleAdd(0, MapsforgeMapView.this.positionsModel.getRowCount() - 1); } });
protected void updateAdapterFromDelegate(TableModelEvent e) { // ignored updates on columns not displayed if (e.getType() == UPDATE && !isFirstToLastRow(e) && !(e.getColumn() == LONGITUDE_COLUMN_INDEX || e.getColumn() == LATITUDE_COLUMN_INDEX)) return; if (getDelegate().isContinousRange()) return; BaseRoute route = getDelegate().getRoute(); if (route != null && route.getCharacteristics() == Waypoints) { updateLabel(0, 0); } } }
protected void paste(List<NavigationPosition> sourcePositions) throws IOException { int[] selectedRows = table.getSelectedRows(); final int insertRow = selectedRows.length > 0 ? selectedRows[0] + 1 : table.getRowCount(); List<BaseNavigationPosition> targetPositions = convertPositions(sourcePositions, positionsModel.getRoute().getFormat()); positionsModel.add(insertRow, targetPositions); final int lastRow = insertRow - 1 + targetPositions.size(); invokeLater(new Runnable() { public void run() { selectAndScrollToPosition(table, insertRow, lastRow); } }); }
int fromIndex = selectedRows[i]; fromIndex = max(fromIndex, 0); int toIndex = i + 1 < selectedRows.length ? selectedRows[i + 1] : positionsModel.getRowCount(); toIndex = max(toIndex, 0); if (fromIndex == 0 && toIndex == 0) break; List<NavigationPosition> positions = positionsModel.getPositions(fromIndex, toIndex); positionsModel.remove(fromIndex, toIndex); NavigationFormat format = formatAndRoutesModel.getFormat(); @SuppressWarnings({"unchecked"})
protected void updateAdapterFromDelegate(TableModelEvent e) { // ignored updates on columns not relevant for row count if (e.getType() == UPDATE && !isFirstToLastRow(e)) return; if (getDelegate().isContinousRange()) return; label.setText(Integer.toString(getDelegate().getRowCount())); } }
public void edit(int rowIndex, PositionColumnValues columnToValues, boolean fireEvent, boolean trackUndo) { delegate.edit(rowIndex, columnToValues, fireEvent, trackUndo); }
public void tableChanged(TableModelEvent e) { if (positionsModel.isContinousRange()) return; handlePositionsUpdate(); } });
boolean hasInsertedRowInMapCenter = false; for (int row : rowIndices) { int insertRow = row > positionsModel.getRowCount() - 1 ? row : row + 1; positionsModel.getRowCount() > 0 ? calculateCenter(positionsModel.getRowCount() - 1) : null; if (center == null) { List<Integer> insertedRows = new ArrayList<>(); for (NavigationPosition position : insertedPositions) { int index = positionsModel.getIndex(position); insertedRows.add(index); complementRow(index);