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