Re-structure LTTng sub-project as per the Linux Tools guidelines
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / tracecontrol / wizards / TraceConfigurationPage.java
CommitLineData
e8d771d5
BH
1/*******************************************************************************\r
2 * Copyright (c) 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 * Bernd Hufmann - Initial API and implementation\r
11 * \r
12 *******************************************************************************/\r
13package org.eclipse.linuxtools.lttng.ui.tracecontrol.wizards;\r
14\r
15import java.io.File;\r
16\r
17import org.eclipse.jface.wizard.WizardPage;\r
6c13869b
FC
18import org.eclipse.linuxtools.lttng.core.tracecontrol.model.TraceResource;\r
19import org.eclipse.linuxtools.lttng.core.tracecontrol.model.TraceResource.TraceState;\r
20import org.eclipse.linuxtools.lttng.core.tracecontrol.model.config.TraceConfig;\r
e8d771d5
BH
21import org.eclipse.linuxtools.lttng.ui.tracecontrol.TraceControlConstants;\r
22import org.eclipse.linuxtools.lttng.ui.tracecontrol.Messages;\r
23import org.eclipse.linuxtools.lttng.ui.tracecontrol.subsystems.TraceSubSystem;\r
24import org.eclipse.rse.services.clientserver.messages.SystemMessageException;\r
25import org.eclipse.rse.ui.SystemBasePlugin;\r
26import org.eclipse.swt.SWT;\r
27import org.eclipse.swt.events.VerifyEvent;\r
28import org.eclipse.swt.events.VerifyListener;\r
29import org.eclipse.swt.layout.GridData;\r
30import org.eclipse.swt.layout.GridLayout;\r
31import org.eclipse.swt.widgets.Button;\r
32import org.eclipse.swt.widgets.Composite;\r
33import org.eclipse.swt.widgets.DirectoryDialog;\r
34import org.eclipse.swt.widgets.Display;\r
35import org.eclipse.swt.widgets.Event;\r
36import org.eclipse.swt.widgets.Group;\r
37import org.eclipse.swt.widgets.Label;\r
38import org.eclipse.swt.widgets.Listener;\r
39import org.eclipse.swt.widgets.Text;\r
40\r
41/**\r
42 * <b><u>UstTraceChannelConfigurationPage</u></b>\r
43 * <p>\r
44 * Wizard page implementation to configure a trace (Kernel and UST).\r
45 * </p>\r
46 */\r
47public class TraceConfigurationPage extends WizardPage {\r
48\r
49 // ------------------------------------------------------------------------\r
50 // Attributes\r
51 // ------------------------------------------------------------------------\r
52 private ConfigureTraceWizard fWizard;\r
53 private String fTraceName;\r
54 private String fTraceTransport;\r
55 private String fTracePath;\r
56 private int fMode;\r
57 private int fNumChannel;\r
a79913eb
FC
58 private boolean fIsAppend;\r
59 private boolean fIsNetwork;\r
e8d771d5
BH
60 private Text fNameText;\r
61 private Text fTransportText;\r
62 private Text fPathText;\r
a79913eb
FC
63 private Text fNumLttdThreadsText;\r
64 private Button fHostButton;\r
65 private Button fTargetButton;\r
e8d771d5 66 private Button fIsAppendButton;\r
e8d771d5
BH
67 private Button fFlightRecorderButton;\r
68 private Button fNormalButton;\r
69 private Display fDisplay;\r
70 private String fTraceNameError;\r
71 private String fTracePathError;\r
72 private Button fBrowseButton;\r
73 \r
74 private TraceResource fTraceResource;\r
75 private TraceConfig fOldTraceConfig;\r
76 private TraceSubSystem fSubSystem;\r
77\r
78 // ------------------------------------------------------------------------\r
79 // Constructors\r
80 // ------------------------------------------------------------------------\r
81\r
82 /**\r
83 * Constructore\r
84 * \r
85 * @param wizard\r
86 */\r
87 public TraceConfigurationPage(ConfigureTraceWizard wizard) {\r
88 super("TraceConfigurationPage"); //$NON-NLS-1$\r
89 setTitle(Messages.ConfigureTraceDialog_Title);\r
90// setDescription("set description..."); \r
91 this.fWizard = wizard;\r
92 setPageComplete(false);\r
93 fTraceNameError = ""; //$NON-NLS-1$\r
94 fTracePathError = ""; //$NON-NLS-1$\r
95 fTraceResource = this.fWizard.getSelectedTrace();\r
96 fOldTraceConfig = fTraceResource.getTraceConfig();\r
97 fSubSystem = (TraceSubSystem)this.fWizard.getSelectedTrace().getSubSystem();\r
98 }\r
99\r
100 // ------------------------------------------------------------------------\r
101 // Operations\r
102 // ------------------------------------------------------------------------\r
103\r
104 /*\r
105 * (non-Javadoc)\r
106 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)\r
107 */\r
108 @Override\r
109 public void createControl(Composite parent) {\r
110 GridData griddata = new GridData();\r
111\r
112 griddata = new GridData();\r
113 Composite composite1 = new Composite(parent, SWT.NONE);\r
114 GridLayout compositeLayout1 = new GridLayout(4, false);\r
115 composite1.setSize(520, 300);\r
116 composite1.setLayout(compositeLayout1);\r
117 griddata.horizontalSpan = 3;\r
118 griddata.widthHint = 520;\r
119 griddata.minimumWidth = 520;\r
120 composite1.setLayoutData(griddata);\r
121 fDisplay = this.getShell().getDisplay();\r
122 setControl(composite1);\r
123 Label nameLabel = new Label(composite1, SWT.NULL);\r
124 nameLabel.setText(Messages.NewTraceDialog_TraceName + ":"); //$NON-NLS-1$\r
125 griddata = new GridData();\r
126 griddata.verticalIndent = 20;\r
127 nameLabel.setLayoutData(griddata);\r
128\r
129 fNameText = new Text(composite1, SWT.SINGLE | SWT.BORDER);\r
130 if (fTraceResource.isUst()) {\r
131 fNameText.setText(TraceControlConstants.Lttng_Ust_TraceName);\r
132 fNameText.setEnabled(false);\r
133 }\r
134\r
135 griddata = new GridData();\r
136 griddata.horizontalAlignment = SWT.FILL;\r
137 griddata.grabExcessHorizontalSpace = true;\r
138 griddata.verticalIndent = 20;\r
139 griddata.horizontalSpan = 3;\r
140 fNameText.setLayoutData(griddata);\r
e8d771d5
BH
141 fNameText.setText(fTraceResource.getName());\r
142 fNameText.setEnabled(false);\r
143\r
144 Label transportLabel = new Label(composite1, SWT.NULL);\r
145 transportLabel.setText(Messages.ConfigureTraceDialog_Trace_Transport + ":"); //$NON-NLS-1$\r
146 griddata = new GridData();\r
147 transportLabel.setLayoutData(griddata);\r
148\r
149 fTransportText = new Text(composite1, SWT.SINGLE | SWT.BORDER);\r
150 griddata = new GridData();\r
151 griddata.horizontalAlignment = SWT.FILL;\r
152 griddata.grabExcessHorizontalSpace = true;\r
153 griddata.horizontalSpan = 3;\r
154 fTransportText.setLayoutData(griddata);\r
e8d771d5
BH
155 fTransportText.setText(TraceControlConstants.Lttng_Trace_Transport_Relay);\r
156 fTransportText.setEnabled(false); // relay is the only allowed value\r
157 if (fOldTraceConfig != null) {\r
158 fTransportText.setText(fOldTraceConfig.getTraceTransport());\r
159 }\r
160\r
161 griddata = new GridData();\r
162 Group composite21 = new Group(composite1, SWT.SHADOW_OUT);\r
163 composite21.setSize(300, 300);\r
164 composite21.setText(Messages.ConfigureTraceDialog_Trace_Location);\r
165 griddata.horizontalAlignment = SWT.FILL;\r
166 griddata.horizontalSpan = 4;\r
167 griddata.verticalIndent = 10;\r
168 griddata.widthHint = 300;\r
169 griddata.minimumWidth = 300;\r
170 composite21.setLayoutData(griddata);\r
171 GridLayout compositeLayout21 = new GridLayout(4, false);\r
172 composite21.setLayout(compositeLayout21);\r
a79913eb
FC
173 fTargetButton = new Button(composite21, SWT.RADIO);\r
174 fTargetButton.setText(Messages.ConfigureTraceDialog_Target);\r
175 fTargetButton.setSelection(true);\r
176 fIsNetwork = false;\r
177 fHostButton = new Button(composite21, SWT.RADIO);\r
178 fHostButton.setText(Messages.ConfigureTraceDialog_Host);\r
e8d771d5
BH
179 griddata = new GridData();\r
180 griddata.horizontalSpan = 3;\r
a79913eb
FC
181 fHostButton.setLayoutData(griddata);\r
182 fHostButton.addListener(SWT.Selection, new Listener() {\r
e8d771d5
BH
183 @Override\r
184 public void handleEvent(Event e) {\r
a79913eb 185 if (fHostButton.getSelection()) {\r
e8d771d5
BH
186 fBrowseButton.setEnabled(true);\r
187 } else {\r
e8d771d5
BH
188 fBrowseButton.setEnabled(false);\r
189 }\r
a79913eb 190 fIsNetwork = fHostButton.getSelection();\r
e8d771d5
BH
191 validatePathName(fPathText.getText());\r
192 validate();\r
193 }\r
194 });\r
195 \r
196 Label pathLabel = new Label(composite21, SWT.NULL);\r
197 pathLabel.setText(Messages.ConfigureTraceDialog_Trace_Path);\r
198 griddata = new GridData();\r
199 griddata.verticalIndent = 10;\r
200 pathLabel.setLayoutData(griddata);\r
201\r
202 fPathText = new Text(composite21, SWT.SINGLE | SWT.BORDER);\r
203 griddata = new GridData();\r
204 griddata.horizontalAlignment = SWT.FILL;\r
205 griddata.grabExcessHorizontalSpace = true;\r
206 griddata.verticalIndent = 10;\r
207 fPathText.setLayoutData(griddata);\r
208 fPathText.setData(""); //$NON-NLS-1$\r
209\r
210 fBrowseButton = new Button(composite21, SWT.PUSH);\r
211 fBrowseButton.setText(Messages.ConfigureTraceDialog_Browse + "..."); //$NON-NLS-1$\r
212 griddata = new GridData();\r
213 griddata.grabExcessHorizontalSpace = false;\r
214 griddata.widthHint = 100;\r
215 griddata.verticalIndent = 10;\r
216 fBrowseButton.setLayoutData(griddata);\r
217 fBrowseButton.setEnabled(false);\r
218 fBrowseButton.addListener(SWT.Selection, new Listener() {\r
219 @Override\r
220 public void handleEvent(Event event) {\r
221 DirectoryDialog dialog = new DirectoryDialog(fDisplay.getActiveShell());\r
222 String newPath = dialog.open();\r
223 if (newPath != null) {\r
224 fPathText.setText(newPath);\r
225 }\r
226 }\r
227 });\r
228\r
229 fNameText.addListener(SWT.Modify, new Listener() {\r
230 @Override\r
231 public void handleEvent(Event event) {\r
232 validateTraceName(fNameText.getText());\r
233 validate();\r
234 }\r
235 });\r
236\r
237 fTransportText.addListener(SWT.Modify, new Listener() {\r
238 @Override\r
239 public void handleEvent(Event event) {\r
240 validate();\r
241 }\r
242 });\r
243\r
244 fPathText.addListener(SWT.Modify, new Listener() {\r
245 @Override\r
246 public void handleEvent(Event event) {\r
247 if (!fPathText.isEnabled()) {\r
248 return;\r
249 }\r
250 validatePathName(fPathText.getText());\r
251 validate();\r
252 }\r
253 });\r
254\r
255 griddata = new GridData();\r
256 Composite composite2 = new Composite(composite1, SWT.NONE);\r
257 GridLayout compositeLayout2 = new GridLayout(2, false);\r
258 composite2.setLayout(compositeLayout2);\r
259 griddata.horizontalSpan = 4;\r
260 griddata.widthHint = 500;\r
261 griddata.minimumWidth = 500;\r
262 composite2.setLayoutData(griddata);\r
263\r
a79913eb
FC
264 Label numLttdThreadsLabel = new Label(composite2, SWT.NULL);\r
265 numLttdThreadsLabel.setText(Messages.ConfigureTraceDialog_Num_Lttd_Threads + ":"); //$NON-NLS-1$);\r
e8d771d5
BH
266 griddata = new GridData();\r
267 griddata.verticalIndent = 10;\r
a79913eb 268 numLttdThreadsLabel.setLayoutData(griddata);\r
e8d771d5 269\r
a79913eb 270 fNumLttdThreadsText = new Text(composite2, SWT.SINGLE | SWT.BORDER);\r
e8d771d5
BH
271 griddata = new GridData();\r
272 griddata.horizontalAlignment = SWT.BEGINNING;\r
273 griddata.verticalIndent = 10;\r
274 griddata.widthHint = 50;\r
275 griddata.minimumWidth = 50;\r
a79913eb 276 fNumLttdThreadsText.setLayoutData(griddata);\r
e8d771d5 277 if (fTraceResource.isUst()) {\r
a79913eb
FC
278 fNumLttdThreadsText.setText("1"); //$NON-NLS-1$\r
279 fNumLttdThreadsText.setEnabled(false);\r
e8d771d5 280 } else {\r
a79913eb 281 fNumLttdThreadsText.setText("2"); //$NON-NLS-1$\r
e8d771d5
BH
282 }\r
283\r
a79913eb 284 fNumLttdThreadsText.addVerifyListener(new VerifyListener() {\r
e8d771d5
BH
285 @Override\r
286 public void verifyText(VerifyEvent e) {\r
287 e.doit = e.text.matches("[0-9]*"); //$NON-NLS-1$\r
288 }\r
289 });\r
290\r
a79913eb 291 fNumLttdThreadsText.addListener(SWT.Modify, new Listener() {\r
e8d771d5
BH
292 @Override\r
293 public void handleEvent(Event event) {\r
294 validate();\r
295 }\r
296 });\r
297\r
298 fIsAppendButton = new Button(composite1, SWT.CHECK);\r
299 fIsAppendButton.setText(Messages.ConfigureTraceDialog_Append);\r
300 griddata = new GridData();\r
301 griddata.horizontalAlignment = SWT.BEGINNING;\r
302 griddata.horizontalSpan = 4;\r
303 griddata.verticalIndent = 10;\r
304 fIsAppendButton.setLayoutData(griddata);\r
a79913eb 305 fIsAppend = false;\r
e8d771d5
BH
306 fIsAppendButton.addListener(SWT.Selection, new Listener() {\r
307 @Override\r
308 public void handleEvent(Event e) {\r
a79913eb 309 fIsAppend = fIsAppendButton.getSelection();\r
e8d771d5
BH
310 }\r
311 });\r
312 if (fTraceResource.isUst()) {\r
313 fIsAppendButton.setEnabled(false);\r
314 }\r
315\r
316 griddata = new GridData();\r
317 Group composite22 = new Group(composite1, SWT.SHADOW_OUT);\r
318 composite22.setText(Messages.ConfigureTraceDialog_Trace_Mode);\r
319 griddata.horizontalSpan = 4;\r
320 griddata.verticalIndent = 10;\r
321 composite22.setLayoutData(griddata);\r
a79913eb 322 GridLayout compositeLayout22 = new GridLayout(2, false);\r
e8d771d5 323 composite22.setLayout(compositeLayout22);\r
e8d771d5
BH
324 fNormalButton = new Button(composite22, SWT.RADIO);\r
325 fNormalButton.setText(Messages.ConfigureTraceDialog_Mode_Normal);\r
a79913eb
FC
326 fFlightRecorderButton = new Button(composite22, SWT.RADIO);\r
327 fFlightRecorderButton.setText(Messages.ConfigureTraceDialog_Mode_Flight_Recorder);\r
328 fMode = TraceConfig.NORMAL_MODE;\r
329 fNormalButton.setSelection(true);\r
330 fNormalButton.addListener(SWT.Selection, new Listener() {\r
331 @Override\r
332 public void handleEvent(Event e) {\r
333 if (fNormalButton.getSelection()) {\r
334 fMode = TraceConfig.NORMAL_MODE;\r
335 }\r
336 }\r
e8d771d5
BH
337 });\r
338 fFlightRecorderButton.addListener(SWT.Selection, new Listener() {\r
339 @Override\r
340 public void handleEvent(Event e) {\r
341 if (fFlightRecorderButton.getSelection()) {\r
342 fMode = TraceConfig.FLIGHT_RECORDER_MODE;\r
343 }\r
344 }\r
345 });\r
e8d771d5 346 if (fTraceResource.isUst()) {\r
e8d771d5
BH
347 fFlightRecorderButton.setEnabled(false);\r
348 fNormalButton.setEnabled(false);\r
349 }\r
350\r
351 if(fOldTraceConfig != null) {\r
352 fPathText.setText(fOldTraceConfig.getTracePath());\r
a79913eb
FC
353 fTargetButton.setSelection(!fOldTraceConfig.isNetworkTrace());\r
354 fHostButton.setSelection(fOldTraceConfig.isNetworkTrace());\r
355 fIsNetwork = fOldTraceConfig.isNetworkTrace();\r
e8d771d5 356 fBrowseButton.setEnabled(true);\r
a79913eb
FC
357 fNumLttdThreadsText.setText(String.valueOf(fOldTraceConfig.getNumChannel()));\r
358 fIsAppendButton.setSelection(fOldTraceConfig.getIsAppend());\r
e8d771d5 359 fIsAppend = fOldTraceConfig.getIsAppend();\r
e8d771d5
BH
360 fFlightRecorderButton.setSelection(fOldTraceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE);\r
361 fNormalButton.setSelection(fOldTraceConfig.getMode() == TraceConfig.NORMAL_MODE);\r
e8d771d5
BH
362 }\r
363\r
364 // Depending on the state disable fields, it's only informational then\r
365 if ((fTraceResource.getTraceState() == TraceState.STARTED) || (fTraceResource.getTraceState() == TraceState.PAUSED)) {\r
366 fPathText.setEnabled(false);\r
367 fBrowseButton.setEnabled(false);\r
a79913eb
FC
368 fTargetButton.setEnabled(false);\r
369 fHostButton.setEnabled(false);\r
e8d771d5 370 fIsAppendButton.setEnabled(false);\r
a79913eb 371 fNumLttdThreadsText.setEnabled(false);\r
e8d771d5
BH
372 fFlightRecorderButton.setEnabled(false);\r
373 fNormalButton.setEnabled(false);\r
e8d771d5
BH
374 }\r
375\r
376 validate();\r
377\r
378 fDisplay.getActiveShell().addListener(SWT.Traverse, new Listener() {\r
379 @Override\r
380 public void handleEvent(Event event) {\r
381 if (event.detail == SWT.TRAVERSE_ESCAPE) {\r
382 event.doit = false;\r
383 }\r
384 }\r
385 });\r
386 }\r
387\r
388 /*\r
389 * (non-Javadoc)\r
390 * @see org.eclipse.jface.dialogs.DialogPage#dispose()\r
391 */\r
392 @Override\r
393 public void dispose() {\r
394 super.dispose();\r
395 }\r
396\r
397 /* (non-Javadoc)\r
398 * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean)\r
399 */\r
400 @Override\r
401 public void setVisible(boolean visible) {\r
402 if (visible) {\r
403 validate();\r
404 }\r
405 super.setVisible(visible);\r
406 }\r
407 \r
408 /*\r
409 * Validates the trace name which has to be unique.\r
410 */\r
411 protected boolean validateTraceName(String name) {\r
412 if (name.length() > 0) {\r
413 TraceResource[] traces = new TraceResource[0];\r
414 try {\r
415 traces = fSubSystem.getAllTraces();\r
416 } catch (SystemMessageException e) {\r
417 SystemBasePlugin.logError("TraceConfigurationPage ", e); //$NON-NLS-1$\r
418 }\r
419 for (int i = 0; i < traces.length; i++) {\r
420 if (traces[i].getName().compareTo(name) == 0) {\r
421 fTraceNameError = Messages.NewTraceDialog_Error_Already_Exists;\r
422 setErrorMessage(fTraceNameError);\r
423 return false;\r
424 }\r
425 }\r
426 final char[] chars = name.toCharArray();\r
427 for (int x = 0; x < chars.length; x++) {\r
428 final char c = chars[x];\r
429 if ((x == 0) && !(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')))) {\r
430 fTraceNameError = Messages.NewTraceDialog_Error_Invalid_First_Char;\r
431 setErrorMessage(fTraceNameError);\r
432 return false;\r
433 } else if (x != 0) {\r
434 if (!((c >= 'a') && (c <= 'z')) && !((c >= 'A') && (c <= 'Z')) && !((c >= '0') && (c <= '9'))) {\r
435 fTraceNameError = Messages.NewTraceDialog_Error_Invalid_Name;\r
436 setErrorMessage(fTraceNameError);\r
437 return false;\r
438 }\r
439 }\r
440 }\r
441 }\r
442 if (fTracePathError.length() > 0) {\r
443 setErrorMessage(fTracePathError);\r
444 } else {\r
445 setErrorMessage(null);\r
446 }\r
447 fTraceNameError = ""; //$NON-NLS-1$\r
448 return true;\r
449 }\r
450\r
451 /*\r
452 * Validates the trace path.\r
453 */\r
454 private boolean validatePathName(String path) {\r
455 if (path.length() > 0) {\r
456 final char c0 = path.charAt(0);\r
457 if (c0 != '/') {\r
458 fTracePathError = Messages.ConfigureTraceDialog_Error_Invalid_Path;\r
459 setErrorMessage(fTracePathError);\r
460 return false;\r
461 } else {\r
462 String[] folders = path.split("/"); //$NON-NLS-1$\r
463 for (int i = 0; i < folders.length; i++) {\r
464 final char[] chars = folders[i].toCharArray();\r
465 for (int x = 0; x < chars.length; x++) {\r
466 final char c = chars[x];\r
467 if ((c >= 'a') && (c <= 'z')) {\r
468 continue; // lowercase\r
469 }\r
470 if ((c >= 'A') && (c <= 'Z')) {\r
471 continue; // uppercase\r
472 }\r
473 if ((c >= '0') && (c <= '9')) {\r
474 continue; // numeric\r
475 }\r
476 fTracePathError = Messages.ConfigureTraceDialog_Error_Invalid_Folder;\r
477 setErrorMessage(fTracePathError);\r
478 return false;\r
479 }\r
480 }\r
481 if (path.length() > 1) {\r
482 for (int i = 0; i < path.length() - 1; i++) {\r
483 if ((path.charAt(i) == '/') && (path.charAt(i + 1) == '/')) {\r
484 fTracePathError = Messages.ConfigureTraceDialog_Error_Multiple_Seps;\r
485 setErrorMessage(fTracePathError);\r
486 return false;\r
487 }\r
488 }\r
489 }\r
490 }\r
a79913eb 491 if (fHostButton.getSelection()) {\r
e8d771d5
BH
492 File file = new File(path);\r
493 if (file.isFile()) {\r
494 fTracePathError = Messages.ConfigureTraceDialog_Error_File_Exists;\r
495 setErrorMessage(fTracePathError);\r
496 return false;\r
497 }\r
498 if (path.length() > 1 && !file.getParentFile().canWrite()) {\r
499 fTracePathError = Messages.ConfigureTraceDialog_Error_Can_Not_Write;\r
500 setErrorMessage(fTracePathError);\r
501 return false;\r
502 }\r
503 }\r
504 }\r
505 if (fTraceNameError.length() > 0) {\r
506 setErrorMessage(fTraceNameError);\r
507 } else {\r
508 setErrorMessage(null);\r
509 }\r
510 fTracePathError = ""; //$NON-NLS-1$\r
511 return true;\r
512 }\r
513 \r
514 /*\r
515 * Validates all input values.\r
516 */\r
517 private void validate() {\r
518 if ((fNameText.getText() == null) || (fTransportText.getText() == null) || (fTransportText.getText().length() == 0) || (fNameText.getText().length() == 0)\r
a79913eb 519 || (fNumLttdThreadsText.getText().length() == 0) || (fNumLttdThreadsText.getText().length() == 0)) {\r
e8d771d5
BH
520 setPageComplete(false);\r
521 return;\r
522 }\r
523 if (fPathText.getText().length() == 0) {\r
524 setPageComplete(false);\r
525 return;\r
526 }\r
527 if ((fTracePathError.length() > 0) || (fTraceNameError.length() > 0)) {\r
528 setPageComplete(false);\r
529 return;\r
530 }\r
531 fTraceName = fNameText.getText();\r
532 fTraceTransport = fTransportText.getText();\r
533 fTracePath = fPathText.getText();\r
a79913eb 534 fNumChannel = Integer.parseInt(fNumLttdThreadsText.getText());\r
e8d771d5
BH
535 \r
536 if (fTraceNameError.length() == 0) {\r
537 setErrorMessage(null);\r
538 setPageComplete(true);\r
539 } else {\r
540 setErrorMessage(fTraceNameError);\r
541 setPageComplete(false);\r
542 }\r
543 }\r
544\r
545 /**\r
546 * Gets the trace configuration. \r
547 * \r
548 * @return trace configuration\r
549 */\r
550 public TraceConfig getTraceConfig() {\r
551 TraceConfig newTraceConfig = new TraceConfig();\r
552 newTraceConfig.setTraceName(fTraceName);\r
553 newTraceConfig.setTraceTransport(fTraceTransport);\r
554 newTraceConfig.setTracePath(fTracePath);\r
a79913eb 555 newTraceConfig.setNetworkTrace(fIsNetwork);\r
e8d771d5
BH
556 newTraceConfig.setIsAppend(fIsAppend);\r
557 newTraceConfig.setMode(fMode);\r
558 newTraceConfig.setNumChannel(fNumChannel);\r
559\r
560 return newTraceConfig;\r
561 }\r
562\r
563 /**\r
564 * Gets if trace is a local trace (i.e. if trace output is stored on host \r
565 * where client is running)\r
566 * \r
567 * @return isLocalTrace\r
568 */\r
569 public boolean isLocalTrace() {\r
a79913eb 570 return fHostButton.getSelection();\r
e8d771d5
BH
571 }\r
572}\r
This page took 0.078151 seconds and 5 git commands to generate.