1 /* 2 * Copyright (C) 2012 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; 18 19 import com.android.ddmlib.Log.LogLevel; 20 21 import org.eclipse.jface.dialogs.IDialogConstants; 22 import org.eclipse.jface.dialogs.TitleAreaDialog; 23 import org.eclipse.swt.SWT; 24 import org.eclipse.swt.events.SelectionAdapter; 25 import org.eclipse.swt.events.SelectionEvent; 26 import org.eclipse.swt.events.SelectionListener; 27 import org.eclipse.swt.layout.GridData; 28 import org.eclipse.swt.layout.GridLayout; 29 import org.eclipse.swt.widgets.Button; 30 import org.eclipse.swt.widgets.Combo; 31 import org.eclipse.swt.widgets.Composite; 32 import org.eclipse.swt.widgets.Control; 33 import org.eclipse.swt.widgets.Shell; 34 35 public class LogCatMonitorDialog extends TitleAreaDialog { 36 private static final String TITLE = "Auto Monitor Logcat"; 37 private static final String DEFAULT_MESSAGE = 38 "Would you like ADT to automatically monitor logcat \n" + 39 "output for messages from applications in the workspace?"; 40 41 private boolean mShouldMonitor = true; 42 43 private static final String[] LOG_PRIORITIES = new String[] { 44 LogLevel.VERBOSE.getStringValue(), 45 LogLevel.DEBUG.getStringValue(), 46 LogLevel.INFO.getStringValue(), 47 LogLevel.WARN.getStringValue(), 48 LogLevel.ERROR.getStringValue(), 49 LogLevel.ASSERT.getStringValue(), 50 }; 51 private static final int ERROR_PRIORITY_INDEX = 4; 52 53 private String mMinimumLogPriority = LOG_PRIORITIES[ERROR_PRIORITY_INDEX]; 54 LogCatMonitorDialog(Shell parentShell)55 public LogCatMonitorDialog(Shell parentShell) { 56 super(parentShell); 57 setHelpAvailable(false); 58 } 59 60 @Override createDialogArea(Composite parent)61 protected Control createDialogArea(Composite parent) { 62 setTitle(TITLE); 63 setMessage(DEFAULT_MESSAGE); 64 65 parent = (Composite) super.createDialogArea(parent); 66 Composite c = new Composite(parent, SWT.BORDER); 67 c.setLayout(new GridLayout(2, false)); 68 GridData gd_c = new GridData(GridData.FILL_BOTH); 69 gd_c.grabExcessVerticalSpace = false; 70 gd_c.grabExcessHorizontalSpace = false; 71 c.setLayoutData(gd_c); 72 73 final Button disableButton = new Button(c, SWT.RADIO); 74 disableButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); 75 disableButton.setText("No, do not monitor logcat output."); 76 77 final Button enableButton = new Button(c, SWT.RADIO); 78 enableButton.setText("Yes, monitor logcat and display logcat view if there are\n" + 79 "messages with priority higher than:"); 80 enableButton.setSelection(true); 81 82 final Combo levelCombo = new Combo(c, SWT.READ_ONLY | SWT.DROP_DOWN); 83 levelCombo.setItems(LOG_PRIORITIES); 84 levelCombo.select(ERROR_PRIORITY_INDEX); 85 86 SelectionListener s = new SelectionAdapter() { 87 @Override 88 public void widgetSelected(SelectionEvent e) { 89 if (e.getSource() == enableButton) { 90 mShouldMonitor = enableButton.getSelection(); 91 levelCombo.setEnabled(mShouldMonitor); 92 } else if (e.getSource() == levelCombo) { 93 mMinimumLogPriority = LOG_PRIORITIES[levelCombo.getSelectionIndex()]; 94 } 95 } 96 }; 97 98 levelCombo.addSelectionListener(s); 99 enableButton.addSelectionListener(s); 100 101 return parent; 102 } 103 104 @Override createButtonsForButtonBar(Composite parent)105 protected void createButtonsForButtonBar(Composite parent) { 106 // Only need OK button 107 createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, 108 true); 109 } 110 shouldMonitor()111 public boolean shouldMonitor() { 112 return mShouldMonitor; 113 } 114 getMinimumPriority()115 public String getMinimumPriority() { 116 return mMinimumLogPriority; 117 } 118 } 119