Revision 1506

View differences:

org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.impl/src/main/java/org/gvsig/raster/swing/impl/pagedtable/TableEntryControllerPanel.java
446 446
			
447 447
			if(option == Pager.CHANGE_REMOVE_ENTRY ) {
448 448
				setNItems(pager.getEntriesCount());
449
				int[] selectedRows = pager.getSelectedRows();
450
				if(selectedRows != null && selectedRows.length >= 1) {
451
					setSelectedIndex(selectedRows[0] - 1);
452
				}
449 453
			}
450 454
			
451 455
			if(option == Pager.CHANGE_REMOVE_ALL ) {
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.impl/src/main/java/org/gvsig/raster/swing/impl/pagedtable/TableListener.java
42 42
	private PagedTable                pagedTable            = null;
43 43
	private TableEntryControllerPanel controlPanel          = null;
44 44
	private MoveRowsPanel             moveRowsPanel         = null;
45
	private Pager                     pager                 = null;
46 45
	public boolean                    enableNewLineListener = true;
47 46

  
48 47
	/**
......
122 121
		}
123 122

  
124 123
		if (e.getSource() == controlPanel.getBLast()) {
125
			pagedTable.setSelectedRow(pager.getEntriesCount() - 1);
124
			pagedTable.setSelectedRow(-1); //With -1 selects the last
126 125
		}
127 126

  
128 127
		if (e.getSource() == controlPanel.getBNext()) {
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.impl/src/main/java/org/gvsig/raster/swing/impl/pagedtable/Pager.java
76 76
	}
77 77
	
78 78
	public void increaseSelectedRows() {
79
		boolean change = false;
79 80
		for (int i = 0; i < selectedRows.length; i++) {
80
			if(selectedRows[i] < selectedRows.length - 1)
81
			if(selectedRows[i] < getEntriesCount()) {
81 82
				selectedRows[i] ++;
83
				change = true;
84
			}
82 85
		}
83
		setChanged();
84
	    notifyObservers(CHANGE_SELECTED_ROWS);
86
		if(change) {
87
			setChanged();
88
			notifyObservers(CHANGE_SELECTED_ROWS);
89
		}
85 90
	}
86 91
	
87 92
	public void decreaseSelectedRows() {
93
		boolean change = false;
88 94
		for (int i = 0; i < selectedRows.length; i++) {
89
			if(selectedRows[i] > 0)
95
			if(selectedRows[i] > 0) {
90 96
				selectedRows[i] --;
97
				change = true;
98
			}
91 99
		}
92
		setChanged();
93
	    notifyObservers(CHANGE_SELECTED_ROWS);
100
		if(change) {
101
			setChanged();
102
			notifyObservers(CHANGE_SELECTED_ROWS);
103
		}
94 104
	}
95 105
	
96 106
	public void addSelectedRow(int row) {
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.impl/src/main/java/org/gvsig/raster/swing/impl/pagedtable/PagedTableImpl.java
203 203
	}
204 204
	
205 205
	public int[] getSelectedRows() {
206
		/*int[] tSelected = getJTable().getSelectedRows();
207
		int[] result = new int[tSelected.length];
208
		for (int i = 0; i < result.length; i++) {
209
			result[i] =  pager.getSelectedPageNumber() * pager.getEntriesPerPage() + tSelected[i];
210
		}
211
		return result;*/
212 206
		return pager.getSelectedRows();
213 207
	}
214 208
	
......
226 220
	}
227 221
	
228 222
	public void setSelectedRow(int row) {
229
		pager.setSelectedRows(new int[]{row});
223
		if(row == -1) {
224
			pager.setSelectedRows(new int[]{pager.getEntriesCount() - 1});
225
		} else {
226
			pager.setSelectedRows(new int[]{row});
227
		}
230 228
	}
231 229
	
232 230
	public void addSelectedRow(int row) {
......
234 232
	}
235 233
	
236 234
	public void increaseSelectedRows() {
237
		pager.increaseSelectedPage();
235
		pager.increaseSelectedRows();
238 236
	}
239 237
	
240 238
	public void decreaseSelectedRows() {
241
		pager.decreaseSelectedPage();
239
		pager.decreaseSelectedRows();
242 240
	}
243 241
	
244 242
	public TableModel getTableModel() {
......
267 265
	 * Reloads the selected page in the visual table
268 266
	 */
269 267
	private int reloadPage() {
270
		removeAllVisualRows();
268
		model.setNumRows(0);
271 269
		List<Object> lines = pager.getSelectedPage();
272 270
		if(lines == null)
273 271
			return pager.getSelectedPageNumber();
......
277 275
		return pager.getSelectedPageNumber();
278 276
	}
279 277
	
280
	/**
281
	 * Removes all rows of this table.
282
	 */
283
	private void removeAllVisualRows() {
284
		model.setNumRows(0);
285
		getTableEntryController().setNItems(0);
278
	
279
	private void loadPageInTable(int page, int selection) {
280
		for (int i = model.getRowCount() - 1; i >= 0; i--) {
281
			model.removeRow(i);
282
		}
283
		List<Object> pageElements = pager.getPage(page);
284
		for (int i = 0; i < pageElements.size(); i++) {
285
			model.addRow((Object[])pageElements.get(i));
286
		}
287
		if(selection >= 0 && selection < model.getRowCount()) {
288
			getJTable().setRowSelectionInterval(selection, selection);
289
		}
286 290
	}
287
	
288
	/**
289
	 * Selects a i point
290
	 * @param i punto a seleccionar
291
	 */
292
	/*private void setSelectedIndex(int i) {
293
		//int index = pager.getSelectedPageNumber() * pager.getEntriesPerPage() + i;
294
		//pager.setSelectedRows(new int[]{index});
295
		//getMoveRowsPanel().setSelectedIndex(i, model.getRowCount());
296
		getJTable().setRowSelectionInterval(i, i);
297
	}*/
298
	
291

  
299 292
	public void mouseClicked(MouseEvent e) {
300 293
		if(e.getSource() == jTable) {
301 294
			//When the user clicks on table, it selects the entry in the table control
......
335 328
						pager.setSelectedPage(pager.getPageFromRow(selectedRows[0]));
336 329
						reloadPage();
337 330
					}
331
					int r = selectedRows[0] % pager.getEntriesPerPage();
332
					if(r >= 0 && r < model.getRowCount())
333
						getJTable().setRowSelectionInterval(r, r);
338 334
				}
339 335
			}
340 336
			
......
348 344
					getPaginationBar().getSelectedPage().setText(pager.getSelectedPageNumber() + "");
349 345
				}
350 346
				model.addRow(pager.getLastEntry());
347
				int lastTableRow = model.getRowCount() - 1;
348
				getJTable().setRowSelectionInterval(lastTableRow, lastTableRow);
351 349
			}
352 350
			
353 351
			if(option == Pager.CHANGE_REMOVE_ENTRY ) {
......
358 356
				if(currentPage != pageLoaded) { 
359 357
					int r = model.getRowCount() - 1;
360 358
					getJTable().setRowSelectionInterval(r, r);
361
				} else if(selectedRow >= 0 && selectedRow < model.getRowCount()) {
362
					getJTable().setRowSelectionInterval(selectedRow, selectedRow);
359
				} else {
360
					if(selectedRow >= 0 && selectedRow < model.getRowCount()) {
361
						getJTable().setRowSelectionInterval(selectedRow, selectedRow);
362
					} else {
363
						getJTable().setRowSelectionInterval(0, 0);
364
					}
363 365
				}
364 366
			}
365 367
			

Also available in: Unified diff