@Override public boolean isEditing(Context context, Element parent, C value) { return focusedKey != null && focusedKey.equals(context.getKey()); }
@Override public boolean isEditing(Context context, Element parent, Date value) { return lastKey != null && lastKey.equals(context.getKey()); }
@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 public boolean isEditing(Context context, Element parent, Date value) { return lastKey != null && lastKey.equals(context.getKey()); }
@Override public boolean isEditing(Context context, Element parent, String value) { ViewData viewData = getViewData(context.getKey()); return viewData == null ? false : viewData.isEditing(); }
@Override public boolean isEditing(Context context, Element parent, String value) { ViewData viewData = getViewData(context.getKey()); return viewData == null ? false : viewData.isEditing(); }
@Override public boolean isEditing(Context context, Element parent, String value) { ViewData viewData = getViewData(context.getKey()); return viewData == null ? false : viewData.isEditing(); }
@Override public void render(Context context, String value, SafeHtmlBuilder sb) { Object key = context.getKey(); ViewData viewData = getViewData(key); if (viewData != null && !viewData.isEditing() && value != null
viewData.setEditing(false); } else { setViewData(context.getKey(), null);
@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()); } }
@Override public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) { Object key = context.getKey(); ViewData viewData = getViewData(key); if (viewData != null && viewData.isEditing()) { // Handle the edit event. editEvent(context, parent, value, viewData, event, valueUpdater); } else { String type = event.getType(); int keyCode = event.getKeyCode(); boolean enterPressed = KEYUP.equals(type) && keyCode == KeyCodes.KEY_ENTER; if (CLICK.equals(type) || enterPressed) { // Go into edit mode. if (viewData == null) { viewData = new ViewData(value); setViewData(key, viewData); } else { viewData.setEditing(true); } edit(context, parent, value); } } }
@Override public void render(Context context, String value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); String viewData = getViewData(key); if (viewData != null && viewData.equals(value)) { clearViewData(key); viewData = null; } int selectedIndex = getSelectedIndex(viewData == null ? value : viewData); sb.appendHtmlConstant("<select tabindex=\"-1\">"); int index = 0; for (String option : options) { if (index++ == selectedIndex) { sb.append(template.selected(option)); } else { sb.append(template.deselected(option)); } } sb.appendHtmlConstant("</select>"); }
@Override public void render(Context context, Date value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); Date viewData = getViewData(key); if (viewData != null && viewData.equals(value)) { clearViewData(key); viewData = null; } String s = null; if (viewData != null) { s = format.format(viewData); } else if (value != null) { s = format.format(value); } if (s != null) { sb.append(renderer.render(s)); } }
@Override protected void onEnterKeyDown(Context context, Element parent, Date value, NativeEvent event, ValueUpdater<Date> valueUpdater) { this.lastKey = context.getKey(); this.lastParent = parent; this.lastValue = value; this.lastIndex = context.getIndex(); this.lastColumn = context.getColumn(); this.valueUpdater = valueUpdater; Date viewData = getViewData(lastKey); Date date = (viewData == null) ? lastValue : viewData; datePicker.setCurrentMonth(date); datePicker.setValue(date); panel.setPopupPositionAndShow(new PositionCallback() { public void setPosition(int offsetWidth, int offsetHeight) { panel.setPopupPosition(lastParent.getAbsoluteLeft() + offsetX, lastParent.getAbsoluteTop() + offsetY); } }); } }
@Override public void render(Context context, String value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); ViewData viewData = getViewData(key); if (viewData != null && viewData.getCurrentValue().equals(value)) { clearViewData(key); viewData = null; } String s = (viewData != null) ? viewData.getCurrentValue() : value; if (s != null) { sb.append(template.input(s)); } else { sb.appendHtmlConstant("<input type=\"text\" tabindex=\"-1\"></input>"); } }
@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 void render(Context context, Boolean value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); Boolean viewData = getViewData(key); if (viewData != null && viewData.equals(value)) { clearViewData(key); viewData = null; } if (value != null && ((viewData != null) ? viewData : value)) { sb.append(INPUT_CHECKED); } else { sb.append(INPUT_UNCHECKED); } } }
@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(); } } }
@Override public boolean isEditing(Context context, Element parent, String value) { ViewData viewData = getViewData(context.getKey()); return viewData == null ? false : viewData.isEditing(); }