From 199f6de12e5799fa1bcff8bfbc55bbedb160e701 Mon Sep 17 00:00:00 2001 From: Kushal Munir < kmunir@ca.ibm.com> Date: Tue, 24 Oct 2006 22:41:57 +0000 Subject: [PATCH] Bug 161200: Open with Default Editor fails for files listed under local files. Will open with In-Place Editor for files such as *.doc, *.ppt, etc. --- .../actions/SystemRemoteFileOpenWithMenu.java | 71 +++++++++---------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/actions/SystemRemoteFileOpenWithMenu.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/actions/SystemRemoteFileOpenWithMenu.java index 06ce9e29e49..2f0590c2b86 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/actions/SystemRemoteFileOpenWithMenu.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/actions/SystemRemoteFileOpenWithMenu.java @@ -26,7 +26,6 @@ import org.eclipse.core.resources.IFile; import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.rse.core.SystemBasePlugin; import org.eclipse.rse.files.ui.FileResources; import org.eclipse.rse.files.ui.resources.SystemEditableRemoteFile; import org.eclipse.rse.files.ui.resources.SystemIFileProperties; @@ -45,6 +44,7 @@ import org.eclipse.swt.widgets.MenuItem; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; @@ -177,10 +177,10 @@ protected void createMenuItem(Menu menu, final IEditorDescriptor descriptor, fin } -protected void openEditor(IRemoteFile remoteFile, IEditorDescriptor descriptor) -{ +protected void openEditor(IRemoteFile remoteFile, IEditorDescriptor descriptor) { SystemEditableRemoteFile editable = null; + if (descriptor == null) { editable = new SystemEditableRemoteFile(remoteFile); @@ -189,40 +189,25 @@ protected void openEditor(IRemoteFile remoteFile, IEditorDescriptor descriptor) { editable = new SystemEditableRemoteFile(remoteFile, descriptor.getId()); } + boolean systemEditor = descriptor != null && descriptor.getId().equals(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID); - - if (isFileCached(editable, remoteFile)) - { - try - { - if (systemEditor) - { - editable.openSystemEditor(); - } - else - { - editable.openEditor(); - } - } - catch (Exception e) - { - - } - } - else - { - DownloadJob oJob = new DownloadJob(editable, systemEditor); - oJob.schedule(); - } - -/* - else - { - editableFile.open(SystemBasePlugin.getActiveWorkbenchShell()); - } - */ + if (isFileCached(editable, remoteFile)) { + try { + if (systemEditor) { + editable.openSystemEditor(); + } + else { + editable.openEditor(); + } + } + catch (Exception e) {} + } + else { + DownloadJob oJob = new DownloadJob(editable, systemEditor); + oJob.schedule(); + } } private boolean isFileCached(ISystemEditableRemoteObject editable, IRemoteFile remoteFile) @@ -299,7 +284,7 @@ protected IEditorDescriptor getDefaultEditor(IRemoteFile remoteFile) { IFile localFile = getLocalResource(remoteFile); - if (localFile == null) { + if (localFile == null || !localFile.exists()) { return registry.getDefaultEditor(remoteFile.getName()); } else @@ -427,9 +412,15 @@ protected void createDefaultMenuItem(Menu menu, final IRemoteFile file) { setDefaultEditor(file, null); - IEditorDescriptor defaultEditor = getDefaultEditor(file); - openEditor(file, defaultEditor); - + IEditorDescriptor defaultEditor = null; + + try { + defaultEditor = getEditorDescriptor(file); + openEditor(file, defaultEditor); + } + catch (PartInitException e) { + RSEUIPlugin.logError("Error getting default editor descriptor", e); + } } break; } @@ -439,4 +430,8 @@ protected void createDefaultMenuItem(Menu menu, final IRemoteFile file) menuItem.addListener(SWT.Selection, listener); } +protected IEditorDescriptor getEditorDescriptor(IRemoteFile file) throws PartInitException { + return IDE.getEditorDescriptor(file.getName(), true); +} + } \ No newline at end of file