1 /* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.ide.eclipse.ddms.preferences; 18 19 import com.android.ddmlib.DdmPreferences; 20 import com.android.ddmlib.Log.LogLevel; 21 import com.android.ide.eclipse.base.InstallDetails; 22 import com.android.ide.eclipse.ddms.DdmsPlugin; 23 import com.android.ide.eclipse.ddms.i18n.Messages; 24 import com.android.ide.eclipse.ddms.views.DeviceView.HProfHandler; 25 26 import org.eclipse.jface.preference.BooleanFieldEditor; 27 import org.eclipse.jface.preference.ComboFieldEditor; 28 import org.eclipse.jface.preference.FieldEditorPreferencePage; 29 import org.eclipse.jface.preference.IntegerFieldEditor; 30 import org.eclipse.jface.preference.RadioGroupFieldEditor; 31 import org.eclipse.jface.preference.StringFieldEditor; 32 import org.eclipse.jface.util.PropertyChangeEvent; 33 import org.eclipse.ui.IWorkbench; 34 import org.eclipse.ui.IWorkbenchPreferencePage; 35 36 public class PreferencePage extends FieldEditorPreferencePage implements 37 IWorkbenchPreferencePage { 38 39 private BooleanFieldEditor mUseAdbHost; 40 private StringFieldEditor mAdbHostValue; 41 private IntegerFieldEditor mProfilerBufsize; 42 43 public PreferencePage() { 44 super(GRID); 45 setPreferenceStore(DdmsPlugin.getDefault().getPreferenceStore()); 46 } 47 48 /** 49 * Creates the field editors. Field editors are abstractions of the common 50 * GUI blocks needed to manipulate various types of preferences. Each field 51 * editor knows how to save and restore itself. 52 */ 53 @Override 54 public void createFieldEditors() { 55 IntegerFieldEditor ife; 56 57 ife = new IntegerFieldEditor(PreferenceInitializer.ATTR_DEBUG_PORT_BASE, 58 Messages.PreferencePage_Base_Local_Debugger_Port, getFieldEditorParent()); 59 ife.setValidRange(1024, 32767); 60 addField(ife); 61 62 BooleanFieldEditor bfe; 63 64 bfe = new BooleanFieldEditor(PreferenceInitializer.ATTR_DEFAULT_THREAD_UPDATE, 65 Messages.PreferencePage_Thread_Updates_Enabled_By_Default, getFieldEditorParent()); 66 addField(bfe); 67 68 bfe = new BooleanFieldEditor(PreferenceInitializer.ATTR_DEFAULT_HEAP_UPDATE, 69 Messages.PreferencePage_Heap_Updates_Enabled_Default, getFieldEditorParent()); 70 addField(bfe); 71 72 ife = new IntegerFieldEditor(PreferenceInitializer.ATTR_THREAD_INTERVAL, 73 Messages.PreferencePage_Thread_Status_Refresh_Interval, getFieldEditorParent()); 74 ife.setValidRange(1, 60); 75 addField(ife); 76 77 if (InstallDetails.isAdtInstalled()) { 78 ComboFieldEditor cfe = new ComboFieldEditor(PreferenceInitializer.ATTR_HPROF_ACTION, 79 Messages.PreferencePage_HPROF_Action, new String[][] { 80 { 81 Messages.PreferencePage_Save_Disk, HProfHandler.ACTION_SAVE 82 }, 83 { 84 Messages.PreferencePage_Open_Eclipse, HProfHandler.ACTION_OPEN 85 }, 86 }, getFieldEditorParent()); 87 addField(cfe); 88 } 89 90 mProfilerBufsize = new IntegerFieldEditor(PreferenceInitializer.ATTR_PROFILER_BUFSIZE_MB, 91 "Method Profiler buffer size (MB):", 92 getFieldEditorParent()); 93 addField(mProfilerBufsize); 94 95 ife = new IntegerFieldEditor(PreferenceInitializer.ATTR_TIME_OUT, 96 Messages.PreferencePage_ADB_Connection_Time_Out, getFieldEditorParent()); 97 addField(ife); 98 99 RadioGroupFieldEditor rgfe = new RadioGroupFieldEditor( 100 PreferenceInitializer.ATTR_LOG_LEVEL, 101 Messages.PreferencePage_Logging_Level, 1, new String[][] { 102 { 103 Messages.PreferencePage_Verbose, LogLevel.VERBOSE.getStringValue() 104 }, 105 { 106 Messages.PreferencePage_Debug, LogLevel.DEBUG.getStringValue() 107 }, 108 { 109 Messages.PreferencePage_Info, LogLevel.INFO.getStringValue() 110 }, 111 { 112 Messages.PreferencePage_Warning, LogLevel.WARN.getStringValue() 113 }, 114 { 115 Messages.PreferencePage_Error, LogLevel.ERROR.getStringValue() 116 }, 117 { 118 Messages.PreferencePage_Assert, LogLevel.ASSERT.getStringValue() 119 } 120 }, 121 getFieldEditorParent(), true); 122 addField(rgfe); 123 mUseAdbHost = new BooleanFieldEditor(PreferenceInitializer.ATTR_USE_ADBHOST, 124 Messages.PreferencePage_Use_Adbhost, getFieldEditorParent()); 125 addField(mUseAdbHost); 126 mAdbHostValue = new StringFieldEditor(PreferenceInitializer.ATTR_ADBHOST_VALUE, 127 Messages.PreferencePage_Adbhost_value, getFieldEditorParent()); 128 mAdbHostValue.setEnabled(getPreferenceStore() 129 .getBoolean(PreferenceInitializer.ATTR_USE_ADBHOST), getFieldEditorParent()); 130 addField(mAdbHostValue); 131 } 132 133 @Override 134 public void init(IWorkbench workbench) { 135 } 136 137 @Override 138 public void propertyChange(PropertyChangeEvent event) { 139 if (event.getSource().equals(mUseAdbHost)) { 140 mAdbHostValue.setEnabled(mUseAdbHost.getBooleanValue(), getFieldEditorParent()); 141 } else if (event.getSource().equals(mProfilerBufsize)) { 142 DdmPreferences.setProfilerBufferSizeMb(mProfilerBufsize.getIntValue()); 143 } 144 super.propertyChange(event); 145 } 146 147 @Override 148 protected void performDefaults() { 149 super.performDefaults(); 150 mAdbHostValue.setEnabled(mUseAdbHost.getBooleanValue(), getFieldEditorParent()); 151 } 152 } 153