package org.gcube.portlets.user.workspace.client; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import org.gcube.portlets.user.workspace.client.event.AddFolderEvent; import org.gcube.portlets.user.workspace.client.event.AddFolderEventHandler; import org.gcube.portlets.user.workspace.client.event.AddSmartFolderEvent; import org.gcube.portlets.user.workspace.client.event.AddSmartFolderEventHandler; import org.gcube.portlets.user.workspace.client.event.BulkCreatorEvent; import org.gcube.portlets.user.workspace.client.event.BulkCreatorEventHandler; import org.gcube.portlets.user.workspace.client.event.CompletedFileUploadEvent; import org.gcube.portlets.user.workspace.client.event.CompletedFileUploadEventHandler; import org.gcube.portlets.user.workspace.client.event.CreateSharedFolderEvent; import org.gcube.portlets.user.workspace.client.event.CreateSharedFolderEventHandler; import org.gcube.portlets.user.workspace.client.event.CreateUrlEvent; import org.gcube.portlets.user.workspace.client.event.CreateUrlEventHandler; import org.gcube.portlets.user.workspace.client.event.DeleteBulkEvent; import org.gcube.portlets.user.workspace.client.event.DeleteBulkEventHandler; import org.gcube.portlets.user.workspace.client.event.DeleteItemEvent; import org.gcube.portlets.user.workspace.client.event.DeleteItemEventHandler; import org.gcube.portlets.user.workspace.client.event.DeleteMessageEvent; import org.gcube.portlets.user.workspace.client.event.DeleteMessageEventHandler; import org.gcube.portlets.user.workspace.client.event.DeleteSmartFolderEvent; import org.gcube.portlets.user.workspace.client.event.DeleteSmartFolderEventHandler; import org.gcube.portlets.user.workspace.client.event.ExpandFolderEvent; import org.gcube.portlets.user.workspace.client.event.ExpandFolderEventHandler; 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.FileDownloadEventHandler; 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.FileUploadEventHandler; import org.gcube.portlets.user.workspace.client.event.FilterScopeEvent; import org.gcube.portlets.user.workspace.client.event.FilterScopeEventHandler; import org.gcube.portlets.user.workspace.client.event.ImagePreviewEvent; import org.gcube.portlets.user.workspace.client.event.ImagePreviewEventHandler; import org.gcube.portlets.user.workspace.client.event.MoveItemEvent; import org.gcube.portlets.user.workspace.client.event.MoveItemEventHandler; import org.gcube.portlets.user.workspace.client.event.OpenContextMenuTreeEvent; import org.gcube.portlets.user.workspace.client.event.OpenContextMenuTreeEventHandler; import org.gcube.portlets.user.workspace.client.event.OpenMessageEvent; import org.gcube.portlets.user.workspace.client.event.OpenMessageEventHandler; import org.gcube.portlets.user.workspace.client.event.OpenReportsEvent; import org.gcube.portlets.user.workspace.client.event.OpenReportsEventHandler; import org.gcube.portlets.user.workspace.client.event.OpenUrlEvent; import org.gcube.portlets.user.workspace.client.event.OpenUrlEventHandler; import org.gcube.portlets.user.workspace.client.event.PasteItemEvent; import org.gcube.portlets.user.workspace.client.event.PasteItemEventHandler; 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.RefreshItemEventHandler; 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.RenderForm; import org.gcube.portlets.user.workspace.client.event.RenderFormEventHandler; import org.gcube.portlets.user.workspace.client.event.SaveAttachmentsEvent; import org.gcube.portlets.user.workspace.client.event.SaveAttachmentsEventHandler; import org.gcube.portlets.user.workspace.client.event.SelectedItemEvent; import org.gcube.portlets.user.workspace.client.event.SelectedItemEventHandler; import org.gcube.portlets.user.workspace.client.event.SendMessageEvent; import org.gcube.portlets.user.workspace.client.event.SendMessageEventHandler; import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEvent; import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEventHandler; import org.gcube.portlets.user.workspace.client.event.SubTreeLoadedEvent; import org.gcube.portlets.user.workspace.client.event.SubTreeLoadedEventHandler; import org.gcube.portlets.user.workspace.client.event.SwitchViewEvent; import org.gcube.portlets.user.workspace.client.event.SwitchViewEventHandler; import org.gcube.portlets.user.workspace.client.event.UnShareFolderEvent; import org.gcube.portlets.user.workspace.client.event.UnShareFolderEventHandler; 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.GuiEventInterface; import org.gcube.portlets.user.workspace.client.interfaces.SubscriberInterface; import org.gcube.portlets.user.workspace.client.interfaces.TreeAppControllerInterface; import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FolderModel; import org.gcube.portlets.user.workspace.client.model.MessageModel; import org.gcube.portlets.user.workspace.client.model.SmartFolderModel; import org.gcube.portlets.user.workspace.client.model.SubTree; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceServiceAsync; import org.gcube.portlets.user.workspace.client.util.PollingWorkspace; import org.gcube.portlets.user.workspace.client.view.BasicDNDExample; import org.gcube.portlets.user.workspace.client.view.ExplorerPanel; import org.gcube.portlets.user.workspace.client.view.sharing.DialogShareFolder; import org.gcube.portlets.user.workspace.client.view.tree.AsyncTreePanel; import org.gcube.portlets.user.workspace.client.view.windows.BulkCreatorWindow; import org.gcube.portlets.user.workspace.client.view.windows.DialogAddFolderAndSmart; import org.gcube.portlets.user.workspace.client.view.windows.DialogAddFolderAndSmart.AddType; import org.gcube.portlets.user.workspace.client.view.windows.DialogAddUrl; import org.gcube.portlets.user.workspace.client.view.windows.DialogText; import org.gcube.portlets.user.workspace.client.view.windows.DialogUpload; import org.gcube.portlets.user.workspace.client.view.windows.DialogWebDavUrl; 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.client.view.windows.WindowImagePreview; import org.gcube.portlets.user.workspace.client.view.windows.WindowOpenUrl; import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem; import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage; import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalUrl; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTImageDocument; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTUrlDocument; import com.extjs.gxt.ui.client.Registry; import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.Events; 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.google.gwt.core.client.GWT; import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HasWidgets; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * */ public class AppControllerExplorer implements EventHandler, TreeAppControllerInterface{ public static final GWTWorkspaceServiceAsync rpcWorkspaceService = (GWTWorkspaceServiceAsync) GWT.create(GWTWorkspaceService.class); // public static final GWTWorkspaceServiceAsync rpcWorkspaceService = (GWTWorkspaceServiceAsync) Registry.get(ConstantsExplorer.RPC_WORKSPACE_SERVICE); private ExplorerPanel explorerPanel; private final static HandlerManager eventBus = new HandlerManager(null); private HashMap> subscribers = null; private boolean selectRootItem; public AppControllerExplorer() { Registry.register(ConstantsExplorer.RPC_WORKSPACE_SERVICE, rpcWorkspaceService); subscribers = new HashMap>(); bind(); } public AppControllerExplorer getInstance() { return this; } public static HandlerManager getEventBus() { return eventBus; } // public WorkspaceFileServiceAsync getRpcService() { // return rpcService; // } public GWTWorkspaceServiceAsync getRpcWorkspaceService() { return rpcWorkspaceService; } private void bind() { eventBus.addHandler(RenderForm.TYPE, new RenderFormEventHandler() { @Override public void onRenderForm(RenderForm event) { } }); eventBus.addHandler(UnShareFolderEvent.TYPE,new UnShareFolderEventHandler() { @Override public void onUnShareFolder(UnShareFolderEvent unShareFolderEvent) { final FileModel source = unShareFolderEvent.getTargetFileModel(); String folderId = null; if(source!=null) folderId = source.getIdentifier(); if(folderId!=null){ rpcWorkspaceService.unSharedFolderByFolderSharedId(folderId, new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR+" un share folder. "+ ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(Boolean result) { if(result) eventBus.fireEvent(new RefreshFolderEvent(source.getParentFileModel())); } }); } } }); eventBus.addHandler(CreateSharedFolderEvent.TYPE, new CreateSharedFolderEventHandler() { @Override public void onCreateSharedFolder(CreateSharedFolderEvent createSharedFolderEvent) { final FileModel sourceFileModel = createSharedFolderEvent.getFileSourceModel(); System.out.println("##########sourceFileModel id "+sourceFileModel.getIdentifier()); final FileModel parentFileModel= createSharedFolderEvent.getParentFileModel(); final boolean isNewFolder = createSharedFolderEvent.isNewFolder(); DialogShareFolder dialogSharedFolder = null; String parentDirectoryName = null; FolderModel parent = null; if(sourceFileModel.isDirectory()){ // explorerPanel.getAsycTreePanel().setExpandTreeLevel(sourceFileModel.getIdentifier(), true); parentDirectoryName = sourceFileModel.getName(); parent = (FolderModel) sourceFileModel; } else{ parentDirectoryName = parentFileModel.getName(); parent = (FolderModel) parentFileModel; } if(isNewFolder) dialogSharedFolder = new DialogShareFolder(parentDirectoryName,eventBus); else dialogSharedFolder = new DialogShareFolder(parentDirectoryName, (FolderModel) sourceFileModel, eventBus); final DialogShareFolder finalDialog = dialogSharedFolder; final FolderModel parentModel = parent; finalDialog.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { @Override public void handleEvent(BaseEvent be) { if(finalDialog.isValidForm(true)){ FolderModel folderModel = null; if(isNewFolder){ folderModel = new FolderModel("tempId", finalDialog.getName(), parentModel, true, false); //create new shared folder } else{ folderModel = finalDialog.getFolder(); //add user for share } System.out.println("##########sourceFileModel id "+folderModel.getIdentifier()); rpcWorkspaceService.shareFolder(folderModel, finalDialog.getSharedListUsers(), isNewFolder, new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR+" creating shared folder. "+ caught.getMessage(), null); } @Override public void onSuccess(Boolean result) { if(result) eventBus.fireEvent(new RefreshFolderEvent(parentFileModel)); } }); } } }); } }); //********EVENTS TO NOTIFY SUBSCRIBERS eventBus.addHandler(SubTreeLoadedEvent.TYPE, new SubTreeLoadedEventHandler() { @Override public void onSubTreeLoaded(SubTreeLoadedEvent event) { doSubTreeLoaded(event); } private void doSubTreeLoaded(SubTreeLoadedEvent event) { notifySubscriber(event); } }); eventBus.addHandler(WebDavUrlEvent.TYPE, new WebDavUrlEventHandler() { @Override public void onClickWebDavUrl(WebDavUrlEvent webDavUrlEvent) { String itemIdentifier = webDavUrlEvent.getItemIdentifier(); if(itemIdentifier==null) itemIdentifier = explorerPanel.getAsycTreePanel().getRootItem().getIdentifier(); rpcWorkspaceService.getUrlWebDav(itemIdentifier, new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR+" viewing WebDAV url"+ ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(String url) { // new MessageBoxInfo(ConstantsExplorer.URL_WEBDAV, url); DialogWebDavUrl diag = new DialogWebDavUrl(ConstantsExplorer.URL_WEBDAV +": "+ ConstantsExplorer.TITLEACCESSWEBDAV, "", url); diag.selectTxt(); } }); } }); eventBus.addHandler(DeleteBulkEvent.TYPE, new DeleteBulkEventHandler() { @Override public void onDeleteBulk(final DeleteBulkEvent deleteBulkEvent) { rpcWorkspaceService.deleteBulk(deleteBulkEvent.getBulkId(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR+ "deleting bulk "+ ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(Boolean result) { if(result) BulkCreatorWindow.getInstance().removeProgress(deleteBulkEvent.getBulkId()); } }); } }); eventBus.addHandler(RefreshFolderEvent.TYPE, new RefreshItemEventHandler() { @Override public void onRefreshItem(RefreshFolderEvent refreshtemEvent) { explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(refreshtemEvent.getFolderTarget().getIdentifier()); notifySubscriber(refreshtemEvent); } }); eventBus.addHandler(OpenContextMenuTreeEvent.TYPE, new OpenContextMenuTreeEventHandler() { @Override public void onOpenContextMenuTree(OpenContextMenuTreeEvent openContextMenuTreeEvent) { explorerPanel.getAsycTreePanel().getContextMenuTree().openContextMenuOnItem(openContextMenuTreeEvent.getTargetFileModel(), openContextMenuTreeEvent.getClientX(), openContextMenuTreeEvent.getClientY()); } }); eventBus.addHandler(BulkCreatorEvent.TYPE, new BulkCreatorEventHandler() { @Override public void onBulkCreator(BulkCreatorEvent bulkCreatorEvent) { boolean isLoading = BulkCreatorWindow.getInstance().addProgressBar(bulkCreatorEvent.getListBulks()); explorerPanel.setLoadingBulk(isLoading); } }); eventBus.addHandler(PasteItemEvent.TYPE, new PasteItemEventHandler() { @Override public void onCopyAndPaste(PasteItemEvent pasteItemEvent) { doCopyAndPaste(pasteItemEvent); } private void doCopyAndPaste(final PasteItemEvent pasteItemEvent) { rpcWorkspaceService.copyItem(pasteItemEvent.getItemId(), pasteItemEvent.getFolderDestinationId(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" copying item " + ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(Boolean result) { if(result) eventBus.fireEvent(new RefreshFolderEvent(explorerPanel.getAsycTreePanel().getFileModelByIdentifier(pasteItemEvent.getFolderDestinationId()))); // explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(pasteItemEvent.getFolderDestinationId()); } }); } }); eventBus.addHandler(DeleteMessageEvent.TYPE, new DeleteMessageEventHandler() { @Override public void onDeleteMessage(DeleteMessageEvent deleteMessageEvent) { doDeleteMessage(deleteMessageEvent); } private void doDeleteMessage(final DeleteMessageEvent deleteMessageEvent) { rpcWorkspaceService.deleteMessage(deleteMessageEvent.getMessageTarget().getId(), deleteMessageEvent.getMessageTarget().getMessageType(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" deleting message. " + ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(Boolean result) { if(result) notifySubscriber(deleteMessageEvent); } }); } }); eventBus.addHandler(SaveAttachmentsEvent.TYPE, new SaveAttachmentsEventHandler() { @Override public void onSaveAttachments(SaveAttachmentsEvent saveAttachmentsEvent) { final InfoDisplay saving = new InfoDisplay("Info","saving in progress..."); rpcWorkspaceService.saveAttachments(saveAttachmentsEvent.getMessageIdentifier(), saveAttachmentsEvent.getMessageType(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" saving attachments. " + ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(Boolean result) { if(saving.isAttached()) saving.hide(); if(result){ new InfoDisplay("Info","Message attachments has been saved"); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } } }); } }); eventBus.addHandler(PreviewMessageEvent.TYPE, new PreviewMessageEventHandler() { @Override public void onPreviewMessage(PreviewMessageEvent previewMessageEvent) { doPreviewMessage(previewMessageEvent); } private void doPreviewMessage(final PreviewMessageEvent previewMessageEvent) { rpcWorkspaceService.getMessageById(previewMessageEvent.getMessageIdentifier(), previewMessageEvent.getMessageType(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " opening message." + ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(MessageModel message) { // String headerTitle = ConstantsExplorer.MESSAGE_SENT_IN_DATE +": " +message.getDate() + " by "+ message.getFromLogin(); // new SendMessage(result.getId(), headerTitle, result.getSubject(), result.getTextMessage(), result.getListAttachments(), result.getListContactsToString()); previewMessageEvent.setMessage(message); notifySubscriber(previewMessageEvent); } }); } }); eventBus.addHandler(OpenMessageEvent.TYPE, new OpenMessageEventHandler() { @Override public void onOpenMessage(OpenMessageEvent openMessageEvent) { doOpenMessage(openMessageEvent); } private void doOpenMessage(final OpenMessageEvent openMessageEvent) { rpcWorkspaceService.getMessageById(openMessageEvent.getMessageIdentifier(), openMessageEvent.getMessageType(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " opening message. " +ConstantsExplorer.TRY_AGAIN, null); } @Override public void onSuccess(MessageModel result) { //Commented for Massi // if(openMessageEvent.getOpenType().equals(OpenType.REPLY)) //// new SendMessage(result, MessageOperationType.OPEN); //OPEN MESSAGE //// notifySubscriber(openMessageEvent); // else{ // openMessageEvent.setMessage(result); //// notifySubscriber(openMessageEvent); //// new SendMessage(result, MessageOperationType.FORWARD); // } openMessageEvent.setMessage(result); //This fill item text and list contact notifySubscriber(openMessageEvent); } }); } }); eventBus.addHandler(SwitchViewEvent.TYPE, new SwitchViewEventHandler() { @Override public void onSwitchView(SwitchViewEvent switchViewEvent) { notifySubscriber(switchViewEvent); } }); eventBus.addHandler(SendMessageEvent.TYPE, new SendMessageEventHandler() { @Override public void onSendMessage(SendMessageEvent sendMessageEvent) { notifySubscriber(sendMessageEvent); } }); eventBus.addHandler(FilterScopeEvent.TYPE, new FilterScopeEventHandler() { @Override public void onClickScopeFilter(FilterScopeEvent filterScopeEvent) { explorerPanel.getAsycTreePanel().setSearch(false); //SET IS SEARCH FALSE doChangeScope(filterScopeEvent.getScopeId()); } private void doChangeScope(String scopeId) { explorerPanel.getAsycTreePanel().loadRootItem(scopeId,selectRootItem); // RELOAD ROOT BY SCOPE explorerPanel.getSmartFolderPanel().reloadPanelSmartFolder(); //RELOAD SMART FOLDER } }); eventBus.addHandler(FileDownloadEvent.TYPE, new FileDownloadEventHandler() { @Override public void onFileDownloadEvent(FileDownloadEvent fileDownloadEvent) { if(fileDownloadEvent.getItemIdentifier()!=null){ if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)){ if(fileDownloadEvent.getItemName()!= null) com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true", fileDownloadEvent.getItemName(), ""); } else com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier(), "_self", ""); } // FileModel fileModel = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(fileDownloadEvent.getItemIdentifier()); // // if(fileModel!=null){ // if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)) // com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileModel.getIdentifier()+"&viewContent=true", fileModel.getName(), ""); // else // com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileModel.getIdentifier(), "", ""); // } } }); eventBus.addHandler(FileUploadEvent.TYPE, new FileUploadEventHandler() { @Override public void onFileUploadEvent(FileUploadEvent fileUploadEvent) { doFileUploadEvent(fileUploadEvent); } private void doFileUploadEvent(FileUploadEvent fileUploadEvent) { FileModel folder = fileUploadEvent.getParentFileModel(); if(folder == null) folder = getSelectedFolderInTree(); if(fileUploadEvent.getUploadTypeToString().equals(UploadType.ARCHIVE.toString())) new DialogUpload(ConstantsExplorer.ARCHIVEUPLOADHEADER, folder.getName(), folder, ConstantsExplorer.ARCHIVE); else new DialogUpload(ConstantsExplorer.FILEUPLOADHEADER, folder.getName(), folder, ConstantsExplorer.FILE); // notifySubscriber(fileUploadEvent); } }); eventBus.addHandler(CompletedFileUploadEvent.TYPE, new CompletedFileUploadEventHandler() { @Override public void onCompletedFileUploadEvent(CompletedFileUploadEvent completedFileUploadEvent) { doCompletedFileUploadEvent(completedFileUploadEvent); } private void doCompletedFileUploadEvent(CompletedFileUploadEvent completedFileUploadEvent) { // explorerPanel.getAsycTreePanel().reloadAndSelectTreeLevelFromWorkspaceForUplaod(completedFileUploadEvent.getParentFileModel().getIdentifier()); explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(completedFileUploadEvent.getParentFileModel().getIdentifier()); notifySubscriber(completedFileUploadEvent); } }); eventBus.addHandler(DeleteSmartFolderEvent.TYPE, new DeleteSmartFolderEventHandler() { @Override public void onDeleteItem(DeleteSmartFolderEvent deleteSmartFolderEvent) { doDeleteSmartFolder(deleteSmartFolderEvent); } private void doDeleteSmartFolder(DeleteSmartFolderEvent deleteSmartFolderEvent) { final String smartIdentifier = deleteSmartFolderEvent.getSmartIdentifier(); final String smartName = deleteSmartFolderEvent.getSmartName(); MessageBoxConfirm mbc = new MessageBoxConfirm(ConstantsExplorer.MESSAGE_DELETE, ConstantsExplorer.MESSAGE_CONFIRM_DELETE_SMART_FOLDER + " "+ smartName +"?"); 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)){ rpcWorkspaceService.removeSmartFolder(smartIdentifier, smartName, new AsyncCallback() { @Override public void onSuccess(Boolean result) { if(result) explorerPanel.getSmartFolderPanel().removeSmartFolder(smartIdentifier); } @Override public void onFailure(Throwable caught) { // explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " deleting smart folder. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } }); } } }); } }); eventBus.addHandler(AddSmartFolderEvent.TYPE, new AddSmartFolderEventHandler() { @Override public void onSaveSmartFolder(AddSmartFolderEvent saveSmartFolderEvent) { doSaveSmartFolder(saveSmartFolderEvent); } private void doSaveSmartFolder(final AddSmartFolderEvent saveSmartFolderEvent) { final String query = saveSmartFolderEvent.getSearchText(); final DialogAddFolderAndSmart dialogAddSmartFolder = new DialogAddFolderAndSmart("", AddType.SMARTFOLDER); dialogAddSmartFolder.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { @Override public void handleEvent(BaseEvent be) { if(dialogAddSmartFolder.isValidForm()) rpcWorkspaceService.createSmartFolder(dialogAddSmartFolder.getName(), dialogAddSmartFolder.getDescription(), query, new AsyncCallback() { @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " saving smart folder. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(SmartFolderModel smart) { System.out.println("In client: " + smart.getIdentifier()); explorerPanel.getShortuctsPanel().loadSmartFolder(smart); } }); } }); } }); eventBus.addHandler(SmartFolderSelectedEvent.TYPE, new SmartFolderSelectedEventHandler() { @Override public void onSmartFolderSelected(SmartFolderSelectedEvent smartFolderSelectedEvent) { searching(true); System.out.println("Click smart folder : " + smartFolderSelectedEvent.getSmartFolderName()); doSmartFolderSelected(smartFolderSelectedEvent); } private void doSmartFolderSelected(SmartFolderSelectedEvent smartFolderSelectedEvent) { notifySubscriber(smartFolderSelectedEvent); } }); eventBus.addHandler(RenameItemEvent.TYPE, new RenameItemEventHandler() { @Override public void onRenameItem(RenameItemEvent event) { doRenameItem(event); } private void doRenameItem(final RenameItemEvent event) { final FileModel target = event.getFileTarget(); final DialogText dgt = new DialogText(ConstantsExplorer.MESSAGE_RENAME, ConstantsExplorer.MESSAGE_ITEM_NAME, event.getFileTarget().getName()); dgt.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { @Override public void handleEvent(BaseEvent be) { final String newName = dgt.getTxtValue(); if(dgt.isValidForm()){ rpcWorkspaceService.renameItem(target.getIdentifier(), newName, new AsyncCallback(){ @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " renaming item. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(Boolean result) { explorerPanel.getAsycTreePanel().renameItem(target.getIdentifier(), newName, null); event.setNewName(newName); // event.setExtension(extension); notifySubscriber(event); } }); } } }); } }); eventBus.addHandler(DeleteItemEvent.TYPE, new DeleteItemEventHandler() { @Override public void onDeleteItem(DeleteItemEvent event) { doDeleteItem(event); } private void doDeleteItem(final DeleteItemEvent event){ MessageBoxConfirm mbc = new MessageBoxConfirm(ConstantsExplorer.MESSAGE_DELETE, ConstantsExplorer.MESSAGE_CONFIRM_DELETE_ITEM + " "+ event.getFileTarget().getName() +"?"); 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)){ rpcWorkspaceService.removeItem(event.getFileTarget().getIdentifier(), new AsyncCallback(){ @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" deleting item. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(Boolean result) { FileModel fileModel = event.getFileTarget(); if(explorerPanel.getAsycTreePanel().deleteItem(fileModel.getIdentifier())){ explorerPanel.getAsycTreePanel().selectItem(fileModel.getParentFileModel().getIdentifier()); //Select parent of item deleted notifySubscriber(event); } } }); } } }); } }); eventBus.addHandler(SelectedItemEvent.TYPE, new SelectedItemEventHandler() { @Override public void onSelectedItem(SelectedItemEvent selectedItemEvent) { doSelectedItem(selectedItemEvent); } private void doSelectedItem(SelectedItemEvent event) { notifySubscriber(event); } }); eventBus.addHandler(ExpandFolderEvent.TYPE, new ExpandFolderEventHandler() { @Override public void onExpandFolder(ExpandFolderEvent expandFolderEvent) { doExpandFolder(expandFolderEvent); } private void doExpandFolder(ExpandFolderEvent expandFolderEvent) { notifySubscriber(expandFolderEvent); } }); eventBus.addHandler(AddFolderEvent.TYPE, new AddFolderEventHandler() { @Override public void onAddItem(AddFolderEvent event) { doAddItem(event); } private void doAddItem(final AddFolderEvent event) { final FileModel sourceFileModel = event.getFileSourceModel(); final FileModel parentFileModel= event.getParentFileModel(); String directory = null; if(sourceFileModel.isDirectory()){ explorerPanel.getAsycTreePanel().setExpandTreeLevel(sourceFileModel.getIdentifier(), true); directory = sourceFileModel.getName(); } else directory = parentFileModel.getName(); final DialogAddFolderAndSmart dialogAddFolder = new DialogAddFolderAndSmart(directory, AddType.FOLDER); dialogAddFolder.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { @Override public void handleEvent(BaseEvent be) { if(dialogAddFolder.isValidForm()){ if(sourceFileModel.isDirectory()){ // rpcWorkspaceService.createFolder(dialogAddFolder.getName(), dialogAddFolder.getDescription(), sourceFileModel, new AsyncCallback(){ @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" adding item. " + ConstantsExplorer.TRY_AGAIN, null); // explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(FolderModel child) { explorerPanel.getAsycTreePanel().addItem(sourceFileModel.getIdentifier(), child, false); event.setNewFolder(child); notifySubscriber(event); } }); }else{ rpcWorkspaceService.createFolder(dialogAddFolder.getName(), dialogAddFolder.getDescription(), parentFileModel, new AsyncCallback(){ @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " creating folder." + ConstantsExplorer.TRY_AGAIN, null); // explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(FolderModel child) { explorerPanel.getAsycTreePanel().addItem(parentFileModel.getIdentifier(), child, false); event.setNewFolder(child); notifySubscriber(event); } }); } } } }); } }); eventBus.addHandler(MoveItemEvent.TYPE, new MoveItemEventHandler() { @Override public void onMoveItem(final MoveItemEvent event) { rpcWorkspaceService.moveItem(event.getFileSourceModel().getIdentifier(), event.getTargetParentFileModel().getIdentifier(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " moving item. Reload root" , null); System.out.println(caught.getMessage()); explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(event.getTargetParentFileModel().getIdentifier()); } @Override public void onSuccess(Boolean result) { if(result){ explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(event.getTargetParentFileModel().getIdentifier()); notifySubscriber(event); // explorerPanel.getAsycTreePanel().setExpandTreeLevel(event.getTargetParentFileModel(), true); //Expand level drop } } }); } }); eventBus.addHandler(ImagePreviewEvent.TYPE, new ImagePreviewEventHandler() { @Override public void onClickPreview(ImagePreviewEvent imagePreviewEvent) { // System.out.println("x e y " + imagePreviewEvent.getClientX() + " e " + imagePreviewEvent.getClientY()); if(imagePreviewEvent.getClientX() > 0 && imagePreviewEvent.getClientY() > 0) doClickPreview(imagePreviewEvent, imagePreviewEvent.getClientX(), imagePreviewEvent.getClientY() ); else doClickPreview(imagePreviewEvent, 50, 50); } private void doClickPreview(ImagePreviewEvent imagePreviewEvent, final int positionX, final int positionY) { final FileModel fileModel = imagePreviewEvent.getSourceFileModel(); boolean fullDetails = false; rpcWorkspaceService.getImageById(fileModel.getIdentifier(), fileModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.IMAGE_DOCUMENT), fullDetails, new AsyncCallback() { @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " imaging preview. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(GWTWorkspaceItem item) { if(fileModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.IMAGE_DOCUMENT)) new WindowImagePreview(fileModel.getName(), (GWTImageDocument) item, positionX, positionY); else new WindowImagePreview(fileModel.getName(), (GWTExternalImage) item, positionX, positionY); } }); } }); eventBus.addHandler(OpenUrlEvent.TYPE, new OpenUrlEventHandler() { @Override public void onClickUrl(OpenUrlEvent openUrlEvent) { doClickUrl(openUrlEvent); } private void doClickUrl(OpenUrlEvent openUrlEvent) { final FileModel fileModel = openUrlEvent.getSourceFileModel(); rpcWorkspaceService.getUrlById(fileModel.getIdentifier(), fileModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.URL_DOCUMENT), false, new AsyncCallback() { @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " clicking url. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(GWTWorkspaceItem result) { if(fileModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.URL_DOCUMENT)){ new WindowOpenUrl(((GWTUrlDocument) result).getUrl(), "_blank", ""); System.out.println("Url Open " + ((GWTUrlDocument) result).getUrl()); } else{ new WindowOpenUrl(((GWTExternalUrl) result).getUrl(), "_blank", ""); System.out.println("Url Open " + ((GWTExternalUrl) result).getUrl()); } } }); } }); eventBus.addHandler(CreateUrlEvent.TYPE, new CreateUrlEventHandler() { @Override public void onClickCreateUrl(CreateUrlEvent createUrlEvent) { doClickCreateUrl(createUrlEvent); } private void doClickCreateUrl(final CreateUrlEvent createUrlEvent) { final FileModel parent = createUrlEvent.getParentFileModel(); final DialogAddUrl dgu = new DialogAddUrl(parent.getName()); dgu.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { @Override public void handleEvent(BaseEvent be) { if(dgu.isValidForm()){ explorerPanel.getAsycTreePanel().mask(ConstantsExplorer.VALIDATINGOPERATION,ConstantsExplorer.LOADINGSTYLE); rpcWorkspaceService.createExternalUrl(parent, dgu.getName(), dgu.getDescription(), dgu.getUrl(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" creating url. Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(FileModel child) { explorerPanel.getAsycTreePanel().addItem(parent.getIdentifier(), child, false); explorerPanel.getAsycTreePanel().unmask(); notifySubscriber(createUrlEvent); } }); } } }); } }); eventBus.addHandler(OpenReportsEvent.TYPE, new OpenReportsEventHandler() { @Override public void onClickOpenReports(OpenReportsEvent openReportsEvent) { if(openReportsEvent.getSourceFileModel().getGXTFolderItemType().equals(GXTFolderItemTypeEnum.REPORT_TEMPLATE)) doClickOpenReportTemplate(openReportsEvent); else doClickOpenReport(openReportsEvent); } public void doClickOpenReport(OpenReportsEvent openReportsEvent) { // System.out.println("IDREPORT " + ConstantsExplorer.IDREPORT); // System.out.println("id " +openReportsEvent.getSourceFileModel().getIdentifier()); // System.out.println("name " +openReportsEvent.getSourceFileModel().getName()); rpcWorkspaceService.setValueInSession(ConstantsExplorer.IDREPORT, openReportsEvent.getSourceFileModel().getIdentifier(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { // Log.error("Error setting session attribute idreport",caught); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " setting session attribute idreport", null); } @Override public void onSuccess(Void result) { String currentUrl = portalURL(); int last = currentUrl.lastIndexOf("/"); String reportUrl = currentUrl.substring(0,last+1) + ConstantsExplorer.REPORTGENERATION; // Log.trace("Url: "+reportUrl); System.out.println("currentUrl " +currentUrl); System.out.println("reportUrl " +reportUrl); new WindowOpenUrl(reportUrl, "_self", ""); } }); } private void doClickOpenReportTemplate(OpenReportsEvent openReportTemplateEvent) { // System.out.println("IDTEMPLATE " + ConstantsExplorer.IDTEMPLATE); // System.out.println("id " +openReportTemplateEvent.getSourceFileModel().getIdentifier()); // System.out.println("name " +openReportTemplateEvent.getSourceFileModel().getName()); rpcWorkspaceService.setValueInSession(ConstantsExplorer.IDTEMPLATE, openReportTemplateEvent.getSourceFileModel().getIdentifier(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { // Log.error("Error setting session attribute idtemplate",caught); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR +" setting session attribute idtemplate", null); } @Override public void onSuccess(Void result) { String currentUrl = portalURL(); int last = currentUrl.lastIndexOf("/"); String templateUrl = currentUrl.substring(0,last+1) + ConstantsExplorer.TEMPLATECREATION; // Log.trace("Url: "+templateUrl); System.out.println("currentUrl " +currentUrl); System.out.println("reportUrl " +templateUrl); new WindowOpenUrl(templateUrl, "_self", ""); } }); } }); } public static native String portalURL()/*-{ return $wnd.location.href; }-*/; //********END EVENTS TO NOTIFY SUBSCRIBERS //Method Notify Subscriber public void notifySubscriber(GuiEventInterface event) { if (subscribers.containsKey(event.getKey())) for (SubscriberInterface sub : subscribers.get(event.getKey())){ if(event instanceof RenameItemEvent){ RenameItemEvent renameEvent = (RenameItemEvent) event; sub.renameItem(renameEvent.getFileTarget().getIdentifier(), renameEvent.getNewName(), renameEvent.getExtension()); }else if(event instanceof DeleteItemEvent){ DeleteItemEvent deleteEvent = (DeleteItemEvent) event; sub.deleteItem(deleteEvent.getFileTarget().getIdentifier()); }else if(event instanceof SelectedItemEvent){ SelectedItemEvent selectedEvent = (SelectedItemEvent) event; // ArrayList listFileModel = getListParentsByIdentifier(selectedEvent.getFileTarget().getIdentifier()); ArrayList listFileModel = new ArrayList(); FileModel item = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(selectedEvent.getFileTarget().getIdentifier()); listFileModel = getListParents(listFileModel,item); //used for update path bar sub.selectedItem(selectedEvent.getFileTarget(), listFileModel); }else if(event instanceof ExpandFolderEvent){ ExpandFolderEvent expandEvent = (ExpandFolderEvent) event; sub.expandFolderItem(expandEvent.getFolderTarget()); }else if(event instanceof AddFolderEvent){ AddFolderEvent addItemEvent = (AddFolderEvent) event; if(addItemEvent.getFileSourceModel().isDirectory()) sub.addedFolder(addItemEvent.getNewFolder().getIdentifier(), addItemEvent.getFileSourceModel()); else sub.addedFolder(addItemEvent.getNewFolder().getIdentifier(), addItemEvent.getParentFileModel()); }else if(event instanceof SubTreeLoadedEvent){ SubTreeLoadedEvent subTreeEvent = (SubTreeLoadedEvent) event; sub.setParentItemSelected(subTreeEvent.getPathParentsList()); // if(openTreeMenuEvent && isShowTreeMenu==false) // eventBus.fireEvent(new O) }else if(event instanceof SmartFolderSelectedEvent){ SmartFolderSelectedEvent smartEvent = (SmartFolderSelectedEvent) event; sub.smartFolderSelected(smartEvent.getIdSmartFolder(), smartEvent.getCategory()); }else if(event instanceof FileUploadEvent){ // FileUploadEvent fileUpEvent = (FileUploadEvent) event; // sub.addedFile(fileUpEvent.getParentFileModel(), ""); } else if(event instanceof CompletedFileUploadEvent){ CompletedFileUploadEvent fileUpEvent = (CompletedFileUploadEvent) event; sub.addedFile(fileUpEvent.getItemIdentifier(), fileUpEvent.getParentFileModel()); }else if(event instanceof CreateUrlEvent){ CreateUrlEvent createUrlEvent = (CreateUrlEvent) event; sub.addedFile(createUrlEvent.getItemIdentifier(), createUrlEvent.getParentFileModel()); }else if(event instanceof MoveItemEvent){ MoveItemEvent moveItemEvent = (MoveItemEvent) event; sub.movedItems(moveItemEvent.getFileSourceModel().getIdentifier(), moveItemEvent.getTargetParentFileModel()); }else if(event instanceof SwitchViewEvent){ SwitchViewEvent switchView = (SwitchViewEvent) event; sub.switchView(switchView.getType()); }else if(event instanceof RefreshFolderEvent){ RefreshFolderEvent refresh = (RefreshFolderEvent) event; sub.refreshFolder(refresh.getFolderTarget()); }else if(event instanceof SendMessageEvent){ SendMessageEvent messageEvent = (SendMessageEvent) event; // sub.updatePrevieMessage(messageEvent.getMessage().getFromLogin(), messageEvent.getMessage().getSubject(), messageEvent.getMessage().getDate(), messageEvent.getMessage().getTextMessage(), messageEvent.getMessage().getListAttachments()); HashMap hashFiles = new HashMap(); if(messageEvent.getListFileModelSelected()!=null){ for (FileModel fileModel : messageEvent.getListFileModelSelected()) { hashFiles.put(fileModel.getIdentifier(), fileModel.getName()); } } sub.createNewMessage(hashFiles); }else if(event instanceof OpenMessageEvent){ OpenMessageEvent messageEvent = (OpenMessageEvent) event; // sub.updatePrevieMessage(messageEvent.getMessage().getFromLogin(), messageEvent.getMessage().getSubject(), messageEvent.getMessage().getDate(), messageEvent.getMessage().getTextMessage(), messageEvent.getMessage().getListAttachments()); MessageModel message = messageEvent.getMessage(); } } } private ArrayList getListParents(ArrayList listParentModel, FileModel item){ getParents(listParentModel, item); Collections.reverse(listParentModel); return listParentModel; } private void getParents(ArrayList listParents, FileModel item){ if(item==null || item.getParentFileModel()==null){ // listParents.add(item); return; } listParents.add(item.getParentFileModel()); getParents(listParents, item.getParentFileModel()); } public void subscribe(SubscriberInterface subscriber, EventsTypeEnum[] keys) { for (EventsTypeEnum m : keys) subscribe(subscriber, m); } public void subscribe(SubscriberInterface subscriber, EventsTypeEnum key) { if (subscribers.containsKey(key)) subscribers.get(key).add(subscriber); else { ArrayList subs = new ArrayList(); subs.add(subscriber); subscribers.put(key, subs); } } public void unsubscribe(SubscriberInterface subscriber, EventsTypeEnum key) { if (subscribers.containsKey(key)) subscribers.get(key).remove(subscriber); } public void go(final HasWidgets rootPanel, boolean onlyTree, boolean instancingSmartFolder, boolean instancingMessages, boolean selectRootItem) { if(onlyTree){ this.selectRootItem = selectRootItem; this.explorerPanel = new ExplorerPanel(true,this.selectRootItem); this.selectRootItem = false; //set false select root item; only first time is used this.explorerPanel.setSize(400, 600); this.explorerPanel.getAsycTreePanel().setSizeTreePanel(350, 550); rootPanel.add(new BasicDNDExample()); //it's example of drag&drop }else this.explorerPanel = new ExplorerPanel(instancingSmartFolder,instancingMessages); rootPanel.add(explorerPanel); } /** * Use method getPanel * @return ExplorerPanel * @deprecated */ public ExplorerPanel getTreePanel(){ this.explorerPanel = getPanel(); return this.explorerPanel; } /** * Instance only Async Tree with specific width - height - select by default the root item . * @return AsyncTreePanel */ public AsyncTreePanel getTree(int width, int height){ this.explorerPanel = getPanel(); this.explorerPanel.getAsycTreePanel().setSizeTreePanel(width, height); this.explorerPanel.getAsycTreePanel().setHeaderTreeVisible(false); return explorerPanel.getAsycTreePanel(); } public void refreshRoot(){ if(explorerPanel.getAsycTreePanel()!=null) explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } /** * Instance only Async Tree. Select by default root items of tree. * @return ExplorerPanel */ public ExplorerPanel getPanel(){ this.explorerPanel = new ExplorerPanel(true, true); // PollingWorkspace.pollReceivedMessages(-1, 20000); //the parameter -1 force (first) synchronization with HL // PollingWorkspace.pollBulkCreator(15000); return this.explorerPanel; } /** * Instance by default asyncronus Tree while Smart Folders and Messages was instanced as input value * @param instancingSmartFolder * @param instancingMessages * @return ExplorerPanel */ public ExplorerPanel getPanel(boolean instancingSmartFolder, boolean instancingMessages, boolean selectRootItem){ this.explorerPanel = new ExplorerPanel(instancingSmartFolder, instancingMessages, selectRootItem); this.selectRootItem=selectRootItem; if(instancingMessages) PollingWorkspace.pollReceivedMessages(-1, 20000); //the parameter -1 force (first) synchronization with HL PollingWorkspace.pollBulkCreator(15000); return this.explorerPanel; } private void loadItemFromWorkspace(final String itemIdentifier){ explorerPanel.getAsycTreePanel().mask(ConstantsExplorer.LOADING,ConstantsExplorer.LOADINGSTYLE); rpcWorkspaceService.getChildrenSubTreeToRootByIdentifier(itemIdentifier, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { explorerPanel.getAsycTreePanel().unmask(); new MessageBoxAlert("Error", "Sorry - getChildrenSubTreeToRootByIdentifier - Reload root", null); explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot(); } @Override public void onSuccess(ArrayList result) { boolean foundAncestor = false; // int index = 0; int i = 0; try{ while (!foundAncestor) { if(i pathParentsList = getListParentsByIdentifier(itemIdentifier); // FileModel fileModel = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); // if(fileModel != null && !fileModel.isDirectory()) // explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); selectItemInTree(itemIdentifier); explorerPanel.getAsycTreePanel().setSubTreeLoaded(false); explorerPanel.getAsycTreePanel().unmask(); eventBus.fireEvent(new SubTreeLoadedEvent(pathParentsList)); } } catch (Exception e) { new MessageBoxAlert("Error", "Sorry, e "+e.getMessage(), null); } } }); } private void deselecteCurrentSelection(){ FileModel fileModelSelected = explorerPanel.getAsycTreePanel().getSelectedFileModelItem(); if(fileModelSelected!=null) explorerPanel.getAsycTreePanel().deselectItem(fileModelSelected); } //********METHODS TO NOTIFY TREE @Override public ArrayList getListParentsByIdentifier(String itemIdentifier) { ArrayList listParentModel = new ArrayList(); FileModel item = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); if(item==null){ // System.out.println(" LOAD****"); // selectedItemInTree(itemIdentifier); //Load from HL return null; } else{ return getListParents(listParentModel,item); } } @Override public boolean renameItem(String itemIdentifier, String newName, String extension) { return this.explorerPanel.getAsycTreePanel().renameItem(itemIdentifier, newName, extension); } @Override public boolean deleteItem(String itemIdentifier) { return this.explorerPanel.getAsycTreePanel().deleteItem(itemIdentifier); } /** * method not used */ @Override public boolean addFolder(String itemIdentifier, String name, String parentIdentifier) { return false; //not used } /** * method not used */ @Override public boolean addFile(String itemIdentifier, String name, String parentIdentifier) { return false; } /** * method not used */ @Override public boolean reloadFolderChildren(String itemIdentifier) { return false; } /** * method not used */ @Override public void setVisualizationType(VisualizationType type) { } @Override public void selectRootItem(){ this.explorerPanel.getAsycTreePanel().selectRootItem(); } /** * * @return FileModel parent selected or root item if no directory is selected */ @Override public FileModel getSelectedFolderInTree(){ FileModel fileModel = this.explorerPanel.getAsycTreePanel().getSelectedFileModelItem(); if(fileModel.isDirectory()) return fileModel; else return fileModel.getParentFileModel(); } @Override public void findItemAndSelectItemInTree(String itemIdentifier) { // boolean itemSelected = this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); FileModel fileModel = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); if(fileModel==null) { //Loading item by RPC loadItemFromWorkspace(itemIdentifier); } else{ selectItemInTree(itemIdentifier); // if(explorerPanel.getAsycTreePanel().isSearch()) // deselecteCurrentSelection(); // // if(fileModel.isDirectory()){ // if(fileModel.getParentFileModel()!=null) // this.explorerPanel.getAsycTreePanel().setExpandTreeLevel(fileModel.getParentFileModel().getIdentifier(), true); //expand parent folder // // this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); // //// if(explorerPanel.getAsycTreePanel().isSearch()) //// deselecteCurrentSelection(); // }else // this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); //select item } } private void selectItemInTree(String itemIdentifier){ FileModel fileModel = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); if(fileModel!=null){ if(explorerPanel.getAsycTreePanel().isSearch()) deselecteCurrentSelection(); if(fileModel.isDirectory()){ if(fileModel.getParentFileModel()!=null) this.explorerPanel.getAsycTreePanel().setExpandTreeLevel(fileModel.getParentFileModel().getIdentifier(), true); //expand parent folder this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); }else this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); //select item } } @Override /** * Called when path item is clicked */ public void expandFolder(final String itemIdentifier){ searching(false); FileModel fileModel = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier); if(fileModel==null) { //Loading by RPC loadItemFromWorkspace(itemIdentifier); } else{ deselecteCurrentSelection(); this.explorerPanel.getAsycTreePanel().selectItem(itemIdentifier); //select item } } @Override public void searching(boolean isSearch){ // deselecteCurrentSelection(); explorerPanel.getAsycTreePanel().setSearch(isSearch); } }