/** * Returns the currently selected ranges. * * @return * An immutable list containing the currently selected ranges. Note that the returned * list is a wrapper around the actual selection, not a copy. Any changes made to the * selection state will be reflected in the list, but events will not be fired. */ public ImmutableList<Span> getSelectedRanges() { return rangeSelection.getSelectedRanges(); }
@Override public void listCleared(List<Object> list) { int cleared = rangeSelection.getLength(); rangeSelection.clear(); tableViewRowListeners.rowsCleared(TableView.this); if (cleared > 0) { tableViewSelectionListeners.selectedRangesChanged(TableView.this, getSelectedRanges()); if (selectMode == SelectMode.SINGLE) { tableViewSelectionListeners.selectedRowChanged(TableView.this, null); } } }
@Override public void itemsRemoved(List<Object> list, int index, Sequence<Object> items) { int count = items.getLength(); int previousSelectedIndex; if (selectMode == SelectMode.SINGLE && rangeSelection.getLength() > 0) { previousSelectedIndex = rangeSelection.get(0).start; } else { previousSelectedIndex = -1; } // Decrement selected ranges int updated = rangeSelection.removeIndexes(index, count); // Notify listeners that items were removed tableViewRowListeners.rowsRemoved(TableView.this, index, count); if (updated > 0) { tableViewSelectionListeners.selectedRangesChanged(TableView.this, getSelectedRanges()); if (selectMode == SelectMode.SINGLE && getSelectedIndex() != previousSelectedIndex) { tableViewSelectionListeners.selectedRowChanged(TableView.this, null); } } }
Sequence<Span> previousSelectedRanges = this.rangeSelection.getSelectedRanges(); Object previousSelectedItem = (selectMode == SelectMode.SINGLE) ? getSelectedItem() : null; RangeSelection listSelection = new RangeSelection(); for (int i = 0, n = selectedRanges.getLength(); i < n; i++) { Span range = selectedRanges.get(i); listSelection.addRange(range.start, range.end);
@Override public void itemInserted(List<Object> list, int index) { // Increment selected ranges int updated = rangeSelection.insertIndex(index); // Notify listeners that items were inserted tableViewRowListeners.rowInserted(TableView.this, index); if (updated > 0) { tableViewSelectionListeners.selectedRangesChanged(TableView.this, getSelectedRanges()); } }
/** * Clears the selection. */ public void clearSelection() { if (rangeSelection.getLength() > 0) { setSelectedRanges(new ArrayList<Span>(0)); } }
/** * Returns the selection state of a given index. * * @param index * The index whose selection state is to be tested. * * @return <tt>true</tt> if the index is selected; <tt>false</tt>, * otherwise. */ public boolean isItemSelected(int index) { indexBoundsCheck("index", index, 0, listData.getLength() - 1); return (rangeSelection.containsIndex(index)); }
/** * Adds a range of indexes to the selection. * * @param start * The first index in the range. * * @param end * The last index in the range. * * @return * The ranges that were added to the selection. */ public Sequence<Span> addSelectedRange(int start, int end) { if (selectMode != SelectMode.MULTI) { throw new IllegalStateException("List view is not in multi-select mode."); } if (start < 0 || end >= listData.getLength()) { throw new IndexOutOfBoundsException(); } Sequence<Span> addedRanges = rangeSelection.addRange(start, end); int n = addedRanges.getLength(); for (int i = 0; i < n; i++) { Span addedRange = addedRanges.get(i); listViewSelectionListeners.selectedRangeAdded(this, addedRange.start, addedRange.end); } if (n > 0) { listViewSelectionListeners.selectedRangesChanged(this, null); } return addedRanges; }
ArrayList<Span> addedRanges = new ArrayList<Span>(); Span range = normalize(start, end); assert(range.start >= 0);
@Override public void listCleared(List<Object> list) { int cleared = rangeSelection.getLength(); rangeSelection.clear(); tableViewRowListeners.rowsCleared(TableView.this); if (cleared > 0) { tableViewSelectionListeners.selectedRangesChanged(TableView.this, getSelectedRanges()); if (selectMode == SelectMode.SINGLE) { tableViewSelectionListeners.selectedRowChanged(TableView.this, null); } } }
@Override public void itemsRemoved(List<Object> list, int index, Sequence<Object> items) { int count = items.getLength(); int previousSelectedIndex; if (selectMode == SelectMode.SINGLE && rangeSelection.getLength() > 0) { previousSelectedIndex = rangeSelection.get(0).start; } else { previousSelectedIndex = -1; } // Decrement selected ranges int updated = rangeSelection.removeIndexes(index, count); // Notify listeners that items were removed tableViewRowListeners.rowsRemoved(TableView.this, index, count); if (updated > 0) { tableViewSelectionListeners.selectedRangesChanged(TableView.this, getSelectedRanges()); if (selectMode == SelectMode.SINGLE && getSelectedIndex() != previousSelectedIndex) { tableViewSelectionListeners.selectedRowChanged(TableView.this, null); } } }
Sequence<Span> previousSelectedRanges = this.rangeSelection.getSelectedRanges(); Object previousSelectedItem = (selectMode == SelectMode.SINGLE) ? getSelectedItem() : null; RangeSelection listSelection = new RangeSelection(); for (int i = 0, n = selectedRanges.getLength(); i < n; i++) { Span range = selectedRanges.get(i); listSelection.addRange(range.start, range.end);
@Override public void itemInserted(List<Object> list, int index) { // Increment selected ranges int updated = rangeSelection.insertIndex(index); // Notify listeners that items were inserted tableViewRowListeners.rowInserted(TableView.this, index); if (updated > 0) { tableViewSelectionListeners.selectedRangesChanged(TableView.this, getSelectedRanges()); } }
/** * Clears the selection. */ public void clearSelection() { if (rangeSelection.getLength() > 0) { setSelectedRanges(new ArrayList<Span>(0)); } }
/** * Returns the selection state of a given index. * * @param index * The index whose selection state is to be tested. * * @return <tt>true</tt> if the index is selected; <tt>false</tt>, * otherwise. */ public boolean isRowSelected(int index) { indexBoundsCheck("index", index, 0, tableData.getLength() - 1); return rangeSelection.containsIndex(index); }
Sequence<Span> addedRanges = rangeSelection.addRange(start, end);
ArrayList<Span> addedRanges = new ArrayList<Span>(); Span range = normalize(start, end); assert(range.start >= 0);
@Override public void listCleared(List<Object> list) { int cleared = rangeSelection.getLength(); rangeSelection.clear(); checkedIndexes.clear(); listViewItemListeners.itemsCleared(ListView.this); if (cleared > 0) { listViewSelectionListeners.selectedRangesChanged(ListView.this, getSelectedRanges()); if (selectMode == SelectMode.SINGLE) { listViewSelectionListeners.selectedItemChanged(ListView.this, null); } } }