lttng: Add a diagram showing the dependencies between plugins
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / preferences / ControlPreferencePage.java
CommitLineData
afe13e7a 1/**********************************************************************
4bdf5f96 2 * Copyright (c) 2012, 2013 Ericsson
cfdb727a 3 *
afe13e7a
BH
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
cfdb727a
AM
8 *
9 * Contributors:
afe13e7a
BH
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12package org.eclipse.linuxtools.internal.lttng2.ui.views.control.preferences;
13
14import org.eclipse.jface.preference.BooleanFieldEditor;
15import org.eclipse.jface.preference.FieldEditor;
16import org.eclipse.jface.preference.FieldEditorPreferencePage;
17import org.eclipse.jface.preference.IPreferenceStore;
4bdf5f96 18import org.eclipse.jface.preference.IntegerFieldEditor;
afe13e7a
BH
19import org.eclipse.jface.preference.RadioGroupFieldEditor;
20import org.eclipse.jface.preference.StringFieldEditor;
21import org.eclipse.jface.util.PropertyChangeEvent;
afe13e7a 22import org.eclipse.linuxtools.internal.lttng2.ui.views.control.logging.ControlCommandLogger;
9315aeee 23import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages;
afe13e7a
BH
24import org.eclipse.ui.IWorkbench;
25import org.eclipse.ui.IWorkbenchPreferencePage;
26
27/**
afe13e7a
BH
28 * <p>
29 * Preference page implementation for configuring LTTng tracer control preferences.
30 * </p>
cfdb727a 31 *
dbd4432d 32 * @author Bernd Hufmann
afe13e7a
BH
33 */
34public class ControlPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
35
36 // ------------------------------------------------------------------------
37 // Attributes
38 // ------------------------------------------------------------------------
77735e82
BH
39 private RadioGroupFieldEditor fVerboseLevel;
40 private BooleanFieldEditor fIsAppend;
cfdb727a 41
afe13e7a
BH
42 // ------------------------------------------------------------------------
43 // Constructors
44 // ------------------------------------------------------------------------
cfdb727a
AM
45
46 /**
47 * Constructor
48 */
afe13e7a
BH
49 public ControlPreferencePage() {
50 super(FieldEditorPreferencePage.GRID);
51
52 // Set the preference store for the preference page.
9315aeee 53 IPreferenceStore store = ControlPreferences.getInstance().getPreferenceStore();
afe13e7a
BH
54 setPreferenceStore(store);
55 }
cfdb727a 56
afe13e7a
BH
57 // ------------------------------------------------------------------------
58 // Operations
59 // ------------------------------------------------------------------------
11252342 60
afe13e7a
BH
61 @Override
62 public void init(IWorkbench workbench) {
63 }
64
afe13e7a
BH
65 @Override
66 protected void createFieldEditors() {
67
68 StringFieldEditor tracingGroup = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_TRACING_GROUP_PREF, Messages.TraceControl_TracingGroupPreference, getFieldEditorParent());
69 addField(tracingGroup);
70
71 BooleanFieldEditor logCommand = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF, Messages.TraceControl_LoggingPreference, getFieldEditorParent());
72 addField(logCommand);
73
74 StringFieldEditor logfile = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_FILE_PATH_PREF, Messages.TraceControl_LogfilePath, getFieldEditorParent());
75 addField(logfile);
cfdb727a 76
afe13e7a
BH
77 fIsAppend = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_APPEND_PREF, Messages.TraceControl_AppendLogfilePreference, getFieldEditorParent());
78 addField(fIsAppend);
79
80 fVerboseLevel = new RadioGroupFieldEditor (
81 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_PREF,
82 Messages.TraceControl_VerboseLevelsPreference,
83 4,
84 new String[][] {
85 {
86 Messages.TraceControl_VerboseLevelNonePreference,
87 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_NONE,
88 },
89 {
cfdb727a 90 Messages.TraceControl_VerboseLevelVerbosePreference,
afe13e7a
BH
91 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
92 },
93 {
cfdb727a 94 Messages.TraceControl_VerboseLevelVeryVerbosePreference,
afe13e7a
BH
95 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
96 },
97 {
cfdb727a 98 Messages.TraceControl_VerboseLevelVeryVeryVerbosePreference,
afe13e7a
BH
99 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
100 }
101 },
102 getFieldEditorParent(),
103 true);
104
105 addField(fVerboseLevel);
106
107 Boolean enabled = ControlPreferences.getInstance().isLoggingEnabled();
108 fVerboseLevel.setEnabled(enabled, getFieldEditorParent());
109 fIsAppend.setEnabled(enabled, getFieldEditorParent());
110 logfile.setEnabled(false, getFieldEditorParent());
4bdf5f96
BH
111
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);
afe13e7a
BH
115 }
116
afe13e7a
BH
117 @Override
118 public void propertyChange(PropertyChangeEvent event) {
cfdb727a 119
afe13e7a
BH
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());
127 }
128 }
129 }
130 super.propertyChange(event);
131 }
cfdb727a 132
afe13e7a
BH
133 @Override
134 protected void performDefaults() {
135 super.performDefaults();
136 fVerboseLevel.setEnabled(false, getFieldEditorParent());
137 fIsAppend.setEnabled(false, getFieldEditorParent());
138 }
139
afe13e7a
BH
140 @Override
141 public boolean performOk() {
142 boolean ret = super.performOk();
143 // open or close log file
144 if (ControlPreferences.getInstance().isLoggingEnabled()) {
0886cf00 145 ControlCommandLogger.init(ControlPreferences.getInstance().getLogfilePath(), ControlPreferences.getInstance().isAppend());
afe13e7a
BH
146 } else {
147 ControlCommandLogger.close();
148 }
149 return ret;
150 }
151}
This page took 0.044178 seconds and 5 git commands to generate.