/* * 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()); } }