14106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy/* 24106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * Copyright (C) 2007 The Android Open Source Project 34106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * 44106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * Licensed under the Apache License, Version 2.0 (the "License"); 54106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * you may not use this file except in compliance with the License. 64106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * You may obtain a copy of the License at 74106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * 84106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * http://www.apache.org/licenses/LICENSE-2.0 94106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * 104106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * Unless required by applicable law or agreed to in writing, software 114106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * distributed under the License is distributed on an "AS IS" BASIS, 124106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * See the License for the specific language governing permissions and 144106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * limitations under the License. 154106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy */ 164106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 174106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamypackage com.android.ide.eclipse.ddms.views; 184106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 19e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmlib.Log.LogLevel; 20e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmuilib.ImageLoader; 21e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmuilib.logcat.LogColors; 22e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmuilib.logcat.LogFilter; 23e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmuilib.logcat.LogPanel; 24e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmuilib.logcat.LogPanel.ILogFilterStorageManager; 25e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ddmuilib.logcat.LogPanel.LogCatViewInterface; 26e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ide.eclipse.ddms.CommonAction; 27e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ide.eclipse.ddms.DdmsPlugin; 28e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ide.eclipse.ddms.i18n.Messages; 29e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport com.android.ide.eclipse.ddms.preferences.PreferenceInitializer; 304106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 314106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.core.resources.IFile; 324106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.core.resources.IMarker; 334106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.core.runtime.CoreException; 344106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.core.runtime.Status; 354106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.jface.action.Action; 364106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.jface.action.IAction; 374106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.jface.action.IMenuManager; 384106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.jface.action.IToolBarManager; 394106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.jface.action.Separator; 404106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.jface.preference.IPreferenceStore; 414106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.swt.dnd.Clipboard; 424106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.swt.graphics.Color; 434106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.swt.graphics.Font; 444106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.swt.graphics.FontData; 454106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.swt.widgets.Composite; 464106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.swt.widgets.Display; 474106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.IActionBars; 484106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.IPerspectiveRegistry; 494106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.IWorkbench; 504106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.IWorkbenchPage; 514106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.IWorkbenchWindow; 524106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.PlatformUI; 534106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.WorkbenchException; 544106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.actions.ActionFactory; 554106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamyimport org.eclipse.ui.ide.IDE; 564106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 57e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamyimport java.util.ArrayList; 584106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 594106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy/** 604106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * The log cat view displays log output from the current device selection. 614106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy */ 624106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamypublic final class OldLogCatView extends SelectionDependentViewPart implements LogCatViewInterface { 634106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 644106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static final String ID = "com.android.ide.eclipse.ddms.views.OldLogCatView"; //$NON-NLS-1$ 654106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 664106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static final String PREFS_COL_TIME = 674106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.time"; //$NON-NLS-1$ 684106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static final String PREFS_COL_LEVEL = 694106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.level"; //$NON-NLS-1$ 704106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static final String PREFS_COL_PID = 714106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.pid"; //$NON-NLS-1$ 724106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static final String PREFS_COL_TAG = 734106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.tag"; //$NON-NLS-1$ 744106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static final String PREFS_COL_MESSAGE = 754106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.message"; //$NON-NLS-1$ 764106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 774106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static final String PREFS_FILTERS = 784106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.filters"; //$NON-NLS-1$ 794106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 804106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static final String CHOICE_METHOD_DECLARATION = 814106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.MethodDeclaration"; //$NON-NLS-1$ 824106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static final String CHOICE_ERROR_LINE = 834106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.PLUGIN_ID + ".logcat.ErrorLine"; //$NON-NLS-1$ 844106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 854106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy /* Default values for the switch of perspective. */ 864106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static final boolean DEFAULT_SWITCH_PERSPECTIVE = true; 874106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static final String DEFAULT_PERSPECTIVE_ID = "org.eclipse.jdt.ui.JavaPerspective"; //$NON-NLS-1$ 884106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private static OldLogCatView sThis; 894106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private LogPanel mLogPanel; 904106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 914106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private CommonAction mCreateFilterAction; 924106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private CommonAction mDeleteFilterAction; 934106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private CommonAction mEditFilterAction; 944106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private CommonAction mExportAction; 954106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 964106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private CommonAction[] mLogLevelActions; 974106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private String[] mLogLevelIcons = { 984106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy "v.png", //$NON-NLS-1S 994106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy "d.png", //$NON-NLS-1S 1004106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy "i.png", //$NON-NLS-1S 1014106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy "w.png", //$NON-NLS-1S 1024106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy "e.png", //$NON-NLS-1S 1034106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 1044106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1054106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private Action mClearAction; 1064106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1074106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private Clipboard mClipboard; 1084106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1094106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy /** 1104106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * An implementation of {@link ILogFilterStorageManager} to bridge to the 1114106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * eclipse preference store, and saves the log filters. 1124106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy */ 1134106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private final class FilterStorage implements ILogFilterStorageManager { 1144106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 115ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 1164106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public LogFilter[] getFilterFromStore() { 1174106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy String filterPrefs = DdmsPlugin.getDefault().getPreferenceStore().getString( 1184106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy PREFS_FILTERS); 1194106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1204106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // split in a string per filter 1214106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy String[] filters = filterPrefs.split("\\|"); //$NON-NLS-1$ 1224106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1234106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy ArrayList<LogFilter> list = 1244106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy new ArrayList<LogFilter>(filters.length); 1254106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1264106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy for (String f : filters) { 1274106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (f.length() > 0) { 1284106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogFilter logFilter = new LogFilter(); 1294106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (logFilter.loadFromString(f)) { 1304106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy list.add(logFilter); 1314106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1324106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1334106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1344106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1354106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy return list.toArray(new LogFilter[list.size()]); 1364106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1374106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 138ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 1394106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void saveFilters(LogFilter[] filters) { 1404106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy StringBuilder sb = new StringBuilder(); 1414106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy for (LogFilter f : filters) { 1424106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy String filterString = f.toString(); 1434106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy sb.append(filterString); 1444106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy sb.append('|'); 1454106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1464106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1474106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.getDefault().getPreferenceStore().setValue(PREFS_FILTERS, sb.toString()); 1484106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1494106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 150ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 1514106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public boolean requiresDefaultFilter() { 1524106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy return true; 1534106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1544106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1554106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1564106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public OldLogCatView() { 1574106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy sThis = this; 1584106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogPanel.PREFS_TIME = PREFS_COL_TIME; 1594106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogPanel.PREFS_LEVEL = PREFS_COL_LEVEL; 1604106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogPanel.PREFS_PID = PREFS_COL_PID; 1614106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogPanel.PREFS_TAG = PREFS_COL_TAG; 1624106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogPanel.PREFS_MESSAGE = PREFS_COL_MESSAGE; 1634106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1644106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1654106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy /** 1664106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * Returns the singleton instance. 1674106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy */ 1684106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static OldLogCatView getInstance() { 1694106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy return sThis; 1704106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1714106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1724106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy /** 1734106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * Sets the display font. 1744106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * 1754106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * @param font The font. 1764106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy */ 1774106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public static void setFont(Font font) { 1784106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (sThis != null && sThis.mLogPanel != null) { 1794106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy sThis.mLogPanel.setFont(font); 1804106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1814106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 1824106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1834106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 1844106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void createPartControl(Composite parent) { 1854106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy Display d = parent.getDisplay(); 1864106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogColors colors = new LogColors(); 1874106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1884106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy ImageLoader loader = ImageLoader.getDdmUiLibLoader(); 1894106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1904106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy colors.infoColor = new Color(d, 0, 127, 0); 1914106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy colors.debugColor = new Color(d, 0, 0, 127); 1924106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy colors.errorColor = new Color(d, 255, 0, 0); 1934106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy colors.warningColor = new Color(d, 255, 127, 0); 1944106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy colors.verboseColor = new Color(d, 0, 0, 0); 1954106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 1964106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mCreateFilterAction = new CommonAction(Messages.LogCatView_Create_Filter) { 1974106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 1984106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 1994106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.addFilter(); 2004106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2014106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 2024106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mCreateFilterAction.setToolTipText(Messages.LogCatView_Create_Filter_Tooltip); 2034106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mCreateFilterAction.setImageDescriptor(loader.loadDescriptor("add.png")); //$NON-NLS-1$ 2044106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2054106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mEditFilterAction = new CommonAction(Messages.LogCatView_Edit_Filter) { 2064106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 2074106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 2084106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.editFilter(); 2094106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2104106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 2114106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mEditFilterAction.setToolTipText(Messages.LogCatView_Edit_Filter_Tooltip); 2124106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mEditFilterAction.setImageDescriptor(loader.loadDescriptor("edit.png")); //$NON-NLS-1$ 2134106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2144106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mDeleteFilterAction = new CommonAction(Messages.LogCatView_Delete_Filter) { 2154106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 2164106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 2174106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.deleteFilter(); 2184106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2194106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 2204106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mDeleteFilterAction.setToolTipText(Messages.LogCatView_Delete_Filter_Tooltip); 2214106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mDeleteFilterAction.setImageDescriptor(loader.loadDescriptor("delete.png")); //$NON-NLS-1$ 2224106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2234106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mExportAction = new CommonAction(Messages.LogCatView_Export_Selection_As_Text) { 2244106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 2254106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 2264106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.save(); 2274106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2284106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 2294106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mExportAction.setToolTipText(Messages.LogCatView_Export_Selection_As_Text_Tooltip); 2304106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mExportAction.setImageDescriptor(loader.loadDescriptor("save.png")); //$NON-NLS-1$ 2314106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2324106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy LogLevel[] levels = LogLevel.values(); 2334106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogLevelActions = new CommonAction[mLogLevelIcons.length]; 2344106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy for (int i = 0; i < mLogLevelActions.length; i++) { 2354106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy String name = levels[i].getStringValue(); 2364106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogLevelActions[i] = new CommonAction(name, IAction.AS_CHECK_BOX) { 2374106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 2384106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 2394106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // disable the other actions and record current index 240e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamy for (int j = 0; j < mLogLevelActions.length; j++) { 241e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamy Action a = mLogLevelActions[j]; 2424106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (a == this) { 2434106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy a.setChecked(true); 2444106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2454106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // set the log level 246e22acd391ef9c71c86a348e8491d8b1c9c1eac1dSiva Velusamy mLogPanel.setCurrentFilterLogLevel(j + 2); 2474106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } else { 2484106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy a.setChecked(false); 2494106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2504106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2514106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2524106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 2534106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2544106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogLevelActions[i].setToolTipText(name); 2554106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogLevelActions[i].setImageDescriptor(loader.loadDescriptor(mLogLevelIcons[i])); 2564106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2574106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2584106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mClearAction = new Action(Messages.LogCatView_Clear_Log) { 2594106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 2604106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 2614106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.clear(); 2624106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2634106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }; 2644106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mClearAction.setImageDescriptor(loader.loadDescriptor("clear.png")); //$NON-NLS-1$ 2654106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2664106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // now create the log view 2674106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel = new LogPanel(colors, new FilterStorage(), LogPanel.FILTER_MANUAL); 2684106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.setLogCatViewInterface(this); 2694106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.setActions(mDeleteFilterAction, mEditFilterAction, mLogLevelActions); 2704106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2714106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // get the font 2724106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy String fontStr = DdmsPlugin.getDefault().getPreferenceStore().getString( 2734106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy PreferenceInitializer.ATTR_LOGCAT_FONT); 2744106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (fontStr != null) { 2754106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy FontData data = new FontData(fontStr); 2764106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2774106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (fontStr != null) { 2784106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.setFont(new Font(parent.getDisplay(), data)); 2794106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2804106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2814106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2824106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.createPanel(parent); 2834106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy setSelectionDependentPanel(mLogPanel); 2844106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2854106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // place the actions. 2864106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy placeActions(); 2874106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2884106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // setup the copy action 2894106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mClipboard = new Clipboard(d); 2904106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IActionBars actionBars = getViewSite().getActionBars(); 2914106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), new Action( 2924106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy Messages.LogCatView_Copy) { 2934106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 2944106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 2954106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.copy(mClipboard); 2964106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 2974106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }); 2984106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 2994106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // setup the select all action 3004106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), 3014106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy new Action(Messages.LogCatView_Select_All) { 3024106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 3034106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void run() { 3044106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.selectAll(); 3054106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3064106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy }); 3074106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3084106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3094106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 3104106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void dispose() { 3114106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.stopLogCat(true); 3124106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mClipboard.dispose(); 3134106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3144106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3154106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy @Override 3164106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void setFocus() { 3174106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy mLogPanel.setFocus(); 3184106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3194106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3204106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy /** 3214106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy * Place the actions in the ui. 3224106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy */ 3234106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy private void placeActions() { 3244106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IActionBars actionBars = getViewSite().getActionBars(); 3254106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3264106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // first in the menu 3274106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IMenuManager menuManager = actionBars.getMenuManager(); 3284106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(mCreateFilterAction); 3294106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(mEditFilterAction); 3304106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(mDeleteFilterAction); 3314106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(new Separator()); 3324106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(mClearAction); 3334106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(new Separator()); 3344106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy menuManager.add(mExportAction); 3354106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3364106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy // and then in the toolbar 3374106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IToolBarManager toolBarManager = actionBars.getToolBarManager(); 3384106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy for (CommonAction a : mLogLevelActions) { 3394106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(a); 3404106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3414106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(new Separator()); 3424106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(mCreateFilterAction); 3434106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(mEditFilterAction); 3444106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(mDeleteFilterAction); 3454106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(new Separator()); 3464106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy toolBarManager.add(mClearAction); 3474106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3484106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3494106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy void openFile(IFile file, IMarker marker) { 3504106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy try { 3514106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IWorkbenchPage page = getViewSite().getWorkbenchWindow() 3524106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy .getActivePage(); 3534106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (page != null) { 3544106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IDE.openEditor(page, marker); 3554106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy marker.delete(); 3564106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3574106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } catch (CoreException e) { 3584106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy Status s = new Status(Status.ERROR, DdmsPlugin.PLUGIN_ID, e.getMessage(), e); 3594106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy DdmsPlugin.getDefault().getLog().log(s); 3604106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3614106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3624106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 3634106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy void switchPerspective() { 3644106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IPreferenceStore store = DdmsPlugin.getDefault().getPreferenceStore(); 3654106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (store.getBoolean(PreferenceInitializer.ATTR_SWITCH_PERSPECTIVE)) { 3664106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IWorkbench workbench = PlatformUI.getWorkbench(); 3674106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); 3684106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy IPerspectiveRegistry perspectiveRegistry = workbench.getPerspectiveRegistry(); 3694106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy String perspectiveId = store.getString(PreferenceInitializer.ATTR_PERSPECTIVE_ID); 3704106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy if (perspectiveId != null 3714106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy && perspectiveId.length() > 0 3724106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy && perspectiveRegistry.findPerspectiveWithId(perspectiveId) != null) { 3734106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy try { 3744106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy workbench.showPerspective(perspectiveId, window); 3754106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } catch (WorkbenchException e) { 3764106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy e.printStackTrace(); 3774106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3784106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3794106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3804106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3814106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy 382ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 3834106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy public void onDoubleClick() { 3844106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy } 3854106ac0477c4bfe2bed77e4709afe2f611bf1916Siva Velusamy} 386