ss: Move plugins to Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / project / wizards / tracepkg / importexport / ExportTracePackageHandler.java
CommitLineData
6e651d8b 1/*******************************************************************************
60ae41e1 2 * Copyright (c) 2013, 2014 Ericsson
6e651d8b
MAL
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Marc-Andre Laperle - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport;
14
195355a9
MAL
15import java.util.ArrayList;
16import java.util.List;
17
6e651d8b
MAL
18import org.eclipse.core.commands.AbstractHandler;
19import org.eclipse.core.commands.ExecutionEvent;
20import org.eclipse.core.commands.ExecutionException;
21import org.eclipse.jface.viewers.ISelection;
22import org.eclipse.jface.viewers.IStructuredSelection;
23import org.eclipse.jface.viewers.StructuredSelection;
24import org.eclipse.jface.wizard.WizardDialog;
195355a9
MAL
25import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
26import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
27import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
28import org.eclipse.ui.ISources;
6e651d8b
MAL
29import org.eclipse.ui.IWorkbenchWindow;
30import org.eclipse.ui.PlatformUI;
31import org.eclipse.ui.handlers.HandlerUtil;
32
33/**
34 * Handler for exporting a trace package
35 *
36 * @author Marc-Andre Laperle
37 */
38public class ExportTracePackageHandler extends AbstractHandler {
39
195355a9
MAL
40 private boolean fEnabled = false;
41
6e651d8b
MAL
42 @Override
43 public Object execute(ExecutionEvent event) throws ExecutionException {
6e651d8b 44 IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
6e651d8b 45 if (window == null) {
0126a8ca 46 return Boolean.FALSE;
6e651d8b
MAL
47 }
48
49 ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
50 IStructuredSelection sec = StructuredSelection.EMPTY;
507b1336 51 List<TmfTraceElement> selectedTraces = new ArrayList<>();
6e651d8b
MAL
52 if (currentSelection instanceof IStructuredSelection) {
53 sec = (IStructuredSelection) currentSelection;
195355a9
MAL
54 Object[] selectedElements = sec.toArray();
55 for (Object selectedElement : selectedElements) {
56 if (selectedElement instanceof TmfTraceElement) {
57 TmfTraceElement tmfTraceElement = (TmfTraceElement) selectedElement;
58 selectedTraces.add(tmfTraceElement.getElementUnderTraceFolder());
59 } else if (selectedElement instanceof TmfTraceFolder) {
60 TmfTraceFolder tmfTraceFolder = (TmfTraceFolder) selectedElement;
61 selectedTraces = tmfTraceFolder.getTraces();
62 }
63 }
6e651d8b
MAL
64 }
65
195355a9
MAL
66 ExportTracePackageWizard w = new ExportTracePackageWizard(selectedTraces);
67
6e651d8b
MAL
68 w.init(PlatformUI.getWorkbench(), sec);
69 WizardDialog dialog = new WizardDialog(window.getShell(), w);
70 dialog.open();
71 return null;
72 }
73
195355a9
MAL
74 @Override
75 public boolean isEnabled() {
76 return super.isEnabled() && fEnabled;
77 }
78
79 @Override
80 public void setEnabled(Object evaluationContext) {
81 super.setEnabled(evaluationContext);
82
83 fEnabled = true;
84
85 Object s = HandlerUtil.getVariable(evaluationContext, ISources.ACTIVE_MENU_SELECTION_NAME);
86 if (s instanceof IStructuredSelection) {
87 IStructuredSelection selection = (IStructuredSelection) s;
88 // If we have traces selected, make sure they are all from the same
89 // project, disable handler otherwise
90 Object[] selectedElements = selection.toArray();
91 TmfProjectElement firstProject = null;
92 for (Object selectedElement : selectedElements) {
93 if (selectedElement instanceof TmfTraceElement) {
94 TmfTraceElement tmfTraceElement = (TmfTraceElement) selectedElement;
95 TmfProjectElement project = tmfTraceElement.getProject();
96 if (firstProject != null && !project.equals(firstProject)) {
97 fEnabled = false;
98 }
99
100 firstProject = project;
101 }
102 }
103 }
104 }
6e651d8b 105}
This page took 0.053335 seconds and 5 git commands to generate.