Updated pom version at 6.14.0

Added "Get Folder Link" facility

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace@131336 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-09-14 10:20:44 +00:00
parent d100558011
commit 6e50d631b2
9 changed files with 389 additions and 159 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/workspace-6.13.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<classpathentry kind="src" output="target/workspace-6.13.1-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
@ -26,5 +26,5 @@
</attributes>
</classpathentry>
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
<classpathentry kind="output" path="target/workspace-6.13.0-SNAPSHOT/WEB-INF/classes"/>
<classpathentry kind="output" path="target/workspace-6.13.1-SNAPSHOT/WEB-INF/classes"/>
</classpath>

View File

@ -5,6 +5,9 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<dependent-module archiveName="workspace-tree-widget-6.14.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/workspace-tree-widget-TRUNK/workspace-tree-widget-TRUNK">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
<property name="context-root" value="workspace"/>

22
pom.xml
View File

@ -11,7 +11,7 @@
<groupId>org.gcube.portlets.user</groupId>
<artifactId>workspace</artifactId>
<packaging>war</packaging>
<version>6.13.0-SNAPSHOT</version>
<version>6.14.0-SNAPSHOT</version>
<name>gCube Workspace Portlet</name>
<description>
gCube Workspace Portlet is a web-gui to manage the gCube workspace a collaborative area where users can exchange and organize information objects (workspace items) according to their specific needs.
@ -143,16 +143,29 @@
<scope>compile</scope>
</dependency>
<!-- HOME LIBRARY -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-model</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-jcr</artifactId>
<version>[2.5.0-SNAPSHOT,3.5.0-SNAPSHOT)</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>asm-debug-all</artifactId>
<groupId>org.ow2.asm</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library</artifactId>
<version>[2.5.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
<scope>provided</scope>
<exclusions>
<exclusion>
@ -161,11 +174,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-jcr</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>

View File

@ -34,6 +34,7 @@ import org.gcube.portlets.user.workspace.client.event.FileDownloadEventHandler;
import org.gcube.portlets.user.workspace.client.event.FileUploadEvent;
import org.gcube.portlets.user.workspace.client.event.FileUploadEventHandler;
import org.gcube.portlets.user.workspace.client.event.FilterScopeEvent;
import org.gcube.portlets.user.workspace.client.event.GetFolderLinkEvent;
import org.gcube.portlets.user.workspace.client.event.GetInfoEvent;
import org.gcube.portlets.user.workspace.client.event.GetInfoEventHandler;
import org.gcube.portlets.user.workspace.client.event.GetPublicLinkEvent;
@ -86,6 +87,8 @@ import org.gcube.portlets.user.workspace.client.event.VREChangePermissionsEventH
import org.gcube.portlets.user.workspace.client.event.VRESettingPermissionEvent;
import org.gcube.portlets.user.workspace.client.event.WebDavUrlEvent;
import org.gcube.portlets.user.workspace.client.event.WebDavUrlEventHandler;
import org.gcube.portlets.user.workspace.client.event.WsGetFolderLinkEvent;
import org.gcube.portlets.user.workspace.client.event.WsGetFolderLinkEventHandler;
import org.gcube.portlets.user.workspace.client.interfaces.EventsTypeEnum;
import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum;
import org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface;
@ -134,11 +137,12 @@ import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
/**
* The Class AppController.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Dec 14, 2015
* Sep 13, 2016
*/
public class AppController implements SubscriberInterface {
private final static HandlerManager eventBus = new HandlerManager(null);
@ -211,6 +215,16 @@ public class AppController implements SubscriberInterface {
}
});
eventBus.addHandler(WsGetFolderLinkEvent.TYPE, new WsGetFolderLinkEventHandler() {
@Override
public void onGetFolderLink(WsGetFolderLinkEvent getFolderLinkEvent) {
AppControllerExplorer.getEventBus().fireEvent(new GetFolderLinkEvent(getFolderLinkEvent.getSourceFile()));
}
});
eventBus.addHandler(UpdateWorkspaceSizeEvent.TYPE, new UpdateWorkspaceSizeEventHandler() {
@Override

View File

@ -0,0 +1,54 @@
package org.gcube.portlets.user.workspace.client.event;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import com.google.gwt.event.shared.GwtEvent;
/**
* The Class WsGetFolderLinkEvent.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Sep 13, 2016
*/
public class WsGetFolderLinkEvent extends GwtEvent<WsGetFolderLinkEventHandler> {
public static Type<WsGetFolderLinkEventHandler> TYPE = new Type<WsGetFolderLinkEventHandler>();
private FileModel targetFile = null;
/**
* Instantiates a new gets the folder link event.
*
* @param target the target
*/
public WsGetFolderLinkEvent(FileModel target) {
this.targetFile = target;
}
/* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/
@Override
public Type<WsGetFolderLinkEventHandler> getAssociatedType() {
return TYPE;
}
/* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
*/
@Override
protected void dispatch(WsGetFolderLinkEventHandler handler) {
handler.onGetFolderLink(this);
}
/**
* Gets the source file.
*
* @return the source file
*/
public FileModel getSourceFile() {
return targetFile;
}
}

View File

@ -0,0 +1,20 @@
package org.gcube.portlets.user.workspace.client.event;
import com.google.gwt.event.shared.EventHandler;
/**
* The Interface GetFolderLinkEventHandler.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Sep 13, 2016
*/
public interface WsGetFolderLinkEventHandler extends EventHandler {
/**
* On get folder link.
*
* @param getFolderLinkEvent the get folder link event
*/
void onGetFolderLink(WsGetFolderLinkEvent getFolderLinkEvent);
}

View File

@ -69,6 +69,10 @@ public class WorkspaceFeaturesView extends Composite {
private Popover overPlk = new Popover();
@UiField
Label flk; //PUBLIC LINK
private Popover overFolderlk = new Popover();
@UiField
FlowPanel fp1;
@ -129,8 +133,10 @@ public class WorkspaceFeaturesView extends Composite {
ck_features_show_again.addStyleName("margin-right-10");
shf.addStyleName("margin-right-10");
upl.addStyleName("margin-right-10");
flk.addStyleName("margin-right-10");
plk.addStyleName("margin-right-10");
initPopupShareFeature();
initPopupFlkFeature();
initPopupUploadFeature();
initPopupPlkFeature();
@ -159,6 +165,23 @@ public class WorkspaceFeaturesView extends Composite {
});
}
/**
*
*/
private void initPopupFlkFeature() {
overFolderlk.setAnimation(false);
overFolderlk.setWidget(flk);
overFolderlk.setHeading("Workspace Folder Link");
String icon = "<span style=\"margin-right:5px\">"+Resources.getIconFolderLink().getSafeHtml().asString()+"</span>";
overFolderlk.setText(icon+"The owner or administrator can use the Folder Link in order to allow 'guest' users to view contents of a folder (and its sub-folders)" +
"The 'guest' user can only access in read-only mode and download files of the folder (and its subfolders). You can send the Folder Link to anyone by pasting it into Workspace Message, your emails, instant messages, etc.");
overFolderlk.setHtml(true);
overFolderlk.setPlacement(Placement.BOTTOM);
overFolderlk.setTrigger(Trigger.HOVER);
overFolderlk.reconfigure();
}
/**
* Inits the popup share feature.
*/

View File

@ -29,6 +29,7 @@
verticalAlignment="middle">
<b:Label ui:field="shf" text="Share"></b:Label>
<b:Label ui:field="flk" text="Folder Link"></b:Label>
<b:Label ui:field="plk" text="Public Link"></b:Label>
<b:Label ui:field="upl" text="Upload"></b:Label>
<!-- <b:Label ui:field="upa" text="Upload Archive"></b:Label> -->

View File

@ -13,6 +13,7 @@ import org.gcube.portlets.user.workspace.client.event.DoubleClickElementSelected
import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent;
import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent.DownloadType;
import org.gcube.portlets.user.workspace.client.event.FileUploadEvent;
import org.gcube.portlets.user.workspace.client.event.WsGetFolderLinkEvent;
import org.gcube.portlets.user.workspace.client.event.GetPublicLinkEvent;
import org.gcube.portlets.user.workspace.client.event.GetShareLinkEvent;
import org.gcube.portlets.user.workspace.client.event.GridRefreshEvent;
@ -39,10 +40,12 @@ import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ToggleButton;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.shared.GWT;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* The Class GxtToolBarItemFunctionality.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*/
public class GxtToolBarItemFunctionality {
@ -66,21 +69,33 @@ public class GxtToolBarItemFunctionality {
// private Button btnGetInfo;
private Button btnGetSharedLink;
private Button btnPublicLink;
private Button btnFolderLink;
private Button btnCopyItem;
private Button btnPasteItem;
private Button btnCutItem;
private Button btnSetPermission;
/**
* Instantiates a new gxt tool bar item functionality.
*/
public GxtToolBarItemFunctionality() {
initToolBar();
addSelectionListenersOnToolBar();
}
/**
* Instantiates a new gxt tool bar item functionality.
*
* @param gridFilterGroupContainer the grid filter group container
*/
public GxtToolBarItemFunctionality(GxtGridFilterGroupPanel gridFilterGroupContainer) {
this();
this.gridGroupViewContainer = gridFilterGroupContainer;
}
/**
* Inits the tool bar.
*/
private void initToolBar() {
btnGridView = new ToggleButton(ConstantsPortlet.CATEGORIZE, Resources.getIconGridView());
@ -201,6 +216,15 @@ public class GxtToolBarItemFunctionality {
toolBar.add(btnPublicLink);
toolBar.add(new SeparatorToolItem());
btnFolderLink = new Button("Folder Link", Resources.getIconFolderLink());
btnFolderLink.setScale(ButtonScale.SMALL);
btnFolderLink.setIconAlign(IconAlign.TOP);
btnFolderLink.setArrowAlign(ButtonArrowAlign.BOTTOM);
toolBar.add(btnFolderLink);
toolBar.add(new SeparatorToolItem());
btnAccessFromDesktop = new Button(ConstantsPortlet.TITLEACCESSWEBDAV, Resources.getIconWebDav());
btnAccessFromDesktop.setScale(ButtonScale.SMALL);
btnAccessFromDesktop.setIconAlign(IconAlign.TOP);
@ -212,8 +236,7 @@ public class GxtToolBarItemFunctionality {
// toolBar.add(new SeparatorToolItem());
// toolBar.add(new SeparatorToolItem());
btnUploadArchive = new Button(ConstantsPortlet.UPLOADARCHIVE,
Resources.getIconArchiveUpload());
btnUploadArchive = new Button(ConstantsPortlet.UPLOADARCHIVE, Resources.getIconArchiveUpload());
btnUploadArchive.setScale(ButtonScale.SMALL);
btnUploadArchive.setIconAlign(IconAlign.TOP);
btnUploadArchive.setArrowAlign(ButtonArrowAlign.BOTTOM);
@ -251,10 +274,18 @@ public class GxtToolBarItemFunctionality {
this.activeButtonsOnSelectForOperation(null, false);
}
/**
* Toggle grid view button.
*
* @param toogle the toogle
*/
public void toggleGridViewButton(boolean toogle){
btnGridView.toggle(toogle);
}
/**
* Adds the selection listeners on tool bar.
*/
private void addSelectionListenersOnToolBar() {
btnAddFolder.addSelectionListener(new SelectionListener<ButtonEvent>() {
@ -401,6 +432,20 @@ public class GxtToolBarItemFunctionality {
}
});
btnFolderLink.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem();
GWT.log("file selected: "+fileGridModel);
if(fileGridModel.isDirectory())
AppController.getEventBus().fireEvent(new WsGetFolderLinkEvent(fileGridModel));
}
});
// btnGetInfo.addSelectionListener(new SelectionListener<ButtonEvent>() {
//
@ -557,6 +602,11 @@ public class GxtToolBarItemFunctionality {
});
}
/**
* Switch view.
*
* @param type the type
*/
private void switchView(ViewSwitchTypeInResult type) {
// if (type.compareTo(ViewSwitchTypeInResult.Icons) == 0) {
@ -581,9 +631,10 @@ public class GxtToolBarItemFunctionality {
}
/**
* The method return input file model if is directory otherwise parent of file model
* @param fileModel
* @return
* The method return input file model if is directory otherwise parent of file model.
*
* @param fileModel the file model
* @return the directory or parent
*/
private FileModel getDirectoryOrParent(FileGridModel fileModel){
@ -597,10 +648,17 @@ public class GxtToolBarItemFunctionality {
return null;
}
/**
* Active buttons on select for operation.
*
* @param target the target
* @param active the active
*/
public void activeButtonsOnSelectForOperation(FileModel target, boolean active) {
this.btnPreview.disable();
this.btnPublicLink.disable();
this.btnFolderLink.disable();
this.btnGetSharedLink.disable();
this.btnOpen.enable();
this.btnSetPermission.disable();
@ -675,8 +733,11 @@ public class GxtToolBarItemFunctionality {
//TARGET (SELECTED ITEM) CAN BE NULL, HIS PARENT IS NOT NULL ACTIVING BUTTONS
activeButtons(active);
if(target!=null){
//HANDLING VRE FOLDER AND SPECIAL FOLDER GRID ITEM SELECTION
if(target!=null && (target.isVreFolder() || target.isSpecialFolder())){
if(target.isVreFolder() || target.isSpecialFolder()){
this.btnRemoveItem.disable();
this.btnRenameItem.disable();
@ -686,14 +747,23 @@ public class GxtToolBarItemFunctionality {
if(target.isSpecialFolder()){ //IS SPECIAL FOLDER -> DISABLING COPY AND PASTE
disableButtonSpecialFolderSelected();
}
this.btnRefreshFolder.enable();
}else if(target.isDirectory()){
this.btnFolderLink.enable();
this.btnRefreshFolder.enable();
}
}
}
/**
* Active buttons.
*
* @param active the active
*/
private void activeButtons(boolean active){
if (!active) {
@ -729,11 +799,21 @@ public class GxtToolBarItemFunctionality {
}
/**
* Active button for sharing.
*
* @param active the active
*/
public void activeButtonForSharing(boolean active){
this.btnGetSharedLink.setEnabled(active);
}
/**
* Active all button without group view.
*
* @param active the active
*/
public void activeAllButtonWithoutGroupView(boolean active){
btnRemoveItem.setEnabled(active);
@ -744,14 +824,21 @@ public class GxtToolBarItemFunctionality {
btnPreview.setEnabled(active);
btnOpen.setEnabled(active);
btnPublicLink.setEnabled(active);
btnFolderLink.setEnabled(active);
}
/**
* Active button for multi selection.
*
* @param active the active
*/
public void activeButtonForMultiSelection(boolean active){
this.btnRenameItem.setEnabled(!active);
this.btnDownloadFile.setEnabled(!active);
this.btnOpen.setEnabled(!active);
this.btnGetSharedLink.setEnabled(!active);
this.btnPublicLink.setEnabled(!active);
this.btnFolderLink.setEnabled(!active);
this.btnSetPermission.setEnabled(!active);
//ONLY ENABLED
@ -760,21 +847,36 @@ public class GxtToolBarItemFunctionality {
this.btnCutItem.setEnabled(active);
}
/**
* Gets the tool bar.
*
* @return the tool bar
*/
public ToolBar getToolBar() {
return this.toolBar;
}
/**
* @param b
* Active buttons on search.
*
* @param b the b
*/
public void activeButtonsOnSearch(boolean b) {
btnRefreshFolder.setEnabled(!b);
}
/**
* Active paste button.
*
* @param b the b
*/
public void activePasteButton(boolean b){
btnPasteItem.setEnabled(b);
}
/**
* Disable button special folder selected.
*/
public void disableButtonSpecialFolderSelected(){
this.btnPasteItem.disable();
this.btnCopyItem.disable();
@ -787,6 +889,11 @@ public class GxtToolBarItemFunctionality {
this.btnRenameItem.disable();
}
/**
* Enable button for active breadcrumb.
*
* @param parent the parent
*/
public void enableButtonForActiveBreadcrumb(FileModel parent){
if(parent!=null){