From 8f5db196b07489cc53c3ab7de40463ee46ad9df5 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 29 Oct 2015 15:19:45 +0000 Subject: [PATCH] merged with branch version for gcube 3.9 git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace@120099 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 2 +- .../user/workspace/client/AppController.java | 74 ++++++++++++++++--- .../view/grids/GxtGridFilterGroupPanel.java | 4 + .../toolbars/GxtToolBarItemFunctionality.java | 2 +- 4 files changed, 69 insertions(+), 13 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 7617221..bdff2e9 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -8,7 +8,7 @@ uses - + uses 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 99131d0..0fc550f 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 @@ -91,6 +91,7 @@ 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.interfaces.EventsTypeEnum; +import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum; import org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface; import org.gcube.portlets.user.workspace.client.model.FileGridModel; import org.gcube.portlets.user.workspace.client.model.FileModel; @@ -106,6 +107,7 @@ 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.shared.ExtendedWorkspaceACL; +import org.gcube.portlets.user.workspace.shared.GarbageItem; import org.gcube.portlets.user.workspace.shared.SessionExpiredException; import org.gcube.portlets.user.workspace.shared.TrashContent; import org.gcube.portlets.user.workspace.shared.TrashOperationContent; @@ -117,6 +119,7 @@ import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.Mul import org.gcube.portlets.widgets.wsmail.client.forms.MailForm; import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; @@ -489,10 +492,6 @@ public class AppController implements SubscriberInterface { @Override public void onSuccess(List result) { - // for(ScopeModel scope: result) - // System.out.println("#############Scopde id " + scope.getId() + " name " + scope.getName()); - - if(result!=null && result.size()>0){ wsPortlet.getSearchAndFilterContainer().setListScope(result); wsPortlet.getSearchAndFilterContainer().selectScopeByIndex(0); //select first scope @@ -857,17 +856,56 @@ public class AppController implements SubscriberInterface { final int size = event.getListTarget().size(); - final DialogConfirm confirm = new DialogConfirm(null, ConstantsExplorer.MESSAGE_DELETE,"Are you sure you want to delete "+size+" items?"); + List targets = event.getListTarget(); + + final List clearTargets = new ArrayList(targets); + + //IGNORING SHARED FOLDER + List ingnoreFile = new ArrayList(size); + for (FileModel file : targets) { + GWT.log("Checking file "+file); + if((file.getType()!=null && file.getType().equals(GXTFolderItemTypeEnum.SHARED_FOLDER.toString())) || file.isSpecialFolder()){ + ingnoreFile.add(file); + clearTargets.remove(file); + } + } + + final int diff = size-ingnoreFile.size(); + if(diff==0){ + MessageBox.alert("Alert", "Shared folders cannot be deleted through multiple selection", null); + return; + } + + String msg = "Are you sure you want to delete "+diff+" items?
"; + + if(ingnoreFile.size()>0){ + msg+="
The shared "+(ingnoreFile.size()>1?"folders":"folder"); + msg+= " following will not be removed:"; + for (FileModel fileGridModel : ingnoreFile) { + msg+="
"+fileGridModel.getName(); + } + } + + + final DialogConfirm confirm = new DialogConfirm(null, ConstantsExplorer.MESSAGE_DELETE,msg); confirm.setModal(true); confirm.center(); + + //CREATING LIST IDS + final List ids = new ArrayList(); + for (FileModel file : clearTargets) { + ids.add(file.getIdentifier()); + } + confirm.getYesButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { - confirm.loader("Deleting "+size+ " items, please wait"); + confirm.loader("Deleting "+diff+ " items, please wait"); // wsPortlet.getGridGroupContainer().mask("Deleting",ConstantsExplorer.LOADINGSTYLE); - - appContrExplorer.getRpcWorkspaceService().deleteListItemsForIds(event.getListTarget(), new AsyncCallback() { + + + appContrExplorer.getRpcWorkspaceService().deleteListItemsForIds(ids, new AsyncCallback>() { @Override public void onFailure(Throwable arg0) { @@ -878,11 +916,25 @@ public class AppController implements SubscriberInterface { } @Override - public void onSuccess(Void arg0) { + public void onSuccess(List errors) { confirm.hide(); + + List idErros = new ArrayList(errors.size()); + + if(errors.size()>0){ + String msg = "Error during delete of following: "; + for (GarbageItem gbi : errors) { + msg+=gbi.getOldItemName()+"; "; + idErros.add(gbi.getOldItemId()); + } + MessageBox.alert("Error", msg, null); + return; + } + //Deleting item from grid - for (String id : event.getListTarget()) { - deleteItem(id); + for (String id : ids) { + if(!idErros.contains(id)) + deleteItem(id); } // wsPortlet.getGridGroupContainer().unmask(); diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java index 9fb6a1b..5aa667f 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/grids/GxtGridFilterGroupPanel.java @@ -375,7 +375,11 @@ public class GxtGridFilterGroupPanel extends LayoutContainer { public FileGridModel getSelectedItem(){ return currenItemSelected; + } + + public List getSelectedItems(){ + return grid.getSelectionModel().getSelection(); } public List getIdsSelectedItems(){ 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 bf0d7ed..dcabb6a 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 @@ -282,7 +282,7 @@ public class GxtToolBarItemFunctionality { public void componentSelected(ButtonEvent ce) { - List listTarget = gridGroupViewContainer.getIdsSelectedItems(); + List listTarget = gridGroupViewContainer.getSelectedItems(); if(listTarget!=null){ if(listTarget.size()>1){ //IS MULTI