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 acd99e7f5b62b9b3396e79090a215e33d9d2a406..456dd6bbbb0a54caa22d9b681568a5464ec4c213 100644 (file)
@@ -15,9 +15,16 @@ package org.eclipse.linuxtools.internal.tmf.ui.commands;
 
 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;
@@ -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);
@@ -42,7 +55,21 @@ public class OpenFileHandler extends AbstractHandler {
         }
 
         try {
-            TmfTraceFolder destinationFolder = TmfHandlerUtil.getTraceFolderFromSelection(HandlerUtil.getCurrentSelection(event));
+
+            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.025206 seconds and 5 git commands to generate.