org.dominokit.domino.ui.datatable.TableRow Maven / Gradle / Ivy
package org.dominokit.domino.ui.datatable;
import elemental2.dom.HTMLTableRowElement;
import org.dominokit.domino.ui.utils.BaseDominoElement;
import org.dominokit.domino.ui.utils.Selectable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.jboss.gwt.elemento.core.Elements.tr;
public class TableRow extends BaseDominoElement > implements Selectable {
private T record;
private boolean selected = false;
private final int index;
private final Map> rowCells = new HashMap<>();
private Map flags = new HashMap<>();
private Map metaObjects = new HashMap<>();
private HTMLTableRowElement element = tr().asElement();
private List> selectionHandlers = new ArrayList<>();
private List> listeners = new ArrayList<>();
public TableRow(T record, int index) {
this.record = record;
this.index = index;
}
public void setRecord(T record) {
this.record = record;
}
@Override
public T select() {
if (!hasFalg(DataTable.DATA_TABLE_ROW_FILTERED)) {
this.selected = true;
selectionHandlers.forEach(selectionHandler -> selectionHandler.onSelectionChanged(TableRow.this));
}
return record;
}
@Override
public T deselect() {
this.selected = false;
selectionHandlers.forEach(selectionHandler -> selectionHandler.onSelectionChanged(TableRow.this));
return record;
}
@Override
public T select(boolean silent) {
this.selected = true;
return record;
}
@Override
public T deselect(boolean silent) {
this.selected = false;
return record;
}
@Override
public boolean isSelected() {
return selected;
}
public T getRecord() {
return record;
}
@Override
public void addSelectionHandler(SelectionHandler selectionHandler) {
this.selectionHandlers.add(selectionHandler);
}
public void addRowListener(RowListener listener) {
listeners.add(listener);
}
public void removeListener(RowListener listener) {
listeners.remove(listener);
}
public void fireUpdate() {
listeners.forEach(listener -> listener.onChange(TableRow.this));
}
@Override
public HTMLTableRowElement asElement() {
return element;
}
public void setFlag(String name, String value) {
flags.put(name, value);
}
public String getFlag(String name) {
return flags.get(name);
}
public void addMetaObject(RowMetaObject metaObject) {
metaObjects.put(metaObject.getKey(), metaObject);
}
public E getMetaObject(String key) {
return (E) metaObjects.get(key);
}
public void removeFlag(String name) {
flags.remove(name);
}
public boolean hasFalg(String name) {
return flags.containsKey(name);
}
public void addCell(RowCell rowCell) {
rowCells.put(rowCell.getColumnConfig().getName(), rowCell);
}
public RowCell getCell(String name) {
return rowCells.get(name);
}
public int getIndex() {
return index;
}
public void updateRow() {
rowCells.values().forEach(RowCell::updateCell);
}
@FunctionalInterface
public interface RowListener {
void onChange(TableRow tableRow);
}
public interface RowMetaObject {
String getKey();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy