ss: Move plugins to Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / commands / OpenFileHandler.java
index df4c24048a99991dd513ce1ea50dd0d0fa353612..456dd6bbbb0a54caa22d9b681568a5464ec4c213 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2013 Ericsson
+ * Copyright (c) 2013, 2014 Ericsson
  *
  * 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:
  *   Matthew Khouzam - Initial API and implementation
+ *   Patrick Tasse - Add support for folder elements
  **********************************************************************/
 
 package org.eclipse.linuxtools.internal.tmf.ui.commands;
@@ -16,9 +17,15 @@ import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.linuxtools.internal.tmf.ui.Activator;
 import org.eclipse.linuxtools.tmf.core.TmfCommonConstants;
 import org.eclipse.linuxtools.tmf.ui.project.model.TmfOpenTraceHelper;
+import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
+import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectRegistry;
+import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
@@ -33,6 +40,12 @@ public class OpenFileHandler extends AbstractHandler {
 
     @Override
     public Object execute(ExecutionEvent event) {
+
+        ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
+        // Menu Selection is not null for context-sensitive menu
+        ISelection menuSelection  = HandlerUtil.getActiveMenuSelection(event);
+
+        // Get trace path
         final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
         FileDialog fd = new FileDialog(shell);
         fd.setText(Messages.OpenFileHandler_SelectTraceFile);
@@ -41,11 +54,23 @@ public class OpenFileHandler extends AbstractHandler {
             return null;
         }
 
-        TmfOpenTraceHelper oth = new TmfOpenTraceHelper();
         try {
-            IProject project = TmfHandlerUtil.getProjectFromSelection(HandlerUtil.getCurrentSelection(event));
-            String projectName = project != null ? project.getName() : TmfCommonConstants.DEFAULT_TRACE_PROJECT_NAME;
-            oth.openTraceFromPath(projectName, filePath, shell);
+
+            TmfTraceFolder destinationFolder;
+
+            if ((menuSelection != null) && (currentSelection instanceof IStructuredSelection)) {
+                // If handler is called from the context sensitive menu of a tracing project import to
+                // the traces folder from this project
+                destinationFolder = TmfHandlerUtil.getTraceFolderFromSelection(currentSelection);
+            } else {
+                // If handler is called from file menu import into default tracing project
+                IProject project = TmfProjectRegistry.createProject(
+                        TmfCommonConstants.DEFAULT_TRACE_PROJECT_NAME, null, new NullProgressMonitor());
+                TmfProjectElement projectElement = TmfProjectRegistry.getProject(project, true);
+                destinationFolder = projectElement.getTracesFolder();
+            }
+
+            TmfOpenTraceHelper.openTraceFromPath(destinationFolder, filePath, shell);
         } catch (CoreException e) {
             Activator.getDefault().logError(e.getMessage(), e);
         }
This page took 0.030903 seconds and 5 git commands to generate.