integrated CLARIN Switchboard

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@171440 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Massimiliano Assante 2018-09-13 15:56:23 +00:00
parent 48b24a8116
commit 94df00cc01
10 changed files with 131 additions and 47 deletions

View File

@ -15,6 +15,8 @@ import com.google.gwt.i18n.client.NumberFormat;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*/ */
public class ConstantsExplorer { public class ConstantsExplorer {
public static final String CLARIN_SWITCHBOARD_ENDPOINT = "https://weblicht.sfs.uni-tuebingen.de/clrs/#/d4science/";
public static final String PARTHENOS_GATEWAY_HOST_NAME = "parthenos.d4science.org";
// public static final String FILE_SERVICE = GWT.getModuleBaseURL() + "fileservice"; // public static final String FILE_SERVICE = GWT.getModuleBaseURL() + "fileservice";
public static final String RPC_WORKSPACE_SERVICE = GWT.getModuleBaseURL() + "rpcWorkspace"; public static final String RPC_WORKSPACE_SERVICE = GWT.getModuleBaseURL() + "rpcWorkspace";
@ -44,7 +46,8 @@ public class ConstantsExplorer {
public static final String MESSAGE_ADD_FOLDER = "New Folder"; public static final String MESSAGE_ADD_FOLDER = "New Folder";
public static final String MESSAGE_ADD_SHARED_FOLDER = "New Shared Folder"; public static final String MESSAGE_ADD_SHARED_FOLDER = "New Shared Folder";
public static final String MESSAGE_DATA_CATALOGUE_PUBLISH = "Publish on Catalogue"; public static final String MESSAGE_DATA_CATALOGUE_PUBLISH = "Publish on Catalogue";
public static final String MESSAGE_THREDDS_PUBLISH = "Sync with Thredds"; public static final String MESSAGE_THREDDS_PUBLISH = "Sync with THREDDS";
public static final String MESSAGE_CLARIN_SWITCHBOARD = "Send to Switchboard";
public static final String MESSAGE_ADD = "Add"; public static final String MESSAGE_ADD = "Add";
public static final String MESSAGE_ADD_FOLDER_IN = "Create a new folder in: "; public static final String MESSAGE_ADD_FOLDER_IN = "Create a new folder in: ";
public static final String MESSAGE_ITEM_NAME = "Item Name"; public static final String MESSAGE_ITEM_NAME = "Item Name";

View File

@ -0,0 +1,23 @@
package org.gcube.portlets.user.workspace.client;
import com.google.gwt.core.client.JavaScriptObject;
public class MyWindow extends JavaScriptObject {
// All types that extend JavaScriptObject must have a protected,
// no-args constructor.
protected MyWindow() {}
public final static native MyWindow open(String url, String target, String options) /*-{
return $wnd.open(url, target, options);
}-*/;
public final native void close() /*-{
this.close();
}-*/;
public final native void setUrl(String url) /*-{
if (this.location) {
this.location = url;
}
}-*/;
}

View File

@ -36,7 +36,8 @@ public enum WorkspaceOperation {
FOLDER_LINK("FRL", "FRL"), // FOLDER LINK FOLDER_LINK("FRL", "FRL"), // FOLDER LINK
FOLDER_LINK_REMOVE("FPR", "FPR"), FOLDER_LINK_REMOVE("FPR", "FPR"),
VERSIONING("VRN", "VRN"), // VERSIONING VERSIONING("VRN", "VRN"), // VERSIONING
EXECUTE_DM_TASK("EDT", "EDT"); //EXECUTE DM TASK EXECUTE_DM_TASK("EDT", "EDT"), //EXECUTE DM TASK
SEND_TO_SWITCHBOARD("SDSB", "SDSB"); //SEND_TO_SWITCHBOARD
private String id; // ID CONTEXT MENU private String id; // ID CONTEXT MENU
private String name; private String name;

View File

@ -4,6 +4,8 @@ import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource; import com.google.gwt.resources.client.ImageResource;
public interface Icons extends ClientBundle { public interface Icons extends ClientBundle {
@Source("icons/CLARIN_SB.png")
ImageResource switchboard();
@Source("icons/table.png") @Source("icons/table.png")
ImageResource table(); ImageResource table();
@ -437,7 +439,7 @@ public interface Icons extends ClientBundle {
/** /**
* @return * @return
*/ */
@Source("icons/thredds.gif") @Source("icons/THREDDS.png")
ImageResource thredds(); ImageResource thredds();
/** /**

View File

@ -91,6 +91,16 @@ public class Resources {
return AbstractImagePrototype.create(ICONS.datacataloguepublish()); return AbstractImagePrototype.create(ICONS.datacataloguepublish());
} }
/**
* Gets the data catalogue publish.
*
* @return the data catalogue publish
*/
public static AbstractImagePrototype getIconSendToSwitchboard(){
return AbstractImagePrototype.create(ICONS.switchboard());
}
/** /**
* Gets the icon postscript. * Gets the icon postscript.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 749 B

View File

@ -6,6 +6,7 @@ import java.util.List;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer; import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer; import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer.WS_UPLOAD_TYPE; import org.gcube.portlets.user.workspace.client.ConstantsExplorer.WS_UPLOAD_TYPE;
import org.gcube.portlets.user.workspace.client.MyWindow;
import org.gcube.portlets.user.workspace.client.constant.WorkspaceOperation; import org.gcube.portlets.user.workspace.client.constant.WorkspaceOperation;
import org.gcube.portlets.user.workspace.client.event.AccountingHistoryEvent; import org.gcube.portlets.user.workspace.client.event.AccountingHistoryEvent;
import org.gcube.portlets.user.workspace.client.event.AccountingReadersEvent; import org.gcube.portlets.user.workspace.client.event.AccountingReadersEvent;
@ -30,6 +31,7 @@ import org.gcube.portlets.user.workspace.client.event.PasteItemEvent;
import org.gcube.portlets.user.workspace.client.event.PublishOnDataCatalogueEvent; import org.gcube.portlets.user.workspace.client.event.PublishOnDataCatalogueEvent;
import org.gcube.portlets.user.workspace.client.event.RefreshFolderEvent; import org.gcube.portlets.user.workspace.client.event.RefreshFolderEvent;
import org.gcube.portlets.user.workspace.client.event.RenameItemEvent; import org.gcube.portlets.user.workspace.client.event.RenameItemEvent;
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.workspace.client.event.SyncWithThreddsCatalogueEvent; import org.gcube.portlets.user.workspace.client.event.SyncWithThreddsCatalogueEvent;
import org.gcube.portlets.user.workspace.client.event.UnShareFolderEvent; import org.gcube.portlets.user.workspace.client.event.UnShareFolderEvent;
import org.gcube.portlets.user.workspace.client.event.VRESettingPermissionEvent; import org.gcube.portlets.user.workspace.client.event.VRESettingPermissionEvent;
@ -38,7 +40,11 @@ import org.gcube.portlets.user.workspace.client.event.WebDavUrlEvent;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.resources.Resources; import org.gcube.portlets.user.workspace.client.resources.Resources;
import org.gcube.portlets.user.workspace.client.util.FileModelUtils; import org.gcube.portlets.user.workspace.client.util.FileModelUtils;
import org.gcube.portlets.user.workspace.client.util.RequestBuilderWorkspaceValidateItem;
import org.gcube.portlets.user.workspace.client.view.tree.CutCopyAndPaste.OperationType; import org.gcube.portlets.user.workspace.client.view.tree.CutCopyAndPaste.OperationType;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
import org.gcube.portlets.user.workspace.shared.PublicLink;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.portlets.user.workspace.shared.WorkspaceVersioningOperation; import org.gcube.portlets.user.workspace.shared.WorkspaceVersioningOperation;
import com.extjs.gxt.ui.client.event.MenuEvent; import com.extjs.gxt.ui.client.event.MenuEvent;
@ -49,6 +55,8 @@ import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem; import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
/** /**
@ -65,7 +73,8 @@ public class ContextMenuTree {
private MenuItem mnRead = new MenuItem(); private MenuItem mnRead = new MenuItem();
private boolean hideSharing = false; private boolean hideSharing = false;
//tells if you're on PARTHENOS Gateway or not
private boolean showCLARINSwitchBoardOption = false;
/** /**
* Instantiates a new context menu tree. * Instantiates a new context menu tree.
*/ */
@ -73,7 +82,6 @@ public class ContextMenuTree {
this.contextMenu.setWidth(200); this.contextMenu.setWidth(200);
this.listSelectedItems = new ArrayList<FileModel>(); this.listSelectedItems = new ArrayList<FileModel>();
createContextMenu(); createContextMenu();
} }
@ -81,6 +89,12 @@ public class ContextMenuTree {
* Creates the context menu. * Creates the context menu.
*/ */
private void createContextMenu() { private void createContextMenu() {
//PARTHENOS GATEWAY CASE Show CLARIN SwitchBoard
if (ConstantsExplorer.PARTHENOS_GATEWAY_HOST_NAME.compareToIgnoreCase(Window.Location.getHostName()) == 0) {
showCLARINSwitchBoardOption = true;
}
//SPECIFIC OPERATION //SPECIFIC OPERATION
//Preview Image //Preview Image
@ -313,6 +327,36 @@ public class ContextMenuTree {
}); });
contextMenu.add(createShareFolder); contextMenu.add(createShareFolder);
//Add Url
MenuItem addUrl = new MenuItem();
addUrl.setId(WorkspaceOperation.ADD_URL.getId());
addUrl.setText(ConstantsExplorer.MESSAGE_ADD_URL);
addUrl.setIcon(Resources.getIconAddUrl());
addUrl.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) {
FileModel selected = listSelectedItems.get(0);
FileModel parent = selected.getParentFileModel();
if(parent==null){
if(selected.isDirectory()){
parent = selected;
}
}
//FileModel parent = getDirectoryOrParent(selected);
if(parent!=null){
eventBus.fireEvent(new CreateUrlEvent(null, parent));
}
}
});
contextMenu.add(addUrl);
contextMenu.add(new SeparatorMenuItem());
// publish on data catalogue // publish on data catalogue
MenuItem publishOnDataCatalogue = new MenuItem(); MenuItem publishOnDataCatalogue = new MenuItem();
publishOnDataCatalogue.setId(WorkspaceOperation.PUBLISH_ON_DATA_CATALOGUE.getId()); publishOnDataCatalogue.setId(WorkspaceOperation.PUBLISH_ON_DATA_CATALOGUE.getId());
@ -349,7 +393,7 @@ public class ContextMenuTree {
publishOnThredds.setVisible(false); publishOnThredds.setVisible(false);
contextMenu.add(publishOnThredds); contextMenu.add(publishOnThredds);
// publish on data catalogue // executre DM task
MenuItem executeDMTask = new MenuItem(); MenuItem executeDMTask = new MenuItem();
executeDMTask.setId(WorkspaceOperation.EXECUTE_DM_TASK.getId()); executeDMTask.setId(WorkspaceOperation.EXECUTE_DM_TASK.getId());
executeDMTask.setText(ConstantsExplorer.MESSAGE_EXECUTE_DM_TASK); executeDMTask.setText(ConstantsExplorer.MESSAGE_EXECUTE_DM_TASK);
@ -367,6 +411,41 @@ public class ContextMenuTree {
executeDMTask.setVisible(false); executeDMTask.setVisible(false);
contextMenu.add(executeDMTask); contextMenu.add(executeDMTask);
//send to Switchboard
MenuItem sendToSwitchboard = new MenuItem();
sendToSwitchboard.setId(WorkspaceOperation.SEND_TO_SWITCHBOARD.getId());
sendToSwitchboard.setText(ConstantsExplorer.MESSAGE_CLARIN_SWITCHBOARD);
sendToSwitchboard.setIcon(Resources.getIconSendToSwitchboard());
sendToSwitchboard.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) {
FileModel sourceFileModel = listSelectedItems.get(0);
if (sourceFileModel != null) {
final MyWindow window = MyWindow.open(null, "_blank", null);
AppControllerExplorer.rpcWorkspaceService.getPublicLinkForFolderItemId(sourceFileModel.getIdentifier(), true, new AsyncCallback<PublicLink>() {
@Override
public void onSuccess(PublicLink publicLink) {
String encodedURI = com.google.gwt.http.client.URL.encodeQueryString(publicLink.getCompleteURL());
//Window.open(ConstantsExplorer.CLARIN_SWITCHBOARD_ENDPOINT+encodedURI,"_blank","");
window.setUrl(ConstantsExplorer.CLARIN_SWITCHBOARD_ENDPOINT+encodedURI);
}
@Override
public void onFailure(Throwable caught) {
if(caught instanceof SessionExpiredException){
GWT.log("Session expired");
AppControllerExplorer.getEventBus().fireEvent(new SessionExpiredEvent());
return;
}
new MessageBoxAlert("Error", caught.getMessage(), null);
window.close();
}
});
}
}
});
sendToSwitchboard.setVisible(false);
contextMenu.add(sendToSwitchboard);
MenuItem editPermissions = new MenuItem(); MenuItem editPermissions = new MenuItem();
editPermissions.setId(WorkspaceOperation.EDIT_PERMISSIONS.getId()); editPermissions.setId(WorkspaceOperation.EDIT_PERMISSIONS.getId());
@ -386,33 +465,6 @@ public class ContextMenuTree {
contextMenu.add(editPermissions); contextMenu.add(editPermissions);
//Add Url
MenuItem addUrl = new MenuItem();
addUrl.setId(WorkspaceOperation.ADD_URL.getId());
addUrl.setText(ConstantsExplorer.MESSAGE_ADD_URL);
addUrl.setIcon(Resources.getIconAddUrl());
addUrl.addSelectionListener(new SelectionListener<MenuEvent>() {
public void componentSelected(MenuEvent ce) {
FileModel selected = listSelectedItems.get(0);
FileModel parent = selected.getParentFileModel();
if(parent==null){
if(selected.isDirectory()){
parent = selected;
}
}
//FileModel parent = getDirectoryOrParent(selected);
if(parent!=null){
eventBus.fireEvent(new CreateUrlEvent(null, parent));
}
}
});
contextMenu.add(addUrl);
contextMenu.add(new SeparatorMenuItem()); contextMenu.add(new SeparatorMenuItem());
MenuItem copy = new MenuItem(); MenuItem copy = new MenuItem();
@ -765,18 +817,6 @@ public class ContextMenuTree {
contextMenu.showAt(posX, posY); contextMenu.showAt(posX, posY);
} }
/**
* Prints the selected.
*/
private void printSelected(){
for (FileModel sel: listSelectedItems) {
GWT.log("selected " +sel.getName() );
}
}
/** /**
* switch visible operation on context menu according to selected item. * switch visible operation on context menu according to selected item.
* *
@ -892,6 +932,11 @@ public class ContextMenuTree {
contextMenu.getItemByItemId(WorkspaceOperation.SHOW.getId()).setVisible(true); contextMenu.getItemByItemId(WorkspaceOperation.SHOW.getId()).setVisible(true);
contextMenu.getItemByItemId(WorkspaceOperation.EXECUTE_DM_TASK.getId()).setVisible(true); contextMenu.getItemByItemId(WorkspaceOperation.EXECUTE_DM_TASK.getId()).setVisible(true);
/*
* we show the send to CLARIN SwitchBoard if and only if the file is a txt file and showCLARINSwitchBoardOption is true
*/
contextMenu.getItemByItemId(WorkspaceOperation.SEND_TO_SWITCHBOARD.getId()).setVisible(selectedItem.getName().endsWith(".txt") && showCLARINSwitchBoardOption);
switch(selectedItem.getGXTFolderItemType()){ switch(selectedItem.getGXTFolderItemType()){
case EXTERNAL_IMAGE: case EXTERNAL_IMAGE: