enhancements on trash

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace@95585 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2014-05-13 09:27:30 +00:00
parent 19961ae2b1
commit 0b53c23b4a
4 changed files with 122 additions and 53 deletions

View File

@ -94,7 +94,8 @@ 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.user.workspace.shared.TrashOperationResult;
import org.gcube.portlets.user.workspace.shared.TrashContent;
import org.gcube.portlets.user.workspace.shared.TrashOperationContent;
import org.gcube.portlets.user.workspace.shared.WorkspaceACL;
import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation;
import org.gcube.portlets.widgets.wsmail.client.forms.MailForm;
@ -176,35 +177,8 @@ public class AppController implements SubscriberInterface {
@Override
public void onTrashEvent(TrashEvent trashEvent) {
switch (trashEvent.getTrashOperation()) {
case SHOW:
WindowTrash.getInstance().show();
break;
default:
if(trashEvent.getTrashOperation()!=null){
WindowTrash.getInstance().mask("Submitting Operation");
AppControllerExplorer.rpcWorkspaceService.executeOperationOnTrash(trashEvent.getTargetFileModel().getIdentifier(), trashEvent.getTrashOperation(), new AsyncCallback<TrashOperationResult>() {
@Override
public void onFailure(Throwable arg0) {
WindowTrash.getInstance().unmask();
}
@Override
public void onSuccess(TrashOperationResult operationResult) {
WindowTrash.getInstance().unmask();
WindowTrash.getInstance().updateTrashContainer(operationResult.getTrashContent());
}
});
}
break;
}
executeTrashOperation(trashEvent.getTrashOperation(), trashEvent.getTargetFileModels());
}
});
@ -1223,6 +1197,14 @@ public class AppController implements SubscriberInterface {
}
//LOADING TRASH CONTENT
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
executeTrashOperation(WorkspaceTrashOperation.REFRESH, null);
}
});
}
@ -1418,6 +1400,9 @@ public class AppController implements SubscriberInterface {
@Override
public boolean deleteItem(String itemIdentifier) {
executeTrashOperation(WorkspaceTrashOperation.REFRESH, null);
return wsPortlet.getGridGroupContainer().deleteItem(itemIdentifier);
}
@ -1665,16 +1650,6 @@ public class AppController implements SubscriberInterface {
}
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface#trashEvent(org.gcube.portlets.user.workspace.client.event.TrashEvent.TRASHOPERATION, org.gcube.portlets.user.workspace.client.model.FileModel)
*/
@Override
public void trashEvent(WorkspaceTrashOperation trashOperation, FileModel targetFileModel) {
}
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface#updatedVREPermissions(java.lang.String)
*/
@ -1691,4 +1666,85 @@ public class AppController implements SubscriberInterface {
setACLInfo(vreFolderId);
}
}
/**
*
* @param operation
* @param trashItemId
*/
private void executeTrashOperation(WorkspaceTrashOperation operation, List<FileModel> trashItemIds){
GWT.log("Executing trash operation: "+operation);
if(operation==null)
return;
switch (operation) {
case SHOW:
WindowTrash.getInstance().show();
break;
case DELETE_PERMANENTLY:
case RESTORE:{
if(trashItemIds==null || trashItemIds.isEmpty())
return;
WindowTrash.getInstance().mask("Updating Trash");
List<String> trashIds = new ArrayList<String>(trashItemIds.size());
for (FileModel fileModel : trashItemIds) {
trashIds.add(fileModel.getIdentifier());
}
AppControllerExplorer.rpcWorkspaceService.executeOperationOnTrash(trashIds, operation, new AsyncCallback<TrashOperationContent>() {
@Override
public void onFailure(Throwable arg0) {
WindowTrash.getInstance().unmask();
}
@Override
public void onSuccess(TrashOperationContent operationResult) {
WindowTrash.getInstance().unmask();
WindowTrash.getInstance().executeOperationOnTrashContainer(operationResult.getListTrashIds(), operationResult.getOperation());
}
});
}
default:{
WindowTrash.getInstance().mask("Updating Trash");
AppControllerExplorer.rpcWorkspaceService.updateTrashContent(operation, new AsyncCallback<TrashContent>() {
@Override
public void onFailure(Throwable arg0) {
WindowTrash.getInstance().unmask();
}
@Override
public void onSuccess(TrashContent operationResult) {
WindowTrash.getInstance().unmask();
WindowTrash.getInstance().updateTrashContainer(operationResult.getTrashContent());
}
});
break;
}
}
}
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface#trashEvent(org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation, java.util.List)
*/
@Override
public void trashEvent(WorkspaceTrashOperation trashOperation, List<FileModel> targetFileModels) {
executeTrashOperation(trashOperation, targetFileModels);
}
}

View File

@ -120,10 +120,8 @@ public class GxtBottomToolBarItem extends ToolBar{
}
});
// add(new FillToolItem());
// add(btnGetTrash);
add(new FillToolItem());
add(btnGetTrash);
enableInfoHistoryButtons(false);

View File

@ -35,7 +35,6 @@ import com.extjs.gxt.ui.client.widget.grid.filters.GridFilters;
import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.i18n.client.NumberFormat;
public class TrashInfoContainer extends LayoutContainer {
@ -49,7 +48,6 @@ public class TrashInfoContainer extends LayoutContainer {
private GroupingStore<FileTrashedModel> store = new GroupingStore<FileTrashedModel>();
private boolean groupingEnabled;
private ListStore<FileTrashedModel> typeStoreOperation = new ListStore<FileTrashedModel>();
private NumberFormat number = ConstantsExplorer.numberFormatterKB;
private GridDropTarget gridDropTarget;
public TrashInfoContainer() {
@ -178,18 +176,12 @@ public class TrashInfoContainer extends LayoutContainer {
public void initGrid() {
// store.groupBy(ConstantsExplorer.SHORTCUTCATEGORY);
// groupingEnabled = true;
ColumnConfig icon = new ColumnConfig(ConstantsExplorer.ICON, "", 25);
ColumnConfig name = createSortableColumnConfig(ConstantsExplorer.NAME, ConstantsExplorer.NAME, 200);
ColumnConfig type = createSortableColumnConfig(ConstantsExplorer.TYPE, ConstantsExplorer.TYPE, 50);
ColumnConfig originalPath = createSortableColumnConfig(FileTrashedModel.STOREINFO.ORIGINALPATH.toString(), "Original Path", 200);
ColumnConfig deleteDate = createSortableColumnConfig(FileTrashedModel.STOREINFO.DELETEDATE.toString(), "Delete Date", 50);
ColumnConfig deleteUser = createSortableColumnConfig(FileTrashedModel.STOREINFO.DELETEUSER.toString(), "Delete User", 150);
// ColumnConfig category = createSortableColumnConfig(ConstantsExplorer.SHORTCUTCATEGORY, ConstantsExplorer.SHORTCUTCATEGORY, 100);
// ColumnConfig ownerFullName = createSortableColumnConfig(ConstantsExplorer.OWNERFULLNAME, ConstantsExplorer.OWNER, 100);
// ColumnConfig ownerFullName = createSortableColumnConfig(ConstantsExplorer.OWNERFULLNAME, ConstantsExplorer.OWNER, 100);
ColumnConfig deleteDate = createSortableColumnConfig(FileTrashedModel.STOREINFO.DELETEDATE.toString(), "Deleted Date", 50);
ColumnConfig deleteUser = createSortableColumnConfig(FileTrashedModel.STOREINFO.DELETEUSER.toString(), "Deleted By", 150);
ColumnModel cm = new ColumnModel(Arrays.asList(icon, name, type, originalPath, deleteDate, deleteUser));
@ -294,6 +286,11 @@ public class TrashInfoContainer extends LayoutContainer {
store.removeAll();
typeStoreOperation.removeAll();
for (FileTrashedModel fileTrashedModel : trashFiles) {
fileTrashedModel.setIcon();
}
store.add(trashFiles);
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.model.FileTrashedModel;
import org.gcube.portlets.user.workspace.client.resources.Resources;
import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
@ -95,11 +96,28 @@ public class WindowTrash extends Window {
this.trashedFiles = trashFiles;
this.trashContainers.updateTrash(trashFiles);
}
public void executeOperationOnTrashContainer(List<String> trashIds, WorkspaceTrashOperation operation) {
if(operation.equals(WorkspaceTrashOperation.DELETE_PERMANENTLY)){
deleteListItems(trashIds);
}else if(operation.equals(WorkspaceTrashOperation.RESTORE)){
deleteListItems(trashIds);
}
}
public List<FileTrashedModel> getTrashedFiles() {
return trashedFiles;
}
private void deleteListItems(List<String> trashIds){
for (String identifier : trashIds) {
this.trashContainers.deleteItem(identifier);
}
}
public void maskAccountingInfo(boolean bool){
// if(accountingsContainers!=null){