tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / project / handlers / DeleteExperimentHandler.java
index 797e4313905b66f1512f18ca0f3d712d4a7b83b6..b5a4c6b411b72a43cd15dbb42ab024aba71ea726 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010, 2011 Ericsson
+ * Copyright (c) 2009, 2013 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -17,19 +17,25 @@ import java.util.Iterator;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.linuxtools.internal.tmf.ui.Activator;
 import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentElement;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.MessageBox;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
 
 /**
  * <b><u>DeleteExperimentHandler</u></b>
@@ -62,6 +68,9 @@ public class DeleteExperimentHandler extends AbstractHandler {
         // Get the selection
         IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
         IWorkbenchPart part = page.getActivePart();
+        if (part == null) {
+            return false;
+        }
         ISelection selection = part.getSite().getSelectionProvider().getSelection();
 
         if (selection instanceof TreeSelection) {
@@ -70,12 +79,46 @@ public class DeleteExperimentHandler extends AbstractHandler {
             while (iterator.hasNext()) {
                 Object element = iterator.next();
                 if (element instanceof TmfExperimentElement) {
-                    TmfExperimentElement experiment = (TmfExperimentElement) element;
+                    final TmfExperimentElement experiment = (TmfExperimentElement) element;
                     IResource resource = experiment.getResource();
+
                     try {
+                        // Close the experiment if open
+                        IFile file = experiment.getBookmarksFile();
+                        FileEditorInput input = new FileEditorInput(file);
+                        IWorkbench wb = PlatformUI.getWorkbench();
+                        for (IWorkbenchWindow wbWindow : wb.getWorkbenchWindows()) {
+                            for (IWorkbenchPage wbPage : wbWindow.getPages()) {
+                                for (IEditorReference editorReference : wbPage.getEditorReferences()) {
+                                    if (editorReference.getEditorInput().equals(input)) {
+                                        wbPage.closeEditor(editorReference.getEditor(false), false);
+                                    }
+                                }
+                            }
+                        }
+
+                        IPath path = resource.getLocation();
+                        if (path != null) {
+                            // Delete supplementary files
+                            experiment.deleteSupplementaryFolder();
+                        }
+
+                        // Finally, delete the experiment
                         resource.delete(true, null);
+
+                        // Refresh the project
                         experiment.getProject().refresh();
-                    } catch (CoreException e) {
+
+                    } catch (final CoreException e) {
+                        Display.getDefault().asyncExec(new Runnable() {
+                            @Override
+                            public void run() {
+                                final MessageBox mb = new MessageBox(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+                                mb.setText(Messages.DeleteTraceHandler_Error + ' ' + experiment.getName());
+                                mb.setMessage(e.getMessage());
+                                mb.open();
+                            }
+                        });
                         Activator.getDefault().logError("Error deleting experiment: " + experiment.getName(), e); //$NON-NLS-1$
                     }
                 }
This page took 0.026019 seconds and 5 git commands to generate.