package org.gcube.portlets.widgets.ckancontentmoderator.client.material.table; import java.util.List; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CkanDataset; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import gwt.material.design.client.data.events.ColumnSortHandler; import gwt.material.design.client.data.events.RowSelectEvent; import gwt.material.design.client.data.events.RowSelectHandler; import gwt.material.design.client.ui.table.MaterialDataTable; public class CustomizedView extends Composite { interface CustomizedViewUiBinder extends UiBinder { } private static CustomizedViewUiBinder uiBinder = GWT.create(CustomizedViewUiBinder.class); private List users; @UiField MaterialDataTable table; public CustomizedView() { initWidget(uiBinder.createAndBindUi(this)); setupTable(); } public void setupTable() { // MaterialIcon icon = new MaterialIcon(); // icon.setPadding(4); // icon.setIconType(IconType.ADD_CIRCLE_OUTLINE); // // icon.addClickHandler(new ClickHandler() { // // @Override // public void onClick(ClickEvent event) { // users.add(0, new DataGenerator().generateUsers(1).get(0)); // setData(users); // // } // }); // table.setWaves(null); // table.setUseStickyHeader(false); //table.getScaffolding().getToolPanel().add(icon); // MaterialIcon delete = new MaterialIcon(); // delete.setPadding(4); // delete.setIconType(IconType.DELETE); // table.getScaffolding().getToolPanel().add(delete); // // delete.addClickHandler(new ClickHandler() { // // @Override // public void onClick(ClickEvent event) { // User user = table.getView().getSelectedRowModels(true).get(0); // users.remove(user); // setData(users); // // } // }); // table.addColumn("Image", new WidgetColumn() { // @Override // public MaterialPanel getValue(User object) { // MaterialPanel panel = new MaterialPanel(); // MaterialImage image = new MaterialImage(); // // image.setUrl(object.getImage()); // image.setWidth("32px"); // image.setHeight("32px"); // image.setCircle(true); // panel.add(image); // return panel; // } // }); table.addColumn("Title", new gwt.material.design.client.ui.table.cell.TextColumn() { @Override public String getValue(CkanDataset object) { return object.getTitle(); } @Override public boolean sortable() { return true; } }); // table.addColumn("Option", new WidgetColumn() { // @Override // public MaterialListBox getValue(User object) { // MaterialListBox listBox = new MaterialListBox(); // listBox.addItem("Option 1"); // listBox.addItem("Option 2"); // listBox.addItem("Option 3"); // return listBox; // } // }).width(200); table.addColumn("Author", new gwt.material.design.client.ui.table.cell.TextColumn() { @Override public String getValue(CkanDataset object) { return object.getAuthor(); } @Override public boolean sortable() { return true; } }); table.addRowSelectHandler(new RowSelectHandler() { @Override public void onRowSelect(RowSelectEvent event) { log("RowSelectEvent", event.getModel().getName() + ": " + event.isSelected()); } }); table.addColumnSortHandler(new ColumnSortHandler() { @Override public void onColumnSort(gwt.material.design.client.data.events.ColumnSortEvent event) { log("ColumnSortEvent", "Sorted: " + event.getSortContext().getSortDir() + ", columnIndex: " + event.getColumnIndex()); table.getView().refresh(); } }); /* * // Add category opened handler, called when a category is opened. * table.addCategoryOpenedHandler(event -> { log("CategoryOpenedEvent", * "Category Opened: " + event.getName()); }); * * // Add category closed handler, called when a category is closed. * table.addCategoryClosedHandler(event -> { log("CategoryClosedEvent", * "Category Closed: " + event.getName()); }); * * // Add a row double click handler, called when a row is double clicked. * table.addRowDoubleClickHandler(event -> { log("RowDoubleClickEvent", * "Row Double Clicked: " + event.getModel().getName() + ", x:" + * event.getMouseEvent().getPageX() + ", y: " + * event.getMouseEvent().getPageY()); }); * * // Configure the tables long press duration configuration. // The short press * is when a click is held less than this duration. * table.setLongPressDuration(400); * * // Add a row long press handler, called when a row is long pressed. * table.addRowLongPressHandler(event -> { log("RowLongPressEvent", * "Row Long Pressed: " + event.getModel().getName() + ", x:" + * event.getMouseEvent().getPageX() + ", y: " + * event.getMouseEvent().getPageY()); }); * * // Add a row short press handler, called when a row is short pressed. * table.addRowShortPressHandler(event -> { log("RowShortPressEvent", * "Row Short Pressed: " + event.getModel().getName() + ", x:" + * event.getMouseEvent().getPageX() + ", y: " + * event.getMouseEvent().getPageY()); }); * * // Add rendered handler, called when 'setRowData' calls finish rendering. // * Guaranteed to only be called once from the data set render, ignoring sort * renders and refreshView renders. table.addRenderedHandler(e -> { * log("RenderedEvent", "Table Rendered"); }); * * // Add components rendered handler, Called each time when components are * rendered, // which includes sorting renders and refreshView() renders. * table.addComponentsRenderedHandler(e -> { log("ComponentsRenderedEvent", * "Data Table Components Rendered"); }); */ } protected void log(String eventName, String description) { GWT.log(description); } public void setData(List users) { this.users = users; // Customized Table Scaffolding elements table.getTableTitle().setText("Customers"); table.setRowData(0, users); table.getView().refresh(); } // @Override // public void setupOptions() { // // Table Name // tableName.addKeyUpHandler(event -> table.getTableTitle().setText(tableName.getValue())); // // // Selection Type // selectionType.add(SelectionType.NONE); // selectionType.add(SelectionType.SINGLE); // selectionType.add(SelectionType.MULTIPLE); // selectionType.addValueChangeHandler(event -> table.setSelectionType(event.getValue())); // selectionType.setValue(SelectionType.SINGLE, true); // // Density // } // // @UiHandler("stickyHeader") // void stickyHeader(ValueChangeEvent event) { // table.setUseStickyHeader(event.getValue()); // } // // @UiHandler("striped") // void striped(ValueChangeEvent event) { // if (event.getValue()) { // table.getScaffolding().getTable().addStyleName("striped"); // } else { // table.getScaffolding().getTable().removeStyleName("striped"); // } // } public void reload() { table.getView().setRedraw(true); table.getView().refresh(); } }