/** * Returns DOM element ID for a table cell element. * * @param prefix * Element ID prefix that meets ID constraints (unique, deterministic). * @param columnId * Column ID that will be part of the resulting DOM element ID, or {@code null} to use column index * value. * @param context * Table cell context object. */ public static String createTableCellElementId(String prefix, String columnId, Context context) { StringBuilder sb = new StringBuilder(prefix); sb.append("_"); //$NON-NLS-1$ sb.append(columnId != null ? columnId : "col" + String.valueOf(context.getColumn())); //$NON-NLS-1$ sb.append("_row"); //$NON-NLS-1$ sb.append(String.valueOf(context.getIndex())); return sb.toString(); }
@Override public boolean isEditing(Context context, Element parent, C value) { return focusedKey != null && focusedKey.equals(context.getKey()); }
int headerIndex = isHeader ? headerBuilder.getRowIndex(targetTableRow) : footerBuilder.getRowIndex(targetTableRow); Context context = new Context(headerIndex, col, header.getKey()); Context context = new Context(absRow, col, getValueKey(value), subrow); CellPreviewEvent<T> previewEvent = CellPreviewEvent.fire(this, event, this, context, value, cellIsEditing,
@Override public Set<Integer> getDependentColumnIndexes( final Context context ) { final int iBaseColIndex = context.getColumn(); final Set<Integer> dependentColumnIndexes = new HashSet<Integer>();
int subrow = event.getContext().getSubIndex(); if ((table.getKeyboardSelectedColumn() != col) || (table.getKeyboardSelectedRow() != relRow)
int subrow = event.getContext().getSubIndex(); if ((table.getKeyboardSelectedColumn() != col) || (table.getKeyboardSelectedRow() != relRow)
@Override public Set<Integer> getDependentColumnIndexes(final Context context) { final int iBaseColIndex = context.getColumn(); final Set<Integer> dependentColumnIndexes = new HashSet<Integer>();
@Override public void onBrowserEvent(Context context, Element parent, Date value, NativeEvent event, ValueUpdater<Date> valueUpdater) { super.onBrowserEvent(context, parent, value, event, valueUpdater); if (CLICK.equals(event.getType()) && !isEdit) { isEdit = true; lastKey = context.getKey(); lastParent = parent; lastValue = value; lastIndex = context.getIndex(); lastColumn = context.getColumn(); this.valueUpdater = valueUpdater; Date viewData = getViewData(lastKey); Date date = (viewData == null) ? lastValue : viewData; dateTimePicker.setDate(date); lastParent.appendChild((Node) dateTimePicker.getElement()); dateTimePicker.show(); } }
@Override public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) { if (selectable) { String eventType = event.getType(); switch (eventType) { case MOUSEOVER: parent.getStyle().setCursor(Style.Cursor.POINTER); break; case CLICK: int rowIndexInPage = context.getIndex() - table.getPageStart(); getPresenter().selectCell(columnId, rowIndexInPage); break; } } } }
@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 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); } }); } }
public void renderColumn(Column<T, ?> column) { int index = column.getIndex() + getColumnOffset(); TableHeader th = renderer.drawColumnHeader(column, column.getName(), index); if (th != null) { if (column.isSortable()) { th.$this().on("click", e -> { sort(rows, th, column, index); return true; }); th.addStyleName(TableCssName.SORTABLE); } addHeader(index, th); } for (RowComponent<T> row : rows) { Context context = new Context(row.getIndex(), index, getValueKey(row.getData())); renderer.drawColumn(row.getWidget(), context, row.getData(), column, index, true); } refreshStickyHeaders(); }
private void renderHeaderRow(int headerRowIndex, String className) { TableRowBuilder tr = startRow(); int curColumn; int columnCount = getTable().getColumnCount(); for (curColumn = 0; curColumn < columnCount; curColumn++) { Header<?> header = getHeader(curColumn); Column<SourceRow, ?> column = getTable().getColumn(curColumn); // Render the header. TableCellBuilder th = tr.startTH().className(className); enableColumnHandlers(th, column); // Build the header. Cell.Context context = new Cell.Context(headerRowIndex, curColumn, null); renderHeader(th, context, header); th.endTH(); } tr.end(); } }
/** * Updates the column styles to match the column's current binding */ public void refreshColumnStyles(int columnIndex) { // update the column styles final SourceColumn sourceColumn = model.getSourceColumn(columnIndex); ColumnAction binding = model.getColumnAction(sourceColumn); toggleColumnStyle(columnIndex, ColumnMappingStyles.INSTANCE.stateIgnored(), binding != null && binding == IgnoreAction.INSTANCE); toggleColumnStyle(columnIndex, ColumnMappingStyles.INSTANCE.stateBound(), binding != null && binding != IgnoreAction.INSTANCE); toggleColumnStyle(columnIndex, ColumnMappingStyles.INSTANCE.stateUnset(), binding == null); // update the mapping description Cell.Context context = new Cell.Context(MAPPING_HEADER_ROW, columnIndex, null); SafeHtmlBuilder html = new SafeHtmlBuilder(); headerCell.render(context, sourceColumn, html); getTableHead(MAPPING_HEADER_ROW, columnIndex).setInnerSafeHtml(html.toSafeHtml()); }
public void renderColumn(Column<T, ?> column) { int index = column.getIndex() + getColumnOffset(); TableHeader th = renderer.drawColumnHeader(column, column.getName(), index); if (th != null) { if (column.isSortable()) { th.$this().on("click", e -> { sort(rows, th, column, index); return true; }); th.addStyleName(TableCssName.SORTABLE); } addHeader(index, th); } for (RowComponent<T> row : rows) { Context context = new Context(row.getIndex(), index, getValueKey(row.getData())); renderer.drawColumn(row.getWidget(), context, row.getData(), column, index, true); } refreshStickyHeaders(); }
/** * Handle a browser event that took place within the column. * * @param context the cell context * @param elem the parent Element * @param object the base object to be updated * @param event the native browser event */ public void onBrowserEvent(Context context, Element elem, final T object, NativeEvent event) { final int index = context.getIndex(); ValueUpdater<C> valueUpdater = (fieldUpdater == null) ? null : new ValueUpdater<C>() { @Override public void update(C value) { fieldUpdater.update(index, object, value); } }; cell.onBrowserEvent(context, elem, getValue(object), event, valueUpdater); }
public void onValueChange(ValueChangeEvent<Date> event) { // Remember the values before hiding the popup. Element cellParent = lastParent; Date oldValue = lastValue; Object key = lastKey; int index = lastIndex; int column = lastColumn; panel.hide(); // Update the cell and value updater. Date date = event.getValue(); setViewData(key, date); setValue(new Context(index, column, key), cellParent, oldValue); if (valueUpdater != null) { valueUpdater.update(date); } } });
/** * Handle a browser event that took place within the column. * * @param context the cell context * @param elem the parent Element * @param object the base object to be updated * @param event the native browser event */ public void onBrowserEvent(Context context, Element elem, final T object, NativeEvent event) { final int index = context.getIndex(); ValueUpdater<C> valueUpdater = (fieldUpdater == null) ? null : new ValueUpdater<C>() { @Override public void update(C value) { fieldUpdater.update(index, object, value); } }; cell.onBrowserEvent(context, elem, getValue(object), event, valueUpdater); }