tmf: Use tabs in statistics view for each traces
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / internal / lttng / ui / views / latency / dialogs / ListDialog.java
CommitLineData
fbd124dd
BH
1/*******************************************************************************\r
2 * Copyright (c) 2010, 2011 Ericsson\r
3 * \r
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
8 * \r
9 * Contributors:\r
10 * Philippe Sawicki (INF4990.A2010@gmail.com) - Initial API and implementation\r
11 * Mathieu Denis (mathieu.denis55@gmail.com) - Refactored code\r
12 * Bernd Hufmann - Adapted to new messages file, fixed warnings\r
13 *******************************************************************************/\r
638eac44 14package org.eclipse.linuxtools.internal.lttng.ui.views.latency.dialogs;\r
fbd124dd
BH
15\r
16import java.util.Vector;\r
17\r
18import org.eclipse.jface.dialogs.MessageDialog;\r
5945cec9
FC
19import org.eclipse.linuxtools.internal.lttng.core.latency.analyzer.EventMatcher;\r
20import org.eclipse.linuxtools.internal.lttng.core.util.EventsPair;\r
638eac44 21import org.eclipse.linuxtools.internal.lttng.ui.views.latency.Messages;\r
fbd124dd
BH
22import org.eclipse.swt.SWT;\r
23import org.eclipse.swt.layout.GridData;\r
24import org.eclipse.swt.layout.GridLayout;\r
25import org.eclipse.swt.widgets.Button;\r
26import org.eclipse.swt.widgets.Composite;\r
27import org.eclipse.swt.widgets.Control;\r
28import org.eclipse.swt.widgets.Event;\r
29import org.eclipse.swt.widgets.Listener;\r
30import org.eclipse.swt.widgets.Shell;\r
31import org.eclipse.swt.widgets.Table;\r
32import org.eclipse.swt.widgets.TableColumn;\r
33import org.eclipse.swt.widgets.TableItem;\r
34\r
35/**\r
36 * <b><u>ListDialog</u></b>\r
37 * <p>\r
38 * List dialog, shows the list of start/end event pairs.\r
39 * \r
40 * @author Philippe Sawicki\r
41 */\r
42public class ListDialog extends AbstractDialog {\r
43\r
44 // ------------------------------------------------------------------------\r
45 // Attributes\r
46 // ------------------------------------------------------------------------\r
47\r
48 /**\r
49 * The dialog's table.\r
50 */\r
51 protected Table fTable;\r
52\r
53 /**\r
54 * Start event types.\r
55 */\r
56 protected Vector<String> fEventStartTypes;\r
57\r
58 /**\r
59 * End event types.\r
60 */\r
61 protected Vector<String> fEventEndTypes;\r
62\r
63 /**\r
64 * Table columns\r
65 */\r
66 protected TableColumn[] fColumns;\r
67\r
68 /**\r
69 * Column names (header titles).\r
70 */\r
c6f55e56 71 static final String[] COLUMN_NAMES = { "#", Messages.LatencyView_Dialogs_ListEvents_Columns_Trigger, Messages.LatencyView_Dialogs_ListEvents_Columns_End }; //$NON-NLS-1$\r
fbd124dd
BH
72\r
73 /**\r
74 * Column widths.\r
75 */\r
c6f55e56 76 static final int[] COLUMN_WIDTHS = { 25, 250, 250 };\r
fbd124dd
BH
77\r
78 /**\r
79 * The table style.\r
80 */\r
81 protected int fStyle;\r
82\r
83 // ------------------------------------------------------------------------\r
84 // Constructor\r
85 // ------------------------------------------------------------------------\r
86\r
87 /**\r
88 * Constructor.\r
89 * @param parentShell\r
90 * The parent shell.\r
91 * @param title\r
92 * The dialog's window title.\r
93 * @param message\r
94 * The dialog's window message.\r
95 */\r
96 public ListDialog(Shell parentShell, String title, String message) {\r
97 super(parentShell, title, message);\r
98\r
99 // Set the table style\r
100 fStyle = SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER | SWT.V_SCROLL;\r
101\r
102 // Get the list of start and end types from the EventMatcher\r
103 EventsPair pair = getMatchPairs();\r
104 fEventStartTypes = pair.getFirst();\r
105 fEventEndTypes = pair.getSecond();\r
106 }\r
107\r
108 // ------------------------------------------------------------------------\r
109 // Operations\r
110 // ------------------------------------------------------------------------\r
111 \r
112 /**\r
113 * Creates the table's column (i.e. the table header).\r
114 */\r
115 protected void createColumns() {\r
116 fColumns = new TableColumn[COLUMN_NAMES.length];\r
117 for (int i = 0; i < COLUMN_NAMES.length; i++) {\r
118 fColumns[i] = new TableColumn(fTable, SWT.LEFT);\r
119 fColumns[i].setText(COLUMN_NAMES[i]);\r
120 fColumns[i].setWidth(COLUMN_WIDTHS[i]);\r
121 }\r
122 }\r
123 \r
124 /*\r
125 * (non-Javadoc)\r
126 * @see org.eclipse.linuxtools.lttng.ui.views.latency.dialogs.AbstractDialog#createDialogArea(org.eclipse.swt.widgets.Composite)\r
127 */\r
128 @Override\r
129 protected Control createDialogArea(Composite parent) {\r
130 GridLayout layout = new GridLayout(1, true);\r
131 parent.setLayout(layout);\r
132\r
133 GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);\r
134 fTable = new Table(parent, fStyle);\r
135 fTable.setLayoutData(layoutData);\r
136\r
137 // Some cosmetic enhancements\r
138 fTable.setHeaderVisible(true);\r
139 fTable.setLinesVisible(true);\r
140\r
141 createColumns();\r
142\r
143 for (int i = 0; i < fEventStartTypes.size(); i++) {\r
144 TableItem item = new TableItem(fTable, SWT.RIGHT);\r
145\r
146 String max = String.valueOf(fEventStartTypes.size());\r
147 String number = formatListNumber(i + 1, max.length());\r
148\r
149 String[] columns = { number, fEventStartTypes.get(i), fEventEndTypes.get(i) };\r
150\r
151 item.setText(columns);\r
152 }\r
153\r
154 return parent;\r
155 }\r
156\r
157 /*\r
158 * (non-Javadoc)\r
159 * @see org.eclipse.linuxtools.lttng.ui.views.latency.dialogs.AbstractDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)\r
160 */\r
161 @Override\r
162 protected void createButtonsForButtonBar(Composite parent) {\r
163 GridData gridData = new GridData();\r
164 gridData.verticalAlignment = GridData.FILL;\r
165 gridData.horizontalSpan = 1;\r
166 gridData.grabExcessHorizontalSpace = true;\r
167 gridData.grabExcessVerticalSpace = true;\r
168 gridData.horizontalAlignment = SWT.RIGHT;\r
169\r
170 parent.setLayoutData(gridData);\r
171\r
172 // Create the "Reset" button\r
173 Button resetButton = createButton(parent, RESET, Messages.LatencyView_Dialogs_ListEvents_Buttons_Reset, false);\r
174 resetButton.addListener(SWT.Selection, new Listener() {\r
175 @Override\r
176 public void handleEvent(Event event) {\r
177 boolean confirmDeletion = MessageDialog.openQuestion(getShell(), Messages.LatencyView_Dialogs_ListEvents_Confirm_Title,\r
178 Messages.LatencyView_Dialogs_ListEvents_Confirm_Message);\r
179\r
180 if (confirmDeletion) {\r
181 EventMatcher.getInstance().resetMatches();\r
182\r
183 fTable.removeAll();\r
184\r
185 Vector<String> defaultStarts = new Vector<String>();\r
186 Vector<String> defaultEnds = new Vector<String>();\r
187\r
188 defaultStarts.add(EventMatcher.PAGE_FAULT_GET_USER_ENTRY);\r
189 defaultEnds.add(EventMatcher.PAGE_FAULT_GET_USER_EXIT);\r
190 defaultStarts.add(EventMatcher.TASKLET_LOW_ENTRY);\r
191 defaultEnds.add(EventMatcher.TASKLET_LOW_EXIT);\r
192 defaultStarts.add(EventMatcher.PAGE_FAULT_ENTRY);\r
193 defaultEnds.add(EventMatcher.PAGE_FAULT_EXIT);\r
194 defaultStarts.add(EventMatcher.SYSCALL_ENTRY);\r
195 defaultEnds.add(EventMatcher.SYSCALL_EXIT);\r
196 defaultStarts.add(EventMatcher.IRQ_ENTRY);\r
197 defaultEnds.add(EventMatcher.IRQ_EXIT);\r
198 defaultStarts.add(EventMatcher.READ);\r
199 defaultEnds.add(EventMatcher.WRITE);\r
200 defaultStarts.add(EventMatcher.OPEN);\r
201 defaultEnds.add(EventMatcher.CLOSE);\r
202 defaultStarts.add(EventMatcher.BUFFER_WAIT_START);\r
203 defaultEnds.add(EventMatcher.BUFFER_WAIT_END);\r
204 defaultStarts.add(EventMatcher.START_COMMIT);\r
205 defaultEnds.add(EventMatcher.END_COMMIT);\r
206 defaultStarts.add(EventMatcher.WAIT_ON_PAGE_START);\r
207 defaultEnds.add(EventMatcher.WAIT_ON_PAGE_END);\r
208\r
209 saveMatchPairs(defaultStarts, defaultEnds);\r
210\r
211 for (int i = 0; i < defaultStarts.size(); i++) {\r
212 EventMatcher.getInstance().addMatch(defaultStarts.get(i), defaultEnds.get(i));\r
213 }\r
214\r
215 // Get the list of start and end types from the EventMatcher\r
216 EventsPair pair = getMatchPairs();\r
217 fEventStartTypes = pair.getFirst();\r
218 fEventEndTypes = pair.getSecond();\r
219\r
220 for (int i = 0; i < fEventStartTypes.size(); i++) {\r
221 TableItem item = new TableItem(fTable, SWT.RIGHT);\r
222\r
223 String max = String.valueOf(fEventStartTypes.size());\r
224 String number = formatListNumber(i + 1, max.length());\r
225\r
226 String[] columns = { number, fEventStartTypes.get(i), fEventEndTypes.get(i) };\r
227\r
228 item.setText(columns);\r
229 }\r
230\r
231 fTable.setItemCount(fEventStartTypes.size());\r
232\r
233 fRedrawGraphs = true;\r
234 }\r
235 }\r
236 });\r
237\r
238 // Create the "Close" button\r
239 Button closeButton = createButton(parent, CANCEL, Messages.LatencyView_Dialogs_ListEvents_Buttons_Close, false);\r
240 closeButton.addListener(SWT.Selection, new Listener() {\r
241 @Override\r
242 public void handleEvent(Event event) {\r
243 setReturnCode(CANCEL);\r
244\r
245 if (fRedrawGraphs == true)\r
246 redrawGraphs();\r
247\r
248 close();\r
249 }\r
250 });\r
251 }\r
252}
This page took 0.053889 seconds and 5 git commands to generate.