1 /*******************************************************************************
2 * Copyright (c) 2013, 2014 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
.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
.Button
;
36 import org
.eclipse
.swt
.widgets
.Composite
;
37 import org
.eclipse
.swt
.widgets
.Event
;
38 import org
.eclipse
.swt
.widgets
.Label
;
39 import org
.eclipse
.swt
.widgets
.Table
;
40 import org
.eclipse
.swt
.widgets
.TableItem
;
41 import org
.eclipse
.ui
.model
.WorkbenchLabelProvider
;
44 * A wizard page for selecting the trace to export when no trace was previously
47 * @author Marc-Andre Laperle
49 public class ExportTracePackageSelectTraceWizardPage
extends WizardPage
{
51 private static final String PAGE_NAME
= "ExportTracePackageSelectTraceWizardPage"; //$NON-NLS-1$
54 * Construct the select trace page
56 public ExportTracePackageSelectTraceWizardPage() {
60 private IProject fSelectedProject
;
61 private Table fTraceTable
;
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());
70 Label projectLabel
= new Label(projectSelectionGroup
, SWT
.NONE
);
71 projectLabel
.setText(Messages
.ExportTracePackageSelectTraceWizardPage_ProjectSelection
);
72 projectLabel
.setLayoutData(new GridData());
74 Label configLabel
= new Label(projectSelectionGroup
, SWT
.NONE
);
75 configLabel
.setText(Messages
.ExportTracePackageSelectTraceWizardPage_TraceSelection
);
76 configLabel
.setLayoutData(new GridData());
78 final Table projectTable
= new Table(projectSelectionGroup
, SWT
.SINGLE
| SWT
.BORDER
);
79 projectTable
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
81 TableViewer projectViewer
= new TableViewer(projectTable
);
82 projectViewer
.setContentProvider(new TmfNavigatorContentProvider() {
85 public Object
[] getElements(Object inputElement
) {
86 return (IProject
[]) inputElement
;
89 projectViewer
.setLabelProvider(new WorkbenchLabelProvider());
90 projectViewer
.setInput(TraceUtils
.getOpenedTmfProjects().toArray(new IProject
[] {}));
92 fTraceTable
= new Table(projectSelectionGroup
, SWT
.BORDER
| SWT
.CHECK
);
93 fTraceTable
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
95 final TableViewer traceViewer
= new TableViewer(fTraceTable
);
96 traceViewer
.setContentProvider(new IStructuredContentProvider() {
98 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
102 public void dispose() {
106 public Object
[] getElements(Object inputElement
) {
107 if (inputElement
instanceof TmfTraceElement
[]) {
108 return (TmfTraceElement
[]) inputElement
;
113 traceViewer
.setLabelProvider(new ExportLabelProvider());
114 fTraceTable
.addSelectionListener(new SelectionAdapter() {
116 public void widgetSelected(SelectionEvent e
) {
117 getWizard().getContainer().updateButtons();
118 updateNextPageData();
122 projectTable
.addSelectionListener(new SelectionAdapter() {
124 public void widgetSelected(SelectionEvent e
) {
125 TableItem
[] items
= projectTable
.getSelection();
126 fSelectedProject
= (IProject
) items
[0].getData();
128 TmfProjectElement project
= TmfProjectRegistry
.getProject(fSelectedProject
, true);
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();
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
);
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() {
152 public void widgetSelected(SelectionEvent e
) {
153 TableItem
[] items
= fTraceTable
.getItems();
154 for (TableItem item
: items
) {
155 item
.setChecked(true);
158 getWizard().getContainer().updateButtons();
159 updateNextPageData();
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() {
167 public void widgetSelected(SelectionEvent e
) {
168 TableItem
[] items
= fTraceTable
.getItems();
169 for (TableItem item
: items
) {
170 item
.setChecked(false);
173 getWizard().getContainer().updateButtons();
174 updateNextPageData();
178 setControl(projectSelectionGroup
);
179 setTitle(Messages
.ExportTracePackageWizardPage_Title
);
180 setMessage(Messages
.ExportTracePackageSelectTraceWizardPage_ChooseTrace
);
183 private ArrayList
<TmfTraceElement
> getCheckedTraces() {
184 TableItem
[] items
= fTraceTable
.getItems();
185 ArrayList
<TmfTraceElement
> traces
= new ArrayList
<>();
186 for (TableItem item
: items
) {
187 if (item
.getChecked()) {
188 TmfTraceElement trace
= (TmfTraceElement
) item
.getData();
195 private void updateNextPageData() {
196 ExportTracePackageWizardPage page
= (ExportTracePackageWizardPage
) getWizard().getPage(ExportTracePackageWizardPage
.PAGE_NAME
);
197 page
.setSelectedTraces(getCheckedTraces());
201 public boolean canFlipToNextPage() {
202 return getCheckedTraces().size() > 0;
205 private class ExportLabelProvider
extends TmfNavigatorLabelProvider
{
207 public String
getText(Object element
) {
209 if (element
instanceof TmfTraceElement
) {
210 TmfTraceElement folder
= (TmfTraceElement
) element
;
211 return folder
.getElementPath();
213 return super.getText(element
);