Home | History | Annotate | Download | only in preferences
      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