1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-14 03:35:37 +02:00

[198007] fix Moving multiple folders allows moving to themselves (contributed by Kevin Doyle)

This commit is contained in:
Xuan Chen 2007-08-08 16:10:26 +00:00
parent 68862c619e
commit 873ee7b9b6

View file

@ -14,6 +14,7 @@
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186128][refactoring] Move IProgressMonitor last in public base classes * Martin Oberhuber (Wind River) - [186128][refactoring] Move IProgressMonitor last in public base classes
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry * Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Kevin Doyle (IBM) - [198007] Moving multiple folders allows moving to themselves
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
@ -118,29 +119,38 @@ public class SystemMoveRemoteFileAction extends SystemCopyRemoteFileAction
public SystemMessage isValid(IHost selectedConnection, Object[] selectedObjects, ISystemRemoteElementAdapter[] remoteAdaptersForSelectedObjects) public SystemMessage isValid(IHost selectedConnection, Object[] selectedObjects, ISystemRemoteElementAdapter[] remoteAdaptersForSelectedObjects)
{ {
//if (selectedConnection != sourceConnection) {} // someday, but can't happen today. //if (selectedConnection != sourceConnection) {} // someday, but can't happen today.
IRemoteFile[] files = getSelectedFiles();
Object selectedObject = selectedObjects[0]; Object selectedObject = selectedObjects[0];
if (!(selectedObject instanceof IRemoteFile)) if (!(selectedObject instanceof IRemoteFile) || files == null)
return null; return null;
IRemoteFile selectedFolder = (IRemoteFile)selectedObject; IRemoteFile selectedFolder = (IRemoteFile)selectedObject;
if (selectedFolder.getAbsolutePath().equals(firstSelectionParent.getAbsolutePath())) String selectedFolderPath = selectedFolder.getAbsolutePath();
for (int i = 0; i < files.length; i++) {
IRemoteFile selectedFile = files[i];
if (selectedFile != null && selectedFile.getParentRemoteFile() != null) {
IRemoteFile selectedParentFile = selectedFile.getParentRemoteFile();
if (selectedFolderPath.equals(selectedParentFile.getAbsolutePath()))
{ {
if (targetEqualsSrcMsg == null) if (targetEqualsSrcMsg == null)
targetEqualsSrcMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_MOVE_TARGET_EQUALS_SOURCE); targetEqualsSrcMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_MOVE_TARGET_EQUALS_SOURCE);
return targetEqualsSrcMsg; return targetEqualsSrcMsg;
} }
else if (selectedFolder.getAbsolutePath().equals(firstSelection.getAbsolutePath())) else if (selectedFolderPath.equals(selectedFile.getAbsolutePath()))
{ {
if (targetEqualsSrcMsg == null) if (targetEqualsSrcMsg == null)
targetEqualsSrcMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_MOVE_TARGET_EQUALS_SOURCE); // todo: different msg targetEqualsSrcMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_MOVE_TARGET_EQUALS_SOURCE); // todo: different msg
return targetEqualsSrcMsg; return targetEqualsSrcMsg;
} }
else if (selectedFolder.isDescendantOf(firstSelection)) else if (selectedFolder.isDescendantOf(selectedFile))
{ {
if (targetDescendsFromSrcMsg == null) if (targetDescendsFromSrcMsg == null)
targetDescendsFromSrcMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_MOVE_TARGET_DESCENDS_FROM_SOURCE); targetDescendsFromSrcMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_MOVE_TARGET_DESCENDS_FROM_SOURCE);
return targetDescendsFromSrcMsg; return targetDescendsFromSrcMsg;
} }
else }
}
return null; return null;
} }