@Override protected void onEnterKeyDown(Context context, Element parent, C value, NativeEvent event, ValueUpdater<C> valueUpdater) { Element input = getInputElement(parent); Element target = event.getEventTarget().cast(); Object key = context.getKey(); if (getInputElement(parent).isOrHasChild(target)) { finishEditing(parent, value, key, valueUpdater); } else { focusedKey = key; input.focus(); } } }
/** * Construct a new {@link AbstractInputCell} with the specified consumed * events. * * @param consumedEvents the events that this cell consumes */ public AbstractInputCell(String... consumedEvents) { super(getConsumedEventsImpl(consumedEvents)); }
@Override public boolean resetFocus(Context context, Element parent, C value) { if (isEditing(context, parent, value)) { getInputElement(parent).focus(); return true; } return false; }
@Override public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) { super.onBrowserEvent(context, parent, value, event, valueUpdater); String type = event.getType(); if (BrowserEvents.CHANGE.equals(type)) { Object key = context.getKey(); SelectElement select = parent.getFirstChild().cast(); String newValue = options.get(select.getSelectedIndex()); setViewData(key, newValue); finishEditing(parent, newValue, key, valueUpdater); if (valueUpdater != null) { valueUpdater.update(newValue); } } }
@Override protected InputElement getInputElement(Element parent) { return super.getInputElement(parent).<InputElement> cast(); } }
@Override protected void finishEditing(Element parent, String value, Object key, ValueUpdater<String> valueUpdater) { String newValue = getInputElement(parent).getValue(); // Get the view data. ViewData vd = getViewData(key); if (vd == null) { vd = new ViewData(value); setViewData(key, vd); } vd.setCurrentValue(newValue); // Fire the value updater if the value has changed. if (valueUpdater != null && !vd.getCurrentValue().equals(vd.getLastValue())) { vd.setLastValue(newValue); valueUpdater.update(newValue); } // Blur the element. super.finishEditing(parent, newValue, key, valueUpdater); }
@Override public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) { super.onBrowserEvent(context, parent, value, event, valueUpdater); // Ignore events that don't target the input. InputElement input = getInputElement(parent); Element target = event.getEventTarget().cast(); if (!input.isOrHasChild(target)) { return; } String eventType = event.getType(); Object key = context.getKey(); if (BrowserEvents.CHANGE.equals(eventType)) { finishEditing(parent, value, key, valueUpdater); } else if (BrowserEvents.KEYUP.equals(eventType)) { // Record keys as they are typed. ViewData vd = getViewData(key); if (vd == null) { vd = new ViewData(value); setViewData(key, vd); } vd.setCurrentValue(input.getValue()); } }
/** * Call this method when editing is complete. * * @param parent the parent Element * @param value the value associated with the cell * @param key the unique key associated with the row object * @param valueUpdater the value update to fire */ protected void finishEditing(Element parent, C value, Object key, ValueUpdater<C> valueUpdater) { focusedKey = null; getInputElement(parent).blur(); }
@Override protected void finishEditing(Element parent, String value, Object key, ValueUpdater<String> valueUpdater) { String newValue = getInputElement(parent).getValue(); // Get the view data. ViewData vd = getViewData(key); if (vd == null) { vd = new ViewData(value); setViewData(key, vd); } vd.setCurrentValue(newValue); // Fire the value updater if the value has changed. if (valueUpdater != null && !vd.getCurrentValue().equals(vd.getLastValue())) { vd.setLastValue(newValue); valueUpdater.update(newValue); } // Blur the element. super.finishEditing(parent, newValue, key, valueUpdater); }
@Override public void onBrowserEvent(Context context, Element parent, C value, NativeEvent event, ValueUpdater<C> valueUpdater) { ElementTooltipUtils.handleCellEvent(event, parent, getTooltip(value)); super.onBrowserEvent(context, parent, value, event, valueUpdater); }
@Override public boolean resetFocus(Context context, Element parent, C value) { if (isEditing(context, parent, value)) { getInputElement(parent).focus(); return true; } return false; }
@Override protected void onEnterKeyDown(Context context, Element parent, C value, NativeEvent event, ValueUpdater<C> valueUpdater) { Element input = getInputElement(parent); Element target = event.getEventTarget().cast(); Object key = context.getKey(); if (getInputElement(parent).isOrHasChild(target)) { finishEditing(parent, value, key, valueUpdater); } else { focusedKey = key; input.focus(); } } }
/** * Construct a new {@link AbstractInputCell} with the specified consumed * events. * * @param consumedEvents the events that this cell consumes */ public AbstractInputCell(Set<String> consumedEvents) { super(getConsumedEventsImpl(consumedEvents)); }
@Override public void onBrowserEvent(Context context, Element parent, C value, NativeEvent event, ValueUpdater<C> valueUpdater) { super.onBrowserEvent(context, parent, value, event, valueUpdater); // Ignore events that don't target the input. Element target = event.getEventTarget().cast(); if (!getInputElement(parent).isOrHasChild(target)) { return; } String eventType = event.getType(); if (BrowserEvents.FOCUS.equals(eventType)) { focusedKey = context.getKey(); } else if (BrowserEvents.BLUR.equals(eventType)) { focusedKey = null; } }
@Override protected void finishEditing(Element parent, String value, Object key, ValueUpdater<String> valueUpdater) { String newValue = getInputElement(parent).getValue(); // Get the view data. ViewData vd = getViewData(key); if (vd == null) { vd = new ViewData(value); setViewData(key, vd); } vd.setCurrentValue(newValue); // Fire the value updater if the value has changed. if (valueUpdater != null && !vd.getCurrentValue().equals(vd.getLastValue())) { vd.setLastValue(newValue); valueUpdater.update(newValue); } // Blur the element. super.finishEditing(parent, newValue, key, valueUpdater); }
@Override public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) { super.onBrowserEvent(context, parent, value, event, valueUpdater); String type = event.getType(); if (BrowserEvents.CHANGE.equals(type)) { Object key = context.getKey(); SelectElement select = parent.getFirstChild().cast(); String newValue = options.get(select.getSelectedIndex()); setViewData(key, newValue); finishEditing(parent, newValue, key, valueUpdater); if (valueUpdater != null) { valueUpdater.update(newValue); } } }
@Override public boolean resetFocus(Context context, Element parent, C value) { if (isEditing(context, parent, value)) { getInputElement(parent).focus(); return true; } return false; }
@Override protected void onEnterKeyDown(Context context, Element parent, C value, NativeEvent event, ValueUpdater<C> valueUpdater) { Element input = getInputElement(parent); Element target = event.getEventTarget().cast(); Object key = context.getKey(); if (getInputElement(parent).isOrHasChild(target)) { finishEditing(parent, value, key, valueUpdater); } else { focusedKey = key; input.focus(); } } }
/** * Get the events consumed by the input cell. * * @param userEvents the events consumed by the subclass * @return the events */ private static Set<String> getConsumedEventsImpl(String... consumedEvents) { Set<String> userEvents = new HashSet<String>(); if (consumedEvents != null) { for (String event : consumedEvents) { userEvents.add(event); } } return getConsumedEventsImpl(userEvents); }
@Override protected InputElement getInputElement(Element parent) { return super.getInputElement(parent).<InputElement> cast(); } }