< prev index next >

src/java.desktop/share/classes/javax/swing/ListSelectionModel.java

Print this page

        

*** 330,335 **** --- 330,392 ---- * * @param x the ListSelectionListener * @see #addListSelectionListener */ void removeListSelectionListener(ListSelectionListener x); + + /** + * Returns an array of all of the selected indices in the selection model, + * in increasing order. + * + * @return all of the selected indices, in increasing order, + * or an empty array if nothing is selected + * @see #removeSelectionInterval + * @see #addListSelectionListener + * @since 11 + * @implSpec The default implementation iterates from minimum selected + * index {@link #getMinSelectionIndex()} to maximum selected index {@link + * #getMaxSelectionIndex()} and returns the selected indices {@link + * #isSelectedIndex(int)} in a newly allocated int array. + */ + default int[] getSelectedIndices() { + int iMin = getMinSelectionIndex(); + int iMax = getMaxSelectionIndex(); + + if ((iMin < 0) || (iMax < 0)) { + return new int[0]; + } + + int[] rvTmp = new int[1+ (iMax - iMin)]; + int n = 0; + for(int i = iMin; i <= iMax; i++) { + if (isSelectedIndex(i)) { + rvTmp[n++] = i; + } + } + int[] rv = new int[n]; + System.arraycopy(rvTmp, 0, rv, 0, n); + return rv; + } + + /** + * Returns the number of selected items. + * + * @return the number of selected items, 0 if no items are selected + * @since 11 + * @implSpec The default implementation iterates from minimum selected + * index {@link #getMinSelectionIndex()} to maximum selected index {@link + * #getMaxSelectionIndex()} and returns the number of selected indices + * {@link #isSelectedIndex(int)} + */ + default int getSelectedItemsCount() { + int iMin = getMinSelectionIndex(); + int iMax = getMaxSelectionIndex(); + int count = 0; + + for(int i = iMin; i <= iMax; i++) { + if (isSelectedIndex(i)) { + count++; + } + } + return count; + } }
< prev index next >