1 /*****************************************************************************
2 * Copyright (c) 2008 Intel Corporation.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * Intel Corporation - Initial API and implementation
11 * $Id: ThreadFilterDialog.java,v 1.2 2008/03/05 17:31:07 ewchan Exp $
12 *****************************************************************************/
14 package org
.eclipse
.linuxtools
.tmf
.ui
.viewers
.timeAnalysis
.dialogs
;
16 import org
.eclipse
.jface
.dialogs
.TitleAreaDialog
;
17 import org
.eclipse
.jface
.viewers
.CheckStateChangedEvent
;
18 import org
.eclipse
.jface
.viewers
.CheckboxTableViewer
;
19 import org
.eclipse
.jface
.viewers
.ICheckStateListener
;
20 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
21 import org
.eclipse
.jface
.viewers
.ITableLabelProvider
;
22 import org
.eclipse
.jface
.viewers
.LabelProvider
;
23 import org
.eclipse
.jface
.viewers
.Viewer
;
24 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
25 import org
.eclipse
.jface
.window
.Window
;
26 import org
.eclipse
.linuxtools
.tmf
.ui
.viewers
.timeAnalysis
.Messages
;
27 import org
.eclipse
.linuxtools
.tmf
.ui
.viewers
.timeAnalysis
.model
.ITmfTimeAnalysisEntry
;
28 import org
.eclipse
.swt
.SWT
;
29 import org
.eclipse
.swt
.graphics
.Image
;
30 import org
.eclipse
.swt
.layout
.GridData
;
31 import org
.eclipse
.swt
.widgets
.Composite
;
32 import org
.eclipse
.swt
.widgets
.Control
;
33 import org
.eclipse
.swt
.widgets
.Shell
;
34 import org
.eclipse
.swt
.widgets
.Table
;
35 import org
.eclipse
.swt
.widgets
.TableColumn
;
37 public class TmfTimeFilterDialog
extends TitleAreaDialog
{
38 private CheckboxTableViewer viewer
;
39 private Object
[] threads
;
40 private boolean[] filter
;
41 private ViewContentProvider viewContentProvider
;
42 private TraceComparator viewTraceComparator
;
43 private ViewLabelProvider viewViewLabelProvider
;
45 public TmfTimeFilterDialog(Shell parentShell
, Object
[] threads
,
49 this.threads
= threads
;
51 this.filter
= (boolean[]) filter
.clone();
53 viewContentProvider
= new ViewContentProvider();
54 viewTraceComparator
= new TraceComparator();
55 viewViewLabelProvider
= new ViewLabelProvider();
58 public static boolean getTraceFilter(Shell parentShell
, Object
[] threads
,
60 TmfTimeFilterDialog dlg
= new TmfTimeFilterDialog(parentShell
, threads
,
62 if (dlg
.open() != Window
.OK
)
65 boolean f
[] = dlg
.getFilter();
66 if (java
.util
.Arrays
.equals(f
, filter
))
68 for (int i
= f
.length
- 1; i
>= 0; i
--)
75 protected Control
createDialogArea(Composite parent
) {
76 Composite composite
= (Composite
) super.createDialogArea(parent
);
78 viewer
= CheckboxTableViewer
.newCheckList(composite
, SWT
.BORDER
81 Table table
= viewer
.getTable();
82 table
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
83 table
.setBackground(parent
.getBackground());
86 //Assign providers to the viewer.
87 viewer
.setContentProvider(viewContentProvider
);
88 viewer
.setComparator(viewTraceComparator
);
89 viewer
.setLabelProvider(viewViewLabelProvider
);
91 viewer
.setInput(new Object());
93 viewer
.addCheckStateListener(new ICheckStateListener() {
95 public void checkStateChanged(CheckStateChangedEvent event
) {
96 Object o
= event
.getElement();
97 for (int i
= threads
.length
- 1; i
>= 0; i
--) {
98 if (threads
[i
].equals(o
))
99 filter
[i
] = event
.getChecked();
104 if (filter
!= null) {
105 for (int i
= 0; i
< filter
.length
; i
++)
106 viewer
.setChecked(threads
[i
], filter
[i
]);
109 setMessage(Messages
._TRACE_FILTER_DESC
);
110 setTitle(Messages
._TRACE_FILTER
);
111 setDialogHelpAvailable(false);
112 setHelpAvailable(false);
114 // setTitleImage(org.eclipse.hyades.trace.internal.ui.PDPluginImages.DESC_IMG_UI_WZ_EDITPROFSET
120 private void createColumns(Table table
) {
121 table
.setHeaderVisible(true);
123 String headers
[] = { "", Messages
._TRACE_ID
, Messages
._TRACE_NAME
}; //$NON-NLS-1$
124 int width
[] = { 20, 80, 400 };
126 for (int i
= 0; i
< headers
.length
; i
++) {
127 TableColumn tc
= new TableColumn(table
, SWT
.NONE
, i
);
128 tc
.setResizable(true);
129 tc
.setText(headers
[i
]);
130 tc
.setWidth(width
[i
]);
135 protected void configureShell(Shell shell
) {
136 super.configureShell(shell
);
137 shell
.setText(Messages
._EDIT_PROFILING_OPTIONS
);
140 public boolean[] getFilter() {
145 * @param viewContentProvider
147 public void setViewContentProvider(ViewContentProvider viewContentProvider
) {
148 this.viewContentProvider
= viewContentProvider
;
152 * @param viewThreadComparator
154 public void setViewThreadComparator(TraceComparator viewThreadComparator
) {
155 this.viewTraceComparator
= viewThreadComparator
;
159 * @param viewViewLabelProvider
161 public void setViewViewLabelProvider(ViewLabelProvider viewViewLabelProvider
) {
162 this.viewViewLabelProvider
= viewViewLabelProvider
;
165 class ViewContentProvider
implements IStructuredContentProvider
{
167 public void dispose() {
171 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
175 public Object
[] getElements(Object input
) {
180 class ViewLabelProvider
extends LabelProvider
implements
181 ITableLabelProvider
{
183 public Image
getImage(Object obj
) {
188 public Image
getColumnImage(Object element
, int columnIndex
) {
193 public String
getColumnText(Object element
, int columnIndex
) {
194 // TODO: AA: Provide Label Provider externally
195 ITmfTimeAnalysisEntry t
= (ITmfTimeAnalysisEntry
) element
;
197 if (columnIndex
== 1)
198 return String
.valueOf(t
.getId());
199 else if (columnIndex
== 2)
202 return ""; //$NON-NLS-1$
206 class TraceComparator
extends ViewerComparator
{
208 public int compare(Viewer viewer
, Object e1
, Object e2
) {
209 // TODO: AA: Provide comparator externally
210 int id1
= ((ITmfTimeAnalysisEntry
) e1
).getId();
211 int id2
= ((ITmfTimeAnalysisEntry
) e2
).getId();
216 return (id1
< id2
) ?
-1 : 1;