/** * onSelect event handler. * * @param event The change event. */ @EventHandler("change") private void onChange(ChangeEvent event) { /** * When the custom range item is selected, triggers the display of the date range dialog. */ if (getSelectedItem() == customItem) { event.stopPropagation(); DateRangeDialog.show((range) -> { if (range == null) { setSelectedItem(lastSelectedItem); } else { setSelectedItem(addChoice(range, true)); } checkSelection(false); }); } else { checkSelection(false); } } }
/** * Check the current selection. If nothing is selected, display a prompt message in gray text. * Also, remembers the last selection made. * * @param suppressEvent If true, onSelectRange event is not fired. */ private void checkSelection(boolean suppressEvent) { Listitem selectedItem = getSelectedItem(); if (selectedItem == null) { selectedItem = lastSelectedItem; setSelectedItem(selectedItem); } else if (selectedItem != customItem && lastSelectedItem != selectedItem) { lastSelectedItem = selectedItem; if (!suppressEvent) { EventUtil.send(new Event(ON_SELECT_RANGE, this)); } } updateSelection(); }