private void doSelectOption(final HtmlOption selectedOption, final boolean isSelected, final boolean shiftKey, final boolean ctrlKey, final boolean isClick) { // caution the HtmlOption may have been created from js and therefore the select now need // to "know" that it is selected if (isMultipleSelectEnabled()) { selectedOption.setSelectedInternal(isSelected); if (isClick && !ctrlKey) { if (!shiftKey) { setOnlySelected(selectedOption, isSelected); lastSelectedIndex_ = getOptions().indexOf(selectedOption); } else if (isSelected && lastSelectedIndex_ != -1) { final List<HtmlOption> options = getOptions(); final int newIndex = options.indexOf(selectedOption); for (int i = 0; i < options.size(); i++) { options.get(i).setSelectedInternal(isBetween(i, lastSelectedIndex_, newIndex)); } } } } else { setOnlySelected(selectedOption, isSelected); } }
private void doSelectOption(final HtmlOption selectedOption, final boolean isSelected, final boolean shiftKey, final boolean ctrlKey, final boolean isClick) { // caution the HtmlOption may have been created from js and therefore the select now need // to "know" that it is selected if (isMultipleSelectEnabled()) { selectedOption.setSelectedInternal(isSelected); if (isClick && !ctrlKey) { if (!shiftKey) { setOnlySelected(selectedOption, isSelected); lastSelectedIndex_ = getOptions().indexOf(selectedOption); } else if (isSelected && lastSelectedIndex_ != -1) { final List<HtmlOption> options = getOptions(); final int newIndex = options.indexOf(selectedOption); for (int i = 0; i < options.size(); i++) { options.get(i).setSelectedInternal(isBetween(i, lastSelectedIndex_, newIndex)); } } } } else { setOnlySelected(selectedOption, isSelected); } }
/** * Selects the option if it's not already selected. * {@inheritDoc} */ @Override protected boolean doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey) throws IOException { boolean changed = false; if (!isSelected()) { setSelected(true, true, true, shiftKey, ctrlKey); changed = true; } else if (getEnclosingSelect().isMultipleSelectEnabled()) { if (ctrlKey) { setSelected(false, true, true, shiftKey, ctrlKey); changed = true; } else { getEnclosingSelect().setOnlySelected(this, true); } } super.doClickStateUpdate(shiftKey, ctrlKey); return changed; }
/** * Selects the option if it's not already selected. * {@inheritDoc} */ @Override protected boolean doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey) throws IOException { boolean changed = false; if (!isSelected()) { setSelected(true, true, true, shiftKey, ctrlKey); changed = true; } else if (getEnclosingSelect().isMultipleSelectEnabled()) { if (ctrlKey) { setSelected(false, true, true, shiftKey, ctrlKey); changed = true; } else { getEnclosingSelect().setOnlySelected(this, true); } } super.doClickStateUpdate(shiftKey, ctrlKey); return changed; }