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 bece3d0..fb74abb 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 @@ -99,6 +99,7 @@ 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; +import org.gcube.portlets.user.workspace.client.model.FileVersionModel; import org.gcube.portlets.user.workspace.client.model.FolderModel; import org.gcube.portlets.user.workspace.client.model.ScopeModel; import org.gcube.portlets.user.workspace.client.view.WorkspaceFeaturesView; @@ -487,11 +488,8 @@ public class AppController implements SubscriberInterface { }else{ //IS MULTISELECTION wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemFunctionalities().activeButtonForMultiSelection(true); - wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemDetails().enableInfoHistoryButtons(false); + wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemDetails().enableInfoHistoryButtons(event.getSourceFile(), false); } - - //setFileDetailsInView(event.getSourceFile().getIdentifier()); - } }); @@ -1032,7 +1030,7 @@ public class AppController implements SubscriberInterface { private void doElementGridSelected(boolean isSelected, FileModel target) { wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemFunctionalities().activeButtonsOnSelectForOperation(target, isSelected); - wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemDetails().enableInfoHistoryButtons(isSelected); + wsPortlet.getGxtCardLayoutResultPanel().getToolBarItemDetails().enableInfoHistoryButtons(target, isSelected); disableButtonsOnBreadcrumbSpecialFolder(); if(isSelected){ @@ -2043,21 +2041,26 @@ public class AppController implements SubscriberInterface { */ private void performVersioningOperation(FileVersioningEvent fileVersioningEvent){ - final FileModel currentVersion = fileVersioningEvent.getCurrentVersion(); - final FileModel olderVersion = fileVersioningEvent.getOlderVersion(); + FileModel currentVersion = fileVersioningEvent.getCurrentVersion(); + FileModel olderVersion = fileVersioningEvent.getOlderVersion(); + + //INVOKING FROM TOOLBAR?? + if(currentVersion==null) { + currentVersion = getGridSelectedItem(); + } switch (fileVersioningEvent.getVersioningOperation()) { case SHOW:{ final WindowVersioning wv = new WindowVersioning(currentVersion); - appContrExplorer.getRpcWorkspaceService().getVersionHistory(currentVersion.getIdentifier(), new AsyncCallback>() { + appContrExplorer.getRpcWorkspaceService().getVersionHistory(currentVersion.getIdentifier(), new AsyncCallback>() { @Override public void onFailure(Throwable caught) { } @Override - public void onSuccess(List result) { + public void onSuccess(List result) { wv.updateVersioningContainer(result); wv.updateItemsNumber(result.size()); } @@ -2074,7 +2077,7 @@ public class AppController implements SubscriberInterface { case DELETE_PERMANENTLY: { final WindowVersioning wv = new WindowVersioning(currentVersion); - appContrExplorer.getRpcWorkspaceService().performOperationOnVersionedFile(currentVersion, olderVersion, WorkspaceVersioningOperation.DELETE_PERMANENTLY, new AsyncCallback>() { + appContrExplorer.getRpcWorkspaceService().performOperationOnVersionedFile(currentVersion, olderVersion, WorkspaceVersioningOperation.DELETE_PERMANENTLY, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { @@ -2082,7 +2085,7 @@ public class AppController implements SubscriberInterface { } @Override - public void onSuccess(List result) { + public void onSuccess(List result) { wv.updateVersioningContainer(result); wv.updateItemsNumber(result.size()); @@ -2094,14 +2097,14 @@ public class AppController implements SubscriberInterface { case REFRESH: { final WindowVersioning wv = fileVersioningEvent.getWinVersioning(); - appContrExplorer.getRpcWorkspaceService().getVersionHistory(currentVersion.getIdentifier(), new AsyncCallback>() { + appContrExplorer.getRpcWorkspaceService().getVersionHistory(currentVersion.getIdentifier(), new AsyncCallback>() { @Override public void onFailure(Throwable caught) { } @Override - public void onSuccess(List result) { + public void onSuccess(List result) { wv.updateVersioningContainer(result); wv.updateItemsNumber(result.size()); } 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 17826c1..2cd7983 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 @@ -310,7 +310,7 @@ public class GxtGridFilterGroupPanel extends LayoutContainer { case URL_DOCUMENT: case EXTERNAL_RESOURCE_LINK: - AppController.getEventBus().fireEvent(new FileDownloadEvent(target.getIdentifier(), target.getName(), DownloadType.SHOW, target.isDirectory() || target.isVreFolder())); + AppController.getEventBus().fireEvent(new FileDownloadEvent(target.getIdentifier(), target.getName(), DownloadType.SHOW, target.isDirectory() || target.isVreFolder(), null)); break; case EXTERNAL_URL: AppController.getEventBus().fireEvent(new ShowUrlEvent(target)); 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 9441893..c4cebdf 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 @@ -8,6 +8,8 @@ import org.gcube.portlets.user.workspace.client.event.AddAdministratorEvent; import org.gcube.portlets.user.workspace.client.event.FileVersioningEvent; import org.gcube.portlets.user.workspace.client.event.GetInfoEvent; import org.gcube.portlets.user.workspace.client.event.TrashEvent; +import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum; +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.util.GetPermissionIconByACL; import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL; @@ -149,13 +151,10 @@ public class GxtBottomToolBarItem extends ToolBar{ @Override public void componentSelected(ButtonEvent ce) { - AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.SHOW, null, null, null)); - } }); - btnAddAdmin = new Button(EDIT_ADMINISTRATOR); //TODO CHANGE ICON btnAddAdmin.setIcon(Resources.getIconManageAdministrator()); @@ -190,7 +189,7 @@ public class GxtBottomToolBarItem extends ToolBar{ add(filler); add(btnAddAdmin); add(aclDivInfo); - enableInfoHistoryButtons(false); + enableInfoHistoryButtons(null, false); } /** @@ -215,17 +214,23 @@ public class GxtBottomToolBarItem extends ToolBar{ } - /** * Enable info history buttons. * + * @param selectedFile the selected file * @param enable the enable */ - public void enableInfoHistoryButtons(boolean enable){ + public void enableInfoHistoryButtons(FileModel target, boolean enable){ bHistory.setEnabled(enable); bRead.setEnabled(enable); btnGetInfo.setEnabled(enable); - btnVersioning.setEnabled(enable); + + btnVersioning.setEnabled(false); + if(target!=null){ + GXTFolderItemTypeEnum category = target.getGXTFolderItemType(); + if(category!=null && (category.equals(GXTFolderItemTypeEnum.EXTERNAL_FILE) || category.equals(GXTFolderItemTypeEnum.EXTERNAL_IMAGE) || category.equals(GXTFolderItemTypeEnum.EXTERNAL_IMAGE))) + btnVersioning.setEnabled(enable); + } } /** 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 f24e3a0..672c173 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 @@ -17,9 +17,9 @@ 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; import org.gcube.portlets.user.workspace.client.event.ImagePreviewEvent; -import org.gcube.portlets.user.workspace.client.event.ShowUrlEvent; import org.gcube.portlets.user.workspace.client.event.PasteItemEvent; import org.gcube.portlets.user.workspace.client.event.RenameItemEvent; +import org.gcube.portlets.user.workspace.client.event.ShowUrlEvent; import org.gcube.portlets.user.workspace.client.event.VREChangePermissionsEvent; import org.gcube.portlets.user.workspace.client.event.WebDavUrlEvent; import org.gcube.portlets.user.workspace.client.event.WsGetFolderLinkEvent; @@ -524,7 +524,7 @@ public class GxtToolBarItemFunctionality { public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); - AppController.getEventBus().fireEvent(new FileDownloadEvent(fileGridModel.getIdentifier(), fileGridModel.getName(), DownloadType.DOWNLOAD, fileGridModel.isDirectory() || fileGridModel.isVreFolder())); + AppController.getEventBus().fireEvent(new FileDownloadEvent(fileGridModel.getIdentifier(), fileGridModel.getName(), DownloadType.DOWNLOAD, fileGridModel.isDirectory() || fileGridModel.isVreFolder(), null)); } }); @@ -556,7 +556,7 @@ public class GxtToolBarItemFunctionality { AppController.getEventBus().fireEvent(new ShowUrlEvent(fileGridModel)); }else - AppController.getEventBus().fireEvent(new FileDownloadEvent(fileGridModel.getIdentifier(), fileGridModel.getName(), DownloadType.SHOW,fileGridModel.isDirectory() || fileGridModel.isVreFolder())); + AppController.getEventBus().fireEvent(new FileDownloadEvent(fileGridModel.getIdentifier(), fileGridModel.getName(), DownloadType.SHOW,fileGridModel.isDirectory() || fileGridModel.isVreFolder(), null)); } } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java index c39dc11..504026d 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java @@ -5,8 +5,8 @@ import java.util.List; import org.gcube.portlets.user.workspace.client.AppController; import org.gcube.portlets.user.workspace.client.event.FileVersioningEvent; -import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum; import org.gcube.portlets.user.workspace.client.model.FileModel; +import org.gcube.portlets.user.workspace.client.model.FileVersionModel; import org.gcube.portlets.user.workspace.client.resources.Resources; import org.gcube.portlets.user.workspace.client.view.windows.DialogConfirm; import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation; @@ -28,10 +28,8 @@ import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; -import com.extjs.gxt.ui.client.widget.grid.ColumnData; import com.extjs.gxt.ui.client.widget.grid.ColumnModel; import com.extjs.gxt.ui.client.widget.grid.Grid; -import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; import com.extjs.gxt.ui.client.widget.grid.GroupingView; import com.extjs.gxt.ui.client.widget.grid.filters.GridFilters; import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter; @@ -57,8 +55,8 @@ public class VersioningInfoContainer extends LayoutContainer { //private GridDropTarget gridDropTarget; private Button buttonDelete; private Button buttonRestore; - private Button buttonRestoreAll; - private Button buttonEmptyTrash; + private Button buttonDownload; + private Button buttonEmptyVersions; private FileModel currentVersion; private WindowVersioning windowVersioning; @@ -154,11 +152,11 @@ public class VersioningInfoContainer extends LayoutContainer { bar.add(new SeparatorMenuItem()); - buttonRestoreAll = new Button(WorkspaceVersioningOperation.DOWNLOAD.getLabel(),Resources.getIconRecycle()); - buttonRestoreAll.setToolTip(WorkspaceVersioningOperation.DOWNLOAD.getOperationDescription()); - buttonRestoreAll.setScale(ButtonScale.SMALL); - buttonRestoreAll.setIconAlign(IconAlign.TOP); - buttonRestoreAll.addSelectionListener(new SelectionListener() { + buttonDownload = new Button(WorkspaceVersioningOperation.DOWNLOAD.getLabel(),Resources.getIconRecycle()); + buttonDownload.setToolTip(WorkspaceVersioningOperation.DOWNLOAD.getOperationDescription()); + buttonDownload.setScale(ButtonScale.SMALL); + buttonDownload.setIconAlign(IconAlign.TOP); + buttonDownload.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { @@ -168,14 +166,14 @@ public class VersioningInfoContainer extends LayoutContainer { } }); - bar.add(buttonRestoreAll); + bar.add(buttonDownload); - buttonEmptyTrash = new Button(WorkspaceVersioningOperation.EMPTY_OLDER_VERSIONS.getLabel(),Resources.getTrashEmpty()); - buttonEmptyTrash.setToolTip(WorkspaceVersioningOperation.EMPTY_OLDER_VERSIONS.getOperationDescription()); - buttonEmptyTrash.setScale(ButtonScale.SMALL); - buttonEmptyTrash.setIconAlign(IconAlign.TOP); - buttonEmptyTrash.addSelectionListener(new SelectionListener() { + buttonEmptyVersions = new Button(WorkspaceVersioningOperation.EMPTY_OLDER_VERSIONS.getLabel(),Resources.getTrashEmpty()); + buttonEmptyVersions.setToolTip(WorkspaceVersioningOperation.EMPTY_OLDER_VERSIONS.getOperationDescription()); + buttonEmptyVersions.setScale(ButtonScale.SMALL); + buttonEmptyVersions.setIconAlign(IconAlign.TOP); + buttonEmptyVersions.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { @@ -183,7 +181,7 @@ public class VersioningInfoContainer extends LayoutContainer { // if(checkSelection()) // AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.EMPTY_OLDER_VERSIONS, null)); - DialogConfirm box = new DialogConfirm(null, "Confirm Delete?", "Are you sure you want delete older versions of: "+ currentVersion.getName()); + DialogConfirm box = new DialogConfirm(null, "Confirm Delete?", "Are you sure you want delete the older versions of: "+ currentVersion.getName()); box.setModal(true); box.center(); box.getYesButton().addClickHandler(new ClickHandler() { @@ -197,7 +195,7 @@ public class VersioningInfoContainer extends LayoutContainer { } }); - bar.add(buttonEmptyTrash); + bar.add(buttonEmptyVersions); bar.add(new FillToolItem()); @@ -229,17 +227,15 @@ public class VersioningInfoContainer extends LayoutContainer { //ColumnConfig icon = new ColumnConfig(FileGridModel.ICON, "", 25); ColumnConfig name = createSortableColumnConfig(FileModel.NAME, FileModel.NAME, 200); - ColumnConfig type = createSortableColumnConfig(FileModel.TYPE, FileModel.TYPE, 80); - //ColumnConfig originalPath = createSortableColumnConfig(FileTrashedModel.STOREINFO.ORIGINALPATH.toString(), "Original Path", 200); + //ColumnConfig type = createSortableColumnConfig(FileModel.TYPE, FileModel.TYPE, 80); + ColumnConfig originalPath = createSortableColumnConfig(FileVersionModel.PATH, "Original Path", 200); //ColumnConfig deleteDate = createSortableColumnConfig(FileTrashedModel.STOREINFO.DELETEDATE.toString(), "Deleted Date", 90); //deleteDate.setDateTimeFormat(DateTimeFormat.getFormat("dd MMM hh:mm aaa yyyy")); - //ColumnConfig deleteUser = createSortableColumnConfig(FileTrashedModel.STOREINFO.DELETEUSER.toString(), "Deleted By", 150); + ColumnConfig user = createSortableColumnConfig(FileVersionModel.USER_VERSIONING, "User", 150); //ColumnModel cm = new ColumnModel(Arrays.asList(icon, name, type, originalPath, deleteDate, deleteUser)); - ColumnModel cm = new ColumnModel(Arrays.asList(name)); - - final ColumnModel columnModel = cm; + ColumnModel cm = new ColumnModel(Arrays.asList(name, originalPath, user)); grid = new Grid(this.store, cm); @@ -249,38 +245,16 @@ public class VersioningInfoContainer extends LayoutContainer { this.grid.setView(view); this.grid.setContextMenu(null); - - GridCellRenderer folderRender = new GridCellRenderer() { - @Override - public String render(FileModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore store, Grid grid) { - String val = model.get(property); - String color = "black"; - - if(val != null && val.equals(GXTFolderItemTypeEnum.FOLDER.toString())){ -// color = "#EEC900"; - return "" + val + ""; - }else{ - if(val==null) - val = ""; - return "" + val + ""; - } - } - }; - - type.setRenderer(folderRender); - GridFilters filters = new GridFilters(); filters.setLocal(true); - StringFilter nameFilter = new StringFilter(FileModel.NAME); - StringFilter typeFilter = new StringFilter(FileModel.TYPE); - - //DateFilter dateFilter = new DateFilter(FileModel.STOREINFO.DELETEDATE.toString()); + StringFilter pathFilter = new StringFilter("Original Path"); + StringFilter userFilter = new StringFilter("User"); filters.addFilter(nameFilter); - filters.addFilter(typeFilter); - //filters.addFilter(dateFilter); + filters.addFilter(pathFilter); + filters.addFilter(userFilter); grid.addPlugin(filters); @@ -307,7 +281,6 @@ public class VersioningInfoContainer extends LayoutContainer { } - /** * Sets the panel size. * @@ -318,28 +291,18 @@ public class VersioningInfoContainer extends LayoutContainer { if (width > 0 && height > 0 && grid != null) { cp.setSize(width, height); - // grid.setSize(width, height); } } - - - - /** * Update versions. * * @param versioningFiles the versioning files */ - public void updateVersions(List versioningFiles) { + public void updateVersions(List versioningFiles) { store.removeAll(); typeStoreOperation.removeAll(); - -// for (FileModel fileTrashedModel : trashFiles) { -// fileTrashedModel.setIcon(); -// } - store.add(versioningFiles); activeButtonsOnNotEmtpy(store.getModels().size()>0); } @@ -350,8 +313,7 @@ public class VersioningInfoContainer extends LayoutContainer { * @param isNotEmpty the is not empty */ private void activeButtonsOnNotEmtpy(boolean isNotEmpty) { - buttonRestoreAll.setEnabled(isNotEmpty); - buttonEmptyTrash.setEnabled(isNotEmpty); + buttonEmptyVersions.setEnabled(isNotEmpty); } /** @@ -362,6 +324,7 @@ public class VersioningInfoContainer extends LayoutContainer { protected void activeButtonOnSelection(boolean bool) { buttonDelete.setEnabled(bool); buttonRestore.setEnabled(bool); + buttonDownload.setEnabled(bool); } /** diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/WindowVersioning.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/WindowVersioning.java index be3989b..e903f0d 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/WindowVersioning.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/WindowVersioning.java @@ -7,6 +7,7 @@ import org.gcube.portlets.user.workspace.client.AppController; import org.gcube.portlets.user.workspace.client.ConstantsExplorer; import org.gcube.portlets.user.workspace.client.event.UpdateWorkspaceSizeEvent; import org.gcube.portlets.user.workspace.client.model.FileModel; +import org.gcube.portlets.user.workspace.client.model.FileVersionModel; import org.gcube.portlets.user.workspace.client.resources.Resources; import org.gcube.portlets.user.workspace.shared.WorkspaceVersioningOperation; @@ -34,7 +35,7 @@ import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; */ public class WindowVersioning extends Window { - private List versionedFile; + private List versionedFiles; private VersioningInfoContainer versioningContainer; private HorizontalPanel hpItemsNumber; private Label labelItemsNumber = new Label(); @@ -170,10 +171,10 @@ public class WindowVersioning extends Window { * * @param versioningFiles the versioning files */ - public void updateVersioningContainer(List versioningFiles) { + public void updateVersioningContainer(List versioningFiles) { this.versioningContainer.resetStore(); - this.versionedFile = versioningFiles; + this.versionedFiles = versioningFiles; this.versioningContainer.updateVersions(versioningFiles); } @@ -197,13 +198,14 @@ public class WindowVersioning extends Window { this.unmask(); } + /** - * Gets the versions of file. + * Gets the versions. * - * @return the versions of file + * @return the versions */ - public List getVersionsOfFile() { - return versionedFile; + public List getVersions() { + return versionedFiles; } /**