From 2edb4b19bbbc016cc35bf67f7331ce1ad4262c26 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Mon, 23 Aug 2010 16:25:21 +0000 Subject: [PATCH] bug 323402: Open external location in Problems View throws exception when file is not there --- .../ui/util/OpenExternalProblemAction.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/OpenExternalProblemAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/OpenExternalProblemAction.java index 21fdad4510e..f69ae0a7560 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/OpenExternalProblemAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/OpenExternalProblemAction.java @@ -12,6 +12,8 @@ package org.eclipse.cdt.internal.ui.util; +import java.io.File; + import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; @@ -20,7 +22,10 @@ import org.eclipse.core.runtime.Path; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.MessageBox; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; @@ -54,7 +59,16 @@ public class OpenExternalProblemAction extends ActionDelegate implements IObject if (attributeObject instanceof String) { String externalLocation = (String) attributeObject; IPath externalPath = new Path(externalLocation); - + + File file = externalPath.toFile() ; + if (!file.canRead()) { + MessageBox errorMsg = new MessageBox(CUIPlugin.getActiveWorkbenchShell(), SWT.ICON_ERROR | SWT.OK); + errorMsg.setText(Messages.OpenExternalProblemAction_ErrorOpeningFile); + errorMsg.setMessage(NLS.bind(Messages.OpenExternalProblemAction_CannotReadExternalLocation, externalPath)); + errorMsg.open(); + return; + } + IEditorPart editor = EditorUtility.openInEditor(externalPath, getCProject(marker)); if (editor != null) { IDE.gotoMarker(editor, marker);