1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
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
10 * Marc-Andre Laperle - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.tmf
.ui
.project
.wizards
.tracepkg
.importexport
;
15 import java
.util
.ArrayList
;
16 import java
.util
.List
;
18 import org
.eclipse
.core
.commands
.AbstractHandler
;
19 import org
.eclipse
.core
.commands
.ExecutionEvent
;
20 import org
.eclipse
.core
.commands
.ExecutionException
;
21 import org
.eclipse
.jface
.viewers
.ISelection
;
22 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
23 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
24 import org
.eclipse
.jface
.wizard
.WizardDialog
;
25 import org
.eclipse
.linuxtools
.tmf
.ui
.project
.model
.TmfProjectElement
;
26 import org
.eclipse
.linuxtools
.tmf
.ui
.project
.model
.TmfTraceElement
;
27 import org
.eclipse
.linuxtools
.tmf
.ui
.project
.model
.TmfTraceFolder
;
28 import org
.eclipse
.ui
.ISources
;
29 import org
.eclipse
.ui
.IWorkbenchWindow
;
30 import org
.eclipse
.ui
.PlatformUI
;
31 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
34 * Handler for exporting a trace package
36 * @author Marc-Andre Laperle
38 public class ExportTracePackageHandler
extends AbstractHandler
{
40 private boolean fEnabled
= false;
43 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
44 IWorkbenchWindow window
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow();
49 ISelection currentSelection
= HandlerUtil
.getCurrentSelection(event
);
50 IStructuredSelection sec
= StructuredSelection
.EMPTY
;
51 List
<TmfTraceElement
> selectedTraces
= new ArrayList
<>();
52 if (currentSelection
instanceof IStructuredSelection
) {
53 sec
= (IStructuredSelection
) currentSelection
;
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();
66 ExportTracePackageWizard w
= new ExportTracePackageWizard(selectedTraces
);
68 w
.init(PlatformUI
.getWorkbench(), sec
);
69 WizardDialog dialog
= new WizardDialog(window
.getShell(), w
);
75 public boolean isEnabled() {
76 return super.isEnabled() && fEnabled
;
80 public void setEnabled(Object evaluationContext
) {
81 super.setEnabled(evaluationContext
);
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
)) {
100 firstProject
= project
;