ckan-content-moderator-widget/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/material/table/CustomizedView.java

227 lines
7.3 KiB
Java

package org.gcube.portlets.widgets.ckancontentmoderator.client.material.table;
import java.util.List;
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
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<Widget, CustomizedView> {
}
private static CustomizedViewUiBinder uiBinder = GWT.create(CustomizedViewUiBinder.class);
private List<CatalogueDataset> users;
@UiField
MaterialDataTable<CatalogueDataset> 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<User, MaterialPanel>() {
// @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<CatalogueDataset>() {
@Override
public String getValue(CatalogueDataset object) {
return object.getTitle();
}
@Override
public boolean sortable() {
return true;
}
});
// table.addColumn("Option", new WidgetColumn<User, MaterialListBox>() {
// @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<CatalogueDataset>() {
@Override
public String getValue(CatalogueDataset object) {
return object.getAuthor();
}
@Override
public boolean sortable() {
return true;
}
});
table.addRowSelectHandler(new RowSelectHandler<CatalogueDataset>() {
@Override
public void onRowSelect(RowSelectEvent<CatalogueDataset> event) {
log("RowSelectEvent", event.getModel().getName() + ": " + event.isSelected());
}
});
table.addColumnSortHandler(new ColumnSortHandler<CatalogueDataset>() {
@Override
public void onColumnSort(gwt.material.design.client.data.events.ColumnSortEvent<CatalogueDataset> 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<CatalogueDataset> 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<Boolean> event) {
// table.setUseStickyHeader(event.getValue());
// }
//
// @UiHandler("striped")
// void striped(ValueChangeEvent<Boolean> 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();
}
}