TMF: Open experiments with the right experiment type
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Wed, 15 Jan 2014 16:08:01 +0000 (11:08 -0500)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Tue, 4 Mar 2014 18:48:26 +0000 (13:48 -0500)
Change-Id: I4733515b190e6d5cb36887352ad46d55e7a66162
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/20670
Tested-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
IP-Clean: Bernd Hufmann <bernd.hufmann@ericsson.com>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/project/handlers/OpenExperimentHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/Messages.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/TmfOpenTraceHelper.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/messages.properties
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/wizards/NewExperimentDialog.java

index 4f4cde46928ea28d338552be7e4305add7f2dc7a..f4eac3ce10e36848c733db138fc9ffcde49621d5 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2013 Ericsson
+ * Copyright (c) 2009, 2014 Ericsson, École Polytechnique de Montréal
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
+ *   Geneviève Bastien - Experiment instantiates with an experiment type
  *******************************************************************************/
 
 package org.eclipse.linuxtools.internal.tmf.ui.project.handlers;
@@ -91,7 +92,7 @@ public class OpenExperimentHandler extends AbstractHandler {
             return null;
         }
 
-        TmfOpenTraceHelper.openExperimentFromElement(fExperiment);
+        TmfOpenTraceHelper.openTraceFromElement(fExperiment);
         return null;
     }
 
index d4121cccedaa2fdc1dce1941fedbdbfd69eb2a45..3b7555dd9048e15d6ca9c2352d9d4adf051c050a 100644 (file)
@@ -135,7 +135,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                             setPartName(experimentElement.getName());
                             super.setSite(site);
                             super.setInput(fileEditorInput);
-                            TmfOpenTraceHelper.reopenExperimentFromElement(experimentElement, this);
+                            TmfOpenTraceHelper.reopenTraceFromElement(experimentElement, this);
                             return;
                         }
                     }
index ef897c3ec8c72634ac701727f86ec81b2eac7a66..d18a067b568ebbe90bfba272ac0762f0c672c35f 100644 (file)
@@ -79,28 +79,32 @@ public class Messages extends NLS {
      * */
     public static String TmfTraceType_SelectTraceType;
 
-    /** Error opening a trace */
-    public static String TmfOpenTraceHelper_ErrorOpeningTrace;
-    /** Error opening an experiment */
-    public static String TmfOpenTraceHelper_ErrorOpeningExperiment;
+    /** Error opening a trace or experiment
+     * @since 3.0*/
+    public static String TmfOpenTraceHelper_ErrorOpeningElement;
     /** Could not link trace */
     public static String TmfOpenTraceHelper_LinkFailed;
     /** No trace type match */
     public static String TmfOpenTraceHelper_NoTraceTypeMatch;
-    /** Open Trace*/
-    public static String TmfOpenTraceHelper_OpenTrace;
-    /** Open Experiment*/
-    public static String TmfOpenTraceHelper_OpenExperiment;
+    /** Open trace or experiment
+     * @since 3.0*/
+    public static String TmfOpenTraceHelper_OpenElement;
     /** Reduce was too efficient, no candidates found! */
     public static String TmfOpenTraceHelper_ReduceError;
+    /** No trace or experiment type
+     * @since 3.0*/
+    public static String TmfOpenTraceHelper_NoTraceOrExperimentType;
     /** No trace type */
     public static String TmfOpenTraceHelper_NoTraceType;
-    /** Error opening trace*/
-    public static String TmfOpenTraceHelper_ErrorTrace;
-    /** Error opening experiment */
-    public static String TmfOpenTraceHelper_ErrorExperiment;
+    /** Error opening trace or experiment
+     * @since 3.0*/
+    public static String TmfOpenTraceHelper_ErrorElement;
     /** Init error */
     public static String TmfOpenTraceHelper_InitError;
+    /** Trace not found
+     * @since 3.0*/
+    public static String TmfOpenTraceHelper_TraceNotFound;
+
 
     static {
         // initialize resource bundle
index 9e07e45edc5ce6caf49fe0caa6d885889646a9e8..ba4cd3873c8fc9f201d67f9840a466dd73a6b176 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2013, 2014 Ericsson
+ * Copyright (c) 2013, 2014 Ericsson, École Polytechnique de Montréal
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -9,6 +9,7 @@
  * Contributors:
  *   Matthew Khouzam - Initial API and implementation
  *   Patrick Tasse - Update open trace and add open experiment
+ *   Geneviève Bastien - Merge methods to open trace and experiments
  **********************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.project.model;
@@ -38,6 +39,7 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
 import org.eclipse.linuxtools.tmf.ui.editors.TmfEditorInput;
 import org.eclipse.linuxtools.tmf.ui.editors.TmfEventsEditor;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.MessageBox;
 import org.eclipse.swt.widgets.Shell;
@@ -198,99 +200,102 @@ public class TmfOpenTraceHelper {
             }
         }
         if (found == null) {
-            return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TmfOpenTraceHelper_ErrorOpeningTrace);
+            return new Status(IStatus.ERROR, Activator.PLUGIN_ID, NLS.bind(Messages.TmfOpenTraceHelper_TraceNotFound, traceName));
         }
         openTraceFromElement(found);
         return Status.OK_STATUS;
     }
 
-    /**
-     * Open a trace from a trace element. If the trace is already opened, its
-     * editor is activated and brought to top.
-     *
-     * @param traceElement
-     *            the {@link TmfTraceElement} to open
-     */
-    public static void openTraceFromElement(final TmfTraceElement traceElement) {
+    private static ITmfTrace openTraceElement(final TmfTraceElement traceElement) {
+        final ITmfTrace trace = traceElement.instantiateTrace();
+        final ITmfEvent traceEvent = traceElement.instantiateEvent();
+        if ((trace == null) || (traceEvent == null)) {
+            TraceUtils.displayErrorMsg(NLS.bind(Messages.TmfOpenTraceHelper_OpenElement, traceElement.getTypeName()),
+                    NLS.bind(Messages.TmfOpenTraceHelper_NoTraceOrExperimentType, traceElement.getTypeName()));
+            if (trace != null) {
+                trace.dispose();
+            }
+            return null;
+        }
 
-        final IFile file;
         try {
-            file = traceElement.createBookmarksFile();
-        } catch (final CoreException e) {
-            Activator.getDefault().logError(Messages.TmfOpenTraceHelper_ErrorOpeningTrace + ' ' + traceElement.getName());
-            TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_ErrorTrace + ENDL + ENDL + e.getMessage());
-            return;
+            trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());
+        } catch (final TmfTraceException e) {
+            TraceUtils.displayErrorMsg(NLS.bind(Messages.TmfOpenTraceHelper_OpenElement, traceElement.getTypeName()),
+                    Messages.TmfOpenTraceHelper_InitError + ENDL + ENDL + e);
+            trace.dispose();
+            return null;
         }
+        return trace;
+    }
 
-        final IWorkbench wb = PlatformUI.getWorkbench();
-        final IWorkbenchPage activePage = wb.getActiveWorkbenchWindow().getActivePage();
-        final IEditorPart editor = findEditor(new FileEditorInput(file), true);
-        if (editor != null) {
-            activePage.activate(editor);
-            return;
+    private static ITmfTrace openExperimentElement(final TmfExperimentElement experimentElement, IFile bookmarkFile) {
+        /* Experiment element now has an experiment type associated with it */
+        final TmfExperiment experiment = experimentElement.instantiateTrace();
+        if (experiment == null) {
+            TraceUtils.displayErrorMsg(NLS.bind(Messages.TmfOpenTraceHelper_OpenElement, experimentElement.getTypeName()),
+                    NLS.bind(Messages.TmfOpenTraceHelper_NoTraceOrExperimentType, experimentElement.getTypeName()));
+            return null;
         }
 
-        Thread thread = new Thread() {
-            @Override
-            public void run() {
+        // Instantiate the experiment's traces
+        final List<TmfTraceElement> traceEntries = experimentElement.getTraces();
+        int cacheSize = Integer.MAX_VALUE;
+        final ITmfTrace[] traces = new ITmfTrace[traceEntries.size()];
+        for (int i = 0; i < traceEntries.size(); i++) {
+            TmfTraceElement element = traceEntries.get(i);
 
-                final ITmfTrace trace = traceElement.instantiateTrace();
-                final ITmfEvent traceEvent = traceElement.instantiateEvent();
-                if ((trace == null) || (traceEvent == null)) {
-                    TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_NoTraceType);
-                    if (trace != null) {
-                        trace.dispose();
-                    }
-                    return;
-                }
+            // Since trace is under an experiment, use the original trace from
+            // the traces folder
+            element = element.getElementUnderTraceFolder();
 
-                try {
-                    trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());
-                } catch (final TmfTraceException e) {
-                    TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_InitError + ENDL + ENDL + e);
-                    trace.dispose();
-                    return;
+            ITmfTrace trace = openTraceElement(element);
+
+            if (trace == null) {
+                for (int j = 0; j < i; j++) {
+                    traces[j].dispose();
                 }
+                return null;
+            }
+            cacheSize = Math.min(cacheSize, trace.getCacheSize());
 
-                // Get the editor id from the extension point
-                String traceEditorId = traceElement.getEditorId();
-                final String editorId = (traceEditorId != null) ? traceEditorId : TmfEventsEditor.ID;
-                final IEditorInput editorInput = new TmfEditorInput(file, trace);
+            traces[i] = trace;
+        }
 
-                Display.getDefault().asyncExec(new Runnable() {
-                    @Override
-                    public void run() {
-                        try {
-                            activePage.openEditor(editorInput, editorId);
-                            IDE.setDefaultEditor(file, editorId);
-                            // editor should dispose the trace on close
-                        } catch (final PartInitException e) {
-                            TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_ErrorOpeningTrace + ENDL + ENDL + e.getMessage());
-                            Activator.getDefault().logError(Messages.TmfOpenTraceHelper_ErrorOpeningTrace + ' ' + traceElement.getName());
-                            trace.dispose();
-                        }
-                    }
-                });
-            }
-        };
-        thread.start();
+        // Create the experiment
+        experiment.initExperiment(ITmfEvent.class, experimentElement.getName(), traces, cacheSize, experimentElement.getResource());
+        experiment.setBookmarksFile(bookmarkFile);
+
+        return experiment;
+    }
+
+    private static ITmfTrace openProjectElement(final TmfCommonProjectElement element, IFile bookmarkFile) {
+        ITmfTrace trace = null;
+        if (element instanceof TmfTraceElement) {
+            trace = openTraceElement((TmfTraceElement) element);
+        } else if (element instanceof TmfExperimentElement) {
+            trace = openExperimentElement((TmfExperimentElement) element, bookmarkFile);
+        }
+        return trace;
     }
 
     /**
-     * Open an experiment from an experiment element. If the experiment is
-     * already opened, its editor is activated and brought to top.
+     * Open a trace (or experiment) from a project element. If the trace is already opened, its
+     * editor is activated and brought to top.
      *
-     * @param experimentElement
-     *            the {@link TmfExperimentElement} to open
+     * @param traceElement
+     *            the {@link TmfTraceElement} to open
+     * @since 3.0
      */
-    public static void openExperimentFromElement(final TmfExperimentElement experimentElement) {
+    public static void openTraceFromElement(final TmfCommonProjectElement traceElement) {
 
         final IFile file;
         try {
-            file = experimentElement.createBookmarksFile();
+            file = traceElement.createBookmarksFile();
         } catch (final CoreException e) {
-            Activator.getDefault().logError(Messages.TmfOpenTraceHelper_ErrorOpeningExperiment + ' ' + experimentElement.getName());
-            TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment, Messages.TmfOpenTraceHelper_ErrorExperiment + ENDL + ENDL + e.getMessage());
+            Activator.getDefault().logError(NLS.bind(Messages.TmfOpenTraceHelper_ErrorOpeningElement, traceElement.getTypeName()) + ' ' + traceElement.getName());
+            TraceUtils.displayErrorMsg(NLS.bind(Messages.TmfOpenTraceHelper_OpenElement, traceElement.getTypeName()),
+                    NLS.bind(Messages.TmfOpenTraceHelper_ErrorElement, traceElement.getTypeName()) + ENDL + ENDL + e.getMessage());
             return;
         }
 
@@ -306,70 +311,15 @@ public class TmfOpenTraceHelper {
             @Override
             public void run() {
 
-                /*
-                 * Unlike traces, there is no instanceExperiment, so we call
-                 * this function here alone. Maybe it would be better to do this
-                 * on experiment's element constructor?
-                 */
-                experimentElement.refreshSupplementaryFolder();
-
-                // Instantiate the experiment's traces
-                final List<TmfTraceElement> traceEntries = experimentElement.getTraces();
-                final int nbTraces = traceEntries.size();
-                int cacheSize = Integer.MAX_VALUE;
-                String commonEditorId = null;
-                final ITmfTrace[] traces = new ITmfTrace[nbTraces];
-                for (int i = 0; i < nbTraces; i++) {
-                    TmfTraceElement element = traceEntries.get(i);
-
-                    // Since trace is under an experiment, use the original
-                    // trace from the traces folder
-                    element = element.getElementUnderTraceFolder();
-
-                    final ITmfTrace trace = element.instantiateTrace();
-                    final ITmfEvent traceEvent = element.instantiateEvent();
-                    if ((trace == null) || (traceEvent == null)) {
-                        TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment,
-                                Messages.TmfOpenTraceHelper_ErrorOpeningTrace + ' ' + element.getName() +
-                                        ENDL + Messages.TmfOpenTraceHelper_NoTraceType);
-                        for (int j = 0; j < i; j++) {
-                            traces[j].dispose();
-                        }
-                        if (trace != null) {
-                            trace.dispose();
-                        }
-                        return;
-                    }
-                    try {
-                        trace.initTrace(element.getResource(), element.getLocation().getPath(), traceEvent.getClass());
-                    } catch (final TmfTraceException e) {
-                        TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment,
-                                element.getName() + ':' + ' ' + Messages.TmfOpenTraceHelper_InitError + ENDL + ENDL + e);
-                        for (int j = 0; j < i; j++) {
-                            traces[j].dispose();
-                        }
-                        trace.dispose();
-                        return;
-                    }
-                    cacheSize = Math.min(cacheSize, trace.getCacheSize());
-
-                    // If all traces use the same editorId, use it, otherwise
-                    // use the default
-                    final String editorId = element.getEditorId();
-                    if (commonEditorId == null) {
-                        commonEditorId = (editorId != null) ? editorId : TmfEventsEditor.ID;
-                    } else if (!commonEditorId.equals(editorId)) {
-                        commonEditorId = TmfEventsEditor.ID;
-                    }
-                    traces[i] = trace;
+                final ITmfTrace trace = openProjectElement(traceElement, file);
+                if (trace == null) {
+                    return;
                 }
 
-                // Create the experiment
-                final TmfExperiment experiment = new TmfExperiment(ITmfEvent.class, experimentElement.getName(), traces, cacheSize, experimentElement.getResource());
-                experiment.setBookmarksFile(file);
-
-                final String editorId = commonEditorId;
-                final IEditorInput editorInput = new TmfEditorInput(file, experiment);
+                // Get the editor id from the extension point
+                String traceEditorId = traceElement.getEditorId();
+                final String editorId = (traceEditorId != null) ? traceEditorId : TmfEventsEditor.ID;
+                final IEditorInput editorInput = new TmfEditorInput(file, trace);
 
                 Display.getDefault().asyncExec(new Runnable() {
                     @Override
@@ -379,9 +329,10 @@ public class TmfOpenTraceHelper {
                             IDE.setDefaultEditor(file, editorId);
                             // editor should dispose the trace on close
                         } catch (final PartInitException e) {
-                            TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment, Messages.TmfOpenTraceHelper_ErrorOpeningExperiment + ENDL + ENDL + e.getMessage());
-                            Activator.getDefault().logError(Messages.TmfOpenTraceHelper_ErrorOpeningExperiment + ' ' + experimentElement.getName());
-                            experiment.dispose();
+                            TraceUtils.displayErrorMsg(NLS.bind(Messages.TmfOpenTraceHelper_OpenElement, traceElement.getTypeName()),
+                                    NLS.bind(Messages.TmfOpenTraceHelper_ErrorOpeningElement, traceElement.getTypeName()) + ENDL + ENDL + e.getMessage());
+                            Activator.getDefault().logError(NLS.bind(Messages.TmfOpenTraceHelper_ErrorOpeningElement, traceElement.getTypeName()) + ' ' + traceElement.getName());
+                            trace.dispose();
                         }
                     }
                 });
@@ -417,21 +368,24 @@ public class TmfOpenTraceHelper {
     }
 
     /**
-     * Reopen a trace from a trace element in the provided editor
+     * Reopen a trace or experiment from a project element in the provided
+     * editor
      *
      * @param traceElement
      *            the {@link TmfTraceElement} to open
      * @param editor
      *            the reusable editor
+     * @since 3.0
      */
-    public static void reopenTraceFromElement(final TmfTraceElement traceElement, final IReusableEditor editor) {
+    public static void reopenTraceFromElement(final TmfCommonProjectElement traceElement, final IReusableEditor editor) {
 
         final IFile file;
         try {
             file = traceElement.createBookmarksFile();
         } catch (final CoreException e) {
-            Activator.getDefault().logError(Messages.TmfOpenTraceHelper_ErrorOpeningTrace + ' ' + traceElement.getName());
-            TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_ErrorTrace + ENDL + ENDL + e.getMessage());
+            Activator.getDefault().logError(NLS.bind(Messages.TmfOpenTraceHelper_ErrorOpeningElement, traceElement.getTypeName()) + ' ' + traceElement.getName());
+            TraceUtils.displayErrorMsg(NLS.bind(Messages.TmfOpenTraceHelper_OpenElement, traceElement.getTypeName()),
+                    NLS.bind(Messages.TmfOpenTraceHelper_ErrorElement, traceElement.getTypeName()) + ENDL + ENDL + e.getMessage());
             return;
         }
 
@@ -439,21 +393,8 @@ public class TmfOpenTraceHelper {
             @Override
             public void run() {
 
-                final ITmfTrace trace = traceElement.instantiateTrace();
-                final ITmfEvent traceEvent = traceElement.instantiateEvent();
-                if ((trace == null) || (traceEvent == null)) {
-                    TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_NoTraceType);
-                    if (trace != null) {
-                        trace.dispose();
-                    }
-                    return;
-                }
-
-                try {
-                    trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());
-                } catch (final TmfTraceException e) {
-                    TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenTrace, Messages.TmfOpenTraceHelper_InitError + ENDL + ENDL + e);
-                    trace.dispose();
+                final ITmfTrace trace = openProjectElement(traceElement, file);
+                if (trace == null) {
                     return;
                 }
 
@@ -473,96 +414,4 @@ public class TmfOpenTraceHelper {
         thread.start();
     }
 
-    /**
-     * Reopen an experiment from an experiment element in the provided editor
-     *
-     * @param experimentElement
-     *            the {@link TmfExperimentElement} to open
-     * @param editor
-     *            the reusable editor
-     */
-    public static void reopenExperimentFromElement(final TmfExperimentElement experimentElement, final IReusableEditor editor) {
-
-        final IFile file;
-        try {
-            file = experimentElement.createBookmarksFile();
-        } catch (final CoreException e) {
-            Activator.getDefault().logError(Messages.TmfOpenTraceHelper_ErrorOpeningExperiment + ' ' + experimentElement.getName());
-            TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment, Messages.TmfOpenTraceHelper_ErrorExperiment + ENDL + ENDL + e.getMessage());
-            return;
-        }
-
-        Thread thread = new Thread() {
-            @Override
-            public void run() {
-
-                /*
-                 * Unlike traces, there is no instanceExperiment, so we call
-                 * this function here alone. Maybe it would be better to do this
-                 * on experiment's element constructor?
-                 */
-                experimentElement.refreshSupplementaryFolder();
-
-                // Instantiate the experiment's traces
-                final List<TmfTraceElement> traceEntries = experimentElement.getTraces();
-                final int nbTraces = traceEntries.size();
-                int cacheSize = Integer.MAX_VALUE;
-                final ITmfTrace[] traces = new ITmfTrace[nbTraces];
-                for (int i = 0; i < nbTraces; i++) {
-                    TmfTraceElement element = traceEntries.get(i);
-
-                    // Since trace is under an experiment, use the original
-                    // trace from the traces folder
-                    element = element.getElementUnderTraceFolder();
-
-                    final ITmfTrace trace = element.instantiateTrace();
-                    final ITmfEvent traceEvent = element.instantiateEvent();
-                    if ((trace == null) || (traceEvent == null)) {
-                        TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment,
-                                Messages.TmfOpenTraceHelper_ErrorOpeningTrace + ' ' + element.getName() +
-                                        ENDL + Messages.TmfOpenTraceHelper_NoTraceType);
-                        for (int j = 0; j < i; j++) {
-                            traces[j].dispose();
-                        }
-                        if (trace != null) {
-                            trace.dispose();
-                        }
-                        return;
-                    }
-                    try {
-                        trace.initTrace(element.getResource(), element.getLocation().getPath(), traceEvent.getClass());
-                    } catch (final TmfTraceException e) {
-                        TraceUtils.displayErrorMsg(Messages.TmfOpenTraceHelper_OpenExperiment,
-                                element.getName() + ':' + ' ' + Messages.TmfOpenTraceHelper_InitError + ENDL + ENDL + e);
-                        for (int j = 0; j < i; j++) {
-                            traces[j].dispose();
-                        }
-                        trace.dispose();
-                        return;
-                    }
-                    cacheSize = Math.min(cacheSize, trace.getCacheSize());
-
-                    traces[i] = trace;
-                }
-
-                // Create the experiment
-                final TmfExperiment experiment = new TmfExperiment(ITmfEvent.class, experimentElement.getName(), traces, cacheSize, experimentElement.getResource());
-                experiment.setBookmarksFile(file);
-
-                final IEditorInput editorInput = new TmfEditorInput(file, experiment);
-
-                Display.getDefault().asyncExec(new Runnable() {
-                    @Override
-                    public void run() {
-                        final IWorkbench wb = PlatformUI.getWorkbench();
-                        final IWorkbenchPage activePage = wb.getActiveWorkbenchWindow().getActivePage();
-                        activePage.reuseEditor(editor, editorInput);
-                        activePage.activate(editor);
-                    }
-                });
-            }
-        };
-        thread.start();
-    }
-
 }
index a372cddddb8c6fbae1839e28cb672442595ef568..e59c031eab68bf558e1ffe610772540b584042ef 100644 (file)
@@ -30,15 +30,13 @@ TmfTraceElement_TypeName=Trace
 TmfTraceType_SelectTraceType=Select Trace Type
 
 # Open trace error messages
-TmfOpenTraceHelper_ErrorOpeningTrace=Error opening trace
-TmfOpenTraceHelper_ErrorOpeningExperiment=Error opening experiment
+TmfOpenTraceHelper_ErrorOpeningElement=Error opening {0}
 TmfOpenTraceHelper_LinkFailed=Link creation failed
 TmfOpenTraceHelper_NoTraceTypeMatch=No trace types found to match location
-TmfOpenTraceHelper_OpenTrace=Open Trace
-TmfOpenTraceHelper_OpenExperiment=Open Experiment
+TmfOpenTraceHelper_OpenElement=Open {0}
 TmfOpenTraceHelper_ReduceError=Something went wrong
-TmfOpenTraceHelper_NoTraceType=No trace type associated to that trace\nPlease select a valid type
-TmfOpenTraceHelper_ErrorTrace=Error opening trace.
-TmfOpenTraceHelper_ErrorExperiment=Error opening experiment.
 TmfOpenTraceHelper_NoTraceType = No trace type associated to that trace\nPlease select a valid type
+TmfOpenTraceHelper_NoTraceOrExperimentType=No experiment type associated to that {0}\nPlease select a valid type
+TmfOpenTraceHelper_ErrorElement=Error opening {0}.
 TmfOpenTraceHelper_InitError = Error initializing trace.
+TmfOpenTraceHelper_TraceNotFound = Trace {0} not found.
index 4e28e2c706a9b34d3883c56145365f9775eccc31..5df507e91a14a298e8eb436f3fa5c4b666eb8d5c 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2014 Ericsson
+ * Copyright (c) 2009, 2014 Ericsson, École Polytechnique de Montréal
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *   Francois Chouinard - Copied and adapted from NewFolderDialog
+ *   Geneviève Bastien - Add support of experiment types
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.project.wizards;
@@ -20,15 +21,19 @@ import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.InvalidRegistryObjectException;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.linuxtools.internal.tmf.ui.Activator;
+import org.eclipse.linuxtools.tmf.core.TmfCommonConstants;
+import org.eclipse.linuxtools.tmf.core.project.model.TmfTraceType;
 import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentFolder;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
@@ -183,6 +188,18 @@ public class NewExperimentDialog extends SelectionStatusDialog {
                         throw new OperationCanceledException();
                     }
                     experimentFolder.create(false, true, monitor);
+
+                    /*
+                     * Experiments can be set to the default experiment type. No
+                     * need to force user to select an experiment type
+                     */
+                    IConfigurationElement ce = TmfTraceType.getInstance().getTraceAttributes(TmfTraceType.DEFAULT_EXPERIMENT_TYPE);
+                    if (ce != null) {
+                        try {
+                            experimentFolder.setPersistentProperty(TmfCommonConstants.TRACETYPE, ce.getAttribute(TmfTraceType.ID_ATTR));
+                        } catch (InvalidRegistryObjectException | CoreException e) {
+                        }
+                    }
                     if (monitor.isCanceled()) {
                         throw new OperationCanceledException();
                     }
@@ -193,13 +210,11 @@ public class NewExperimentDialog extends SelectionStatusDialog {
         };
         try {
             PlatformUI.getWorkbench().getProgressService().busyCursorWhile(operation);
-        } catch (InterruptedException exception) {
+        } catch (InterruptedException | RuntimeException exception) {
             return null;
         } catch (InvocationTargetException exception) {
             MessageDialog.openError(getShell(), "", NLS.bind("", exception.getTargetException().getMessage())); //$NON-NLS-1$ //$NON-NLS-2$
             return null;
-        } catch (RuntimeException exception) {
-            return null;
         }
 
         return experimentFolder;
This page took 0.037746 seconds and 5 git commands to generate.