tmf: Switch tmf.ui to Java 7 + fix warnings
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / internal / tmf / ui / project / wizards / tracepkg / importexport / ExportTracePackageSelectTraceWizardPage.java
CommitLineData
6e651d8b
MAL
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
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 });
113 traceViewer.setLabelProvider(new TmfNavigatorLabelProvider());
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
128 // Make sure all the elements are created
129 new TmfNavigatorContentProvider().getChildren(fSelectedProject);
130 TmfProjectElement project = TmfProjectRegistry.getProject(fSelectedProject);
131
132 TmfTraceFolder tracesFolder = project.getTracesFolder();
133 List<TmfTraceElement> traces = tracesFolder.getTraces();
134 TmfTraceElement[] array = traces.toArray(new TmfTraceElement[] {});
135 traceViewer.setInput(array);
136 traceViewer.refresh();
137 fTraceTable.select(0);
138 fTraceTable.notifyListeners(SWT.Selection, new Event());
139 getWizard().getContainer().updateButtons();
140 }
141 });
142
195355a9
MAL
143 Composite btComp = new Composite(projectSelectionGroup, SWT.NONE);
144 btComp.setLayout(new GridLayout(2, true));
145 GridData gd = new GridData();
146 gd.horizontalSpan = 2;
147 gd.horizontalAlignment = SWT.RIGHT;
148 btComp.setLayoutData(gd);
149
150 final Button selectAll = new Button(btComp, SWT.PUSH);
151 selectAll.setText(org.eclipse.linuxtools.internal.tmf.ui.project.dialogs.Messages.Dialog_SelectAll);
152 selectAll.addSelectionListener(new SelectionAdapter() {
153 @Override
154 public void widgetSelected(SelectionEvent e) {
155 TableItem[] items = fTraceTable.getItems();
156 for (TableItem item : items) {
157 item.setChecked(true);
158 }
159
160 getWizard().getContainer().updateButtons();
161 updateNextPageData();
162 }
163 });
164
165 final Button deselectAll = new Button(btComp, SWT.PUSH);
166 deselectAll.setText(org.eclipse.linuxtools.internal.tmf.ui.project.dialogs.Messages.Dialog_DeselectAll);
167 deselectAll.addSelectionListener(new SelectionAdapter() {
168 @Override
169 public void widgetSelected(SelectionEvent e) {
170 TableItem[] items = fTraceTable.getItems();
171 for (TableItem item : items) {
172 item.setChecked(false);
173 }
174
175 getWizard().getContainer().updateButtons();
176 updateNextPageData();
177 }
178 });
179
6e651d8b
MAL
180 setControl(projectSelectionGroup);
181 setTitle(Messages.ExportTracePackageWizardPage_Title);
182 setMessage(Messages.ExportTracePackageSelectTraceWizardPage_ChooseTrace);
183 }
184
195355a9
MAL
185 private ArrayList<TmfTraceElement> getCheckedTraces() {
186 TableItem[] items = fTraceTable.getItems();
507b1336 187 ArrayList<TmfTraceElement> traces = new ArrayList<>();
195355a9
MAL
188 for (TableItem item : items) {
189 if (item.getChecked()) {
190 TmfTraceElement trace = (TmfTraceElement) item.getData();
191 traces.add(trace);
192 }
193 }
194 return traces;
195 }
196
197 private void updateNextPageData() {
198 ExportTracePackageWizardPage page = (ExportTracePackageWizardPage) getWizard().getPage(ExportTracePackageWizardPage.PAGE_NAME);
199 page.setSelectedTraces(getCheckedTraces());
200 }
201
6e651d8b
MAL
202 @Override
203 public boolean canFlipToNextPage() {
195355a9 204 return getCheckedTraces().size() > 0;
6e651d8b
MAL
205 }
206}
This page took 0.032884 seconds and 5 git commands to generate.