1 /*******************************************************************************
2 * Copyright (c) 2013 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
.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
;
43 * A wizard page for selecting the trace to export when no trace was previously
46 * @author Marc-Andre Laperle
48 public class ExportTracePackageSelectTraceWizardPage
extends WizardPage
{
50 private static final String PAGE_NAME
= "ExportTracePackageSelectTraceWizardPage"; //$NON-NLS-1$
53 * Construct the select trace page
55 public ExportTracePackageSelectTraceWizardPage() {
59 private IProject fSelectedProject
;
60 private Table fTraceTable
;
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());
69 Label projectLabel
= new Label(projectSelectionGroup
, SWT
.NONE
);
70 projectLabel
.setText(Messages
.ExportTracePackageSelectTraceWizardPage_ProjectSelection
);
71 projectLabel
.setLayoutData(new GridData());
73 Label configLabel
= new Label(projectSelectionGroup
, SWT
.NONE
);
74 configLabel
.setText(Messages
.ExportTracePackageSelectTraceWizardPage_TraceSelection
);
75 configLabel
.setLayoutData(new GridData());
77 final Table projectTable
= new Table(projectSelectionGroup
, SWT
.SINGLE
| SWT
.BORDER
);
78 projectTable
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
80 TableViewer projectViewer
= new TableViewer(projectTable
);
81 projectViewer
.setContentProvider(new TmfNavigatorContentProvider() {
84 public Object
[] getElements(Object inputElement
) {
85 return (IProject
[]) inputElement
;
88 projectViewer
.setLabelProvider(new WorkbenchLabelProvider());
89 projectViewer
.setInput(TraceUtils
.getOpenedTmfProjects().toArray(new IProject
[] {}));
91 fTraceTable
= new Table(projectSelectionGroup
, SWT
.SINGLE
| SWT
.BORDER
);
92 fTraceTable
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
94 final TableViewer traceViewer
= new TableViewer(fTraceTable
);
95 traceViewer
.setContentProvider(new IStructuredContentProvider() {
97 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
101 public void dispose() {
105 public Object
[] getElements(Object inputElement
) {
106 if (inputElement
instanceof TmfTraceElement
[]) {
107 return (TmfTraceElement
[]) inputElement
;
112 traceViewer
.setLabelProvider(new TmfNavigatorLabelProvider());
113 fTraceTable
.addSelectionListener(new SelectionAdapter() {
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
>();
121 page
.setSelectedTraces(traces
);
125 projectTable
.addSelectionListener(new SelectionAdapter() {
127 public void widgetSelected(SelectionEvent e
) {
128 TableItem
[] items
= projectTable
.getSelection();
129 fSelectedProject
= (IProject
) items
[0].getData();
131 // Make sure all the elements are created
132 new TmfNavigatorContentProvider().getChildren(fSelectedProject
);
133 TmfProjectElement project
= TmfProjectRegistry
.getProject(fSelectedProject
);
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();
146 setControl(projectSelectionGroup
);
147 setTitle(Messages
.ExportTracePackageWizardPage_Title
);
148 setMessage(Messages
.ExportTracePackageSelectTraceWizardPage_ChooseTrace
);
152 public boolean canFlipToNextPage() {
153 return fTraceTable
.getSelectionCount() > 0;