/** * Copyright (c) 2005-2012 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.logging; import java.io.File; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.python.pydev.core.log.Log; import org.python.pydev.plugin.PydevPlugin; import org.python.pydev.plugin.preferences.PydevPrefs; import org.python.pydev.shared_core.SharedCorePlugin; import org.python.pydev.shared_core.io.FileUtils; import org.python.pydev.shared_ui.field_editors.LabelFieldEditor; import org.python.pydev.shared_ui.field_editors.LinkFieldEditor; /** * Preferences page for logging -- gives the option to enable logging on some specific feature * and show it in the console. * * @author Fabio */ public class PyLoggingPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public static final String DEBUG_CODE_COMPLETION = "DEBUG_CODE_COMPLETION"; public static final boolean DEFAULT_DEBUG_CODE_COMPLETION = false; public static final String DEBUG_ANALYSIS_REQUESTS = "DEBUG_ANALYSIS_REQUESTS"; public static final boolean DEFAULT_DEBUG_ANALYSIS_REQUESTS = false; public static final String DEBUG_INTERPRETER_AUTO_UPDATE = "DEBUG_INTERPRETER_UPDATE"; public static final boolean DEFAULT_DEBUG_INTERPRETER_AUTO_UPDATE = false; public PyLoggingPreferencesPage() { super(GRID); setPreferenceStore(PydevPlugin.getDefault().getPreferenceStore()); } @Override protected void createFieldEditors() { Composite p = getFieldEditorParent(); addField(new LabelFieldEditor( "UNUSED", "Note: to log, check the items for which it should be enabled.\n\n" + "The log output should appear in a console view tab\nand in the file with the link below.\n\n" + "Afterwards, remember to turn it off again, as things\n" + "may be slower when logging is enabled.\n\n", p)); addField(new BooleanFieldEditor(DEBUG_CODE_COMPLETION, "Enable logging for code completion?", p)); addField(new BooleanFieldEditor(DEBUG_ANALYSIS_REQUESTS, "Enable logging for analysis requests?", p)); addField(new BooleanFieldEditor(DEBUG_INTERPRETER_AUTO_UPDATE, "Enable logging for interpreter auto update?", p)); String logOutputFile = Log.getLogOutputFile(); if (logOutputFile != null) { final File f = new File(logOutputFile); addField(new LinkFieldEditor("UNUSED 2", "\nDirectory containing log file: " + f.getName() + "<a>\n" + f.getParent().toString() + "</a>", p, new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { FileUtils.openDirectory(f.getParentFile()); } })); } } @Override public void init(IWorkbench workbench) { } public static boolean isToDebugCodeCompletion() { if (SharedCorePlugin.inTestMode()) { return false; } return PydevPrefs.getPreferences().getBoolean(DEBUG_CODE_COMPLETION); } public static boolean isToDebugAnalysisRequests() { if (SharedCorePlugin.inTestMode()) { return false; } return PydevPrefs.getPreferences().getBoolean(DEBUG_ANALYSIS_REQUESTS); } public static boolean isToDebugInterpreterAutoUpdate() { if (SharedCorePlugin.inTestMode()) { return false; } return PydevPrefs.getPreferences().getBoolean(DEBUG_INTERPRETER_AUTO_UPDATE); } @Override public boolean performOk() { boolean ret = super.performOk(); DebugSettings.DEBUG_CODE_COMPLETION = isToDebugCodeCompletion(); DebugSettings.DEBUG_ANALYSIS_REQUESTS = isToDebugAnalysisRequests(); DebugSettings.DEBUG_INTERPRETER_AUTO_UPDATE = isToDebugInterpreterAutoUpdate(); return ret; } }