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