diff --git a/.classpath b/.classpath
index 894a84f..d28dec9 100644
--- a/.classpath
+++ b/.classpath
@@ -1,6 +1,6 @@
-
+
@@ -30,5 +30,5 @@
-
+
diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs
index 62c0640..380d335 100644
--- a/.settings/com.google.gdt.eclipse.core.prefs
+++ b/.settings/com.google.gdt.eclipse.core.prefs
@@ -1,5 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
-lastWarOutDir=/home/francesco-mangiacrapa/wseclipse/workspace/target/workspace-6.5.1-SNAPSHOT
+lastWarOutDir=/home/francesco-mangiacrapa/wseclipse/workspace/target/workspace-6.6.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java
index e282fe8..61a2cf8 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java
@@ -56,6 +56,7 @@ import org.gcube.portlets.user.workspace.client.event.PathElementSelectedEvent;
import org.gcube.portlets.user.workspace.client.event.PathElementSelectedEventHandler;
import org.gcube.portlets.user.workspace.client.event.PreviewMessageEvent;
import org.gcube.portlets.user.workspace.client.event.PreviewMessageEventHandler;
+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.RenameItemEventHandler;
import org.gcube.portlets.user.workspace.client.event.SaveAttachmentsEvent;
@@ -88,9 +89,13 @@ import org.gcube.portlets.user.workspace.client.view.trash.WindowTrash;
import org.gcube.portlets.user.workspace.client.view.windows.DialogGetInfo;
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplay;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
+import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxConfirm;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.portlets.widgets.wsmail.client.forms.MailForm;
+import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.event.MessageBoxEvent;
+import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
@@ -410,14 +415,21 @@ public class AppController implements SubscriberInterface {
@Override
public void onGridElementSelected(GridElementSelectedEvent event) {
- doElementGridSelected(true, event.getSourceFile());
- FileGridModel fileItem = getGridSelectedItem();
+ if(!event.isMultiSelection()){ //IS NOT MULTISELECTION
+ doElementGridSelected(true, event.getSourceFile());
- if(fileItem!=null){
- accountingSetItemAsRead(fileItem.isMarkAsRead());
+ FileGridModel fileItem = getGridSelectedItem();
+
+ if(fileItem!=null){
+ accountingSetItemAsRead(fileItem.isMarkAsRead());
+ }
+ }else{ //IS MULTISELECTION
+
+ wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemFunctionalities().activeButtonForMultiSelection(true);
+ wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemDetails().enableButtons(false);
}
-
+
//setFileDetailsInView(event.getSourceFile().getIdentifier());
}
@@ -802,7 +814,83 @@ public class AppController implements SubscriberInterface {
private void doDeleteItem(final DeleteItemEvent event){
- AppControllerExplorer.getEventBus().fireEvent(new DeleteItemEvent(event.getFileTarget()));
+
+ if(!event.isMultiSelection()){ //IS NOT MULTI
+
+ AppControllerExplorer.getEventBus().fireEvent(new DeleteItemEvent(event.getFileTarget()));
+
+ }else{ //IS MULTI
+
+
+ if(event.getListTarget()!=null){
+
+ FileModel parent = null;
+
+ if(!wsPortlet.getSearchAndFilterContainer().isSearchActive()){ // IS NOT A SEARCH
+ if(wsPortlet.getToolBarPath().getLastParent()!=null){
+ parent = wsPortlet.getToolBarPath().getLastParent();
+ GWT.log("Search is not active get parent item for uploading from breadcrumb: " +parent.getName());
+ }else if(wsPortlet.getGridGroupContainer().getCurrentFolderView()!=null){
+ parent = wsPortlet.getGridGroupContainer().getCurrentFolderView();
+ GWT.log("Search is not active get parent item for uploading from CurrentFolderView: " +parent.getName());
+ }
+ }
+
+ final FileModel target = parent;
+
+ int size = event.getListTarget().size();
+
+ MessageBoxConfirm mbc = new MessageBoxConfirm(ConstantsExplorer.MESSAGE_DELETE, "Are you sure you want to delete "+size+" items?");
+
+ mbc.getMessageBoxConfirm().addCallback(new Listener() {
+
+ public void handleEvent(MessageBoxEvent be) {
+
+// eventBus.fireEvent(new DeleteItemEvent(sel));
+
+ //IF NOT CANCELLED
+ String clickedButton = be.getButtonClicked().getItemId();
+ if(clickedButton.equals(Dialog.YES)){
+
+ wsPortlet.getGridGroupContainer().mask("Deleting",ConstantsExplorer.LOADINGSTYLE);
+
+ appContrExplorer.getRpcWorkspaceService().deleteListItemsForIds(event.getListTarget(), new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable arg0) {
+ wsPortlet.getGridGroupContainer().unmask();
+ appContrExplorer.refreshRoot(true);
+ }
+
+ @Override
+ public void onSuccess(Void arg0) {
+
+ //Deleting item from grid
+ for (String id : event.getListTarget()) {
+ deleteItem(id);
+ }
+ wsPortlet.getGridGroupContainer().unmask();
+
+ System.out.println("target: "+target);
+
+ if(wsPortlet.getSearchAndFilterContainer().isSearchActive()){
+ appContrExplorer.refreshRoot(false);
+ }else
+ AppControllerExplorer.getEventBus().fireEvent(new RefreshFolderEvent(target, true, false, true));
+// AppController.getEventBus().fireEvent(new PathElementSelectedEvent(target));
+ }
+ });
+ }
+ }
+ });
+
+
+
+
+
+ }
+
+ }
}
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/event/GridElementSelectedEvent.java b/src/main/java/org/gcube/portlets/user/workspace/client/event/GridElementSelectedEvent.java
index 5ce4157..39a1222 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/event/GridElementSelectedEvent.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/event/GridElementSelectedEvent.java
@@ -14,14 +14,16 @@ public class GridElementSelectedEvent extends GwtEvent TYPE = new Type();
private FileGridModel targetFile = null;
+
+ private boolean isMultiSelection;
- public GridElementSelectedEvent(ModelData target) {
- this.targetFile = (FileGridModel) target;
+ public GridElementSelectedEvent(ModelData target, boolean isMultiSelection) {
+ this.targetFile = (FileGridModel) target;
+ this.isMultiSelection = isMultiSelection;
}
@Override
public Type getAssociatedType() {
- // TODO Auto-generated method stub
return TYPE;
}
@@ -34,4 +36,8 @@ public class GridElementSelectedEvent extends GwtEvent() {
@@ -200,12 +202,19 @@ public class GxtGridFilterGroupPanel extends LayoutContainer {
if(target!=null){
currenItemSelected = (FileGridModel) target;
- AppController.getEventBus().fireEvent(new GridElementSelectedEvent(target));
+
+ boolean isMultiselection = false;
+
+ if(se.getSelection()!=null && se.getSelection().size()>1)
+ isMultiselection = true;
+
+ AppController.getEventBus().fireEvent(new GridElementSelectedEvent(target, isMultiselection));
}
else{
currenItemSelected = null;
AppController.getEventBus().fireEvent(new GridElementUnSelectedEvent());
}
+
}
});
@@ -237,6 +246,11 @@ public class GxtGridFilterGroupPanel extends LayoutContainer {
{
if(grid.getSelectionModel().getSelectedItem()!=null){
+ if(grid.getSelectionModel().getSelection().size()>1){
+ new InfoDisplay("Info", "The context menu is not available if multi-select is active");
+ return;
+ }
+
FileGridModel fileGridModel = grid.getSelectionModel().getSelectedItem();
AppController.getEventBus().fireEvent(new OpenContextMenuTreeEvent(fileGridModel, be.getClientX(), be.getClientY()));
}
@@ -359,6 +373,21 @@ public class GxtGridFilterGroupPanel extends LayoutContainer {
}
+ public List getIdsSelectedItems(){
+
+ if(grid.getSelectionModel().getSelection()!=null){
+
+ List ids = new ArrayList();
+ for (FileModel file : grid.getSelectionModel().getSelection()) {
+ ids.add(file.getIdentifier());
+ }
+
+ return ids;
+ }
+
+ return null;
+ }
+
/**
*
* @param identifier (MANDATORY)
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterPanel.java
index 6bf0add..a76bab4 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterPanel.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterPanel.java
@@ -89,10 +89,15 @@ public class GxtGridFilterPanel extends LayoutContainer {
System.out.println("selection grid change");
ModelData target = se.getSelectedItem();
-
+
if(target!=null){
currenItemSelected = (FileGridModel) target;
- AppController.getEventBus().fireEvent(new GridElementSelectedEvent(target));
+
+ boolean isMultiselection = false;
+
+ if(se.getSelection()!=null && se.getSelection().size()>1)
+ isMultiselection = true;
+ AppController.getEventBus().fireEvent(new GridElementSelectedEvent(target, isMultiselection));
}
else{
currenItemSelected = null;
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtCardLayoutResultPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtCardLayoutResultPanel.java
index 9543cf0..df07c25 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtCardLayoutResultPanel.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/panels/GxtCardLayoutResultPanel.java
@@ -89,7 +89,7 @@ public class GxtCardLayoutResultPanel extends LayoutContainer{
public GxtToolBarItemFunctionality getToolBarItemFunctionalities() {
return toolBarItemFunct;
}
-
+
public ContentPanel getActivePanel(){
return activePanel;
}
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java
index ca30bad..a7341f7 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java
@@ -111,8 +111,8 @@ public class GxtBottomToolBarItem extends ToolBar{
}
});
- add(new FillToolItem());
- add(btnGetTrash);
+// add(new FillToolItem());
+// add(btnGetTrash);
enableButtons(false);
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java
index 5bd7367..d454bea 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java
@@ -1,5 +1,7 @@
package org.gcube.portlets.user.workspace.client.view.toolbars;
+import java.util.List;
+
import org.gcube.portlets.user.workspace.client.AppController;
import org.gcube.portlets.user.workspace.client.ConstantsPortlet;
import org.gcube.portlets.user.workspace.client.ConstantsPortlet.ViewSwitchTypeInResult;
@@ -271,10 +273,21 @@ public class GxtToolBarItemFunctionality {
@Override
public void componentSelected(ButtonEvent ce) {
- final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem();
- AppController.getEventBus().fireEvent(
- new DeleteItemEvent(fileGridModel));
+ List listTarget = gridGroupViewContainer.getIdsSelectedItems();
+ if(listTarget!=null){
+
+ if(listTarget.size()>1){ //IS MULTI
+
+ AppController.getEventBus().fireEvent(new DeleteItemEvent(listTarget));
+
+ }else{
+
+ final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem();
+ AppController.getEventBus().fireEvent(new DeleteItemEvent(fileGridModel));
+ }
+ }
+
}
});
@@ -631,6 +644,15 @@ public class GxtToolBarItemFunctionality {
btnOpen.setEnabled(active);
btnPublicLink.setEnabled(active);
}
+
+ public void activeButtonForMultiSelection(boolean active){
+ this.btnRemoveItem.setEnabled(active);
+ this.btnRenameItem.setEnabled(!active);
+ this.btnDownloadFile.setEnabled(!active);
+ this.btnOpen.setEnabled(!active);
+ this.btnCopyItem.setEnabled(!active);
+ this.btnGetSharedLink.setEnabled(!active);
+ }
public ToolBar getToolBar() {
return this.toolBar;