workspace-explorer/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java

225 lines
7.2 KiB
Java

/**
*
*/
package org.gcube.portlets.widgets.wsexplorer.client.view.grid;
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.shared.Item;
import com.github.gwtbootstrap.client.ui.Pagination;
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.SafeHtmlBuilder;
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.Label;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SingleSelectionModel;
/**
* The Class PackagesTable.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Feb 19, 2015
*/
public class ItemsTable extends AbstractItemsCellTable {
private Column<Item, ImageResource> icon;
private TextColumn<Item> name;
private TextColumn<Item> owner;
private Item selectedItem = null;
/**
* Instantiates a new items table.
*/
public ItemsTable() {
super();
}
/* (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(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;
}
};
icon = new Column<Item, ImageResource>(iconResourceCell) {
@Override
public ImageResource getValue(Item dataObj) {
return Util.getImage(dataObj);
}
// @Override
// public void onBrowserEvent(Context context, Element elem, Item object, NativeEvent event) {
// super.onBrowserEvent(context, elem, object, event);
// if ("click".equals(event.getType())) {
//// Window.open(object.getURL(), "_blank", "");
//// GcubeReleasesAppController.eventBus.fireEvent(new PackageClickEvent(object, AccoutingReference.DOWNLOAD));
// }
// }
/* (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.setCellStyleNames("img-centered-clickable");
icon.setSortable(false);
packageTable.addColumn(icon, "");
packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
//ARTIFACT ID
name = new TextColumn<Item>() {
@Override
public String getValue(Item object) {
return object.getName();
}
};
name.setSortable(true);
packageTable.addColumn(name, "Name");
packageTable.setColumnWidth(name, 60.0, 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);
owner = new TextColumn<Item>() {
@Override
public String getValue(Item object) {
return object.getOwner() != null ? object.getOwner() : "";
}
};
owner.setSortable(true);
packageTable.addColumn(owner, "Owner");
packageTable.setColumnWidth(owner, 40.0, Unit.PCT);
ListHandler<Item> ownerColumnHandler = new ListHandler<Item>(dataProvider.getList());
nameColumnHandler.setComparator(owner, new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
return o1.getOwner().compareTo(o2.getOwner());
}
});
packageTable.addColumnSortHandler(ownerColumnHandler);
/*
packageTable.addColumn(icon, "Download");
packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
*/
//MAVEN COORDS
ImageResourceCell myImgMavenCell = new ImageResourceCell() {
public Set<String> getConsumedEvents() {
HashSet<String> events = new HashSet<String>();
events.add("click");
return events;
}
};
/*
//AS LINK
final SafeHtmlRenderer<String> mvnCoordinatesRenderer = new AbstractSafeHtmlRenderer<String>() {
@Override
public SafeHtml render(String object) {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
sb.appendHtmlConstant("<a target=\"_blank\" href=\""+object+"\">").appendEscaped("Maven Repo").appendHtmlConstant("</a>");
return sb.toSafeHtml();
}
};
mvnCoordinates = new Column<Package, String>(new ClickableTextCell(mvnCoordinatesRenderer)) {
@Override
public String getValue(Package object) {
return "http://maven.research-infrastructures.eu/nexus/index.html#nexus-search;quick~"+object.getArtifactID();
}
};
*/
// mvn.setSortable(false);
final SingleSelectionModel<Item> selectionModel = new SingleSelectionModel<Item>();
selectionModel.addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
// Package p = selectionModel.getSelectedObject();
// CellTables.this.driver.edit(person);
}
});
// exampleTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
// packageTable.setSelectionModel(selectionModel);
// pager.setDisplay(exampleTable);
// pagination.clear();
}
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.wsexplorer.client.grid.AbstractItemsCellTable#selectedItem(org.gcube.portlets.widgets.wsexplorer.shared.Item)
*/
@Override
public void selectedItem(Item item) {
this.selectedItem = item;
}
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.SelectionItemHandler#getSelectionItem()
*/
@Override
public Item getSelectedItem() {
return selectedItem;
}
}