From e525f4b1a4465da6cb034fa5cc2b70ae4fd85fe1 Mon Sep 17 00:00:00 2001 From: Xuan Chen Date: Thu, 15 Nov 2007 19:25:46 +0000 Subject: [PATCH] [209828] fix: Need to move the Create operation to a job. --- .../files/ui/wizards/SystemNewFileWizard.java | 111 +++++++++++----- .../ui/wizards/SystemNewFolderWizard.java | 121 ++++++++++++------ .../local/files/LocalFileService.java | 55 ++++++-- .../archiveutils/SystemZipHandler.java | 11 +- .../org/eclipse/rse/ui/ISystemMessages.java | 3 + .../org.eclipse.rse.ui/systemmessages.xml | 8 ++ 6 files changed, 225 insertions(+), 84 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFileWizard.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFileWizard.java index b627768d254..94beab33725 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFileWizard.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFileWizard.java @@ -14,14 +14,18 @@ * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Rupen Mardirossian (IBM) - [187530] Commented out line 192, in order to stop logging of SystemMessageException * Martin Oberhuber (Wind River) - [204669] Fix ftp path concatenation on systems using backslash separator + * Xuan Chen (IBM) - [209828] Need to move the Create operation to a job. ********************************************************************************/ package org.eclipse.rse.internal.files.ui.wizards; import java.util.Vector; +import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.viewers.Viewer; import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.events.ISystemRemoteChangeEvents; @@ -62,6 +66,75 @@ public class SystemNewFileWizard private static final String CLASSNAME = "SystemNewFileWizard"; //$NON-NLS-1$ + private class CreateNewFileJob extends WorkspaceJob + { + IRemoteFile parentFolder = null; + String name = null; + String absName = null; + String message = null; + + /** + * CreateNewFileJob job. + * @param message text used as the title of the job + */ + public CreateNewFileJob(IRemoteFile parentFolder, String name, String absName, String message) + { + super(message); + this.parentFolder = parentFolder; + this.name = name; + this.absName = absName; + this.message = message; + setUser(true); + } + + public IStatus runInWorkspace(IProgressMonitor monitor) + { + boolean ok = true; + IStatus status = Status.OK_STATUS; + SystemMessage msg; + IRemoteFileSubSystem rfss = parentFolder.getParentRemoteFileSubSystem(); + + // ok, proceed with actual creation... + IRemoteFile newFile = null; + try + { + IRemoteFile newFilePath = rfss.getRemoteFileObject(parentFolder, name, monitor); + newFile = rfss.createFile(newFilePath, monitor); + } + catch (RemoteFileIOException exc ) + { + ok = false; + SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote file "+ absName + " failed with RemoteFileIOException " ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FILE_FAILED_EXIST)).makeSubstitution(absName); + SystemMessageDialog.displayErrorMessage(null, msg); + } + catch (RemoteFileSecurityException e) + { + ok = false; + msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FILE_FAILED)).makeSubstitution(absName); + SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote file "+ absName + " failed with RemoteFileSecurityException "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + SystemMessageDialog.displayErrorMessage(null, msg); + } + catch (SystemMessageException exc) + { + ok = false; + if (monitor.isCanceled()) + { + status = Status.CANCEL_STATUS; + } + SystemMessageDialog.displayErrorMessage(null, exc.getSystemMessage()); + } + + if (ok) + { + updateGUI(parentFolder, newFile, getViewer(), isInputAFilter(), getSelectedFilterReference()); + } + + return status; + } + + } + /** * Constructor */ @@ -128,7 +201,6 @@ public class SystemNewFileWizard IRemoteFile parentFolder = mainPage.getParentFolder(); String name = mainPage.getfileName(); String absName = getNewAbsoluteName(parentFolder, name); - IRemoteFileSubSystem rfss = parentFolder.getParentRemoteFileSubSystem(); if (!parentFolder.exists()) { /* Be nice to do this someday... @@ -172,39 +244,12 @@ public class SystemNewFileWizard return false; } // ok, proceed with actual creation... - IRemoteFile newFile = null; - IProgressMonitor monitor = new NullProgressMonitor(); - try { - IRemoteFile newFilePath = rfss.getRemoteFileObject(parentFolder, name, monitor); - newFile = rfss.createFile(newFilePath, monitor); - } catch (RemoteFileIOException exc ) { - SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote file "+ absName + " failed with RemoteFileIOException " ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FILE_FAILED_EXIST)).makeSubstitution(absName); - mainPage.setMessage(msg); - ok = false; -//DY } catch (Exception RemoteFileSecurityException) { - } catch (RemoteFileSecurityException e) { - msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FILE_FAILED)).makeSubstitution(absName); - SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote file "+ absName + " failed with RemoteFileSecurityException "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - //SystemMessage.displayErrorMessage(SystemMessage.getDefaultShell(), msg); - mainPage.setMessage(msg); - ok = false; - } catch (SystemMessageException e) { - //SystemBasePlugin.logError(CLASSNAME+ ":", e); //$NON-NLS-1$ - mainPage.setMessage(e.getSystemMessage()); - ok = false; - } - - // return ok; - if (ok) - updateGUI(parentFolder, newFile, getViewer(), isInputAFilter(), getSelectedFilterReference()); - + SystemMessage createMessage = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_CREATEFILEGENERIC_PROGRESS); + createMessage.makeSubstitution(name); + CreateNewFileJob createNewFileJob = new CreateNewFileJob(parentFolder, name, absName, createMessage.getLevelOneText()); + createNewFileJob.schedule(); } - else - ok = false; - - - return ok; + return ok; } /** diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFolderWizard.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFolderWizard.java index 2eaa05edaff..a24596c96a2 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFolderWizard.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/wizards/SystemNewFolderWizard.java @@ -13,12 +13,15 @@ * Contributors: * Martin Oberhuber (Wind River) - [168870] refactor org.eclipse.rse.core package of the UI plugin * David Dykstal (IBM) - [188718] fix error messages showing up as info messages on wizard page + * Xuan Chen (IBM) - [209828] Need to move the Create operation to a job. ********************************************************************************/ package org.eclipse.rse.internal.files.ui.wizards; +import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.rse.core.filters.ISystemFilter; import org.eclipse.rse.core.filters.ISystemFilterReference; import org.eclipse.rse.internal.files.ui.FileResources; @@ -46,6 +49,75 @@ public class SystemNewFolderWizard private static final String CLASSNAME = "SystemNewFolderWizard"; //$NON-NLS-1$ + private class CreateNewFolderJob extends WorkspaceJob + { + IRemoteFile parentFolder = null; + String name = null; + String absName = null; + String message = null; + + /** + * CreateNewFileJob job. + * @param message text used as the title of the job + */ + public CreateNewFolderJob(IRemoteFile parentFolder, String name, String absName, String message) + { + super(message); + this.parentFolder = parentFolder; + this.name = name; + this.absName = absName; + this.message = message; + setUser(true); + } + + public IStatus runInWorkspace(IProgressMonitor monitor) + { + boolean ok = true; + IStatus status = Status.OK_STATUS; + SystemMessage msg; + IRemoteFileSubSystem rfss = parentFolder.getParentRemoteFileSubSystem(); + + // ok, proceed with actual creation... + IRemoteFile newFolder = null; + try + { + IRemoteFile newFolderPath = rfss.getRemoteFileObject(absName, monitor); + newFolder = rfss.createFolder(newFolderPath, monitor); + } + catch (RemoteFileIOException exc ) + { + ok = false; + SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote file "+ absName + " failed with RemoteFileIOException " ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FOLDER_FAILED_EXIST)).makeSubstitution(absName); + SystemMessageDialog.displayErrorMessage(null, msg); + } + catch (RemoteFileSecurityException e) + { + ok = false; + msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FOLDER_FAILED)).makeSubstitution(absName); + SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote folder "+ absName + " failed with RemoteFileSecurityException "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + SystemMessageDialog.displayErrorMessage(null, msg); + } + catch (SystemMessageException exc) + { + ok = false; + if (monitor.isCanceled()) + { + status = Status.CANCEL_STATUS; + } + SystemMessageDialog.displayErrorMessage(null, exc.getSystemMessage()); + } + + if (ok) + { + SystemNewFileWizard.updateGUI(parentFolder, newFolder, getViewer(), isInputAFilter(), getSelectedFilterReference()); + } + + return status; + } + + } + /** * Constructor */ @@ -111,7 +183,6 @@ public class SystemNewFolderWizard IRemoteFile parentFolder = mainPage.getParentFolder(); String name = mainPage.getfolderName(); String absName = SystemNewFileWizard.getNewAbsoluteName(parentFolder, name); - IRemoteFileSubSystem rfss = parentFolder.getParentRemoteFileSubSystem(); if (!parentFolder.exists()) { /* Be nice to do this someday... @@ -154,44 +225,16 @@ public class SystemNewFolderWizard if (!meetsFilterCriteria(getSelectedFilterReference(), parentFolder, absName)) return false; } - IRemoteFile newFolder = null; - //IRemoteFile newFolderPath = null; - try { - IProgressMonitor monitor = new NullProgressMonitor(); - IRemoteFile newFolderPath = rfss.getRemoteFileObject(absName, monitor); - newFolder = rfss.createFolder(newFolderPath, monitor); - } catch (RemoteFileIOException exc ) { - SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote folder "+ absName + " failed with RemoteFileIOException " ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - if (exc.getRemoteException() instanceof SystemMessageException) - { - msg = ((SystemMessageException)exc.getRemoteException()).getSystemMessage(); - } - else - { - msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FOLDER_FAILED_EXIST)).makeSubstitution(absName); - } - mainPage.setErrorMessage(msg); - ok = false; -// DY } catch (Exception RemoteFileSecurityException) { - } catch (RemoteFileSecurityException e) { - SystemBasePlugin.logDebugMessage(CLASSNAME+ ":", " Creating remote folder "+ absName + " failed with RemoteFileSecurityException "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - msg = (RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_CREATE_FOLDER_FAILED)).makeSubstitution(absName); - //SystemMessage.displayErrorMessage(SystemMessage.getDefaultShell(), msg); - mainPage.setErrorMessage(msg); - ok = false; - } catch (SystemMessageException e) { - SystemBasePlugin.logError(CLASSNAME+ ":", e); //$NON-NLS-1$ - mainPage.setErrorMessage(e.getSystemMessage()); - ok = false; - } - - if (ok) - SystemNewFileWizard.updateGUI(parentFolder, newFolder, getViewer(), isInputAFilter(), getSelectedFilterReference()); - + + // ok, proceed with actual creation... + SystemMessage createMessage = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_CREATEFOLDERGENERIC_PROGRESS); + createMessage.makeSubstitution(name); + CreateNewFolderJob createNewFolderJob = new CreateNewFolderJob(parentFolder, name, absName, createMessage.getLevelOneText()); + createNewFolderJob.schedule(); + } - else - ok = false; - return ok; + return ok; + } /** * Test if the new file/folder will meet the filtering criteria of the selected filter. diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java index 7643ab7056f..3019336b5d8 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java @@ -24,6 +24,7 @@ * David McKnight (IBM) - [207178] changing list APIs for file service and subsystems * Kevin Doyle (IBM) - [209355] Retrieving list of FILE_TYPE_FOLDERS should return Archive's * Xuan Chen (IBM) - [160775] [api] rename (at least within a zip) blocks UI thread + * Xuan Chen (IBM) - [209828] Need to move the Create operation to a job. ********************************************************************************/ package org.eclipse.rse.internal.services.local.files; @@ -204,7 +205,6 @@ public class LocalFileService extends AbstractFileService implements IFileServic public void run() { - int a = 0; while(!monitor.isCanceled() && !archiveOperationMonitor.isDone()) { try { @@ -866,7 +866,7 @@ public class LocalFileService extends AbstractFileService implements IFileServic { if (ArchiveHandlerManager.isVirtual(fileToCreate.getAbsolutePath())) { - return createFileInArchive(fileToCreate); + return createFileInArchive(fileToCreate, monitor); } else if (!parentFile.exists()) { @@ -899,7 +899,7 @@ public class LocalFileService extends AbstractFileService implements IFileServic return new LocalHostFile(fileToCreate); } - protected LocalVirtualHostFile createFileInArchive(File newFile) throws SystemMessageException + protected LocalVirtualHostFile createFileInArchive(File newFile, IProgressMonitor monitor) throws SystemMessageException { VirtualChild child = ArchiveHandlerManager.getInstance().getVirtualObject(newFile.getAbsolutePath()); ISystemArchiveHandler handler = child.getHandler(); @@ -907,10 +907,25 @@ public class LocalFileService extends AbstractFileService implements IFileServic throwCorruptArchiveException(this.getClass() + ".createFileInArchive()"); //$NON-NLS-1$ else { - if (!handler.createFile(child.fullName, null)) + ISystemOperationMonitor archiveOperationMonitor = null; + if (null != monitor) { - //SystemPlugin.logError("LocalFileSubSystemImpl.createFileInArchive(): Archive Handler's createFile method returned false. Couldn't create virtual object."); - throw new SystemMessageException(getMessage("RSEG1124").makeSubstitution(newFile)); //$NON-NLS-1$ + archiveOperationMonitor = new SystemOperationMonitor(); + CheckArchiveOperationStatusThread checkArchiveOperationStatusThread = new CheckArchiveOperationStatusThread(archiveOperationMonitor, monitor); + checkArchiveOperationStatusThread.start(); + } + boolean ok = handler.createFile(child.fullName, archiveOperationMonitor); + + if (!ok) + { + if (null != monitor && monitor.isCanceled()) + { + //This operation has been canceled by the user. + throw new SystemMessageException(getMessage("RSEG1067")); //$NON-NLS-1$ + } + SystemMessage msg = getMessage("RSEG1124"); //$NON-NLS-1$ + msg.makeSubstitution(newFile); + throw new SystemMessageException(msg); } } return new LocalVirtualHostFile(child); @@ -942,7 +957,7 @@ public class LocalFileService extends AbstractFileService implements IFileServic { if (ArchiveHandlerManager.isVirtual(folderToCreate.getAbsolutePath())) { - return createFolderInArchive(folderToCreate); + return createFolderInArchive(folderToCreate, monitor); } else { @@ -957,16 +972,34 @@ public class LocalFileService extends AbstractFileService implements IFileServic return new LocalHostFile(folderToCreate); } - protected LocalVirtualHostFile createFolderInArchive(File newFolder) throws SystemMessageException + protected LocalVirtualHostFile createFolderInArchive(File newFolder, IProgressMonitor monitor) throws SystemMessageException { VirtualChild child = ArchiveHandlerManager.getInstance().getVirtualObject(newFolder.getAbsolutePath()); ISystemArchiveHandler handler = child.getHandler(); if (handler == null) throwCorruptArchiveException(this.getClass() + ".createFolderInArchive()"); //$NON-NLS-1$ - else if (!handler.createFolder(child.fullName, null)) + else { - // SystemPlugin.logError("LocalFileSubSystemImpl.createFolderInArchive(): Archive Handler's createFolder method returned false. Couldn't create virtual object."); - throw new SystemMessageException(getMessage("RSEG1124").makeSubstitution(newFolder)); //$NON-NLS-1$ + ISystemOperationMonitor archiveOperationMonitor = null; + if (null != monitor) + { + archiveOperationMonitor = new SystemOperationMonitor(); + CheckArchiveOperationStatusThread checkArchiveOperationStatusThread = new CheckArchiveOperationStatusThread(archiveOperationMonitor, monitor); + checkArchiveOperationStatusThread.start(); + } + boolean ok = handler.createFolder(child.fullName, archiveOperationMonitor); + + if (!ok) + { + if (null != monitor && monitor.isCanceled()) + { + //This operation has been canceled by the user. + throw new SystemMessageException(getMessage("RSEG1067")); //$NON-NLS-1$ + } + SystemMessage msg = getMessage("RSEG1124"); //$NON-NLS-1$ + msg.makeSubstitution(newFolder); + throw new SystemMessageException(msg); + } } return new LocalVirtualHostFile(child); } diff --git a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemZipHandler.java b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemZipHandler.java index 3dcae0d313a..6aa6ba38ace 100644 --- a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemZipHandler.java +++ b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemZipHandler.java @@ -17,6 +17,7 @@ * Xuan Chen (IBM) - [194293] [Local][Archives] Saving file second time in an Archive Errors * Xuan Chen (IBM) - [181784] [archivehandlers] zipped text files have unexpected contents * Xuan Chen (IBM) - [160775] [api] rename (at least within a zip) blocks UI thread + * Xuan Chen (IBM) - [209828] Need to move the Create operation to a job. *******************************************************************************/ package org.eclipse.rse.services.clientserver.archiveutils; @@ -1859,10 +1860,15 @@ public class SystemZipHandler implements ISystemArchiveHandler */ protected boolean createVirtualObject(String name, boolean closeZipFile, ISystemOperationMonitor archiveOperationMonitor) { - if (!_exists) return false; + if (!_exists) + { + setArchiveOperationMonitorStatusDone(archiveOperationMonitor); + return false; + } if (exists(name, archiveOperationMonitor)) { // The object already exists. + setArchiveOperationMonitorStatusDone(archiveOperationMonitor); return false; } @@ -1908,6 +1914,7 @@ public class SystemZipHandler implements ISystemArchiveHandler replaceOldZip(outputTempFile); if (closeZipFile) closeZipFile(); + setArchiveOperationMonitorStatusDone(archiveOperationMonitor); return true; } } @@ -1917,12 +1924,14 @@ public class SystemZipHandler implements ISystemArchiveHandler System.out.println("Could not add a file."); //$NON-NLS-1$ System.out.println(e.getMessage()); if (closeZipFile) closeZipFile(); + setArchiveOperationMonitorStatusDone(archiveOperationMonitor); return false; } finally { releaseMutex(mutexLockStatus); } + setArchiveOperationMonitorStatusDone(archiveOperationMonitor); return false; } diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/ISystemMessages.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/ISystemMessages.java index d54884b89bc..a3832cbfada 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/ISystemMessages.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/ISystemMessages.java @@ -18,6 +18,7 @@ * Xuan Chen (IBM) - [160775] Added MSG_RENAMEGENERIC_PROGRESS, FILEMSG_MOVE_INTERRUPTED * FILEMSG_RENAME_INTERRUPTED, FILEMSG_DELETE_INTERRUPTED * FILEMSG_COPY_INTERRUPTED + * Xuan Chen (IBM) - [209828] Need to move the Create operation to a job. ********************************************************************************/ package org.eclipse.rse.ui; @@ -199,6 +200,8 @@ public interface ISystemMessages public static final String MSG_COPYTHINGGENERIC_PROGRESS = "RSEG1117"; //$NON-NLS-1$ public static final String MSG_MOVETHINGGENERIC_PROGRESS = "RSEG1118"; //$NON-NLS-1$ public static final String MSG_RENAMEGENERIC_PROGRESS = "RSEG1142"; //$NON-NLS-1$ + public static final String MSG_CREATEFILEGENERIC_PROGRESS = "RSEG1143"; //$NON-NLS-1$ + public static final String MSG_CREATEFOLDERGENERIC_PROGRESS = "RSEG1144"; //$NON-NLS-1$ public static final String MSG_SAVING_PROGRESS = "RSEG1119"; //$NON-NLS-1$ diff --git a/rse/plugins/org.eclipse.rse.ui/systemmessages.xml b/rse/plugins/org.eclipse.rse.ui/systemmessages.xml index d778beb8630..c8172369fde 100644 --- a/rse/plugins/org.eclipse.rse.ui/systemmessages.xml +++ b/rse/plugins/org.eclipse.rse.ui/systemmessages.xml @@ -526,6 +526,14 @@ Kevin Doyle (IBM) - [160769] Added message for invalid filter when moving files Rename %1... + + Creating file %1... + + + + Creating folder %1... + + Unable to perform action as the underlying file system folder is in use The file system folder %1 is in use by another task and cannot be removed or modified