tmf: Switch tmf.ui to Java 7 + fix warnings
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / wizards / SelectTracesWizardPage.java
CommitLineData
12c155f5 1/*******************************************************************************
11252342 2 * Copyright (c) 2009, 2013 Ericsson, École Polytechnique de Montréal
abbdd66a 3 *
12c155f5
FC
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
abbdd66a 8 *
12c155f5
FC
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
beb19106 11 * Geneviève Bastien - Moved the add and remove code to the experiment class
12c155f5
FC
12 *******************************************************************************/
13
14package org.eclipse.linuxtools.tmf.ui.project.wizards;
15
16import java.util.HashMap;
17import java.util.Map;
18import java.util.Set;
19import java.util.Vector;
20
12c155f5 21import org.eclipse.core.resources.IFolder;
12c155f5 22import org.eclipse.core.runtime.CoreException;
12c155f5
FC
23import org.eclipse.jface.viewers.CheckboxTableViewer;
24import org.eclipse.jface.wizard.WizardPage;
8fd82db5 25import org.eclipse.linuxtools.internal.tmf.ui.Activator;
12c155f5
FC
26import org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement;
27import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentElement;
28import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
29import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
30import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
31import org.eclipse.linuxtools.tmf.ui.project.model.TraceFolderContentProvider;
32import org.eclipse.linuxtools.tmf.ui.project.model.TraceFolderLabelProvider;
33import org.eclipse.swt.SWT;
34import org.eclipse.swt.layout.FormAttachment;
35import org.eclipse.swt.layout.FormData;
36import org.eclipse.swt.layout.FormLayout;
37import org.eclipse.swt.widgets.Composite;
38import org.eclipse.swt.widgets.Table;
39import org.eclipse.swt.widgets.TableColumn;
40
41/**
b544077e 42 * Implementation of a wizard page for selecting trace for an experiment.
12c155f5 43 * <p>
abbdd66a 44 *
b544077e
BH
45 * @version 1.0
46 * @author Francois Chouinard
12c155f5
FC
47 */
48public class SelectTracesWizardPage extends WizardPage {
49
50 // ------------------------------------------------------------------------
51 // Attributes
52 // ------------------------------------------------------------------------
53
54 private final TmfProjectElement fProject;
55 private final TmfExperimentElement fExperiment;
9fa32496 56 private Map<String, TmfTraceElement> fPreviousTraces;
12c155f5
FC
57 private CheckboxTableViewer fCheckboxTableViewer;
58
59 // ------------------------------------------------------------------------
60 // Constructor
61 // ------------------------------------------------------------------------
b544077e
BH
62 /**
63 * Constructor
64 * @param project The project model element.
65 * @param experiment The experiment model experiment.
66 */
12c155f5
FC
67 protected SelectTracesWizardPage(TmfProjectElement project, TmfExperimentElement experiment) {
68 super(""); //$NON-NLS-1$
69 setTitle(Messages.SelectTracesWizardPage_WindowTitle);
70 setDescription(Messages.SelectTracesWizardPage_Description);
71 fProject = project;
72 fExperiment = experiment;
73 }
74
75 // ------------------------------------------------------------------------
76 // Dialog
77 // ------------------------------------------------------------------------
11252342 78
12c155f5
FC
79 @Override
80 public void createControl(Composite parent) {
81 Composite container = new Composite(parent, SWT.NULL);
82 container.setLayout(new FormLayout());
83 setControl(container);
84
85 fCheckboxTableViewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER);
86 fCheckboxTableViewer.setContentProvider(new TraceFolderContentProvider());
87 fCheckboxTableViewer.setLabelProvider(new TraceFolderLabelProvider());
88
89 final Table table = fCheckboxTableViewer.getTable();
90 final FormData formData = new FormData();
91 formData.bottom = new FormAttachment(100, 0);
92 formData.right = new FormAttachment(100, 0);
93 formData.top = new FormAttachment(0, 0);
94 formData.left = new FormAttachment(0, 0);
95 table.setLayoutData(formData);
96 table.setHeaderVisible(true);
97
98 final TableColumn tableColumn = new TableColumn(table, SWT.NONE);
99 tableColumn.setWidth(200);
100 tableColumn.setText(Messages.SelectTracesWizardPage_TraceColumnHeader);
101
102 // Get the list of traces already part of the experiment
507b1336 103 fPreviousTraces = new HashMap<>();
12c155f5
FC
104 for (ITmfProjectModelElement child : fExperiment.getChildren()) {
105 if (child instanceof TmfTraceElement) {
106 TmfTraceElement trace = (TmfTraceElement) child;
107 String name = trace.getResource().getName();
108 fPreviousTraces.put(name, trace);
109 }
110 }
111
112 // Populate the list of traces to choose from
113 Set<String> keys = fPreviousTraces.keySet();
114 TmfTraceFolder traceFolder = fProject.getTracesFolder();
115 fCheckboxTableViewer.setInput(traceFolder);
116
117 // Set the checkbox for the traces already included
118 int index = 0;
119 Object element = fCheckboxTableViewer.getElementAt(index++);
120 while (element != null) {
121 if (element instanceof TmfTraceElement) {
122 TmfTraceElement trace = (TmfTraceElement) element;
123 if (keys.contains(trace.getResource().getName())) {
124 fCheckboxTableViewer.setChecked(element, true);
125 }
126 }
127 element = fCheckboxTableViewer.getElementAt(index++);
128 }
129 }
130
b544077e
BH
131 /**
132 * Method to finalize the select operation.
133 * @return <code>true</code> if successful else <code>false</code>
134 */
12c155f5
FC
135 public boolean performFinish() {
136
137 IFolder experiment = fExperiment.getResource();
639181ba 138 boolean changed = false;
12c155f5
FC
139
140 // Add the selected traces to the experiment
141 Set<String> keys = fPreviousTraces.keySet();
142 TmfTraceElement[] traces = getSelection();
143 for (TmfTraceElement trace : traces) {
144 String name = trace.getResource().getName();
145 if (keys.contains(name)) {
146 fPreviousTraces.remove(name);
147 } else {
beb19106 148 fExperiment.addTrace(trace);
639181ba 149 changed = true;
12c155f5
FC
150 }
151 }
152
153 // Remove traces that were unchecked (thus left in fPreviousTraces)
154 keys = fPreviousTraces.keySet();
155 for (String key : keys) {
12c155f5 156 try {
beb19106 157 fExperiment.removeTrace(fPreviousTraces.get(key));
12c155f5 158 } catch (CoreException e) {
8fd82db5 159 Activator.getDefault().logError("Error selecting traces for experiment " + experiment.getName(), e); //$NON-NLS-1$
12c155f5 160 }
639181ba 161 changed = true;
12c155f5
FC
162 }
163 fProject.refresh();
639181ba 164 if (changed) {
d9030b38 165 fExperiment.deleteSupplementaryResources();
639181ba
PT
166 fExperiment.closeEditors();
167 }
12c155f5
FC
168
169 return true;
170 }
171
12c155f5
FC
172 /**
173 * Get the list of selected traces
174 */
175 private TmfTraceElement[] getSelection() {
507b1336 176 Vector<TmfTraceElement> traces = new Vector<>();
12c155f5
FC
177 Object[] selection = fCheckboxTableViewer.getCheckedElements();
178 for (Object sel : selection) {
abbdd66a 179 if (sel instanceof TmfTraceElement) {
12c155f5 180 traces.add((TmfTraceElement) sel);
abbdd66a 181 }
12c155f5
FC
182 }
183 TmfTraceElement[] result = new TmfTraceElement[traces.size()];
184 traces.toArray(result);
185 return result;
186 }
187
188}
This page took 0.064472 seconds and 5 git commands to generate.