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:
parent
48b24a8116
commit
94df00cc01
|
@ -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";
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}-*/;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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 |
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue