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 / ExportTracePackageSelectTraceWizardPage.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
15import java.util.ArrayList;
16import java.util.List;
17
18import org.eclipse.core.resources.IProject;
19import org.eclipse.jface.viewers.IStructuredContentProvider;
20import org.eclipse.jface.viewers.TableViewer;
21import org.eclipse.jface.viewers.Viewer;
22import org.eclipse.jface.wizard.WizardPage;
23import org.eclipse.linuxtools.tmf.ui.project.model.TmfNavigatorContentProvider;
24import org.eclipse.linuxtools.tmf.ui.project.model.TmfNavigatorLabelProvider;
25import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
26import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectRegistry;
27import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
28import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
29import org.eclipse.linuxtools.tmf.ui.project.model.TraceUtils;
30import org.eclipse.swt.SWT;
31import org.eclipse.swt.events.SelectionAdapter;
32import org.eclipse.swt.events.SelectionEvent;
33import org.eclipse.swt.layout.GridData;
34import org.eclipse.swt.layout.GridLayout;
195355a9 35import org.eclipse.swt.widgets.Button;
6e651d8b
MAL
36import org.eclipse.swt.widgets.Composite;
37import org.eclipse.swt.widgets.Event;
38import org.eclipse.swt.widgets.Label;
39import org.eclipse.swt.widgets.Table;
40import org.eclipse.swt.widgets.TableItem;
41import org.eclipse.ui.model.WorkbenchLabelProvider;
42
43/**
44 * A wizard page for selecting the trace to export when no trace was previously
45 * selected.
46 *
47 * @author Marc-Andre Laperle
48 */
49public class ExportTracePackageSelectTraceWizardPage extends WizardPage {
50
51 private static final String PAGE_NAME = "ExportTracePackageSelectTraceWizardPage"; //$NON-NLS-1$
52
53 /**
54 * Construct the select trace page
55 */
56 public ExportTracePackageSelectTraceWizardPage() {
57 super(PAGE_NAME);
58 }
59
60 private IProject fSelectedProject;
61 private Table fTraceTable;
62
63 @Override
64 public void createControl(Composite parent) {
65 Composite projectSelectionGroup = new Composite(parent, SWT.NONE);
66 projectSelectionGroup.setLayout(new GridLayout(2, true));
67 projectSelectionGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
68 projectSelectionGroup.setFont(parent.getFont());
69
70 Label projectLabel = new Label(projectSelectionGroup, SWT.NONE);
71 projectLabel.setText(Messages.ExportTracePackageSelectTraceWizardPage_ProjectSelection);
72 projectLabel.setLayoutData(new GridData());
73
74 Label configLabel = new Label(projectSelectionGroup, SWT.NONE);
75 configLabel.setText(Messages.ExportTracePackageSelectTraceWizardPage_TraceSelection);
76 configLabel.setLayoutData(new GridData());
77
78 final Table projectTable = new Table(projectSelectionGroup, SWT.SINGLE | SWT.BORDER);
79 projectTable.setLayoutData(new GridData(GridData.FILL_BOTH));
80
81 TableViewer projectViewer = new TableViewer(projectTable);
82 projectViewer.setContentProvider(new TmfNavigatorContentProvider() {
83
84 @Override
85 public Object[] getElements(Object inputElement) {
86 return (IProject[]) inputElement;
87 }
88 });
89 projectViewer.setLabelProvider(new WorkbenchLabelProvider());
90 projectViewer.setInput(TraceUtils.getOpenedTmfProjects().toArray(new IProject[] {}));
91
195355a9 92 fTraceTable = new Table(projectSelectionGroup, SWT.BORDER | SWT.CHECK);
6e651d8b
MAL
93 fTraceTable.setLayoutData(new GridData(GridData.FILL_BOTH));
94
95 final TableViewer traceViewer = new TableViewer(fTraceTable);
96 traceViewer.setContentProvider(new IStructuredContentProvider() {
97 @Override
98 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
99 }
100
101 @Override
102 public void dispose() {
103 }
104
105 @Override
106 public Object[] getElements(Object inputElement) {
107 if (inputElement instanceof TmfTraceElement[]) {
108 return (TmfTraceElement[]) inputElement;
109 }
110 return null;
111 }
112 });
0574a7ee 113 traceViewer.setLabelProvider(new ExportLabelProvider());
6e651d8b
MAL
114 fTraceTable.addSelectionListener(new SelectionAdapter() {
115 @Override
116 public void widgetSelected(SelectionEvent e) {
195355a9
MAL
117 getWizard().getContainer().updateButtons();
118 updateNextPageData();
6e651d8b
MAL
119 }
120 });
121
122 projectTable.addSelectionListener(new SelectionAdapter() {
123 @Override
124 public void widgetSelected(SelectionEvent e) {
125 TableItem[] items = projectTable.getSelection();
126 fSelectedProject = (IProject) items[0].getData();
127
f537c959 128 TmfProjectElement project = TmfProjectRegistry.getProject(fSelectedProject, true);
6e651d8b
MAL
129
130 TmfTraceFolder tracesFolder = project.getTracesFolder();
131 List<TmfTraceElement> traces = tracesFolder.getTraces();
132 TmfTraceElement[] array = traces.toArray(new TmfTraceElement[] {});
133 traceViewer.setInput(array);
134 traceViewer.refresh();
135 fTraceTable.select(0);
136 fTraceTable.notifyListeners(SWT.Selection, new Event());
137 getWizard().getContainer().updateButtons();
138 }
139 });
140
195355a9
MAL
141 Composite btComp = new Composite(projectSelectionGroup, SWT.NONE);
142 btComp.setLayout(new GridLayout(2, true));
143 GridData gd = new GridData();
144 gd.horizontalSpan = 2;
145 gd.horizontalAlignment = SWT.RIGHT;
146 btComp.setLayoutData(gd);
147
148 final Button selectAll = new Button(btComp, SWT.PUSH);
149 selectAll.setText(org.eclipse.linuxtools.internal.tmf.ui.project.dialogs.Messages.Dialog_SelectAll);
150 selectAll.addSelectionListener(new SelectionAdapter() {
151 @Override
152 public void widgetSelected(SelectionEvent e) {
153 TableItem[] items = fTraceTable.getItems();
154 for (TableItem item : items) {
155 item.setChecked(true);
156 }
157
158 getWizard().getContainer().updateButtons();
159 updateNextPageData();
160 }
161 });
162
163 final Button deselectAll = new Button(btComp, SWT.PUSH);
164 deselectAll.setText(org.eclipse.linuxtools.internal.tmf.ui.project.dialogs.Messages.Dialog_DeselectAll);
165 deselectAll.addSelectionListener(new SelectionAdapter() {
166 @Override
167 public void widgetSelected(SelectionEvent e) {
168 TableItem[] items = fTraceTable.getItems();
169 for (TableItem item : items) {
170 item.setChecked(false);
171 }
172
173 getWizard().getContainer().updateButtons();
174 updateNextPageData();
175 }
176 });
177
6e651d8b
MAL
178 setControl(projectSelectionGroup);
179 setTitle(Messages.ExportTracePackageWizardPage_Title);
180 setMessage(Messages.ExportTracePackageSelectTraceWizardPage_ChooseTrace);
181 }
182
195355a9
MAL
183 private ArrayList<TmfTraceElement> getCheckedTraces() {
184 TableItem[] items = fTraceTable.getItems();
507b1336 185 ArrayList<TmfTraceElement> traces = new ArrayList<>();
195355a9
MAL
186 for (TableItem item : items) {
187 if (item.getChecked()) {
188 TmfTraceElement trace = (TmfTraceElement) item.getData();
189 traces.add(trace);
190 }
191 }
192 return traces;
193 }
194
195 private void updateNextPageData() {
196 ExportTracePackageWizardPage page = (ExportTracePackageWizardPage) getWizard().getPage(ExportTracePackageWizardPage.PAGE_NAME);
197 page.setSelectedTraces(getCheckedTraces());
198 }
199
6e651d8b
MAL
200 @Override
201 public boolean canFlipToNextPage() {
195355a9 202 return getCheckedTraces().size() > 0;
6e651d8b 203 }
0574a7ee
BH
204
205 private class ExportLabelProvider extends TmfNavigatorLabelProvider {
206 @Override
207 public String getText(Object element) {
208
209 if (element instanceof TmfTraceElement) {
210 TmfTraceElement folder = (TmfTraceElement) element;
211 return folder.getElementPath();
212 }
213 return super.getText(element);
214 }
215 }
216
217
6e651d8b 218}
This page took 0.052976 seconds and 5 git commands to generate.