2010-10-26 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug309042
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / viewers / timeAnalysis / dialogs / TmfTimeFilterDialog.java
CommitLineData
b0d3496e
ASL
1/*****************************************************************************\r
2 * Copyright (c) 2008 Intel Corporation.\r
3 * All rights reserved. This program and the accompanying materials\r
4 * are made available under the terms of the Eclipse Public License v1.0\r
5 * which accompanies this distribution, and is available at\r
6 * http://www.eclipse.org/legal/epl-v10.html\r
7 *\r
8 * Contributors:\r
9 * Intel Corporation - Initial API and implementation\r
10 *\r
11 * $Id: ThreadFilterDialog.java,v 1.2 2008/03/05 17:31:07 ewchan Exp $ \r
12 *****************************************************************************/\r
13\r
14package org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.dialogs;\r
15\r
16import org.eclipse.jface.dialogs.TitleAreaDialog;\r
17import org.eclipse.jface.viewers.CheckStateChangedEvent;\r
18import org.eclipse.jface.viewers.CheckboxTableViewer;\r
19import org.eclipse.jface.viewers.ICheckStateListener;\r
20import org.eclipse.jface.viewers.IStructuredContentProvider;\r
21import org.eclipse.jface.viewers.ITableLabelProvider;\r
22import org.eclipse.jface.viewers.LabelProvider;\r
23import org.eclipse.jface.viewers.Viewer;\r
24import org.eclipse.jface.viewers.ViewerComparator;\r
25import org.eclipse.jface.window.Window;\r
26import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.Messages;\r
27import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITmfTimeAnalysisEntry;\r
28import org.eclipse.swt.SWT;\r
29import org.eclipse.swt.graphics.Image;\r
30import org.eclipse.swt.layout.GridData;\r
31import org.eclipse.swt.widgets.Composite;\r
32import org.eclipse.swt.widgets.Control;\r
33import org.eclipse.swt.widgets.Shell;\r
34import org.eclipse.swt.widgets.Table;\r
35import org.eclipse.swt.widgets.TableColumn;\r
36\r
37public class TmfTimeFilterDialog extends TitleAreaDialog {\r
38 private CheckboxTableViewer viewer;\r
39 private Object[] threads;\r
40 private boolean[] filter;\r
41 private ViewContentProvider viewContentProvider;\r
42 private TraceComparator viewTraceComparator;\r
43 private ViewLabelProvider viewViewLabelProvider;\r
44\r
45 public TmfTimeFilterDialog(Shell parentShell, Object[] threads,\r
46 boolean[] filter) {\r
47 super(parentShell);\r
48\r
49 this.threads = threads;\r
50 if (filter != null)\r
51 this.filter = (boolean[]) filter.clone();\r
52 \r
53 viewContentProvider = new ViewContentProvider();\r
54 viewTraceComparator = new TraceComparator();\r
55 viewViewLabelProvider = new ViewLabelProvider();\r
56 }\r
57\r
58 public static boolean getTraceFilter(Shell parentShell, Object[] threads,\r
59 boolean[] filter) {\r
60 TmfTimeFilterDialog dlg = new TmfTimeFilterDialog(parentShell, threads,\r
61 filter);\r
62 if (dlg.open() != Window.OK)\r
63 return false;\r
64\r
65 boolean f[] = dlg.getFilter();\r
66 if (java.util.Arrays.equals(f, filter))\r
67 return false;\r
68 for (int i = f.length - 1; i >= 0; i--)\r
69 filter[i] = f[i];\r
70\r
71 return true;\r
72 }\r
73\r
4e3aa37d 74 @Override\r
b0d3496e
ASL
75 protected Control createDialogArea(Composite parent) {\r
76 Composite composite = (Composite) super.createDialogArea(parent);\r
77\r
78 viewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER\r
79 | SWT.V_SCROLL);\r
80\r
81 Table table = viewer.getTable();\r
82 table.setLayoutData(new GridData(GridData.FILL_BOTH));\r
83 table.setBackground(parent.getBackground());\r
84 createColumns(table);\r
85\r
86 //Assign providers to the viewer.\r
87 viewer.setContentProvider(viewContentProvider);\r
88 viewer.setComparator(viewTraceComparator);\r
89 viewer.setLabelProvider(viewViewLabelProvider);\r
90 \r
91 viewer.setInput(new Object());\r
92\r
93 viewer.addCheckStateListener(new ICheckStateListener() {\r
d4011df2 94 @Override\r
b0d3496e
ASL
95 public void checkStateChanged(CheckStateChangedEvent event) {\r
96 Object o = event.getElement();\r
97 for (int i = threads.length - 1; i >= 0; i--) {\r
98 if (threads[i].equals(o))\r
99 filter[i] = event.getChecked();\r
100 }\r
101 }\r
102 });\r
103\r
104 if (filter != null) {\r
105 for (int i = 0; i < filter.length; i++)\r
106 viewer.setChecked(threads[i], filter[i]);\r
107 }\r
108\r
109 setMessage(Messages._TRACE_FILTER_DESC);\r
110 setTitle(Messages._TRACE_FILTER);\r
111 setDialogHelpAvailable(false);\r
112 setHelpAvailable(false);\r
113\r
114// setTitleImage(org.eclipse.hyades.trace.internal.ui.PDPluginImages.DESC_IMG_UI_WZ_EDITPROFSET\r
115// .createImage());\r
116\r
117 return composite;\r
118 }\r
119\r
120 private void createColumns(Table table) {\r
121 table.setHeaderVisible(true);\r
122\r
123 String headers[] = { "", Messages._TRACE_ID, Messages._TRACE_NAME };\r
124 int width[] = { 20, 80, 400 };\r
125\r
126 for (int i = 0; i < headers.length; i++) {\r
127 TableColumn tc = new TableColumn(table, SWT.NONE, i);\r
128 tc.setResizable(true);\r
129 tc.setText(headers[i]);\r
130 tc.setWidth(width[i]);\r
131 }\r
132 }\r
133\r
4e3aa37d 134 @Override\r
b0d3496e
ASL
135 protected void configureShell(Shell shell) {\r
136 super.configureShell(shell);\r
137 shell.setText(Messages._EDIT_PROFILING_OPTIONS);\r
138 }\r
139\r
140 public boolean[] getFilter() {\r
141 return filter;\r
142 }\r
143\r
144 /**\r
145 * @param viewContentProvider\r
146 */\r
147 public void setViewContentProvider(ViewContentProvider viewContentProvider) {\r
148 this.viewContentProvider = viewContentProvider;\r
149 }\r
150\r
151 /**\r
152 * @param viewThreadComparator\r
153 */\r
154 public void setViewThreadComparator(TraceComparator viewThreadComparator) {\r
155 this.viewTraceComparator = viewThreadComparator;\r
156 }\r
157\r
158 /**\r
159 * @param viewViewLabelProvider\r
160 */\r
161 public void setViewViewLabelProvider(ViewLabelProvider viewViewLabelProvider) {\r
162 this.viewViewLabelProvider = viewViewLabelProvider;\r
163 }\r
164 \r
165 class ViewContentProvider implements IStructuredContentProvider {\r
d4011df2 166 @Override\r
b0d3496e
ASL
167 public void dispose() {\r
168 }\r
169\r
d4011df2 170 @Override\r
b0d3496e
ASL
171 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
172 }\r
173\r
d4011df2 174 @Override\r
b0d3496e
ASL
175 public Object[] getElements(Object input) {\r
176 return threads;\r
177 }\r
178 }\r
179\r
180 class ViewLabelProvider extends LabelProvider implements\r
181 ITableLabelProvider {\r
4e3aa37d 182 @Override\r
b0d3496e
ASL
183 public Image getImage(Object obj) {\r
184 return null;\r
185 }\r
186\r
d4011df2 187 @Override\r
b0d3496e
ASL
188 public Image getColumnImage(Object element, int columnIndex) {\r
189 return null;\r
190 }\r
191\r
d4011df2 192 @Override\r
b0d3496e
ASL
193 public String getColumnText(Object element, int columnIndex) {\r
194 // TODO: AA: Provide Label Provider externally\r
195 ITmfTimeAnalysisEntry t = (ITmfTimeAnalysisEntry) element;\r
196\r
197 if (columnIndex == 1)\r
198 return String.valueOf(t.getId());\r
199 else if (columnIndex == 2)\r
200 return t.getName();\r
201 else\r
202 return "";\r
203 }\r
204 }\r
205\r
206 class TraceComparator extends ViewerComparator {\r
4e3aa37d 207 @Override\r
b0d3496e
ASL
208 public int compare(Viewer viewer, Object e1, Object e2) {\r
209 // TODO: AA: Provide comparator externally\r
210 int id1 = ((ITmfTimeAnalysisEntry) e1).getId();\r
211 int id2 = ((ITmfTimeAnalysisEntry) e2).getId();\r
212\r
213 if (id1 == id2)\r
214 return 0;\r
215\r
216 return (id1 < id2) ? -1 : 1;\r
217 // return 0;\r
218 }\r
219 }\r
220}\r
This page took 0.035453 seconds and 5 git commands to generate.