256: Workspace explorer
Task-Url: https://support.d4science.org/issues/256 Enhancemetns on view details git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@117042 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
706f53b60f
commit
898be623c7
|
@ -15,6 +15,8 @@ import com.google.gwt.resources.client.ImageResource;
|
|||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 18, 2015
|
||||
*/
|
||||
public class Util {
|
||||
|
||||
// public static final NumberFormat numberFormatterKB = NumberFormat.getFormat("#,##0 KB;(#,##0 KB)");
|
||||
|
||||
public static final ItemType[] FOLDERS = new ItemType[] { ItemType.ROOT,
|
||||
ItemType.FOLDER };
|
||||
|
@ -95,4 +97,24 @@ public class Util {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static String getFormattedSize(long value){
|
||||
|
||||
if(value>0){
|
||||
double kb = value/1024;
|
||||
if(kb<1)
|
||||
kb=1;
|
||||
// return numberFormatterKB.format(kb);
|
||||
return kb+"KB";
|
||||
}else if(value==0){
|
||||
return "EMPTY";
|
||||
}else
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,14 +5,15 @@ package org.gcube.portlets.widgets.wsexplorer.client;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
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.event.LoadFolderEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEventHandler;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadMySpecialFolderEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadMySpecialFolderEventHandler;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEventHandler;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.MoreInfoShowEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.MoreInfoShowEventHandler;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerServiceAsync;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs;
|
||||
|
@ -25,9 +26,12 @@ import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
|||
import com.github.gwtbootstrap.client.ui.Alert;
|
||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -72,6 +76,7 @@ public class WorkspaceExplorerController implements EventHandler {
|
|||
if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){
|
||||
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
|
||||
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
|
||||
clearMoreInfo();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -95,25 +100,20 @@ public class WorkspaceExplorerController implements EventHandler {
|
|||
public void onSuccess(Item result) {
|
||||
result.setName(WorkspaceExplorerConstants.HOME_LABEL); //FORCE SET NAME LIKE "HOME_LABEL"
|
||||
breadcrumbs.init(result);
|
||||
clearMoreInfo();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(MoreInfoShowEvent.TYPE, new MoreInfoShowEventHandler() {
|
||||
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onMoreInfo(MoreInfoShowEvent moreInfoShowEvent) {
|
||||
public void onClick(final ClickItemEvent clickItemEvent) {
|
||||
|
||||
if(moreInfoShowEvent.getItem()!=null){
|
||||
workspaceExplorerPanel.getSouthPanel().clear();
|
||||
Alert alert = new Alert();
|
||||
alert.setText(moreInfoShowEvent.getItem().toString());
|
||||
alert.setType(AlertType.INFO);
|
||||
alert.setClose(true);
|
||||
workspaceExplorerPanel.getSouthPanel().add(alert);
|
||||
// GWT.log("onMoreInfo");
|
||||
// setupPopover(navigation.getMoreInfoPanel(), moreInfoShowEvent.getItem().getName(), "Info "+moreInfoShowEvent.getItem().getName()).show();
|
||||
Item item = clickItemEvent.getItem();
|
||||
if(item!=null){
|
||||
updateMoreInfo(item);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -135,6 +135,7 @@ public class WorkspaceExplorerController implements EventHandler {
|
|||
@Override
|
||||
public void onSuccess(Item result) {
|
||||
breadcrumbs.init(result);
|
||||
clearMoreInfo();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -161,11 +162,85 @@ public class WorkspaceExplorerController implements EventHandler {
|
|||
|
||||
@Override
|
||||
public void onSuccess(List<Item> result) {
|
||||
if(result!=null)
|
||||
if(result!=null){
|
||||
breadcrumbs.setPath(result);
|
||||
clearMoreInfo();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void clearMoreInfo(){
|
||||
workspaceExplorerPanel.getSouthPanel().clear();
|
||||
}
|
||||
|
||||
private void updateMoreInfo(Item item){
|
||||
|
||||
if(item!=null){
|
||||
workspaceExplorerPanel.getSouthPanel().clear();
|
||||
Alert alert = new Alert();
|
||||
alert.addStyleName("alert-custom");
|
||||
|
||||
final HorizontalPanel hp = new HorizontalPanel();
|
||||
hp.add(WorkspaceExplorerResources.getIconInfo().createImage());
|
||||
final Label labelName = new Label("Name: "+item.getName());
|
||||
double marginValue = 10.0;
|
||||
labelName.getElement().getStyle().setMarginLeft(marginValue, Unit.PX);
|
||||
labelName.getElement().getStyle().setMarginRight(marginValue, Unit.PX);
|
||||
final Label labelSize = new Label("Size: ");
|
||||
labelSize.getElement().getStyle().setMarginRight(marginValue, Unit.PX);
|
||||
final Label labelMime = new Label("Mime Type: ");
|
||||
labelMime.getElement().getStyle().setMarginRight(marginValue, Unit.PX);
|
||||
final Label labelACL = new Label("Rights: ");
|
||||
labelACL.getElement().getStyle().setMarginRight(marginValue, Unit.PX);
|
||||
hp.add(labelName);
|
||||
hp.add(labelSize);
|
||||
if(!item.isFolder())
|
||||
hp.add(labelMime);
|
||||
hp.add(labelACL);
|
||||
workspaceNavigatorService.loadSizeByItemId(item.getId(), new AsyncCallback<Long>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Long result) {
|
||||
labelSize.setText("Size: " +Util.getFormattedSize(result));
|
||||
labelSize.getElement().getStyle().setMarginLeft(10.0, Unit.PX);
|
||||
}
|
||||
});
|
||||
|
||||
if(!item.isFolder()){
|
||||
workspaceNavigatorService.getMimeType(item.getId(), new AsyncCallback<String>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String result) {
|
||||
if(result!=null)
|
||||
labelMime.setText("Mime Type: "+result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
workspaceNavigatorService.getUserACLForFolderId(item.getId(), new AsyncCallback<String>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String result) {
|
||||
labelACL.setText("Rights: "+result);
|
||||
}
|
||||
});
|
||||
alert.add(hp);
|
||||
alert.setType(AlertType.DEFAULT);
|
||||
alert.setClose(false);
|
||||
workspaceExplorerPanel.getSouthPanel().add(alert); }
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -41,7 +41,7 @@ public class WorkspaceExplorerPanel extends DockPanel{
|
|||
add(breadcrumbs, DockPanel.NORTH);
|
||||
southPanel.ensureDebugId("SouthPanelWEP");
|
||||
add(southPanel, DockPanel.SOUTH);
|
||||
|
||||
|
||||
westPanel.setWidth(west_width+"px");
|
||||
westPanel.add(navigation);
|
||||
add(westPanel, DockPanel.WEST);
|
||||
|
|
|
@ -4,22 +4,24 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
|||
|
||||
import com.google.gwt.event.shared.GwtEvent;
|
||||
|
||||
|
||||
/**
|
||||
* The Class DisplaySelectedReleaseEvent.
|
||||
* The Class ClickItemEvent.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Feb 19, 2015
|
||||
* Jul 6, 2015
|
||||
*/
|
||||
public class MoreInfoShowEvent extends GwtEvent<MoreInfoShowEventHandler> {
|
||||
public static Type<MoreInfoShowEventHandler> TYPE = new Type<MoreInfoShowEventHandler>();
|
||||
public class ClickItemEvent extends GwtEvent<ClickItemEventHandler> {
|
||||
public static Type<ClickItemEventHandler> TYPE = new Type<ClickItemEventHandler>();
|
||||
private Item item;
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new display selected release event.
|
||||
* Instantiates a new click item event.
|
||||
*
|
||||
* @param release the release
|
||||
* @param item the item
|
||||
*/
|
||||
public MoreInfoShowEvent(Item item) {
|
||||
public ClickItemEvent(Item item) {
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
|
@ -27,7 +29,7 @@ public class MoreInfoShowEvent extends GwtEvent<MoreInfoShowEventHandler> {
|
|||
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||
*/
|
||||
@Override
|
||||
public Type<MoreInfoShowEventHandler> getAssociatedType() {
|
||||
public Type<ClickItemEventHandler> getAssociatedType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
|
@ -35,11 +37,13 @@ public class MoreInfoShowEvent extends GwtEvent<MoreInfoShowEventHandler> {
|
|||
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||
*/
|
||||
@Override
|
||||
protected void dispatch(MoreInfoShowEventHandler handler) {
|
||||
handler.onMoreInfo(this);
|
||||
protected void dispatch(ClickItemEventHandler handler) {
|
||||
handler.onClick(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the item.
|
||||
*
|
||||
* @return the item
|
||||
*/
|
||||
public Item getItem() {
|
|
@ -0,0 +1,20 @@
|
|||
package org.gcube.portlets.widgets.wsexplorer.client.event;
|
||||
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
|
||||
|
||||
/**
|
||||
* The Interface ClickItemEventHandler.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jul 6, 2015
|
||||
*/
|
||||
public interface ClickItemEventHandler extends EventHandler {
|
||||
|
||||
/**
|
||||
* On click.
|
||||
*
|
||||
* @param moreInfoShowEvent the more info show event
|
||||
*/
|
||||
void onClick(ClickItemEvent moreInfoShowEvent);
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package org.gcube.portlets.widgets.wsexplorer.client.event;
|
||||
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
|
||||
/**
|
||||
* The Interface DisplaySelectedReleaseEventHandler.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Feb 19, 2015
|
||||
*/
|
||||
public interface MoreInfoShowEventHandler extends EventHandler {
|
||||
|
||||
/**
|
||||
* @param moreInfoShowEvent
|
||||
*/
|
||||
void onMoreInfo(MoreInfoShowEvent moreInfoShowEvent);
|
||||
}
|
|
@ -73,4 +73,25 @@ public interface WorkspaceExplorerService extends RemoteService {
|
|||
* @throws WorkspaceNavigatorServiceException
|
||||
*/
|
||||
Item getItemByCategory(ItemCategory category)throws WorkspaceNavigatorServiceException;
|
||||
|
||||
/**
|
||||
* @param itemId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
Long loadSizeByItemId(String itemId) throws Exception;
|
||||
|
||||
/**
|
||||
* @param itemId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
String getMimeType(String itemId) throws Exception;
|
||||
|
||||
/**
|
||||
* @param folderId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
String getUserACLForFolderId(String folderId) throws Exception;
|
||||
}
|
||||
|
|
|
@ -98,4 +98,23 @@ public interface WorkspaceExplorerServiceAsync {
|
|||
*/
|
||||
public void getItemByCategory(ItemCategory category, AsyncCallback<Item> asyncCallback);
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @param asyncCallback
|
||||
*/
|
||||
public void loadSizeByItemId(String id, AsyncCallback<Long> asyncCallback);
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @param asyncCallback
|
||||
*/
|
||||
public void getMimeType(String id, AsyncCallback<String> asyncCallback);
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @param asyncCallback
|
||||
*/
|
||||
public void getUserACLForFolderId(String id,
|
||||
AsyncCallback<String> asyncCallback);
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ import com.google.gwt.uibinder.client.UiBinder;
|
|||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.view.grid;
|
|||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.resources.CellTableResources;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.view.SelectionItem;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
|
@ -52,16 +53,14 @@ public abstract class AbstractItemsCellTable implements SelectionItem{
|
|||
*/
|
||||
public abstract void initTable(AbstractCellTable<Item> ItemTable, final SimplePager pager, final Pagination pagination);
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new abstract Item table.
|
||||
* @param showMoreInfo
|
||||
* @param showMoreInfo
|
||||
* Instantiates a new abstract items cell table.
|
||||
*
|
||||
* @param showGroupId
|
||||
* the show group id
|
||||
* @param fireMoreInfo the fire more info
|
||||
*/
|
||||
public AbstractItemsCellTable(boolean showMoreInfo) {
|
||||
this.showMoreInfo = showMoreInfo;
|
||||
public AbstractItemsCellTable(boolean fireOnClick) {
|
||||
this.showMoreInfo = fireOnClick;
|
||||
cellTable = new CellTable<Item>(1, CellTableResources.INSTANCE);
|
||||
cellTable.addStyleName("table-overflow");
|
||||
cellTable.setStriped(true);
|
||||
|
@ -81,6 +80,8 @@ public abstract class AbstractItemsCellTable implements SelectionItem{
|
|||
if(selectedObject!=null){
|
||||
GWT.log("Clicked: "+selectedObject);
|
||||
selectedItem(selectedObject);
|
||||
if(showMoreInfo)
|
||||
WorkspaceExplorerController.eventBus.fireEvent(new ClickItemEvent(selectedObject));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -9,24 +9,12 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.Util;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.MoreInfoShowEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Pagination;
|
||||
import com.github.gwtbootstrap.client.ui.Popover;
|
||||
import com.github.gwtbootstrap.client.ui.Tooltip;
|
||||
import com.github.gwtbootstrap.client.ui.constants.Placement;
|
||||
import com.github.gwtbootstrap.client.ui.constants.Trigger;
|
||||
import com.google.gwt.cell.client.ButtonCell;
|
||||
import com.google.gwt.cell.client.Cell.Context;
|
||||
import com.google.gwt.cell.client.FieldUpdater;
|
||||
import com.google.gwt.cell.client.ImageCell;
|
||||
import com.google.gwt.cell.client.ImageResourceCell;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.dom.client.NativeEvent;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
|
@ -37,10 +25,8 @@ 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.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Image;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
/**
|
||||
* The Class PackagesTable.
|
||||
*
|
||||
|
@ -161,121 +147,6 @@ public class ItemsTable extends AbstractItemsCellTable {
|
|||
}
|
||||
});
|
||||
packageTable.addColumnSortHandler(ownerColumnHandler);
|
||||
|
||||
if(showMoreInfo){
|
||||
/*
|
||||
// ButtonCell.
|
||||
final ButtonCell buttonCell = new ButtonCell();
|
||||
|
||||
final Column<Item, String> column = new Column<Item, String>(buttonCell) {
|
||||
@Override
|
||||
public String getValue(Item dataObj) {
|
||||
return "Info";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Context context, Item object, SafeHtmlBuilder sb) {
|
||||
super.render(context, object, sb);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
column.setFieldUpdater(new FieldUpdater<Item, String>() {
|
||||
|
||||
@Override
|
||||
public void update(int index, Item object, String value) {
|
||||
GWT.log("mouseover mouseover mouseover");
|
||||
Popover pop = new Popover();
|
||||
pop.setHeading("Info");
|
||||
pop.setText("MouseOver on");
|
||||
pop.setPlacement(Placement.RIGHT);
|
||||
pop.setHtml(true);
|
||||
pop.setTrigger(Trigger.HOVER);
|
||||
// pop.setWidget(buttonCell);
|
||||
setupPopover(packageTable.asWidget(), "MouseOver", "title");
|
||||
}
|
||||
});
|
||||
|
||||
column.setSortable(false);
|
||||
packageTable.addColumn(column, "");
|
||||
packageTable.setColumnWidth(column, 10.0, Unit.PCT);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
final Column<Item, String> buttonImageCellTest = new Column<Item, String>(new ButtonImageCell()) {
|
||||
|
||||
private HorizontalPanel widget;
|
||||
|
||||
@Override
|
||||
public String getValue(Item row) {
|
||||
//url to image
|
||||
return WorkspaceExplorerResources.ICONS.info().getSafeUri().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Context context, Item object, SafeHtmlBuilder sb) {
|
||||
// TODO Auto-generated method stub
|
||||
super.render(context, object, sb);
|
||||
widget = new HorizontalPanel();
|
||||
sb.appendEscaped(widget.getElement().getInnerHTML());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFieldUpdater(
|
||||
FieldUpdater<Item, String> fieldUpdater) {
|
||||
// TODO Auto-generated method stub
|
||||
super.setFieldUpdater(fieldUpdater);
|
||||
setupPopover(widget, "", "").show();
|
||||
}
|
||||
};
|
||||
|
||||
packageTable.addColumn(buttonImageCellTest, "");
|
||||
packageTable.setColumnWidth(buttonImageCellTest, 10.0, Unit.PCT);
|
||||
|
||||
*/
|
||||
|
||||
//ICONS
|
||||
ImageResourceCell moreInfoResourceCell = new ImageResourceCell() {
|
||||
public Set<String> getConsumedEvents() {
|
||||
HashSet<String> events = new HashSet<String>();
|
||||
events.add("click");
|
||||
return events;
|
||||
}
|
||||
};
|
||||
|
||||
moreInfo = new Column<Item, ImageResource>(moreInfoResourceCell) {
|
||||
|
||||
@Override
|
||||
public ImageResource getValue(Item dataObj) {
|
||||
return WorkspaceExplorerResources.ICONS.info();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBrowserEvent(Context context, Element elem, Item object, NativeEvent event) {
|
||||
super.onBrowserEvent(context, elem, object, event);
|
||||
if ("click".equals(event.getType())) {
|
||||
WorkspaceExplorerController.eventBus.fireEvent(new MoreInfoShowEvent(object));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
moreInfo.setFieldUpdater(new FieldUpdater<Item, ImageResource>() {
|
||||
|
||||
@Override
|
||||
public void update(int index, Item object, ImageResource value) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
});
|
||||
// icon.setCellStyleNames("img-centered-clickable");
|
||||
moreInfo.setSortable(false);
|
||||
packageTable.addColumn(moreInfo, "");
|
||||
packageTable.setColumnWidth(moreInfo, 10.0, Unit.PCT);
|
||||
|
||||
}
|
||||
|
||||
/*final SingleSelectionModel<Item> selectionModel = new SingleSelectionModel<Item>();
|
||||
selectionModel.addSelectionChangeHandler(new Handler() {
|
||||
|
@ -285,16 +156,6 @@ public class ItemsTable extends AbstractItemsCellTable {
|
|||
});*/
|
||||
}
|
||||
|
||||
private Tooltip setupPopover(Widget w, String message, String heading) {
|
||||
Tooltip popover = new Tooltip();
|
||||
popover.setWidget(w);
|
||||
popover.setText(message);
|
||||
// popover.setHeading(heading);
|
||||
popover.setPlacement(Placement.RIGHT);
|
||||
popover.reconfigure();
|
||||
return popover;
|
||||
}
|
||||
|
||||
public class ButtonImageCell extends ButtonCell{
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,4 +17,10 @@
|
|||
|
||||
.moreinfo{
|
||||
margin-top: 60%;
|
||||
}
|
||||
|
||||
.alert-custom {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 0 !important;
|
||||
padding: 2px !important;
|
||||
}
|
|
@ -75,7 +75,7 @@ public class UserUtil {
|
|||
return true;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
logger.trace("Development Mode ON");
|
||||
logger.trace("Is within portal: no! Development Mode ON");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,13 +9,16 @@ import javax.servlet.http.HttpSession;
|
|||
|
||||
import org.gcube.application.framework.core.session.ASLSession;
|
||||
import org.gcube.application.framework.core.session.SessionManager;
|
||||
import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
|
||||
import org.gcube.common.homelibrary.home.HomeLibrary;
|
||||
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||
|
@ -172,6 +175,9 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService#getItemByCategory(org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory)
|
||||
*/
|
||||
@Override
|
||||
public Item getItemByCategory(ItemCategory category) throws WorkspaceNavigatorServiceException{
|
||||
_log.trace("GetItemByCategory category: "+category);
|
||||
|
@ -338,4 +344,111 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
return listParents;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService#loadSizeByItemId(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Long loadSizeByItemId(String itemId) throws Exception {
|
||||
|
||||
_log.info("get Size By ItemId "+ itemId);
|
||||
try {
|
||||
|
||||
Workspace workspace = getWorkspace();
|
||||
WorkspaceItem wsItem = workspace.getItem(itemId);
|
||||
Long size = new Long(-1);
|
||||
|
||||
if(wsItem instanceof FolderItem){ //ITEM
|
||||
FolderItem folderItem = (FolderItem) wsItem;
|
||||
size = new Long(folderItem.getLength());
|
||||
} else if (wsItem instanceof WorkspaceFolder ){ //FOLDER
|
||||
WorkspaceFolder theFolder = (WorkspaceFolder) wsItem;
|
||||
size = theFolder.getSize();
|
||||
} else if (wsItem instanceof WorkspaceSharedFolder){ //SHARED FOLDER
|
||||
WorkspaceSharedFolder theFolder = (WorkspaceSharedFolder) wsItem;
|
||||
size = theFolder.getSize();
|
||||
}
|
||||
_log.info("returning size: " +size);
|
||||
return size;
|
||||
|
||||
} catch (Exception e) {
|
||||
_log.error("get Size By ItemId ", e);
|
||||
throw new Exception(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService#getMimeType(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public String getMimeType(String itemId) throws Exception {
|
||||
|
||||
_log.info("get MimeType By ItemId "+ itemId);
|
||||
try {
|
||||
|
||||
Workspace workspace = getWorkspace();
|
||||
WorkspaceItem wsItem = workspace.getItem(itemId);
|
||||
|
||||
if(!wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM))
|
||||
return null;
|
||||
|
||||
FolderItem folderItem = (FolderItem) wsItem;
|
||||
|
||||
return folderItem.getMimeType();
|
||||
|
||||
} catch (Exception e) {
|
||||
_log.error("get MimeType By ItemId ", e);
|
||||
throw new Exception(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the user acl for folder id.
|
||||
*
|
||||
* @param folderId the folder id
|
||||
* @return the user acl for folder id
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
@Override
|
||||
public String getUserACLForFolderId(String folderId) throws Exception{
|
||||
try {
|
||||
_log.info("Get user ACL to FOLDER id: "+folderId);
|
||||
Workspace workspace = getWorkspace();
|
||||
WorkspaceItem wsItem = workspace.getItem(folderId);
|
||||
|
||||
if(!isASharedFolder(wsItem, false))
|
||||
return "OWNER";
|
||||
else //IS A SHARED FOLDER
|
||||
return wsItem.getACLUser().toString();
|
||||
} catch (Exception e) {
|
||||
_log.error("Error in server get UserACLForFolderId", e);
|
||||
String error = "An error occurred when getting ACL rules for selected folder. "+e.getMessage();
|
||||
throw new Exception(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if is a shared folder.
|
||||
*
|
||||
* @param item the item
|
||||
* @param asRoot the as root
|
||||
* @return true, if is a shared folder
|
||||
*/
|
||||
private boolean isASharedFolder(WorkspaceItem item, boolean asRoot){
|
||||
try {
|
||||
|
||||
if(item!=null && item.isFolder() && item.isShared()){ //IS A SHARED SUB-FOLDER
|
||||
if(asRoot)
|
||||
return item.getType().equals(WorkspaceItemType.SHARED_FOLDER); //IS ROOT?
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
_log.error("Error in server isASharedFolder", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue