changeset 103:9cb641d3e236

Prompt before overwriting existing file
author Omair Majid <omajid@redhat.com>
date Fri, 07 Feb 2014 16:08:24 -0500
parents e8210c93bfa9
children 5877be030593
files com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/Messages.java com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/messages.properties com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/wizards/PluginXmlCreationWizard.java
diffstat 3 files changed, 24 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/Messages.java	Fri Feb 07 16:07:53 2014 -0500
+++ b/com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/Messages.java	Fri Feb 07 16:08:24 2014 -0500
@@ -48,9 +48,12 @@
     public static String OverviewPage_title;
     public static String PluginModelReaderWriter_errorLoadingModel;
     public static String PluginModelReaderWriter_errorSavingFile;
+    public static String PluginXmlCreationWizard_confirmOverwriteMessage;
+    public static String PluginXmlCreationWizard_confirmOverwriteTitle;
     public static String PluginXmlCreationWizard_containerDoesNotExist;
     public static String PluginXmlCreationWizard_creatingFile;
     public static String PluginXmlCreationWizard_error;
+    public static String PluginXmlCreationWizard_errorWritingFile;
     public static String PluginXmlCreationWizard_openingFileForEditing;
     public static String PluginXmlCreationWizard_windowTitle;
     public static String PluginXmlProjectSelectionPage_selectFileContainer;
--- a/com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/messages.properties	Fri Feb 07 16:07:53 2014 -0500
+++ b/com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/messages.properties	Fri Feb 07 16:08:24 2014 -0500
@@ -40,9 +40,12 @@
 OverviewPage_title=Overview
 PluginModelReaderWriter_errorLoadingModel=Unable to load model
 PluginModelReaderWriter_errorSavingFile=Error saving file
+PluginXmlCreationWizard_confirmOverwriteMessage=A thermostat-plugin.xml file already exists. Overwrite it?
+PluginXmlCreationWizard_confirmOverwriteTitle=Overwrite existing file?
 PluginXmlCreationWizard_containerDoesNotExist=Container {0} does not exist.
 PluginXmlCreationWizard_creatingFile=Creating {0}
 PluginXmlCreationWizard_error=Error
+PluginXmlCreationWizard_errorWritingFile=Error writing file
 PluginXmlCreationWizard_openingFileForEditing=Opening file for editing...
 PluginXmlCreationWizard_windowTitle=Create Themrostat Plugin
 PluginXmlProjectSelectionPage_selectFileContainer=Select new file container
--- a/com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/wizards/PluginXmlCreationWizard.java	Fri Feb 07 16:07:53 2014 -0500
+++ b/com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/wizards/PluginXmlCreationWizard.java	Fri Feb 07 16:08:24 2014 -0500
@@ -88,13 +88,22 @@
         try {
             InputStream stream = getInitialContentStream();
             if (file.exists()) {
-                // TODO dont replace file without confirming
-                file.setContents(stream, true, true, monitor);
+                final boolean[] overwrite = new boolean [1];
+                getShell().getDisplay().syncExec(new Runnable() {
+                    @Override
+                    public void run() {
+                        overwrite[0] = MessageDialog.openConfirm(getShell(), Messages.PluginXmlCreationWizard_confirmOverwriteTitle, Messages.PluginXmlCreationWizard_confirmOverwriteMessage);
+                    }
+                });
+                if (overwrite[0]) {
+                    file.setContents(stream, true, true, monitor);
+                }
             } else {
                 file.create(stream, true, monitor);
             }
             stream.close();
         } catch (IOException e) {
+            throwCoreException(Messages.PluginXmlCreationWizard_errorWritingFile, e);
         }
         monitor.worked(1);
         monitor.setTaskName(Messages.PluginXmlCreationWizard_openingFileForEditing);
@@ -105,6 +114,7 @@
                 try {
                     IDE.openEditor(page, file, true);
                 } catch (PartInitException e) {
+                    e.printStackTrace();
                 }
             }
         });
@@ -122,8 +132,12 @@
     }
 
     private void throwCoreException(String message) throws CoreException {
-        IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
-                IStatus.OK, message, null);
+        IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, message, null);
+        throw new CoreException(status);
+    }
+
+    private void throwCoreException(String message, Throwable cause) throws CoreException {
+        IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, message, cause);
         throw new CoreException(status);
     }