/** * Create a new {@link DefaultSelectionEventManager} that handles selection * via user interactions. * * @param <T> the data type of the display * @return a new {@link DefaultSelectionEventManager} instance */ public static <T> DefaultSelectionEventManager<T> createDefaultManager() { return new DefaultSelectionEventManager<T>(null); }
/** * Selects the given item, optionally clearing any prior selection. * * @param selectionModel the {@link MultiSelectionModel} to update * @param target the item to select * @param selected true to select, false to deselect * @param clearOthers true to clear all other selected items */ protected void selectOne(MultiSelectionModel<? super T> selectionModel, T target, boolean selected, boolean clearOthers) { if (clearOthers) { clearSelection(selectionModel); } selectionModel.setSelected(target, selected); }
/** * Construct a new {@link DefaultNodeInfo}. * * @param dataProvider the {@link AbstractDataProvider} that provides the * child values * @param cell the {@link Cell} used to render the child values update when * the selection changes * @param selectionModel the {@link SelectionModel} used for selection * @param valueUpdater the {@link ValueUpdater} */ public DefaultNodeInfo(AbstractDataProvider<T> dataProvider, final Cell<T> cell, SelectionModel<? super T> selectionModel, final ValueUpdater<T> valueUpdater) { this(dataProvider, cell, selectionModel, DefaultSelectionEventManager.<T> createDefaultManager(), valueUpdater); }
setRangeSelection(selectionModel, display, new Range(lastSelectedIndex, start - lastSelectedIndex), !shiftAdditive, false); } else if (lastSelectedIndex > end) { setRangeSelection(selectionModel, display, new Range(end + 1, lastSelectedIndex - end), !shiftAdditive, false); } else { setRangeSelection(selectionModel, display, new Range(start, end - start + 1), shiftAdditive, clearOthers); } else { lastSelectedIndex = row; shiftAnchor = row; selectOne(selectionModel, rowValue, addToSelection, clearOthers);
public void onCellPreview(CellPreviewEvent<T> event) { // Early exit if selection is already handled or we are editing. if (event.isCellEditing() || event.isSelectionHandled()) { return; } // Early exit if we do not have a SelectionModel. HasData<T> display = event.getDisplay(); SelectionModel<? super T> selectionModel = display.getSelectionModel(); if (selectionModel == null) { return; } // Check for user defined actions. SelectAction action = (translator == null) ? SelectAction.DEFAULT : translator.translateSelectionEvent(event); // Handle the event based on the SelectionModel type. if (selectionModel instanceof MultiSelectionModel<?>) { // Add shift key support for MultiSelectionModel. handleMultiSelectionEvent(event, action, (MultiSelectionModel<? super T>) selectionModel); } else { // Use the standard handler. handleSelectionEvent(event, action, selectionModel); } }
protected DefaultSelectionEventManager<T> createNoActionColumnManager() { final ExtendedPagedTable<T> extendedPagedTable = this; return DefaultSelectionEventManager.createCustomManager(new DefaultSelectionEventManager.EventTranslator<T>() { @Override public boolean clearCurrentSelection(CellPreviewEvent<T> event) { return false; } @Override public DefaultSelectionEventManager.SelectAction translateSelectionEvent(CellPreviewEvent<T> event) { NativeEvent nativeEvent = event.getNativeEvent(); if (BrowserEvents.CLICK.equals(nativeEvent.getType()) && extendedPagedTable.isSelectionIgnoreColumn(event.getColumn())) { // Ignore if the event didn't occur in the correct column. return DefaultSelectionEventManager.SelectAction.IGNORE; } else { return DefaultSelectionEventManager.SelectAction.DEFAULT; } } }); }
action = ctrlOrMeta ? SelectAction.TOGGLE : SelectAction.SELECT; doMultiSelection(selectionModel, event.getDisplay(), event.getIndex(), event.getValue(), action, shift, clearOthers); } else if (BrowserEvents.KEYUP.equals(type)) { action = SelectAction.TOGGLE; doMultiSelection(selectionModel, event.getDisplay(), event.getIndex(), event.getValue(), action, shift, clearOthers);
private void initNoActionColumnManager( final ExtendedPagedTable extendedPagedTable ) { noActionColumnManager = DefaultSelectionEventManager .createCustomManager( new DefaultSelectionEventManager.EventTranslator<RequestSummary>() {
public void onCellPreview(CellPreviewEvent<T> event) { // Early exit if selection is already handled or we are editing. if (event.isCellEditing() || event.isSelectionHandled()) { return; } // Early exit if we do not have a SelectionModel. HasData<T> display = event.getDisplay(); SelectionModel<? super T> selectionModel = display.getSelectionModel(); if (selectionModel == null) { return; } // Check for user defined actions. SelectAction action = (translator == null) ? SelectAction.DEFAULT : translator.translateSelectionEvent(event); // Handle the event based on the SelectionModel type. if (selectionModel instanceof MultiSelectionModel<?>) { // Add shift key support for MultiSelectionModel. handleMultiSelectionEvent(event, action, (MultiSelectionModel<? super T>) selectionModel); } else { // Use the standard handler. handleSelectionEvent(event, action, selectionModel); } }
setRangeSelection(selectionModel, display, new Range(lastSelectedIndex, start - lastSelectedIndex), !shiftAdditive, false); } else if (lastSelectedIndex > end) { setRangeSelection(selectionModel, display, new Range(end + 1, lastSelectedIndex - end), !shiftAdditive, false); } else { setRangeSelection(selectionModel, display, new Range(start, end - start + 1), shiftAdditive, clearOthers); } else { lastSelectedIndex = row; shiftAnchor = row; selectOne(selectionModel, rowValue, addToSelection, clearOthers);
action = ctrlOrMeta ? SelectAction.TOGGLE : SelectAction.SELECT; doMultiSelection(selectionModel, event.getDisplay(), event.getIndex(), event.getValue(), action, shift, clearOthers); } else if (BrowserEvents.KEYUP.equals(type)) { action = SelectAction.TOGGLE; doMultiSelection(selectionModel, event.getDisplay(), event.getIndex(), event.getValue(), action, shift, clearOthers);
.createCustomManager(new DefaultSelectionEventManager.EventTranslator<ProcessVariableSummary>() {
/** * Create a new {@link DefaultSelectionEventManager} using the specified * {@link EventTranslator} to control which {@link SelectAction} to take for * each event. * * @param <T> the data type of the display * @param translator the {@link EventTranslator} to use * @return a {@link DefaultSelectionEventManager} instance */ public static <T> DefaultSelectionEventManager<T> createCustomManager( EventTranslator<T> translator) { return new DefaultSelectionEventManager<T>(translator); }
public void onCellPreview(CellPreviewEvent<T> event) { // Early exit if selection is already handled or we are editing. if (event.isCellEditing() || event.isSelectionHandled()) { return; } // Early exit if we do not have a SelectionModel. HasData<T> display = event.getDisplay(); SelectionModel<? super T> selectionModel = display.getSelectionModel(); if (selectionModel == null) { return; } // Check for user defined actions. SelectAction action = (translator == null) ? SelectAction.DEFAULT : translator.translateSelectionEvent(event); // Handle the event based on the SelectionModel type. if (selectionModel instanceof MultiSelectionModel<?>) { // Add shift key support for MultiSelectionModel. handleMultiSelectionEvent(event, action, (MultiSelectionModel<? super T>) selectionModel); } else { // Use the standard handler. handleSelectionEvent(event, action, selectionModel); } }
setRangeSelection(selectionModel, display, new Range(lastSelectedIndex, start - lastSelectedIndex), !shiftAdditive, false); } else if (lastSelectedIndex > end) { setRangeSelection(selectionModel, display, new Range(end + 1, lastSelectedIndex - end), !shiftAdditive, false); } else { setRangeSelection(selectionModel, display, new Range(start, end - start + 1), shiftAdditive, clearOthers); } else { lastSelectedIndex = row; shiftAnchor = row; selectOne(selectionModel, rowValue, addToSelection, clearOthers);
clearSelection(selectionModel);
/** * Constructs an {@link AbstractHasData} with the given page size. * * @param widget the parent {@link Widget} * @param pageSize the page size * @param keyProvider the key provider, or null */ public AbstractHasData(Widget widget, final int pageSize, final ProvidesKey<T> keyProvider) { initWidget(widget); this.presenter = new HasDataPresenter<T>(this, new View<T>(this), pageSize, keyProvider); // Sink events. Set<String> eventTypes = new HashSet<String>(); eventTypes.add(BrowserEvents.FOCUS); eventTypes.add(BrowserEvents.BLUR); eventTypes.add(BrowserEvents.KEYDOWN); // Used for keyboard navigation. eventTypes.add(BrowserEvents.KEYUP); // Used by subclasses for selection. eventTypes.add(BrowserEvents.CLICK); // Used by subclasses for selection. eventTypes.add(BrowserEvents.MOUSEDOWN); // No longer used, but here for legacy support. CellBasedWidgetImpl.get().sinkEvents(this, eventTypes); // Add a default selection event manager. selectionManagerReg = addCellPreviewHandler(DefaultSelectionEventManager.<T> createDefaultManager()); // Add a default keyboard selection handler. setKeyboardSelectionHandler(new DefaultKeyboardSelectionHandler<T>(this)); }
action = ctrlOrMeta ? SelectAction.TOGGLE : SelectAction.SELECT; doMultiSelection(selectionModel, event.getDisplay(), event.getIndex(), event.getValue(), action, shift, clearOthers); } else if (BrowserEvents.KEYUP.equals(type)) { action = SelectAction.TOGGLE; doMultiSelection(selectionModel, event.getDisplay(), event.getIndex(), event.getValue(), action, shift, clearOthers);
.createCustomManager(new DefaultSelectionEventManager.EventTranslator<DocumentSummary>() {
/** * Construct a new {@link DefaultSelectionEventManager} that allows selection * only for the columns in the specified whitelist. * * @param <T> the data type of the display * @param whitelistedColumns the columns to include in the whitelist * @return a {@link DefaultSelectionEventManager} instance */ public static <T> DefaultSelectionEventManager<T> createWhitelistManager( int... whitelistedColumns) { return new DefaultSelectionEventManager<T>(new WhitelistEventTranslator<T>( whitelistedColumns)); }