1 /**********************************************************************
2 * Copyright (c) 2012, 2013 Ericsson
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
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.preferences
;
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
.ui
.views
.control
.logging
.ControlCommandLogger
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.messages
.Messages
;
24 import org
.eclipse
.ui
.IWorkbench
;
25 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
29 * Preference page implementation for configuring LTTng tracer control preferences.
32 * @author Bernd Hufmann
34 public class ControlPreferencePage
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
{
36 // ------------------------------------------------------------------------
38 // ------------------------------------------------------------------------
39 RadioGroupFieldEditor fVerboseLevel
;
40 BooleanFieldEditor fIsAppend
;
42 // ------------------------------------------------------------------------
44 // ------------------------------------------------------------------------
49 public ControlPreferencePage() {
50 super(FieldEditorPreferencePage
.GRID
);
52 // Set the preference store for the preference page.
53 IPreferenceStore store
= ControlPreferences
.getInstance().getPreferenceStore();
54 setPreferenceStore(store
);
57 // ------------------------------------------------------------------------
59 // ------------------------------------------------------------------------
62 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
65 public void init(IWorkbench workbench
) {
70 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
73 protected void createFieldEditors() {
75 StringFieldEditor tracingGroup
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_TRACING_GROUP_PREF
, Messages
.TraceControl_TracingGroupPreference
, getFieldEditorParent());
76 addField(tracingGroup
);
78 BooleanFieldEditor logCommand
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
, Messages
.TraceControl_LoggingPreference
, getFieldEditorParent());
81 StringFieldEditor logfile
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_FILE_PATH_PREF
, Messages
.TraceControl_LogfilePath
, getFieldEditorParent());
84 fIsAppend
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_APPEND_PREF
, Messages
.TraceControl_AppendLogfilePreference
, getFieldEditorParent());
87 fVerboseLevel
= new RadioGroupFieldEditor (
88 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_PREF
,
89 Messages
.TraceControl_VerboseLevelsPreference
,
93 Messages
.TraceControl_VerboseLevelNonePreference
,
94 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_NONE
,
97 Messages
.TraceControl_VerboseLevelVerbosePreference
,
98 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
101 Messages
.TraceControl_VerboseLevelVeryVerbosePreference
,
102 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
105 Messages
.TraceControl_VerboseLevelVeryVeryVerbosePreference
,
106 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
109 getFieldEditorParent(),
112 addField(fVerboseLevel
);
114 Boolean enabled
= ControlPreferences
.getInstance().isLoggingEnabled();
115 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
116 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
117 logfile
.setEnabled(false, getFieldEditorParent());
119 IntegerFieldEditor commandTimeout
= new IntegerFieldEditor(ControlPreferences
.TRACE_CONTROL_COMMAND_TIMEOUT_PREF
, Messages
.TraceControl_CommandTimeout
, getFieldEditorParent());
120 commandTimeout
.setValidRange(ControlPreferences
.TRACE_CONTROL_MIN_TIMEOUT_VALUE
, ControlPreferences
.TRACE_CONTROL_MAX_TIMEOUT_VALUE
);
121 addField(commandTimeout
);
126 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
129 public void propertyChange(PropertyChangeEvent event
) {
131 if (event
.getProperty().equals(FieldEditor
.VALUE
)) {
132 if (event
.getSource() instanceof FieldEditor
) {
133 FieldEditor editor
= (FieldEditor
) event
.getSource();
134 if (editor
.getPreferenceName().equals(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
)) {
135 Boolean enabled
= (Boolean
)event
.getNewValue();
136 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
137 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
141 super.propertyChange(event
);
146 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performDefaults()
149 protected void performDefaults() {
150 super.performDefaults();
151 fVerboseLevel
.setEnabled(false, getFieldEditorParent());
152 fIsAppend
.setEnabled(false, getFieldEditorParent());
157 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
160 public boolean performOk() {
161 boolean ret
= super.performOk();
162 // open or close log file
163 if (ControlPreferences
.getInstance().isLoggingEnabled()) {
164 ControlCommandLogger
.init(ControlPreferences
.getInstance().getLogfilePath(), ControlPreferences
.getInstance().isAppend());
166 ControlCommandLogger
.close();