blob: af3f3936833bc9a9a234fef5fee6e88816a1a7e5 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2012, 2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Bernd Hufmann - Initial API and implementation
**********************************************************************/
package org.eclipse.tracecompass.internal.lttng2.control.ui.views.preferences;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.RadioGroupFieldEditor;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.logging.ControlCommandLogger;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
/**
* <p>
* Preference page implementation for configuring LTTng tracer control preferences.
* </p>
*
* @author Bernd Hufmann
*/
public class ControlPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
private RadioGroupFieldEditor fVerboseLevel;
private BooleanFieldEditor fIsAppend;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Constructor
*/
public ControlPreferencePage() {
super(FieldEditorPreferencePage.GRID);
// Set the preference store for the preference page.
IPreferenceStore store = ControlPreferences.getInstance().getPreferenceStore();
setPreferenceStore(store);
}
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
@Override
public void init(IWorkbench workbench) {
// Do nothing
}
@Override
protected void createFieldEditors() {
StringFieldEditor tracingGroup = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_TRACING_GROUP_PREF, Messages.TraceControl_TracingGroupPreference, getFieldEditorParent());
addField(tracingGroup);
BooleanFieldEditor logCommand = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF, Messages.TraceControl_LoggingPreference, getFieldEditorParent());
addField(logCommand);
StringFieldEditor logfile = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_FILE_PATH_PREF, Messages.TraceControl_LogfilePath, getFieldEditorParent());
addField(logfile);
fIsAppend = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_APPEND_PREF, Messages.TraceControl_AppendLogfilePreference, getFieldEditorParent());
addField(fIsAppend);
fVerboseLevel = new RadioGroupFieldEditor (
ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_PREF,
Messages.TraceControl_VerboseLevelsPreference,
4,
new String[][] {
{
Messages.TraceControl_VerboseLevelNonePreference,
ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_NONE,
},
{
Messages.TraceControl_VerboseLevelVerbosePreference,
ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
},
{
Messages.TraceControl_VerboseLevelVeryVerbosePreference,
ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
},
{
Messages.TraceControl_VerboseLevelVeryVeryVerbosePreference,
ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
}
},
getFieldEditorParent(),
true);
addField(fVerboseLevel);
Boolean enabled = ControlPreferences.getInstance().isLoggingEnabled();
fVerboseLevel.setEnabled(enabled, getFieldEditorParent());
fIsAppend.setEnabled(enabled, getFieldEditorParent());
logfile.setEnabled(false, getFieldEditorParent());
}
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event.getProperty().equals(FieldEditor.VALUE)) {
if (event.getSource() instanceof FieldEditor) {
FieldEditor editor = (FieldEditor) event.getSource();
if (editor.getPreferenceName().equals(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF)) {
Boolean enabled = (Boolean)event.getNewValue();
fVerboseLevel.setEnabled(enabled, getFieldEditorParent());
fIsAppend.setEnabled(enabled, getFieldEditorParent());
}
}
}
super.propertyChange(event);
}
@Override
protected void performDefaults() {
super.performDefaults();
fVerboseLevel.setEnabled(false, getFieldEditorParent());
fIsAppend.setEnabled(false, getFieldEditorParent());
}
@Override
public boolean performOk() {
boolean ret = super.performOk();
// open or close log file
if (ControlPreferences.getInstance().isLoggingEnabled()) {
ControlCommandLogger.init(ControlPreferences.getInstance().getLogfilePath(), ControlPreferences.getInstance().isAppend());
} else {
ControlCommandLogger.close();
}
return ret;
}
}