227 lines
7.3 KiB
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();
|
|
}
|
|
}
|