5a6d01084773e6f98a9e18fc6f236b83dc5340d9
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / preferences / ControlPreferencePage.java
1 /**********************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org.eclipse.linuxtools.internal.lttng2.ui.views.control.preferences;
13
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;
25
26 /**
27 * <b><u>ControlPreferencePage</u></b>
28 * <p>
29 * Preference page implementation for configuring LTTng tracer control preferences.
30 * </p>
31 */
32 public class ControlPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
33
34 // ------------------------------------------------------------------------
35 // Attributes
36 // ------------------------------------------------------------------------
37 RadioGroupFieldEditor fVerboseLevel;
38 BooleanFieldEditor fIsAppend;
39
40 // ------------------------------------------------------------------------
41 // Constructors
42 // ------------------------------------------------------------------------
43 public ControlPreferencePage() {
44 super(FieldEditorPreferencePage.GRID);
45
46 // Set the preference store for the preference page.
47 IPreferenceStore store = ControlPreferences.getInstance().getPreferenceStore();
48 setPreferenceStore(store);
49 }
50
51 // ------------------------------------------------------------------------
52 // Operations
53 // ------------------------------------------------------------------------
54 /*
55 * (non-Javadoc)
56 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
57 */
58 @Override
59 public void init(IWorkbench workbench) {
60 }
61
62 /*
63 * (non-Javadoc)
64 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
65 */
66 @Override
67 protected void createFieldEditors() {
68
69 StringFieldEditor tracingGroup = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_TRACING_GROUP_PREF, Messages.TraceControl_TracingGroupPreference, getFieldEditorParent());
70 addField(tracingGroup);
71
72 BooleanFieldEditor logCommand = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF, Messages.TraceControl_LoggingPreference, getFieldEditorParent());
73 addField(logCommand);
74
75 StringFieldEditor logfile = new StringFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_FILE_PATH_PREF, Messages.TraceControl_LogfilePath, getFieldEditorParent());
76 addField(logfile);
77
78 fIsAppend = new BooleanFieldEditor(ControlPreferences.TRACE_CONTROL_LOG_APPEND_PREF, Messages.TraceControl_AppendLogfilePreference, getFieldEditorParent());
79 addField(fIsAppend);
80
81 fVerboseLevel = new RadioGroupFieldEditor (
82 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_PREF,
83 Messages.TraceControl_VerboseLevelsPreference,
84 4,
85 new String[][] {
86 {
87 Messages.TraceControl_VerboseLevelNonePreference,
88 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_NONE,
89 },
90 {
91 Messages.TraceControl_VerboseLevelVerbosePreference,
92 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_VERBOSE
93 },
94 {
95 Messages.TraceControl_VerboseLevelVeryVerbosePreference,
96 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_VERBOSE
97 },
98 {
99 Messages.TraceControl_VerboseLevelVeryVeryVerbosePreference,
100 ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
101 }
102 },
103 getFieldEditorParent(),
104 true);
105
106 addField(fVerboseLevel);
107
108 Boolean enabled = ControlPreferences.getInstance().isLoggingEnabled();
109 fVerboseLevel.setEnabled(enabled, getFieldEditorParent());
110 fIsAppend.setEnabled(enabled, getFieldEditorParent());
111 logfile.setEnabled(false, getFieldEditorParent());
112 }
113
114 /*
115 * (non-Javadoc)
116 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
117 */
118 @Override
119 public void propertyChange(PropertyChangeEvent event) {
120
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());
128 }
129 }
130 }
131 super.propertyChange(event);
132 }
133
134 /*
135 * (non-Javadoc)
136 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performDefaults()
137 */
138 @Override
139 protected void performDefaults() {
140 super.performDefaults();
141 fVerboseLevel.setEnabled(false, getFieldEditorParent());
142 fIsAppend.setEnabled(false, getFieldEditorParent());
143 }
144
145 /*
146 * (non-Javadoc)
147 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
148 */
149 @Override
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());
155 } else {
156 ControlCommandLogger.close();
157 }
158 return ret;
159 }
160 }
This page took 0.033658 seconds and 4 git commands to generate.