< 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 >