tmf: Import and Export trace package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / project / wizards / tracepkg / importexport / ExportTracePackageSelectTraceWizardPage.java
1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
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
13 package org.eclipse.linuxtools.internal.tmf.ui.project.wizards.tracepkg.importexport;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import org.eclipse.core.resources.IProject;
19 import org.eclipse.jface.viewers.IStructuredContentProvider;
20 import org.eclipse.jface.viewers.TableViewer;
21 import org.eclipse.jface.viewers.Viewer;
22 import org.eclipse.jface.wizard.WizardPage;
23 import org.eclipse.linuxtools.tmf.ui.project.model.TmfNavigatorContentProvider;
24 import org.eclipse.linuxtools.tmf.ui.project.model.TmfNavigatorLabelProvider;
25 import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
26 import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectRegistry;
27 import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
28 import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
29 import org.eclipse.linuxtools.tmf.ui.project.model.TraceUtils;
30 import org.eclipse.swt.SWT;
31 import org.eclipse.swt.events.SelectionAdapter;
32 import org.eclipse.swt.events.SelectionEvent;
33 import org.eclipse.swt.layout.GridData;
34 import org.eclipse.swt.layout.GridLayout;
35 import org.eclipse.swt.widgets.Composite;
36 import org.eclipse.swt.widgets.Event;
37 import org.eclipse.swt.widgets.Label;
38 import org.eclipse.swt.widgets.Table;
39 import org.eclipse.swt.widgets.TableItem;
40 import org.eclipse.ui.model.WorkbenchLabelProvider;
41
42 /**
43 * A wizard page for selecting the trace to export when no trace was previously
44 * selected.
45 *
46 * @author Marc-Andre Laperle
47 */
48 public class ExportTracePackageSelectTraceWizardPage extends WizardPage {
49
50 private static final String PAGE_NAME = "ExportTracePackageSelectTraceWizardPage"; //$NON-NLS-1$
51
52 /**
53 * Construct the select trace page
54 */
55 public ExportTracePackageSelectTraceWizardPage() {
56 super(PAGE_NAME);
57 }
58
59 private IProject fSelectedProject;
60 private Table fTraceTable;
61
62 @Override
63 public void createControl(Composite parent) {
64 Composite projectSelectionGroup = new Composite(parent, SWT.NONE);
65 projectSelectionGroup.setLayout(new GridLayout(2, true));
66 projectSelectionGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
67 projectSelectionGroup.setFont(parent.getFont());
68
69 Label projectLabel = new Label(projectSelectionGroup, SWT.NONE);
70 projectLabel.setText(Messages.ExportTracePackageSelectTraceWizardPage_ProjectSelection);
71 projectLabel.setLayoutData(new GridData());
72
73 Label configLabel = new Label(projectSelectionGroup, SWT.NONE);
74 configLabel.setText(Messages.ExportTracePackageSelectTraceWizardPage_TraceSelection);
75 configLabel.setLayoutData(new GridData());
76
77 final Table projectTable = new Table(projectSelectionGroup, SWT.SINGLE | SWT.BORDER);
78 projectTable.setLayoutData(new GridData(GridData.FILL_BOTH));
79
80 TableViewer projectViewer = new TableViewer(projectTable);
81 projectViewer.setContentProvider(new TmfNavigatorContentProvider() {
82
83 @Override
84 public Object[] getElements(Object inputElement) {
85 return (IProject[]) inputElement;
86 }
87 });
88 projectViewer.setLabelProvider(new WorkbenchLabelProvider());
89 projectViewer.setInput(TraceUtils.getOpenedTmfProjects().toArray(new IProject[] {}));
90
91 fTraceTable = new Table(projectSelectionGroup, SWT.SINGLE | SWT.BORDER);
92 fTraceTable.setLayoutData(new GridData(GridData.FILL_BOTH));
93
94 final TableViewer traceViewer = new TableViewer(fTraceTable);
95 traceViewer.setContentProvider(new IStructuredContentProvider() {
96 @Override
97 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
98 }
99
100 @Override
101 public void dispose() {
102 }
103
104 @Override
105 public Object[] getElements(Object inputElement) {
106 if (inputElement instanceof TmfTraceElement[]) {
107 return (TmfTraceElement[]) inputElement;
108 }
109 return null;
110 }
111 });
112 traceViewer.setLabelProvider(new TmfNavigatorLabelProvider());
113 fTraceTable.addSelectionListener(new SelectionAdapter() {
114 @Override
115 public void widgetSelected(SelectionEvent e) {
116 TableItem[] items = fTraceTable.getSelection();
117 TmfTraceElement trace = (TmfTraceElement) items[0].getData();
118 ExportTracePackageWizardPage page = (ExportTracePackageWizardPage) getWizard().getPage(ExportTracePackageWizardPage.PAGE_NAME);
119 ArrayList<TmfTraceElement> traces = new ArrayList<TmfTraceElement>();
120 traces.add(trace);
121 page.setSelectedTraces(traces);
122 }
123 });
124
125 projectTable.addSelectionListener(new SelectionAdapter() {
126 @Override
127 public void widgetSelected(SelectionEvent e) {
128 TableItem[] items = projectTable.getSelection();
129 fSelectedProject = (IProject) items[0].getData();
130
131 // Make sure all the elements are created
132 new TmfNavigatorContentProvider().getChildren(fSelectedProject);
133 TmfProjectElement project = TmfProjectRegistry.getProject(fSelectedProject);
134
135 TmfTraceFolder tracesFolder = project.getTracesFolder();
136 List<TmfTraceElement> traces = tracesFolder.getTraces();
137 TmfTraceElement[] array = traces.toArray(new TmfTraceElement[] {});
138 traceViewer.setInput(array);
139 traceViewer.refresh();
140 fTraceTable.select(0);
141 fTraceTable.notifyListeners(SWT.Selection, new Event());
142 getWizard().getContainer().updateButtons();
143 }
144 });
145
146 setControl(projectSelectionGroup);
147 setTitle(Messages.ExportTracePackageWizardPage_Title);
148 setMessage(Messages.ExportTracePackageSelectTraceWizardPage_ChooseTrace);
149 }
150
151 @Override
152 public boolean canFlipToNextPage() {
153 return fTraceTable.getSelectionCount() > 0;
154 }
155 }
This page took 0.033758 seconds and 5 git commands to generate.