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
.views
.control
.logging
.ControlCommandLogger
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.messages
.Messages
;
23 import org
.eclipse
.ui
.IWorkbench
;
24 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
27 * <b><u>ControlPreferencePage</u></b>
29 * Preference page implementation for configuring LTTng tracer control preferences.
32 public class ControlPreferencePage
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
{
34 // ------------------------------------------------------------------------
36 // ------------------------------------------------------------------------
37 RadioGroupFieldEditor fVerboseLevel
;
38 BooleanFieldEditor fIsAppend
;
40 // ------------------------------------------------------------------------
42 // ------------------------------------------------------------------------
43 public ControlPreferencePage() {
44 super(FieldEditorPreferencePage
.GRID
);
46 // Set the preference store for the preference page.
47 IPreferenceStore store
= ControlPreferences
.getInstance().getPreferenceStore();
48 setPreferenceStore(store
);
51 // ------------------------------------------------------------------------
53 // ------------------------------------------------------------------------
56 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
59 public void init(IWorkbench workbench
) {
64 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
67 protected void createFieldEditors() {
69 StringFieldEditor tracingGroup
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_TRACING_GROUP_PREF
, Messages
.TraceControl_TracingGroupPreference
, getFieldEditorParent());
70 addField(tracingGroup
);
72 BooleanFieldEditor logCommand
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
, Messages
.TraceControl_LoggingPreference
, getFieldEditorParent());
75 StringFieldEditor logfile
= new StringFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_FILE_PATH_PREF
, Messages
.TraceControl_LogfilePath
, getFieldEditorParent());
78 fIsAppend
= new BooleanFieldEditor(ControlPreferences
.TRACE_CONTROL_LOG_APPEND_PREF
, Messages
.TraceControl_AppendLogfilePreference
, getFieldEditorParent());
81 fVerboseLevel
= new RadioGroupFieldEditor (
82 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_PREF
,
83 Messages
.TraceControl_VerboseLevelsPreference
,
87 Messages
.TraceControl_VerboseLevelNonePreference
,
88 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_NONE
,
91 Messages
.TraceControl_VerboseLevelVerbosePreference
,
92 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
95 Messages
.TraceControl_VerboseLevelVeryVerbosePreference
,
96 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
99 Messages
.TraceControl_VerboseLevelVeryVeryVerbosePreference
,
100 ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
103 getFieldEditorParent(),
106 addField(fVerboseLevel
);
108 Boolean enabled
= ControlPreferences
.getInstance().isLoggingEnabled();
109 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
110 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
111 logfile
.setEnabled(false, getFieldEditorParent());
116 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
119 public void propertyChange(PropertyChangeEvent event
) {
121 if (event
.getProperty().equals(FieldEditor
.VALUE
)) {
122 if (event
.getSource() instanceof FieldEditor
) {
123 FieldEditor editor
= (FieldEditor
) event
.getSource();
124 if (editor
.getPreferenceName().equals(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
)) {
125 Boolean enabled
= (Boolean
)event
.getNewValue();
126 fVerboseLevel
.setEnabled(enabled
, getFieldEditorParent());
127 fIsAppend
.setEnabled(enabled
, getFieldEditorParent());
131 super.propertyChange(event
);
136 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performDefaults()
139 protected void performDefaults() {
140 super.performDefaults();
141 fVerboseLevel
.setEnabled(false, getFieldEditorParent());
142 fIsAppend
.setEnabled(false, getFieldEditorParent());
147 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
150 public boolean performOk() {
151 boolean ret
= super.performOk();
152 // open or close log file
153 if (ControlPreferences
.getInstance().isLoggingEnabled()) {
154 ControlCommandLogger
.init(ControlPreferences
.getInstance().getLogfilePath(), ControlPreferences
.getInstance().isAppend());
156 ControlCommandLogger
.close();