/* * Copyright (C) 2012 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; import com.android.ddmlib.Log.LogLevel; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; public class LogCatMonitorDialog extends TitleAreaDialog { private static final String TITLE = "Auto Monitor Logcat"; private static final String DEFAULT_MESSAGE = "Would you like ADT to automatically monitor logcat \n" + "output for messages from applications in the workspace?"; private boolean mShouldMonitor = true; private static final String[] LOG_PRIORITIES = new String[] { LogLevel.VERBOSE.getStringValue(), LogLevel.DEBUG.getStringValue(), LogLevel.INFO.getStringValue(), LogLevel.WARN.getStringValue(), LogLevel.ERROR.getStringValue(), LogLevel.ASSERT.getStringValue(), }; private static final int ERROR_PRIORITY_INDEX = 4; private String mMinimumLogPriority = LOG_PRIORITIES[ERROR_PRIORITY_INDEX]; public LogCatMonitorDialog(Shell parentShell) { super(parentShell); setHelpAvailable(false); } @Override protected Control createDialogArea(Composite parent) { setTitle(TITLE); setMessage(DEFAULT_MESSAGE); parent = (Composite) super.createDialogArea(parent); Composite c = new Composite(parent, SWT.BORDER); c.setLayout(new GridLayout(2, false)); GridData gd_c = new GridData(GridData.FILL_BOTH); gd_c.grabExcessVerticalSpace = false; gd_c.grabExcessHorizontalSpace = false; c.setLayoutData(gd_c); final Button disableButton = new Button(c, SWT.RADIO); disableButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); disableButton.setText("No, do not monitor logcat output."); final Button enableButton = new Button(c, SWT.RADIO); enableButton.setText("Yes, monitor logcat and display logcat view if there are\n" + "messages with priority higher than:"); enableButton.setSelection(true); final Combo levelCombo = new Combo(c, SWT.READ_ONLY | SWT.DROP_DOWN); levelCombo.setItems(LOG_PRIORITIES); levelCombo.select(ERROR_PRIORITY_INDEX); SelectionListener s = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (e.getSource() == enableButton) { mShouldMonitor = enableButton.getSelection(); levelCombo.setEnabled(mShouldMonitor); } else if (e.getSource() == levelCombo) { mMinimumLogPriority = LOG_PRIORITIES[levelCombo.getSelectionIndex()]; } } }; levelCombo.addSelectionListener(s); enableButton.addSelectionListener(s); return parent; } @Override protected void createButtonsForButtonBar(Composite parent) { // Only need OK button createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); } public boolean shouldMonitor() { return mShouldMonitor; } public String getMinimumPriority() { return mMinimumLogPriority; } }