diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourcesUtil.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourcesUtil.java new file mode 100644 index 00000000000..2b2a0303a17 --- /dev/null +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourcesUtil.java @@ -0,0 +1,33 @@ +package org.eclipse.cdt.core.resources; + +import java.net.URI; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; + +public class ResourcesUtil { + /** + * Refresh file when it happens to belong to Workspace. There could + * be multiple workspace {@link IFile} associated with one URI. + * Hint: use {@link org.eclipse.core.filesystem.URIUtil#toURI(String)} + * to convert filesystem path to URI. + * + * @param uri - URI of the file. + */ + public static void refreshWorkspaceFiles(URI uri) { + if (uri!=null) { + IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(uri); + for (IFile file : files) { + try { + file.refreshLocal(IResource.DEPTH_ZERO, null); + } catch (CoreException e) { + CCorePlugin.log(e); + } + } + } + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java index 9e4699b105f..45938326d33 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java @@ -506,23 +506,4 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang return defaultLogLocation.toOSString(); } - /** - * Refresh output file when it happens to belong to Workspace. There could - * be multiple workspace {@link IFile} associated with one URI. - * - * @param uri - URI of the file. - */ - static void refreshWorkspaceFiles(URI uri) { - if (uri!=null) { - IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(uri); - for (IFile file : files) { - try { - file.refreshLocal(IResource.DEPTH_ZERO, null); - } catch (CoreException e) { - CUIPlugin.log(e); - } - } - } - } - } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitioner.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitioner.java index 2f987028d13..d975c539793 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitioner.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitioner.java @@ -46,6 +46,7 @@ import org.osgi.service.prefs.Preferences; import org.eclipse.cdt.core.ConsoleOutputStream; import org.eclipse.cdt.core.ProblemMarkerInfo; import org.eclipse.cdt.core.resources.IConsole; +import org.eclipse.cdt.core.resources.ResourcesUtil; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.internal.ui.preferences.BuildConsolePreferencePage; @@ -320,7 +321,7 @@ public class BuildConsolePartitioner } catch (CoreException e) { CUIPlugin.log(e); } finally { - BuildConsoleManager.refreshWorkspaceFiles(fLogURI); + ResourcesUtil.refreshWorkspaceFiles(fLogURI); } } } @@ -335,7 +336,7 @@ public class BuildConsolePartitioner } catch (IOException e) { CUIPlugin.log(e); } finally { - BuildConsoleManager.refreshWorkspaceFiles(fLogURI); + ResourcesUtil.refreshWorkspaceFiles(fLogURI); } } } @@ -347,7 +348,7 @@ public class BuildConsolePartitioner } catch (IOException e) { CUIPlugin.log(e); } finally { - BuildConsoleManager.refreshWorkspaceFiles(fLogURI); + ResourcesUtil.refreshWorkspaceFiles(fLogURI); } fLogStream = null; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java index 0691f0ca7f1..aa463ae5a35 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java @@ -27,6 +27,7 @@ import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.cdt.core.resources.IConsole; +import org.eclipse.cdt.core.resources.ResourcesUtil; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.IBuildConsoleManager; @@ -103,7 +104,7 @@ public class CopyBuildLogAction extends Action { MessageDialog.openError(shell, ConsoleMessages.CopyLog_ErrorCopyingFile, ConsoleMessages.CopyLog_ErrorWhileCopyingLog+e.getLocalizedMessage()); } finally { - BuildConsoleManager.refreshWorkspaceFiles(destURI); + ResourcesUtil.refreshWorkspaceFiles(destURI); } } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java index f45fff8b5aa..51e02daa49b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.ui.wizards.settingswizards; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; +import java.net.URI; import java.util.List; import javax.xml.transform.OutputKeys; @@ -23,12 +24,14 @@ import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.stream.StreamResult; +import org.eclipse.core.filesystem.URIUtil; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; +import org.eclipse.cdt.core.resources.ResourcesUtil; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICFolderDescription; import org.eclipse.cdt.ui.CUIPlugin; @@ -123,6 +126,7 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage ICConfigurationDescription config = page.getSelectedConfiguration(); ICFolderDescription projectRoot = config.getRootFolderDescription(); + boolean result = false; try { AttributesImpl attributes = new AttributesImpl(); @@ -149,19 +153,23 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage handler.endDocument(); newline(handler); + result = true; } catch (SAXException e) { CUIPlugin.log(e); page.showErrorDialog(Messages.ProjectSettingsExportStrategy_exportError, Messages.ProjectSettingsExportStrategy_xmlError); - return false; + result = false; } catch(SettingsImportExportException e) { CUIPlugin.log(e); page.showErrorDialog(Messages.ProjectSettingsExportStrategy_fileOpenError, Messages.ProjectSettingsExportStrategy_couldNotOpen); - return false; + result = false; } - return true; + URI uri = URIUtil.toURI(page.getDestinationFilePath()); + ResourcesUtil.refreshWorkspaceFiles(uri); + + return result; }