1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-19 14:15:50 +02:00

[166302] - fix to account for readonly files

This commit is contained in:
David McKnight 2006-11-30 18:51:09 +00:00
parent 1b897cc78d
commit 4d5da5e72c

View file

@ -72,7 +72,6 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.WorkspaceModifyOperation; import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.ide.IDE; import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.part.FileEditorInput; import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.progress.UIJob;
import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.ITextEditor;
@ -106,7 +105,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
*/ */
private InternalDownloadFileRunnable() private InternalDownloadFileRunnable()
{ {
super("Download"); super("Download"); // TODO - need to externalize
} }
@ -139,7 +138,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
catch (Exception e) catch (Exception e)
{ {
SystemBasePlugin.logError("File can not be downloaded", e); SystemBasePlugin.logError("File can not be downloaded", e); //$NON-NLS-1$
this.e = e; this.e = e;
} }
} }
@ -344,7 +343,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
} }
catch (SystemMessageException e) { catch (SystemMessageException e) {
SystemBasePlugin.logError("Error getting remote file object " + remotePath, e); SystemBasePlugin.logError("Error getting remote file object " + remotePath, e); //$NON-NLS-1$
} }
} }
@ -604,7 +603,6 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
return false; return false;
} }
// get fresh remote file object
remoteFile = subsystem.getRemoteFileObject(remoteFile.getAbsolutePath()); remoteFile = subsystem.getRemoteFileObject(remoteFile.getAbsolutePath());
refresh(); refresh();
@ -616,6 +614,9 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
properties.setDirty(false); properties.setDirty(false);
properties.setUsedBinaryTransfer(remoteFile.isBinary()); properties.setUsedBinaryTransfer(remoteFile.isBinary());
boolean readOnly = !remoteFile.canWrite();
properties.setReadOnly(readOnly);
// get the modified timestamp from the File, not the IFile // get the modified timestamp from the File, not the IFile
// for some reason, the modified timestamp from the IFile does not always return // for some reason, the modified timestamp from the IFile does not always return
// the right value. There is a Javadoc comment saying the value from IFile might be a // the right value. There is a Javadoc comment saying the value from IFile might be a
@ -707,6 +708,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
IPath path = getLocalPathObject(); IPath path = getLocalPathObject();
localFile = SystemBasePlugin.getWorkspaceRoot().getFileForLocation(path); localFile = SystemBasePlugin.getWorkspaceRoot().getFileForLocation(path);
} }
return localFile; return localFile;
} }
@ -871,8 +873,8 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
} }
String os = System.getProperty("os.name").toLowerCase(); String os = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
if (!os.startsWith("win")) if (!os.startsWith("win")) //$NON-NLS-1$
absolutePath = absolutePath.replace('\\', '/'); absolutePath = absolutePath.replace('\\', '/');
// DY: We should only be escaping the remote portion of the path // DY: We should only be escaping the remote portion of the path
@ -1420,6 +1422,8 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
String tempPath = file.getLocation().toOSString(); String tempPath = file.getLocation().toOSString();
if (util.isXML(tempPath)) { if (util.isXML(tempPath)) {
try { try {
@ -1489,6 +1493,28 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
IFile file = getLocalResource(); IFile file = getLocalResource();
// get fresh remote file object
remoteFile.markStale(true); // make sure we get the latest remote file (with proper permissions and all)
try
{
remoteFile = subsystem.getRemoteFileObject(remoteFile.getAbsolutePath());
}
catch (Exception e)
{
}
boolean readOnly = !remoteFile.canWrite();
ResourceAttributes attr = file.getResourceAttributes();
attr.setReadOnly(readOnly);
try
{
file.setResourceAttributes(attr);
}
catch (Exception e)
{
}
// set editor as preferred editor for this file // set editor as preferred editor for this file
IDE.setDefaultEditor(file, _editorId); IDE.setDefaultEditor(file, _editorId);
@ -1514,7 +1540,6 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
IFile file = getLocalResource(); IFile file = getLocalResource();
IEditorRegistry registry = getEditorRegistry();
FileEditorInput fileInput = new FileEditorInput(file); FileEditorInput fileInput = new FileEditorInput(file);
activePage.openEditor(fileInput, IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID); activePage.openEditor(fileInput, IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
@ -1531,8 +1556,6 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
activePage = SystemBasePlugin.getActiveWorkbenchWindow().getActivePage(); activePage = SystemBasePlugin.getActiveWorkbenchWindow().getActivePage();
} }
IFile file = getLocalResource(); IFile file = getLocalResource();
IEditorRegistry registry = getEditorRegistry();
FileEditorInput fileInput = new FileEditorInput(file); FileEditorInput fileInput = new FileEditorInput(file);
activePage.openEditor(fileInput, IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID); activePage.openEditor(fileInput, IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID);
@ -1665,7 +1688,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
catch (Exception e) catch (Exception e)
{ {
SystemBasePlugin.logError("Error uploading file", e); SystemBasePlugin.logError("Error uploading file", e); //$NON-NLS-1$
if (e instanceof SystemMessageException) if (e instanceof SystemMessageException)
{ {
@ -1745,7 +1768,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
catch (InvocationTargetException e) catch (InvocationTargetException e)
{ {
SystemBasePlugin.logError("Error in performSaveAs", e); SystemBasePlugin.logError("Error in performSaveAs", e); //$NON-NLS-1$
SystemMessage message = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_ERROR_UNEXPECTED); SystemMessage message = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_ERROR_UNEXPECTED);
SystemMessageDialog dialog = new SystemMessageDialog(SystemBasePlugin.getActiveWorkbenchShell(), message); SystemMessageDialog dialog = new SystemMessageDialog(SystemBasePlugin.getActiveWorkbenchShell(), message);
dialog.open(); dialog.open();
@ -1772,7 +1795,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
} }
catch (Exception e) catch (Exception e)
{ {
SystemBasePlugin.logError("Error in performSaveAs", e); SystemBasePlugin.logError("Error in performSaveAs", e); //$NON-NLS-1$
SystemMessage message = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_ERROR_UNEXPECTED); SystemMessage message = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_ERROR_UNEXPECTED);
SystemMessageDialog dialog = new SystemMessageDialog(SystemBasePlugin.getActiveWorkbenchShell(), message); SystemMessageDialog dialog = new SystemMessageDialog(SystemBasePlugin.getActiveWorkbenchShell(), message);
dialog.open(); dialog.open();