1 /**********************************************************************
2 * Copyright (c) 2012 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
.RadioGroupFieldEditor
;
19 import org
.eclipse
.jface
.preference
.StringFieldEditor
;
20 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
21 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.Activator
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.Messages
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.logging
.ControlCommandLogger
;
24 import org
.eclipse
.ui
.IWorkbench
;
25 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
28 * <b><u>ControlPreferencePage</u></b>
30 * Preference page implementation for configuring LTTng tracer control preferences.
33 public class ControlPreferencePage
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
{
35 // ------------------------------------------------------------------------
37 // ------------------------------------------------------------------------
38 RadioGroupFieldEditor fVerboseLevel
;
39 BooleanFieldEditor fIsAppend
;
41 // ------------------------------------------------------------------------
43 // ------------------------------------------------------------------------
44 public ControlPreferencePage() {
45 super(FieldEditorPreferencePage
.GRID
);
47 // Set the preference store for the preference page.
48 IPreferenceStore store
= Activator
.getDefault().getPreferenceStore();
49 setPreferenceStore(store
);
52 // ------------------------------------------------------------------------
54 // ------------------------------------------------------------------------
57 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
60 public void init(IWorkbench workbench
) {
65 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
68 protected void createFieldEditors() {
70 StringFieldEditor tracingGroup
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_TRACING_GROUP_PREF
, Messages
.TraceControl_TracingGroupPreference
, getFieldEditorParent());
71 addField(tracingGroup
);
73 BooleanFieldEditor logCommand
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
, Messages
.TraceControl_LoggingPreference
, getFieldEditorParent());
76 StringFieldEditor logfile
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_FILE_PATH_PREF
, Messages
.TraceControl_LogfilePath
, getFieldEditorParent());
79 fIsAppend
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_APPEND_PREF
, Messages
.TraceControl_AppendLogfilePreference
, getFieldEditorParent());
82 fVerboseLevel
= new RadioGroupFieldEditor (
83 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_PREF
,
84 Messages
.TraceControl_VerboseLevelsPreference
,
88 Messages
.TraceControl_VerboseLevelNonePreference
,
89 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_NONE
,
92 Messages
.TraceControl_VerboseLevelVerbosePreference
,
93 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
96 Messages
.TraceControl_VerboseLevelVeryVerbosePreference
,
97 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
100 Messages
.TraceControl_VerboseLevelVeryVeryVerbosePreference
,
101 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
104 getFieldEditorParent(),
107 addField(fVerboseLevel
);
109 Boolean enabled
= ControlPreferences
.getInstance().isLoggingEnabled();
110 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
111 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
112 logfile
.setEnabled(false, getFieldEditorParent());
117 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
120 public void propertyChange(PropertyChangeEvent event
) {
122 if (event
.getProperty().equals(FieldEditor
.VALUE
)) {
123 if (event
.getSource() instanceof FieldEditor
) {
124 FieldEditor editor
= (FieldEditor
) event
.getSource();
125 if (editor
.getPreferenceName().equals(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
)) {
126 Boolean enabled
= (Boolean
)event
.getNewValue();
127 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
128 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
132 super.propertyChange(event
);
137 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performDefaults()
140 protected void performDefaults() {
141 super.performDefaults();
142 fVerboseLevel
.setEnabled(false, getFieldEditorParent());
143 fIsAppend
.setEnabled(false, getFieldEditorParent());
148 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
151 public boolean performOk() {
152 boolean ret
= super.performOk();
153 // open or close log file
154 if (ControlPreferences
.getInstance().isLoggingEnabled()) {
155 ControlCommandLogger
.init(ControlPreferences
.TRACE_CONTROL_LOG_FILENAME
, ControlPreferences
.getInstance().isAppend());
157 ControlCommandLogger
.close();