diff --git a/pom.xml b/pom.xml
index 7a75a3b..0a0d290 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
4.0.0
org.gcube.portlets.widgets
workspace-explorer
- 1.1.1-SNAPSHOT
+ 1.2.0-SNAPSHOT
gCube Workspace Explorer
gCube Workspace Explorer widget allows to navigate (gcube) user workspace
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/explore/WorkspaceResourcesExplorerPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/explore/WorkspaceResourcesExplorerPanel.java
index 02dd1a4..5b91813 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/explore/WorkspaceResourcesExplorerPanel.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/explore/WorkspaceResourcesExplorerPanel.java
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package org.gcube.portlets.widgets.wsexplorer.client.explore;
@@ -58,7 +58,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
private ScrollPanel southPanel = new ScrollPanel();
private String folderId;
private String folderName;
-
+
/**
* Instantiates a new workspace folder explorer select panel.
*
@@ -83,12 +83,12 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
this.folderId = folderId;
this.folderName = folderName;
bindEvents();
- wsExplorer = new WorkspaceExplorer(eventBus, showableTypes, selectableTypes, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME});
+ wsExplorer = new WorkspaceExplorer(eventBus, showableTypes, selectableTypes, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME, DISPLAY_FIELD.CREATION_DATE});
Item item = new Item(folderId, folderName, true);
wsExplorer.loadFolder(item);
initPanel("");
}
-
+
/**
* Instantiates a new workspace explorer select panel.
*
@@ -106,15 +106,15 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
initExplorer(folderId, "", ItemType.values(), ItemType.values());
}
}
-
+
/**
* Bind events.
*/
private void bindEvents(){
-
+
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
-
+
@Override
public void onClick(final ClickItemEvent clickItemEvent) {
isSelect = false;
@@ -125,17 +125,17 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
notifyNotValidSelection();
return;
}
-
+
notifySelectedItem(wsExplorer.getItemSelected());
isSelect = true;
}
});
-
+
eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() {
-
+
@Override
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
-
+
if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){
try {
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
@@ -147,16 +147,16 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
}
}
});
-
+
eventBus.addHandler(BreadcrumbClickEvent.TYPE, new BreadcrumbClickEventHandler() {
-
+
@Override
public void onBreadcrumbClick(BreadcrumbClickEvent breadcrumbClickEvent) {
eventBus.fireEvent(new LoadFolderEvent(breadcrumbClickEvent.getTargetItem()));
}
});
}
-
+
/**
* Load parent breadcrumb by item id.
@@ -185,7 +185,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
}
});
}
-
+
/**
* Refresh root folder view.
@@ -194,14 +194,14 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
Item item = new Item(folderId, folderName, true);
eventBus.fireEvent(new LoadFolderEvent(item));
}
-
+
/**
* Clear more info.
*/
private void clearMoreInfo(){
southPanel.clear();
}
-
+
/**
* Inits the panel.
*
@@ -211,20 +211,20 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
this.captionTxt = captionTxt;
if(this.captionTxt!=null && !this.captionTxt.isEmpty())
setTitle(this.captionTxt);
-
+
add(breadcrumbs, DockPanel.NORTH);
// centerScrollable.setSize(width+"px", height);
setAlertConfirm("", false, null);
-
+
mainVP.add(wsExplorer.getPanel());
mainVP.add(footerHP);
centerScrollable.add(mainVP);
add(centerScrollable, DockPanel.CENTER);
-
+
add(footerHP, DockPanel.SOUTH);
}
-
-
+
+
/**
* Sets the alert confirm.
*
@@ -238,17 +238,17 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
}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){
@@ -257,11 +257,11 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
}
}
});
-
+
Button no = new Button("No");
no.setType(ButtonType.LINK);
no.addClickHandler(new ClickHandler() {
-
+
@Override
public void onClick(ClickEvent event) {
alertConfirm.close();
@@ -277,33 +277,33 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
* @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.
*
@@ -311,12 +311,12 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
*/
@SuppressWarnings("unused")
private void notifyFailed(Throwable t){
-
+
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onFailed(t);
}
}
-
+
/**
* Gets the caption txt.
*
@@ -334,7 +334,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
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)
*/
@@ -354,7 +354,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
listeners.remove(handler);
}
}
-
+
/**
* Item is selectable.
*
@@ -366,7 +366,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
GWT.log("item: "+item);
if (item!=null){
boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType());
- return (selectable)?true:false;
+ return selectable?true:false;
}
return false;
}
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java
index dfd5e18..301770f 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/AbstractItemsCellTable.java
@@ -101,26 +101,6 @@ public abstract class AbstractItemsCellTable {
}
},
DoubleClickEvent.getType());
- /*
- cellTable.addCellPreviewHandler(new CellPreviewEvent.Handler- () {
- long lastClick=-1000;
-
- @Override
- public void onCellPreview(CellPreviewEvent
- event) {
- long clictAt = System.currentTimeMillis();
- GWT.log("clickAt: "+(clictAt));
- GWT.log("lastClick: "+(lastClick));
- if(event.getNativeEvent().getType().contains("click")){
- GWT.log(""+(clictAt-lastClick));
- if(clictAt-lastClick < 300) { // dblclick on 2 clicks detected within 300 ms
- Window.alert("I am a double click crafted event!");
- }
- lastClick = System.currentTimeMillis();
- }
-
- }
- }); */
-
MenuBar options = new MenuBar(true);
ScheduledCommand openCommand = new ScheduledCommand() {
@@ -187,12 +167,6 @@ public abstract class AbstractItemsCellTable {
cellTable.redraw();
}
- /*private void addItem(Item pckg) {
- dataProvider.getList().add(pckg);
- dataProvider.flush();
- dataProvider.refresh();
- }*/
-
/**
* Gets the cell tables.
*
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java
index 3836761..cbcff52 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java
@@ -5,6 +5,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.view.grid;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -16,9 +17,11 @@ 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.DateCell;
import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.i18n.shared.DateTimeFormat;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
@@ -41,7 +44,8 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
private Column
- icon;
private TextColumn
- name;
private TextColumn
- owner;
- private Item selectedItem = null;
+ public DateTimeFormat dtformat = DateTimeFormat.getFormat("dd MMM hh:mm aaa yyyy");
+// private Item selectedItem = null;
/**
* The Enum DISPLAY_FIELD.
@@ -49,8 +53,9 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Feb 1, 2016
*/
- public static enum DISPLAY_FIELD{ICON, NAME, OWNER};
+ public static enum DISPLAY_FIELD{ICON, NAME, OWNER, CREATION_DATE};
private List displayFields;
+ private Column
- dateColumn;
/**
* Instantiates a new items table.
@@ -92,19 +97,19 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
* @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
- packageTable, final SimplePager pager, final Pagination pagination) {
- packageTable.setEmptyTableWidget(new Label("No data."));
-
- //ICONS
- ImageResourceCell iconResourceCell = new ImageResourceCell() {
- public Set getConsumedEvents() {
- HashSet events = new HashSet();
- events.add("click");
- return events;
- }
- };
+ public void initTable(final AbstractCellTable
- abstractCellTable, final SimplePager pager, final Pagination pagination) {
+ abstractCellTable.setEmptyTableWidget(new Label("No data."));
if(this.displayFields.contains(DISPLAY_FIELD.ICON)){
+ //ICONS
+ ImageResourceCell iconResourceCell = new ImageResourceCell() {
+ public Set getConsumedEvents() {
+ HashSet events = new HashSet();
+ events.add("click");
+ return events;
+ }
+ };
+
icon = new Column
- (iconResourceCell) {
@Override
public ImageResource getValue(Item dataObj) {
@@ -120,8 +125,8 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
}
};
icon.setSortable(false);
- packageTable.addColumn(icon, "");
- packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
+ abstractCellTable.addColumn(icon, "");
+ abstractCellTable.setColumnWidth(icon, 10.0, Unit.PCT);
}
if(this.displayFields.contains(DISPLAY_FIELD.NAME)){
@@ -134,10 +139,10 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
};
name.setSortable(true);
- packageTable.addColumn(name, "Name");
+ abstractCellTable.addColumn(name, "Name");
- double width = displayFields.size()>1?50:90;
- packageTable.setColumnWidth(name, width, Unit.PCT);
+// double width = displayFields.size()>1?50:90;
+// abstractCellTable.setColumnWidth(name, width, Unit.PCT);
ListHandler
- nameColumnHandler = new ListHandler
- (dataProvider.getList());
nameColumnHandler.setComparator(name, new Comparator
- () {
@@ -147,7 +152,7 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
}
});
- packageTable.addColumnSortHandler(nameColumnHandler);
+ abstractCellTable.addColumnSortHandler(nameColumnHandler);
}
@@ -161,9 +166,9 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
};
owner.setSortable(true);
- packageTable.addColumn(owner, "Owner");
- double width = displayFields.size()==2 ?90:40;
- packageTable.setColumnWidth(owner, width, Unit.PCT);
+ abstractCellTable.addColumn(owner, "Owner");
+// double width = displayFields.size()==2 ?90:40;
+// abstractCellTable.setColumnWidth(owner, width, Unit.PCT);
ListHandler
- ownerColumnHandler = new ListHandler
- (dataProvider.getList());
ownerColumnHandler.setComparator(owner, new Comparator
- () {
@@ -172,10 +177,33 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
return o1.getOwner().compareTo(o2.getOwner());
}
});
- packageTable.addColumnSortHandler(ownerColumnHandler);
+ abstractCellTable.addColumnSortHandler(ownerColumnHandler);
}
+ if(this.displayFields.contains(DISPLAY_FIELD.CREATION_DATE)){
+
+ DateCell date = new DateCell(dtformat);
+ dateColumn = new Column
- (date){
+
+ @Override
+ public Date getValue(Item object) {
+ return object.getCreationDate();
+ }
+ };
+
+ dateColumn.setSortable(true);
+ ListHandler
- dateColumnHandler = new ListHandler
- (dataProvider.getList());
+ dateColumnHandler.setComparator(dateColumn, new Comparator
- () {
+ @Override
+ public int compare(Item o1, Item o2) {
+ return o1.getCreationDate().compareTo(o2.getCreationDate());
+ }
+ });
+ abstractCellTable.addColumnSortHandler(dateColumnHandler);
+ abstractCellTable.addColumn(dateColumn, "Created");
+ }
+
/*final SingleSelectionModel
- selectionModel = new SingleSelectionModel
- ();
selectionModel.addSelectionChangeHandler(new Handler() {
@Override
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java
index 63e994e..b0b52d5 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/ItemBuilder.java
@@ -3,6 +3,8 @@
*/
package org.gcube.portlets.widgets.wsexplorer.server;
+import java.util.Calendar;
+import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -116,7 +118,7 @@ public class ItemBuilder {
// if(workspaceItem instanceof FolderItem){
// storageID = workspaceItem.getStorageID();
// }
- item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItemPath, UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), isFolder, false);
+ item = new Item(parent, workspaceItem.getId(), itemName, type, workspaceItemPath, UserUtil.getUserFullName(workspaceItem.getOwner().getPortalLogin()), toDate(workspaceItem.getCreationTime()), isFolder, false);
item.setSharedFolder(isSharedFolder);
}catch(Exception e){
_log.error("Error on getting item: "+itemName+" with id: "+workspaceItem.getId()+", from HL, so skipping item");
@@ -353,7 +355,7 @@ public class ItemBuilder {
//BUILDS A SIMPLE ITEM FOR BREADCRUMB
String path = null; //wsFolder.getPath(); FORCED TO NULL BECAUSE IS SLOW CALL
- Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, path, null, true, isRoot);
+ Item item = new Item(null, wsFolder.getId(), name, ItemType.FOLDER, path, null, null, true, isRoot);
item.setSpecialFolder(isSpecialFolder);
_log.debug("breadcrumb returning: "+item);
@@ -375,6 +377,20 @@ public class ItemBuilder {
return false;
}
}
+
+
+ /**
+ * To date.
+ *
+ * @param calendar the calendar
+ * @return the date
+ */
+ public static Date toDate(Calendar calendar)
+ {
+ if (calendar == null) return null;
+ return calendar.getTime();
+
+ }
/*
public static void main(String[] args) {
List allowedFileExtension = new ArrayList();
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java
index 1d2b1cf..e4503a4 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java
@@ -217,12 +217,12 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
}else if(fullName.indexOf(".")>0){
fullName = fullName.substring(0, fullName.indexOf("."));
}
- item = new Item(null, root.getId(), fullName+"'s", ItemType.FOLDER, root.getPath(), root.getOwner().getPortalLogin(), true, true);
+ item = new Item(null, root.getId(), fullName+"'s", ItemType.FOLDER, root.getPath(), root.getOwner().getPortalLogin(), null, true, true);
break;
}
case VRE_FOLDER:{
WorkspaceItem folder = workspace.getMySpecialFolders();
- item = new Item(null, folder.getId(), WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, ItemType.FOLDER, folder.getPath(), folder.getOwner().getPortalLogin(), true, false);
+ item = new Item(null, folder.getId(), WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, ItemType.FOLDER, folder.getPath(), folder.getOwner().getPortalLogin(), null, true, false);
//SET SPECIAL FOLDER /Workspace/MySpecialFolders
item.setSpecialFolder(true);
break;
diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java
index 36f6498..5d50adb 100644
--- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java
+++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java
@@ -4,6 +4,7 @@
package org.gcube.portlets.widgets.wsexplorer.shared;
import java.util.ArrayList;
+import java.util.Date;
import com.google.gwt.user.client.rpc.IsSerializable;
@@ -28,6 +29,7 @@ public class Item implements IsSerializable, ItemInterface{
private boolean isSpecialFolder = false;
private boolean isSharedFolder = false;
private boolean isRoot = false;
+ private Date creationDate;
/**
* Instantiates a new item.
@@ -56,16 +58,18 @@ public class Item implements IsSerializable, ItemInterface{
* @param type the type
* @param path the path
* @param owner the owner
+ * @param creationDate the creation date
* @param isFolder the is folder
* @param isRoot the is root
*/
- public Item(Item parent, String id, String name, ItemType type, String path, String owner, boolean isFolder, boolean isRoot) {
+ public Item(Item parent, String id, String name, ItemType type, String path, String owner, Date creationDate, boolean isFolder, boolean isRoot) {
this(id, name, isFolder);
this.parent = parent;
this.type = type;
this.path = path;
this.children = new ArrayList
- ();
this.owner = owner;
+ this.creationDate = creationDate;
this.isRoot = isRoot;
}
@@ -302,6 +306,16 @@ public class Item implements IsSerializable, ItemInterface{
return true;
}
+
+
+ /**
+ * @return the creationDate
+ */
+ public Date getCreationDate() {
+
+ return creationDate;
+ }
+
/**
* Sets the parent.
*
@@ -318,7 +332,7 @@ public class Item implements IsSerializable, ItemInterface{
public String toString() {
StringBuilder builder = new StringBuilder();
- builder.append("Item id=");
+ builder.append("Item [id=");
builder.append(id);
builder.append(", name=");
builder.append(name);
@@ -338,7 +352,10 @@ public class Item implements IsSerializable, ItemInterface{
builder.append(isSharedFolder);
builder.append(", isRoot=");
builder.append(isRoot);
+ builder.append(", creationDate=");
+ builder.append(creationDate);
builder.append("]");
return builder.toString();
}
+
}