/** * Get the key for the header value. By default, the key is the same as the * value. Override this method to return a custom key. * * @return the key associated with the value */ public Object getKey() { return getValue(); }
/** * Append the extra style names for the header. * @param header the header that may contain extra styles, it can be null * @param classesBuilder the string builder for the TD classes */ private <H> void appendExtraStyles(Header<H> header, StringBuilder classesBuilder) { if (header == null) { return; } String headerStyleNames = header.getHeaderStyleNames(); if (headerStyleNames != null) { classesBuilder.append(" "); classesBuilder.append(headerStyleNames); } } }
int headerIndex = isHeader ? headerBuilder.getRowIndex(targetTableRow) : footerBuilder.getRowIndex(targetTableRow); Context context = new Context(headerIndex, col, header.getKey()); if (cellConsumesEventType(header.getCell(), eventType)) { header.onBrowserEvent(context, headerParent, event); shouldSortColumn = header.onPreviewColumnSortEvent(context, headerParent, event);
/** * Renders a given Header into a given ElementBuilderBase. This method ensures * that the CellTable widget will handle events events originating in the * Header. * * @param <H> the data type of the header * @param out the {@link ElementBuilderBase} to render into. The builder * should be a child element of a row returned by {@link #startRow} * and must be in a state that allows both attributes and elements to * be added * @param context the {@link Context} of the header being rendered * @param header the {@link Header} to render */ protected final <H> void renderHeader(ElementBuilderBase<?> out, Context context, Header<H> header) { // Generate a unique ID for the header. String headerId = idToHeaderMap.getKey(header); if (headerId == null) { headerId = "header-" + Document.get().createUniqueId(); idToHeaderMap.put(headerId, header); } out.attribute(HEADER_ATTRIBUTE, headerId); // Render the cell into the builder. SafeHtmlBuilder sb = new SafeHtmlBuilder(); header.render(context, sb); out.html(sb.toSafeHtml()); }
/** Instead of passing the event to the cell directly, give the header a chance to run it's event logic. */ @Override public void onBrowserEvent(Context context, Element parent, X value, NativeEvent event, ValueUpdater<X> valueUpdater) { header.asHeader().onBrowserEvent(context, parent, event); } };
/** * Build the table header for the column. */ private void buildTableHeader(TableRowBuilder tr, Column<T, ?> column, Header<?> header, boolean isSortable, boolean isSorted, boolean isSortAscending, StringBuilder classesBuilder, String sortableStyle, String sortedStyle, int prevColspan, int curColumn) { if (isSortable) { classesBuilder.append(sortableStyle); } if (isSorted) { classesBuilder.append(sortedStyle); } appendExtraStyles(header, classesBuilder); TableCellBuilder th = tr.startTH().colSpan(prevColspan).className(classesBuilder.toString()); enableColumnHandlers(th, column); if (header != null) { // Build the header. Context context = new Context(0, curColumn - prevColspan, header.getKey()); if (isSortable) { // TODO: Figure out aria-label and translation of label text th.attribute("role", "button"); th.tabIndex(-1); } renderSortableHeader(th, context, header, isSorted, isSortAscending); } th.endTH(); }
private void onColumnSelectionChanged() { // ensure the column is scrolled into view int newColumnIndex = columnSelectionModel.getSelectedObject().getIndex(); scrollColumnIntoView(newColumnIndex); // clear the selection styles from the old column if (lastSelectedColumn != -1) { removeHeaderStyleName(lastSelectedColumn, ColumnMappingStyles.INSTANCE.selected()); this.removeColumnStyleName(lastSelectedColumn, ColumnMappingStyles.INSTANCE.selected()); } // add the bg to the new selection this.getHeader(newColumnIndex).setHeaderStyleNames(ColumnMappingStyles.INSTANCE.selected()); this.addColumnStyleName(newColumnIndex, ColumnMappingStyles.INSTANCE.selected()); lastSelectedColumn = newColumnIndex; }
selectPageHeader.setUpdater(value -> { if (value) { extendedPagedTable.selectAllItems(); selectPageHeader.setHeaderStyleNames("kie-datatable-select");
@Override public void setUpdater(final ValueUpdater<C> updater) { // still do the super call for the base class onBrowserEvent method super.setUpdater(updater); this.updater = updater; }
int headerIndex = isHeader ? headerBuilder.getRowIndex(targetTableRow) : footerBuilder.getRowIndex(targetTableRow); Context context = new Context(headerIndex, col, header.getKey()); if (cellConsumesEventType(header.getCell(), eventType)) { header.onBrowserEvent(context, headerParent, event); shouldSortColumn = header.onPreviewColumnSortEvent(context, headerParent, event);
/** Instead of rendering the cell directly, give the header a chance to run it's render logic. */ @Override public void render(Cell.Context context, X value, SafeHtmlBuilder sb) { header.asHeader().render(context, sb); }
/** * Override to inject the tooltip content into the cell. */ @Override public void onBrowserEvent(Context context, Element elem, NativeEvent event) { super.onBrowserEvent(context, elem, event); if (BrowserEvents.CONTEXTMENU.equals(event.getType()) && contextMenuHandler != null) { contextMenuHandler.onContextMenu(event); } }
if (prevHeader != null) { Context context = new Context(0, curColumn - prevColspan, prevHeader.getKey()); enableColumnHandlers(th, column); if (prevHeader != null) { Context context = new Context(0, curColumn - prevColspan, prevHeader.getKey()); renderSortableHeader(th, context, prevHeader, isSorted, isSortAscending);
protected ColumnMeta<T> initActionsColumn() { final ConditionalKebabActionCell<T> cell = conditionalKebabActionCell.get(); cell.setActions(getConditionalActions()); Column<T, T> actionsColumn = new Column<T, T>(cell) { @Override public T getValue(T object) { return object; } }; actionsColumn.setDataStoreName(COL_ID_ACTIONS); actionsColumn.setCellStyleNames("kie-table-view-pf-actions text-center"); Header header = new TextHeader(Constants.INSTANCE.Actions()); header.setHeaderStyleNames("text-center"); final ColumnMeta<T> actionsColMeta = new ColumnMeta<T>(actionsColumn, ""); actionsColMeta.setHeader(header); actionsColMeta.setVisibleIndex(false); return actionsColMeta; }
int headerIndex = isHeader ? headerBuilder.getRowIndex(targetTableRow) : footerBuilder.getRowIndex(targetTableRow); Context context = new Context(headerIndex, col, header.getKey()); if (cellConsumesEventType(header.getCell(), eventType)) { header.onBrowserEvent(context, headerParent, event); shouldSortColumn = header.onPreviewColumnSortEvent(context, headerParent, event);
/** * Handle a browser event that took place within the header. * * @param context the context of the header * @param elem the parent Element * @param event the native browser event */ public void onBrowserEvent(Context context, Element elem, NativeEvent event) { cell.onBrowserEvent(context, elem, getValue(), event, updater); }
/** * Renders a given Header into a given ElementBuilderBase. This method ensures * that the CellTable widget will handle events events originating in the * Header. * * @param <H> the data type of the header * @param out the {@link ElementBuilderBase} to render into. The builder * should be a child element of a row returned by {@link #startRow} * and must be in a state that allows both attributes and elements to * be added * @param context the {@link Context} of the header being rendered * @param header the {@link Header} to render */ protected final <H> void renderHeader(ElementBuilderBase<?> out, Context context, Header<H> header) { // Generate a unique ID for the header. String headerId = idToHeaderMap.getKey(header); if (headerId == null) { headerId = "header-" + Document.get().createUniqueId(); idToHeaderMap.put(headerId, header); } out.attribute(HEADER_ATTRIBUTE, headerId); // Render the cell into the builder. SafeHtmlBuilder sb = new SafeHtmlBuilder(); header.render(context, sb); out.html(sb.toSafeHtml()); }
@Override public Cell<H> getCell() { return (Cell<H>) super.getCell(); }
/** * Append the extra style names for the header. * @param header the header that may contain extra styles, it can be null * @param classesBuilder the string builder for the TD classes */ private <H> void appendExtraStyles(Header<H> header, StringBuilder classesBuilder) { if (header == null) { return; } String headerStyleNames = header.getHeaderStyleNames(); if (headerStyleNames != null) { classesBuilder.append(" "); classesBuilder.append(headerStyleNames); } } }