package org.gcube.portlets.user.workspace.client.view.toolbars; 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; import org.gcube.portlets.user.workspace.client.event.ActiveGroupingView; import org.gcube.portlets.user.workspace.client.event.AddFolderEvent; import org.gcube.portlets.user.workspace.client.event.DeleteItemEvent; import org.gcube.portlets.user.workspace.client.event.DoubleClickElementSelectedEvent; 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.FileUploadEvent.UploadType; 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.ImagePreviewEvent; import org.gcube.portlets.user.workspace.client.event.OpenReportsEvent; import org.gcube.portlets.user.workspace.client.event.RenameItemEvent; import org.gcube.portlets.user.workspace.client.event.WebDavUrlEvent; import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum; 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.resources.Resources; import org.gcube.portlets.user.workspace.client.view.grids.GxtGridFilterGroupPanel; import com.extjs.gxt.ui.client.Style.ButtonArrowAlign; import com.extjs.gxt.ui.client.Style.ButtonScale; import com.extjs.gxt.ui.client.Style.IconAlign; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; 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; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * */ public class GxtToolBarItemFunctionality { private Button btnAddFolder = null; private Button btnRemoveItem = null; private Button btnRenameItem = null; private Button btnUploadFile = null; private Button btnUploadArchive = null; private Button btnDownloadFile = null; private Button btnOpen = null; private Button btnAccessFromDesktop = null; private ToggleButton toggleGroup = new ToggleButton(); private ToggleButton toggleList = new ToggleButton(); private ToggleButton toggleIcon = new ToggleButton(); private GxtGridFilterGroupPanel gridGroupViewContainer; private ToolBar toolBar = new ToolBar(); private Button btnPreview; private ToggleButton btnGridView; // private Button btnGetInfo; private Button btnGetSharedLink; private Button btnPublicLink; public GxtToolBarItemFunctionality() { initToolBar(); addSelectionListenersOnToolBar(); } public GxtToolBarItemFunctionality(GxtGridFilterGroupPanel gridFilterGroupContainer) { this(); this.gridGroupViewContainer = gridFilterGroupContainer; } private void initToolBar() { btnGridView = new ToggleButton("Category View", Resources.getIconGridView()); btnGridView.setScale(ButtonScale.SMALL); btnGridView.setIconAlign(IconAlign.TOP); btnGridView.toggle(true); btnGridView.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnGridView); toolBar.add(new SeparatorToolItem()); btnAddFolder = new Button(ConstantsPortlet.ADDFOLDER,Resources.getIconAddFolder()); btnAddFolder.setScale(ButtonScale.SMALL); btnAddFolder.setIconAlign(IconAlign.TOP); btnAddFolder.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnAddFolder); btnUploadFile = new Button(ConstantsPortlet.UPLOADFILE, Resources.getIconFileUpload()); btnUploadFile.setScale(ButtonScale.SMALL); btnUploadFile.setIconAlign(IconAlign.TOP); btnUploadFile.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnUploadFile); toolBar.add(new SeparatorToolItem()); // btnGetInfo = new Button("Info", Resources.getIconInfo()); // btnGetInfo.setScale(ButtonScale.SMALL); // btnGetInfo.setIconAlign(IconAlign.TOP); // btnGetInfo.setArrowAlign(ButtonArrowAlign.BOTTOM); // // toolBar.add(btnGetInfo); // toolBar.add(new SeparatorToolItem()); btnRemoveItem = new Button(ConstantsPortlet.REMOVEITEM, Resources.getIconDeleteItem()); btnRemoveItem.setScale(ButtonScale.SMALL); btnRemoveItem.setIconAlign(IconAlign.TOP); btnRemoveItem.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnRemoveItem); // toolBar.add(new SeparatorToolItem()); // toolBar.add(new SeparatorToolItem()); btnRenameItem = new Button(ConstantsPortlet.RENAMEITEM, Resources.getIconRenameItem()); btnRenameItem.setScale(ButtonScale.SMALL); btnRenameItem.setIconAlign(IconAlign.TOP); btnRenameItem.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnRenameItem); btnDownloadFile = new Button(ConstantsPortlet.DOWNLOADITEM,Resources.getIconDownload()); btnDownloadFile.setScale(ButtonScale.SMALL); btnDownloadFile.setIconAlign(IconAlign.TOP); btnDownloadFile.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnDownloadFile); btnPreview = new Button(ConstantsPortlet.PREVIEW ,Resources.getIconPreview()); btnPreview.setScale(ButtonScale.SMALL); btnPreview.setIconAlign(IconAlign.TOP); btnPreview.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnPreview); btnOpen = new Button(ConstantsPortlet.OPEN ,Resources.getIconShow()); btnOpen.setScale(ButtonScale.SMALL); btnOpen.setIconAlign(IconAlign.TOP); btnOpen.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnOpen); // toolBar.add(new SeparatorToolItem()); toolBar.add(new SeparatorToolItem()); btnGetSharedLink = new Button("Get Link", Resources.getIconShareLink()); btnGetSharedLink.setScale(ButtonScale.SMALL); btnGetSharedLink.setIconAlign(IconAlign.TOP); btnGetSharedLink.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnGetSharedLink); btnPublicLink = new Button("Public Link", Resources.getIconPublicLink()); btnPublicLink.setScale(ButtonScale.SMALL); btnPublicLink.setIconAlign(IconAlign.TOP); btnPublicLink.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnPublicLink); toolBar.add(new SeparatorToolItem()); btnAccessFromDesktop = new Button(ConstantsPortlet.TITLEACCESSWEBDAV, Resources.getIconWebDav()); btnAccessFromDesktop.setScale(ButtonScale.SMALL); btnAccessFromDesktop.setIconAlign(IconAlign.TOP); btnAccessFromDesktop.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnAccessFromDesktop); toolBar.add(new SeparatorToolItem()); // toolBar.add(new SeparatorToolItem()); // toolBar.add(new SeparatorToolItem()); btnUploadArchive = new Button(ConstantsPortlet.UPLOADARCHIVE, Resources.getIconArchiveUpload()); btnUploadArchive.setScale(ButtonScale.SMALL); btnUploadArchive.setIconAlign(IconAlign.TOP); btnUploadArchive.setArrowAlign(ButtonArrowAlign.BOTTOM); toolBar.add(btnUploadArchive); // toolBar.add(new SeparatorToolItem()); // toolBar.add(new SeparatorToolItem()); //TODO OLD CODE toggleGroup = new ToggleButton(); toggleGroup.setIcon(Resources.getIconToggleGroup()); toggleGroup.setToggleGroup("viewgrid"); toggleGroup.toggle(true); toggleIcon = new ToggleButton(); toggleIcon.setIcon(Resources.getIconToggleIcon()); toggleIcon.setToggleGroup("viewgrid"); toggleList = new ToggleButton(); toggleList.setIcon(Resources.getIconToggleList()); toggleList.setToggleGroup("viewgrid"); switchView(ViewSwitchTypeInResult.Group); // toolBar.add(new FillToolItem()); this.activeButtonsOnSelectForOperation(null, false); } public void toggleGridViewButton(boolean toogle){ btnGridView.toggle(toogle); } private void addSelectionListenersOnToolBar() { btnAddFolder.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { AppController.getEventBus().fireEvent( new AddFolderEvent(gridGroupViewContainer .getCurrentFolderView(), null)); } }); btnGridView.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { AppController.getEventBus().fireEvent(new ActiveGroupingView(btnGridView.isPressed())); } }); btnRemoveItem.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); AppController.getEventBus().fireEvent( new DeleteItemEvent(fileGridModel)); } }); btnGetSharedLink.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); AppController.getEventBus().fireEvent(new GetShareLinkEvent(fileGridModel)); } }); btnPublicLink.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); AppController.getEventBus().fireEvent(new GetPublicLinkEvent(fileGridModel)); } }); // btnGetInfo.addSelectionListener(new SelectionListener() { // // @Override // public void componentSelected(ButtonEvent ce) { // // final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); // // AppController.getEventBus().fireEvent(new GetInfoEvent(fileGridModel)); // // } // }); btnRenameItem.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); AppController.getEventBus().fireEvent( new RenameItemEvent(fileGridModel)); } }); btnUploadFile.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); if(fileGridModel!=null) AppController.getEventBus().fireEvent(new FileUploadEvent(fileGridModel.getParentFileModel(), UploadType.FILE)); else AppController.getEventBus().fireEvent(new FileUploadEvent(null, UploadType.FILE)); } }); btnUploadArchive.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); if(fileGridModel!=null) AppController.getEventBus().fireEvent(new FileUploadEvent(fileGridModel.getParentFileModel(), UploadType.ARCHIVE)); else AppController.getEventBus().fireEvent(new FileUploadEvent(null, UploadType.ARCHIVE)); } }); btnDownloadFile.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); AppController.getEventBus().fireEvent(new FileDownloadEvent(fileGridModel.getIdentifier(), fileGridModel.getName(), DownloadType.DOWNLOAD)); } }); btnPreview.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); AppController.getEventBus().fireEvent(new ImagePreviewEvent(fileGridModel, ce.getClientX(), ce.getClientY()+100)); } }); btnOpen.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem(); if(fileGridModel!=null){ if(fileGridModel.isDirectory()) AppController.getEventBus().fireEvent(new DoubleClickElementSelectedEvent(fileGridModel)); else if(fileGridModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.REPORT) || fileGridModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.REPORT_TEMPLATE)) AppController.getEventBus().fireEvent(new OpenReportsEvent(fileGridModel)); else AppController.getEventBus().fireEvent(new FileDownloadEvent(fileGridModel.getIdentifier(), fileGridModel.getName(), DownloadType.SHOW)); } } }); btnAccessFromDesktop.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { AppController.getEventBus().fireEvent(new WebDavUrlEvent(null)); } }); toggleGroup.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { if (toggleGroup.isPressed()) { switchView(ViewSwitchTypeInResult.Group); } // Window.alert("ViewSwitchTypeInResult.Group"); } }); toggleList.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { if (toggleList.isPressed()) { switchView(ViewSwitchTypeInResult.List); } // Window.alert("ViewSwitchTypeInResult.List"); } }); toggleIcon.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { if (toggleIcon.isPressed()) { switchView(ViewSwitchTypeInResult.Icons); } } }); } private void switchView(ViewSwitchTypeInResult type) { // if (type.compareTo(ViewSwitchTypeInResult.Icons) == 0) { // this.gridFilterViewContainer.setVisible(false); // this.gridGroupViewContainer.setVisible(false); // this.iconsViewContainer.setVisible(true); // // } else{ // if (type.compareTo(ViewSwitchTypeInResult.List) == 0) { // // this.iconsViewContainer.setVisible(false); // this.gridGroupViewContainer.setVisible(false); // this.gridFilterViewContainer.setVisible(true); // } // else{ // this.iconsViewContainer.setVisible(false); // this.gridFilterViewContainer.setVisible(false); // this.gridGroupViewContainer.setVisible(true); // } // } } public void activeButtonsOnSelectForOperation(FileModel target, boolean active) { this.btnPreview.disable(); this.btnPublicLink.disable(); this.btnOpen.enable(); if(target!=null){ if(active & target.getGXTFolderItemType()!=null){ switch(target.getGXTFolderItemType()){ case EXTERNAL_IMAGE: // contextMenu.getItemByItemId(ConstantsExplorer.PRW).setVisible(true); this.btnPreview.enable(); this.btnPublicLink.enable(); break; case EXTERNAL_FILE: this.btnPublicLink.enable(); break; case EXTERNAL_PDF_FILE: this.btnPublicLink.enable(); break; case EXTERNAL_URL: // contextMenu.getItemByItemId(ConstantsExplorer.LNK).setVisible(true); break; case REPORT_TEMPLATE: // contextMenu.getItemByItemId(ConstantsExplorer.ORT).setVisible(true); break; case REPORT: break; case QUERY: break; case TIME_SERIES: break; case PDF_DOCUMENT: break; case IMAGE_DOCUMENT: this.btnPreview.enable(); break; case DOCUMENT: break; case URL_DOCUMENT: // contextMenu.getItemByItemId(ConstantsExplorer.LNK).setVisible(true); break; case METADATA: break; case WORKFLOW_REPORT: break; case WORKFLOW_TEMPLATE: break; default: } } //HANDLER SharedLink if(target.isShared()) activeButtonForSharing(active); else activeButtonForSharing(false); } activeButtons(active); } private void activeButtons(boolean active){ if (!active) { this.btnRemoveItem.disable(); this.btnRenameItem.disable(); this.btnDownloadFile.disable(); this.btnOpen.disable(); // this.btnGetInfo.disable(); // this.btnGetSharedLink.disable(); } else { this.btnRemoveItem.enable(); this.btnRenameItem.enable(); this.btnDownloadFile.enable(); this.btnOpen.enable(); // this.btnGetInfo.enable(); } } public void activeButtonForSharing(boolean active){ this.btnGetSharedLink.setEnabled(active); } public void activeAllButtonWithoutGroupView(boolean active){ btnRemoveItem.setEnabled(active); btnRenameItem.setEnabled(active); btnGetSharedLink.setEnabled(active); // btnGetInfo.setEnabled(active); btnDownloadFile.setEnabled(active); btnPreview.setEnabled(active); btnOpen.setEnabled(active); btnPublicLink.setEnabled(active); } public ToolBar getToolBar() { return this.toolBar; } }