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
.control
.ui
.views
.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
.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
;
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 private RadioGroupFieldEditor fVerboseLevel
;
40 private 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 public void init(IWorkbench workbench
) {
66 protected void createFieldEditors() {
68 StringFieldEditor tracingGroup
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_TRACING_GROUP_PREF
, Messages
.TraceControl_TracingGroupPreference
, getFieldEditorParent());
69 addField(tracingGroup
);
71 BooleanFieldEditor logCommand
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
, Messages
.TraceControl_LoggingPreference
, getFieldEditorParent());
74 StringFieldEditor logfile
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_FILE_PATH_PREF
, Messages
.TraceControl_LogfilePath
, getFieldEditorParent());
77 fIsAppend
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_APPEND_PREF
, Messages
.TraceControl_AppendLogfilePreference
, getFieldEditorParent());
80 fVerboseLevel
= new RadioGroupFieldEditor (
81 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_PREF
,
82 Messages
.TraceControl_VerboseLevelsPreference
,
86 Messages
.TraceControl_VerboseLevelNonePreference
,
87 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_NONE
,
90 Messages
.TraceControl_VerboseLevelVerbosePreference
,
91 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
94 Messages
.TraceControl_VerboseLevelVeryVerbosePreference
,
95 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
98 Messages
.TraceControl_VerboseLevelVeryVeryVerbosePreference
,
99 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
102 getFieldEditorParent(),
105 addField(fVerboseLevel
);
107 Boolean enabled
= ControlPreferences
.getInstance().isLoggingEnabled();
108 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
109 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
110 logfile
.setEnabled(false, getFieldEditorParent());
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
);
118 public void propertyChange(PropertyChangeEvent event
) {
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());
130 super.propertyChange(event
);
134 protected void performDefaults() {
135 super.performDefaults();
136 fVerboseLevel
.setEnabled(false, getFieldEditorParent());
137 fIsAppend
.setEnabled(false, getFieldEditorParent());
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());
147 ControlCommandLogger
.close();