208 lines
6.4 KiB
Java
208 lines
6.4 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.portlets.widgets.wsexplorer.client.view.grid;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Comparator;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
|
|
import org.gcube.portlets.widgets.wsexplorer.client.Util;
|
|
import org.gcube.portlets.widgets.wsexplorer.client.view.SelectionItem;
|
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
|
|
|
import com.github.gwtbootstrap.client.ui.Pagination;
|
|
import com.google.gwt.cell.client.ButtonCell;
|
|
import com.google.gwt.cell.client.Cell.Context;
|
|
import com.google.gwt.cell.client.ImageResourceCell;
|
|
import com.google.gwt.dom.client.Style.Unit;
|
|
import com.google.gwt.resources.client.ImageResource;
|
|
import com.google.gwt.safehtml.shared.SafeHtml;
|
|
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
|
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
|
|
import com.google.gwt.user.cellview.client.AbstractCellTable;
|
|
import com.google.gwt.user.cellview.client.Column;
|
|
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
|
import com.google.gwt.user.cellview.client.SimplePager;
|
|
import com.google.gwt.user.cellview.client.TextColumn;
|
|
import com.google.gwt.user.client.ui.Image;
|
|
import com.google.gwt.user.client.ui.Label;
|
|
/**
|
|
* The Class PackagesTable.
|
|
*
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
* Feb 19, 2015
|
|
*/
|
|
public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
|
|
|
|
private Column<Item, ImageResource> icon;
|
|
private TextColumn<Item> name;
|
|
private TextColumn<Item> owner;
|
|
private Item selectedItem = null;
|
|
public static enum DISPLAY_FIELD{ICON, NAME, OWNER};
|
|
private List<DISPLAY_FIELD> displayFields;
|
|
|
|
/**
|
|
* Instantiates a new items table.
|
|
*/
|
|
public ItemsTable(boolean showMoreInfo, DISPLAY_FIELD[] fields) {
|
|
super(showMoreInfo);
|
|
setDisplayFields(fields);
|
|
initTable(cellTable, null, null);
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see org.gcube.portlets.admin.gcubereleases.client.view.AbstractPackageTable#addPackages(java.util.List)
|
|
*/
|
|
public void addItems(List<Item> packages) {
|
|
dataProvider.getList().clear();
|
|
|
|
for (Item pckg : packages)
|
|
addItem(pckg);
|
|
|
|
cellTable.setPageSize(packages.size()+1);
|
|
cellTable.redraw();
|
|
}
|
|
|
|
/**
|
|
* Adds the package.
|
|
*
|
|
* @param pckg the pckg
|
|
*/
|
|
private void addItem(Item pckg) {
|
|
dataProvider.getList().add(pckg);
|
|
dataProvider.flush();
|
|
dataProvider.refresh();
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see org.gcube.portlets.admin.gcubereleases.client.view.AbstractPackageTable#initTable(com.google.gwt.user.cellview.client.AbstractCellTable, com.google.gwt.user.cellview.client.SimplePager, com.github.gwtbootstrap.client.ui.Pagination)
|
|
*/
|
|
@Override
|
|
public void initTable(final AbstractCellTable<Item> packageTable, final SimplePager pager, final Pagination pagination) {
|
|
packageTable.setEmptyTableWidget(new Label("No data."));
|
|
|
|
//ICONS
|
|
ImageResourceCell iconResourceCell = new ImageResourceCell() {
|
|
public Set<String> getConsumedEvents() {
|
|
HashSet<String> events = new HashSet<String>();
|
|
events.add("click");
|
|
return events;
|
|
}
|
|
};
|
|
|
|
if(this.displayFields.contains(DISPLAY_FIELD.ICON)){
|
|
icon = new Column<Item, ImageResource>(iconResourceCell) {
|
|
@Override
|
|
public ImageResource getValue(Item dataObj) {
|
|
return Util.getImage(dataObj);
|
|
}
|
|
/* (non-Javadoc)
|
|
* @see com.google.gwt.user.cellview.client.Column#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder)
|
|
*/
|
|
@Override
|
|
public void render(Context context, Item object, SafeHtmlBuilder sb) {
|
|
super.render(context, object, sb);
|
|
|
|
}
|
|
};
|
|
icon.setSortable(false);
|
|
packageTable.addColumn(icon, "");
|
|
packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
|
|
}
|
|
|
|
if(this.displayFields.contains(DISPLAY_FIELD.NAME)){
|
|
//ARTIFACT ID
|
|
name = new TextColumn<Item>() {
|
|
@Override
|
|
public String getValue(Item object) {
|
|
return object.getName();
|
|
}
|
|
};
|
|
name.setSortable(true);
|
|
|
|
packageTable.addColumn(name, "Name");
|
|
|
|
double width = displayFields.size()>1?50:90;
|
|
packageTable.setColumnWidth(name, width, Unit.PCT);
|
|
|
|
ListHandler<Item> nameColumnHandler = new ListHandler<Item>(dataProvider.getList());
|
|
nameColumnHandler.setComparator(name, new Comparator<Item>() {
|
|
@Override
|
|
public int compare(Item o1, Item o2) {
|
|
return o1.getName().compareTo(o2.getName());
|
|
}
|
|
});
|
|
|
|
packageTable.addColumnSortHandler(nameColumnHandler);
|
|
|
|
}
|
|
|
|
if(this.displayFields.contains(DISPLAY_FIELD.OWNER)){
|
|
|
|
owner = new TextColumn<Item>() {
|
|
@Override
|
|
public String getValue(Item object) {
|
|
return object.getOwner() != null ? object.getOwner() : "";
|
|
}
|
|
};
|
|
|
|
owner.setSortable(true);
|
|
packageTable.addColumn(owner, "Owner");
|
|
double width = (displayFields.size()==2) ?90:40;
|
|
packageTable.setColumnWidth(owner, width, Unit.PCT);
|
|
|
|
ListHandler<Item> ownerColumnHandler = new ListHandler<Item>(dataProvider.getList());
|
|
ownerColumnHandler.setComparator(owner, new Comparator<Item>() {
|
|
@Override
|
|
public int compare(Item o1, Item o2) {
|
|
return o1.getOwner().compareTo(o2.getOwner());
|
|
}
|
|
});
|
|
packageTable.addColumnSortHandler(ownerColumnHandler);
|
|
|
|
}
|
|
|
|
/*final SingleSelectionModel<Item> selectionModel = new SingleSelectionModel<Item>();
|
|
selectionModel.addSelectionChangeHandler(new Handler() {
|
|
@Override
|
|
public void onSelectionChange(SelectionChangeEvent event) {
|
|
}
|
|
});*/
|
|
}
|
|
|
|
/**
|
|
* @param displayFields the dispalyFields to set
|
|
*/
|
|
public void setDisplayFields(DISPLAY_FIELD[] fields) {
|
|
this.displayFields = (fields!=null && fields.length>0)?Arrays.asList(fields):Arrays.asList(DISPLAY_FIELD.values());
|
|
}
|
|
|
|
/**
|
|
* @return the displayFields
|
|
*/
|
|
public List<DISPLAY_FIELD> getDisplayFields() {
|
|
return displayFields;
|
|
}
|
|
|
|
public class ButtonImageCell extends ButtonCell{
|
|
|
|
@Override
|
|
public void render(com.google.gwt.cell.client.Cell.Context context,
|
|
String value, SafeHtmlBuilder sb) {
|
|
SafeHtml html = SafeHtmlUtils.fromTrustedString(new Image(value).toString());
|
|
sb.append(html);
|
|
}
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.SelectionItemHandler#getSelectionItem()
|
|
*/
|
|
@Override
|
|
public Item getSelectedItem() {
|
|
return ssm.getSelectedObject();
|
|
}
|
|
}
|