1657: StatMan AIgorithms Importer - Create a widget to sopport Project Explorer

Task-Url: https://support.d4science.org/issues/1657

Added new class WorkspaceFolderExplorerSelectPanel

Updated pom version at 1.1.0

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@120573 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2015-12-02 17:36:58 +00:00
parent ac9a7a24df
commit 2348899ed8
13 changed files with 532 additions and 114 deletions

View File

@ -30,6 +30,16 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
@ -38,5 +48,6 @@
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
lastWarOutDir=/home/francesco-mangiacrapa/wseclipseluna/workspace-explorer/target
warSrcDir=src/main/webapp
warSrcDirIsOutput=false

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
entryPointModules=org.gcube.portlets.widgets.wsexplorer.WorkspaceExplorer

View File

@ -10,8 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-explorer</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<name>gCube Workspace Explorer</name>
<description>
gCube Workspace Explorer widget allows to navigate (gcube) user workspace

View File

@ -1,16 +0,0 @@
package org.gcube.portlets.widgets.wsexplorer.client;
import com.google.gwt.core.client.EntryPoint;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class WorkspaceExplorer implements EntryPoint {
/**
* This is the entry point method.
*/
public void onModuleLoad() {
}
}

View File

@ -97,9 +97,13 @@ public class WorkspaceExplorerController implements EventHandler {
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
clearMoreInfo();
try {
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
clearMoreInfo();
} catch (Exception e) {
GWT.log(e.getMessage());
}
}
}
});

View File

@ -0,0 +1,32 @@
package org.gcube.portlets.widgets.wsexplorer.client;
import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class WorkspaceExplorerEntryPoint implements EntryPoint {
/**
* This is the entry point method.
*/
public void onModuleLoad() {
WorkspaceExplorer wsExplorer = new WorkspaceExplorer(ItemType.values(), ItemType.values());
Item item = new Item("9d031962-4678-4e6b-a687-2be532b8e974", "D&D", true);
RootPanel.get("workspace_explorer").add(wsExplorer.getPanel());
try {
wsExplorer.loadFolder(item);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

View File

@ -36,6 +36,7 @@ public class WorkspaceExplorerPanel extends DockPanel{
ensureDebugId("WorkspaceNavigatorPanel");
add(breadcrumbs, DockPanel.NORTH);
southPanel.ensureDebugId("SouthPanelWEP");
add(southPanel, DockPanel.SOUTH);

View File

@ -0,0 +1,301 @@
/**
*
*/
package org.gcube.portlets.widgets.wsexplorer.client.select;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.widgets.wsexplorer.client.Util;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent;
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEventHandler;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.github.gwtbootstrap.client.ui.Alert;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
* The Class WorkspaceExplorerSelectPanel.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jul 28, 2015
*/
public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements HasWorskpaceExplorerSelectNotificationListener{
private WorkspaceFolderExplorerSelectPanel INSTANCE = this;
private boolean isSelect = false;
private String captionTxt;
private Alert alertConfirm;
// private WorkspaceExplorerController controller;
private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>();
private VerticalPanel mainVP = new VerticalPanel();
private HorizontalPanel footerHP = new HorizontalPanel();
private WorkspaceExplorer wsExplorer;
/**
* Instantiates a new workspace folder explorer select panel.
*
* @param folderId the folder id
* @throws Exception
*/
public WorkspaceFolderExplorerSelectPanel(String folderId, String folderName) throws Exception {
initExplorer(folderId, folderName, ItemType.values(), ItemType.values());
}
private void initExplorer(String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes) throws Exception{
bindEvents();
wsExplorer = new WorkspaceExplorer(showableTypes, selectableTypes, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME});
Item item = new Item(folderId, folderName, true);
wsExplorer.loadFolder(item);
initPanel("");
}
/**
* Instantiates a new workspace explorer select panel.
*
* @param captionTxt the caption txt
* @param showOnlyFolders the show only folders
* @throws Exception
*/
public WorkspaceFolderExplorerSelectPanel(String folderId, boolean showOnlyFolders) throws Exception {
if(showOnlyFolders){
ItemType[] itemsType = new ItemType[1];
itemsType[0] = ItemType.FOLDER;
initExplorer(folderId, "", itemsType, itemsType);
}else{
initExplorer(folderId, "", ItemType.values(), ItemType.values());
}
}
/**
* Bind events.
*/
private void bindEvents(){
WorkspaceExplorerController.eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
@Override
public void onClick(final ClickItemEvent clickItemEvent) {
isSelect = false;
Item item = wsExplorer.getItemSelected();
//Return if item is not selectable
if(!itemIsSelectable(item)){
notifyNotValidSelection();
return;
}
notifySelectedItem(wsExplorer.getItemSelected());
isSelect = true;
}
});
}
@Override
public void onResize() {
super.onResize();
GWT.log("on Resize...");
adjustSize();
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.Widget#onLoad()
*/
@Override
protected void onLoad() {
super.onLoad();
GWT.log("on Load...");
// adjustSize();
adjustSize();
}
private void adjustSize(){
if(this.getParent()!=null && this.getParent().getElement()!=null)
Util.adjustSize(this.getParent().getElement(), wsExplorer.getPanel(), 85);
}
/**
* Inits the panel.
*
* @param captionTxt the caption txt is the tool-tip
*/
private void initPanel(String captionTxt) {
this.captionTxt = captionTxt;
if(this.captionTxt!=null && !this.captionTxt.isEmpty())
setTitle(this.captionTxt);
setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px");
setAlertConfirm("", false, null);
mainVP.add(wsExplorer.getPanel());
mainVP.add(footerHP);
add(mainVP);
}
/**
* Sets the alert confirm.
*
* @param html the html
* @param show the show
* @param item the item
*/
private void setAlertConfirm(String html, boolean show, final Item item){
try{
footerHP.remove(alertConfirm);
}catch(Exception e){
//silent
}
alertConfirm = new Alert();
alertConfirm.setText(html);
alertConfirm.setVisible(show);
alertConfirm.setClose(true);
alertConfirm.setType(AlertType.INFO);
Button yes = new Button("Yes");
yes.setType(ButtonType.LINK);
yes.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(item!=null){
isSelect = true;
notifySelectedItem(item);
}
}
});
Button no = new Button("No");
no.setType(ButtonType.LINK);
no.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
alertConfirm.close();
}
});
alertConfirm.add(yes);
alertConfirm.add(no);
footerHP.insert(alertConfirm,0);
}
/**
* Notify selected item.
*
* @param selected the selected
*/
private void notifySelectedItem(Item selected){
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onSelectedItem(selected);
}
}
/**
* Notify aborted.
*/
private void notifyAborted(){
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onAborted();
}
}
/**
* Notify not valid selection.
*/
private void notifyNotValidSelection(){
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onNotValidSelection();
}
}
/**
* Notify failed.
*
* @param t the t
*/
@SuppressWarnings("unused")
private void notifyFailed(Throwable t){
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onFailed(t);
}
}
/**
* Gets the caption txt.
*
* @return the captionTxt
*/
public String getCaptionTxt() {
return captionTxt;
}
/**
* Checks if is valid hide.
*
* @return the isValidHide
*/
public boolean isValidHide() {
return isSelect;
}
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
*/
@Override
public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
if(handler!=null)
listeners.add(handler);
}
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
*/
@Override
public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
if(handler!=null){
if(listeners.contains(handler))
listeners.remove(handler);
}
}
/**
* Item is selectable.
*
* @param item the item
* @return true, if successful
*/
public boolean itemIsSelectable(Item item){
GWT.log("Selectable type: "+wsExplorer.getSelectableTypes());
GWT.log("item: "+item);
if (item!=null){
boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType());
return (selectable)?true:false;
}
return false;
}
}

View File

@ -8,6 +8,7 @@ import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
import org.gcube.portlets.widgets.wsexplorer.client.event.RootLoadedEvent;
import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
@ -48,13 +49,11 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
protected Alert alert = new Alert();
protected List<ItemType> selectableTypes = new ArrayList<ItemType>();
protected List<ItemType> showableTypes = new ArrayList<ItemType>();
// protected List<String> allowedMimeTypes = new ArrayList<String>();
// protected List<String> allowedFileExtensions = new ArrayList<String>();
// protected Map<String, String> requiredProperties = new HashMap<String, String>();
protected FilterCriteria filterCriteria = null;
protected boolean showEmptyFolders = true;
protected ScrollPanel explorerPanel;
private ItemsTable itTables;
private DISPLAY_FIELD[] displayFields;
/**
* Instantiates a new workspace explorer.
@ -62,11 +61,11 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
* @param showableTypes the showable types
* @param selectableTypes the selectable types
*/
public WorkspaceExplorer(ItemType[] showableTypes, ItemType[] selectableTypes) {
public WorkspaceExplorer(ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) {
setShowableTypes(showableTypes);
setSelectableTypes(selectableTypes);
itTables = new ItemsTable(true, fields);
explorerPanel = new ScrollPanel();
}
@ -77,8 +76,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
* @param showableTypes the showable types
* @param selectableTypes the selectable types
*/
public WorkspaceExplorer(FilterCriteria filterCriteria, ItemType[] showableTypes, ItemType[] selectableTypes) {
this(showableTypes, selectableTypes);
public WorkspaceExplorer(FilterCriteria filterCriteria, ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) {
this(showableTypes, selectableTypes, fields);
this.filterCriteria = filterCriteria;
}
@ -141,43 +140,51 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
}
/**
* Load the Workspace Tree.
* Load folder.
*
* @param item the item
* @throws Exception the exception
*/
public void loadFolder(Item item) {
public void loadFolder(final Item item) throws Exception {
GWT.log("loading folder data");
setLoading();
if(item.isFolder()){
// we make a copy of showable types
List<ItemType> showableTypesParam = new ArrayList<ItemType>(showableTypes);
if(!item.isFolder())
throw new Exception("Item is not a folder");
if(item.getId()==null || item.getId().isEmpty())
throw new Exception("Item id is null or empty");
// we make a copy of showable types
List<ItemType> showableTypesParam = new ArrayList<ItemType>(showableTypes);
// we get sure that folders are displayed
for (ItemType folder : Util.FOLDERS) {
if (!showableTypesParam.contains(folder))
showableTypesParam.add(folder);
}
// we get sure that folders are displayed
for (ItemType folder : Util.FOLDERS) {
if (!showableTypesParam.contains(folder))
showableTypesParam.add(folder);
}
boolean purgeEmpyFolders = !showEmptyFolders;
boolean purgeEmpyFolders = !showEmptyFolders;
// FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,requiredProperties, allowedFileExtensions);
GWT.log("loading workspace tree from server");
WorkspaceExplorerController.workspaceNavigatorService.getFolder(item.getId(), showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
GWT.log("loading workspace folder by item id from server: "+item.getId());
WorkspaceExplorerController.workspaceNavigatorService.getFolder(item.getId(), showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
setAlert(caught.getMessage(), AlertType.ERROR);
GWT.log("Error loading workspace folder from server",caught);
}
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
setAlert(caught.getMessage(), AlertType.ERROR);
GWT.log("Error loading workspace folder from server",caught);
}
@Override
public void onSuccess(Item result) {
updateExplorer(result.getChildren());
}
});
}
@Override
public void onSuccess(Item result) {
if(item.getName()==null || item.getName().isEmpty())
item.setName(result.getName());
updateExplorer(result.getChildren());
}
});
}
/**
@ -225,7 +232,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
private void updateExplorer(ArrayList<Item> items){
GWT.log("workspace explorer updating..");
explorerPanel.clear();
itTables = new ItemsTable(true);
// itTables = new ItemsTable(true, displayFields);
itTables.addItems(items);
explorerPanel.add(itTables.getCellTable());
GWT.log("workspace explorer updated");
@ -240,6 +247,24 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
return explorerPanel;
}
/**
* @return the displayFields
*/
public DISPLAY_FIELD[] getDisplayFields() {
return displayFields;
}
/**
* @param displayFields the displayFields to set
*/
public void setDisplayFields(DISPLAY_FIELD[] displayFields) {
this.displayFields = displayFields;
itTables.setDisplayFields(displayFields);
}
/**
* Gets the it tables.
*

View File

@ -67,7 +67,7 @@ public abstract class AbstractItemsCellTable {
cellTable.setCondensed(true);
cellTable.setWidth("100%", true);
dataProvider.addDataDisplay(cellTable);
initTable(cellTable, null, null);
// initTable(cellTable, null, null);
cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
ssm = new SingleSelectionModel<Item>();

View File

@ -3,6 +3,7 @@
*/
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;
@ -40,12 +41,16 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
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) {
public ItemsTable(boolean showMoreInfo, DISPLAY_FIELD[] fields) {
super(showMoreInfo);
setDisplayFields(fields);
initTable(cellTable, null, null);
}
/* (non-Javadoc)
@ -88,65 +93,77 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
}
};
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.setCellStyleNames("img-centered-clickable");
icon.setSortable(false);
packageTable.addColumn(icon, "");
packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
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);
}
//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, 50.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);
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);
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);
}
/*final SingleSelectionModel<Item> selectionModel = new SingleSelectionModel<Item>();
selectionModel.addSelectionChangeHandler(new Handler() {
@ -156,6 +173,20 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
});*/
}
/**
* @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

View File

@ -7,15 +7,18 @@ import java.util.ArrayList;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* The Class Item.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 25, 2015
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Dec 2, 2015
*/
public class Item implements IsSerializable {
protected Item parent;
protected String id;
protected String name;
protected ItemType type;
protected String path;
@ -31,6 +34,17 @@ public class Item implements IsSerializable {
*/
public Item() {
}
/**
* Instantiates a new item.
*
* @param id the id
* @param name the name
* @param isFolder the is folder
*/
public Item(String id, String name, boolean isFolder) {
this.id = id;
this.isFolder = isFolder;
}
/**
@ -46,17 +60,24 @@ public class Item implements IsSerializable {
* @param isRoot the is root
*/
public Item(Item parent, String id, String name, ItemType type, String path, String owner, boolean isFolder, boolean isRoot) {
this(id, name, isFolder);
this.parent = parent;
this.id = id;
this.name = name;
this.type = type;
this.path = path;
this.children = new ArrayList<Item>();
this.owner = owner;
this.isFolder = isFolder;
this.isRoot = isRoot;
}
/**
* Sets the id.
*
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* Checks if is root.
@ -238,6 +259,8 @@ public class Item implements IsSerializable {
}
/**
* Gets the path.
*
* @return the path
*/
public String getPath() {