diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/loading.gif b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/loading.gif index ad155c0..02c8bfb 100644 Binary files a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/loading.gif and b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/loading.gif differ 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 9231e2b..b11ab37 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 @@ -9,12 +9,21 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item; import com.github.gwtbootstrap.client.ui.CellTable; import com.github.gwtbootstrap.client.ui.Pagination; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.core.shared.GWT; +import com.google.gwt.dom.client.Style.BorderStyle; +import com.google.gwt.event.dom.client.ContextMenuEvent; +import com.google.gwt.event.dom.client.ContextMenuHandler; import com.google.gwt.event.dom.client.DoubleClickEvent; import com.google.gwt.event.dom.client.DoubleClickHandler; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.user.cellview.client.AbstractCellTable; import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; import com.google.gwt.user.cellview.client.SimplePager; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.ui.DialogBox; +import com.google.gwt.user.client.ui.MenuBar; +import com.google.gwt.user.client.ui.MenuItem; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; @@ -104,7 +113,50 @@ public abstract class AbstractItemsCellTable implements SelectionItem{ } }); */ + + addContextMenu(); + } + + private void addContextMenu(){ + + MenuBar options = new MenuBar(true); + + ScheduledCommand command = new ScheduledCommand() { + + @Override + public void execute() { + WorkspaceExplorerController.eventBus.fireEvent(new org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent(getSelectedItem())); + + } + }; + + MenuItem openItem = new MenuItem("Open", command); + options.addItem(openItem); + final DialogBox menuWrapper = new DialogBox(true); + menuWrapper.getElement().getStyle().setBorderStyle(BorderStyle.NONE); + menuWrapper.getElement().getStyle().setZIndex(100000); + menuWrapper.add(options); + + cellTable.sinkEvents(Event.ONCONTEXTMENU); + cellTable.addHandler( + new ContextMenuHandler() { + @Override + public void onContextMenu(ContextMenuEvent event) { + + if(getSelectedItem().isFolder()){ + event.preventDefault(); + event.stopPropagation(); + menuWrapper.setPopupPosition(event.getNativeEvent().getClientX(),event.getNativeEvent().getClientY()); + + menuWrapper.show(); + } + } + }, ContextMenuEvent.getType() + ); + } + + /** * Adds the Items.