gdbtrace: Move plugins to the Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.control.ui / src / org / eclipse / linuxtools / internal / lttng2 / control / ui / views / preferences / ControlPreferencePage.java
1 /**********************************************************************
2 * Copyright (c) 2012, 2013 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org.eclipse.linuxtools.internal.lttng2.control.ui.views.preferences;
13
14 import org.eclipse.jface.preference.BooleanFieldEditor;
15 import org.eclipse.jface.preference.FieldEditor;
16 import org.eclipse.jface.preference.FieldEditorPreferencePage;
17 import org.eclipse.jface.preference.IPreferenceStore;
18 import org.eclipse.jface.preference.IntegerFieldEditor;
19 import org.eclipse.jface.preference.RadioGroupFieldEditor;
20 import org.eclipse.jface.preference.StringFieldEditor;
21 import org.eclipse.jface.util.PropertyChangeEvent;
22 import org.eclipse.linuxtools.internal.lttng2.control.ui.views.logging.ControlCommandLogger;
23 import org.eclipse.linuxtools.internal.lttng2.control.ui.views.messages.Messages;
24 import org.eclipse.ui.IWorkbench;
25 import org.eclipse.ui.IWorkbenchPreferencePage;
26
27 /**
28 * <p>
29 * Preference page implementation for configuring LTTng tracer control preferences.
30 * </p>
31 *
32 * @author Bernd Hufmann
33 */
34 public class ControlPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
35
36 // ------------------------------------------------------------------------
37 // Attributes
38 // ------------------------------------------------------------------------
39 private RadioGroupFieldEditor fVerboseLevel;
40 private BooleanFieldEditor fIsAppend;
41
42 // ------------------------------------------------------------------------
43 // Constructors
44 // ------------------------------------------------------------------------
45
46 /**
47 * Constructor
48 */
49 public ControlPreferencePage() {
50 super(FieldEditorPreferencePage.GRID);
51
52 // Set the preference store for the preference page.
53 IPreferenceStore store = ControlPreferences.getInstance().getPreferenceStore();
54 setPreferenceStore(store);
55 }
56
57 // ------------------------------------------------------------------------
58 // Operations
59 // ------------------------------------------------------------------------
60
61 @Override
62 public void init(IWorkbench workbench) {
63 }
64
65 @Override
66 protected void createFieldEditors() {
67
68 StringFieldEditor tracingGroup = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_TRACING_GROUP_PREF, Messages.TraceControl_TracingGroupPreference, getFieldEditorParent());
69 addField(tracingGroup);
70
71 BooleanFieldEditor logCommand = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF, Messages.TraceControl_LoggingPreference, getFieldEditorParent());
72 addField(logCommand);
73
74 StringFieldEditor logfile = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_FILE_PATH_PREF, Messages.TraceControl_LogfilePath, getFieldEditorParent());
75 addField(logfile);
76
77 fIsAppend = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_APPEND_PREF, Messages.TraceControl_AppendLogfilePreference, getFieldEditorParent());
78 addField(fIsAppend);
79
80 fVerboseLevel = new RadioGroupFieldEditor (
81 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_PREF,
82 Messages.TraceControl_VerboseLevelsPreference,
83 4,
84 new String[][] {
85 {
86 Messages.TraceControl_VerboseLevelNonePreference,
87 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_NONE,
88 },
89 {
90 Messages.TraceControl_VerboseLevelVerbosePreference,
91 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
92 },
93 {
94 Messages.TraceControl_VerboseLevelVeryVerbosePreference,
95 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
96 },
97 {
98 Messages.TraceControl_VerboseLevelVeryVeryVerbosePreference,
99 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
100 }
101 },
102 getFieldEditorParent(),
103 true);
104
105 addField(fVerboseLevel);
106
107 Boolean enabled = ControlPreferences.getInstance().isLoggingEnabled();
108 fVerboseLevel.setEnabled(enabled, getFieldEditorParent());
109 fIsAppend.setEnabled(enabled, getFieldEditorParent());
110 logfile.setEnabled(false, getFieldEditorParent());
111
112 IntegerFieldEditor commandTimeout = new IntegerFieldEditor(ControlPreferences.TRACE_CONTROL_COMMAND_TIMEOUT_PREF, Messages.TraceControl_CommandTimeout, getFieldEditorParent());
113 commandTimeout.setValidRange(ControlPreferences.TRACE_CONTROL_MIN_TIMEOUT_VALUE, ControlPreferences.TRACE_CONTROL_MAX_TIMEOUT_VALUE);
114 addField(commandTimeout);
115 }
116
117 @Override
118 public void propertyChange(PropertyChangeEvent event) {
119
120 if (event.getProperty().equals(FieldEditor.VALUE)) {
121 if (event.getSource() instanceof FieldEditor) {
122 FieldEditor editor = (FieldEditor) event.getSource();
123 if (editor.getPreferenceName().equals(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF)) {
124 Boolean enabled = (Boolean)event.getNewValue();
125 fVerboseLevel.setEnabled(enabled, getFieldEditorParent());
126 fIsAppend.setEnabled(enabled, getFieldEditorParent());
127 }
128 }
129 }
130 super.propertyChange(event);
131 }
132
133 @Override
134 protected void performDefaults() {
135 super.performDefaults();
136 fVerboseLevel.setEnabled(false, getFieldEditorParent());
137 fIsAppend.setEnabled(false, getFieldEditorParent());
138 }
139
140 @Override
141 public boolean performOk() {
142 boolean ret = super.performOk();
143 // open or close log file
144 if (ControlPreferences.getInstance().isLoggingEnabled()) {
145 ControlCommandLogger.init(ControlPreferences.getInstance().getLogfilePath(), ControlPreferences.getInstance().isAppend());
146 } else {
147 ControlCommandLogger.close();
148 }
149 return ret;
150 }
151 }
This page took 0.033891 seconds and 5 git commands to generate.