diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.ddms/src/com/android/ide/eclipse/ddms/preferences/LogCatPreferencePage.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.ddms/src/com/android/ide/eclipse/ddms/preferences/LogCatPreferencePage.java | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.ddms/src/com/android/ide/eclipse/ddms/preferences/LogCatPreferencePage.java b/eclipse/plugins/com.android.ide.eclipse.ddms/src/com/android/ide/eclipse/ddms/preferences/LogCatPreferencePage.java new file mode 100644 index 000000000..aa88eecb7 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.ddms/src/com/android/ide/eclipse/ddms/preferences/LogCatPreferencePage.java @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ide.eclipse.ddms.preferences; + +import com.android.ddmlib.Log.LogLevel; +import com.android.ddmuilib.logcat.LogCatMessageList; +import com.android.ddmuilib.logcat.LogCatPanel; +import com.android.ide.eclipse.base.InstallDetails; +import com.android.ide.eclipse.ddms.DdmsPlugin; +import com.android.ide.eclipse.ddms.LogCatMonitor; +import com.android.ide.eclipse.ddms.i18n.Messages; + +import org.eclipse.jface.preference.BooleanFieldEditor; +import org.eclipse.jface.preference.ComboFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.FontFieldEditor; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IPerspectiveDescriptor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; + +/** + * Preference Pane for LogCat. + */ +public class LogCatPreferencePage extends FieldEditorPreferencePage implements + IWorkbenchPreferencePage { + private BooleanFieldEditor mSwitchPerspective; + private ComboFieldEditor mWhichPerspective; + private IntegerFieldEditor mMaxMessages; + private BooleanFieldEditor mAutoMonitorLogcat; + private ComboFieldEditor mAutoMonitorLogcatLevel; + private BooleanFieldEditor mAutoScrollLock; + + public LogCatPreferencePage() { + super(GRID); + setPreferenceStore(DdmsPlugin.getDefault().getPreferenceStore()); + } + + @Override + protected void createFieldEditors() { + FontFieldEditor ffe = new FontFieldEditor(LogCatPanel.LOGCAT_VIEW_FONT_PREFKEY, + Messages.LogCatPreferencePage_Display_Font, getFieldEditorParent()); + addField(ffe); + + mMaxMessages = new IntegerFieldEditor( + LogCatMessageList.MAX_MESSAGES_PREFKEY, + Messages.LogCatPreferencePage_MaxMessages, getFieldEditorParent()); + addField(mMaxMessages); + + mAutoScrollLock = new BooleanFieldEditor(LogCatPanel.AUTO_SCROLL_LOCK_PREFKEY, + "Automatically enable/disable scroll lock based on the scrollbar position", + getFieldEditorParent()); + addField(mAutoScrollLock); + + createHorizontalSeparator(); + + if (InstallDetails.isAdtInstalled()) { + createAdtSpecificFieldEditors(); + } + } + + private void createHorizontalSeparator() { + Label l = new Label(getFieldEditorParent(), SWT.SEPARATOR | SWT.HORIZONTAL); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 3; + l.setLayoutData(gd); + } + + private void createAdtSpecificFieldEditors() { + mSwitchPerspective = new BooleanFieldEditor(PreferenceInitializer.ATTR_SWITCH_PERSPECTIVE, + Messages.LogCatPreferencePage_Switch_Perspective, getFieldEditorParent()); + addField(mSwitchPerspective); + IPerspectiveDescriptor[] perspectiveDescriptors = + PlatformUI.getWorkbench().getPerspectiveRegistry().getPerspectives(); + String[][] perspectives = new String[0][0]; + if (perspectiveDescriptors.length > 0) { + perspectives = new String[perspectiveDescriptors.length][2]; + for (int i = 0; i < perspectiveDescriptors.length; i++) { + IPerspectiveDescriptor perspective = perspectiveDescriptors[i]; + perspectives[i][0] = perspective.getLabel(); + perspectives[i][1] = perspective.getId(); + } + } + mWhichPerspective = new ComboFieldEditor(PreferenceInitializer.ATTR_PERSPECTIVE_ID, + Messages.LogCatPreferencePage_Switch_To, perspectives, getFieldEditorParent()); + mWhichPerspective.setEnabled(getPreferenceStore() + .getBoolean(PreferenceInitializer.ATTR_SWITCH_PERSPECTIVE), getFieldEditorParent()); + addField(mWhichPerspective); + + createHorizontalSeparator(); + + mAutoMonitorLogcat = new BooleanFieldEditor(LogCatMonitor.AUTO_MONITOR_PREFKEY, + Messages.LogCatPreferencePage_AutoMonitorLogcat, + getFieldEditorParent()); + addField(mAutoMonitorLogcat); + + mAutoMonitorLogcatLevel = new ComboFieldEditor(LogCatMonitor.AUTO_MONITOR_LOGLEVEL, + Messages.LogCatPreferencePage_SessionFilterLogLevel, + new String[][] { + { LogLevel.VERBOSE.toString(), LogLevel.VERBOSE.getStringValue() }, + { LogLevel.DEBUG.toString(), LogLevel.DEBUG.getStringValue() }, + { LogLevel.INFO.toString(), LogLevel.INFO.getStringValue() }, + { LogLevel.WARN.toString(), LogLevel.WARN.getStringValue() }, + { LogLevel.ERROR.toString(), LogLevel.ERROR.getStringValue() }, + { LogLevel.ASSERT.toString(), LogLevel.ASSERT.getStringValue() }, + }, + getFieldEditorParent()); + mAutoMonitorLogcatLevel.setEnabled( + getPreferenceStore().getBoolean(LogCatMonitor.AUTO_MONITOR_PREFKEY), + getFieldEditorParent()); + addField(mAutoMonitorLogcatLevel); + } + + @Override + public void init(IWorkbench workbench) { + } + + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getSource().equals(mSwitchPerspective)) { + mWhichPerspective.setEnabled(mSwitchPerspective.getBooleanValue(), + getFieldEditorParent()); + } else if (event.getSource().equals(mAutoMonitorLogcat)) { + mAutoMonitorLogcatLevel.setEnabled(mAutoMonitorLogcat.getBooleanValue(), + getFieldEditorParent()); + } + } + + @Override + protected void performDefaults() { + super.performDefaults(); + mWhichPerspective.setEnabled(mSwitchPerspective.getBooleanValue(), getFieldEditorParent()); + + mMaxMessages.setStringValue( + Integer.toString(LogCatMessageList.MAX_MESSAGES_DEFAULT)); + + mAutoMonitorLogcatLevel.setEnabled(mAutoMonitorLogcat.getBooleanValue(), + getFieldEditorParent()); + } +} |