1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/******************************************************************************* 2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Copyright (c) 2000, 2009 IBM Corporation and others. 3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * All rights reserved. This program and the accompanying materials 4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * are made available under the terms of the Eclipse Public License v1.0 5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * which accompanies this distribution, and is available at 6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * http://www.eclipse.org/legal/epl-v10.html 7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * 8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Contributors: 9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * IBM Corporation - initial API and implementation 10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll *******************************************************************************/ 11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpackage org.eclipse.test.internal.performance.results.ui; 12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.File; 15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.lang.reflect.InvocationTargetException; 16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.text.NumberFormat; 17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.HashSet; 18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Locale; 19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Set; 20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.core.runtime.IProgressMonitor; 22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.core.runtime.preferences.IEclipsePreferences; 23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.core.runtime.preferences.InstanceScope; 24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; 25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; 26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.action.Action; 27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.action.IAction; 28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.action.IMenuListener; 29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.action.IMenuManager; 30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.action.IToolBarManager; 31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.action.MenuManager; 32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.dialogs.MessageDialog; 33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.dialogs.ProgressMonitorDialog; 34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.operation.IRunnableWithProgress; 35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.viewers.ISelectionChangedListener; 36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.viewers.SelectionChangedEvent; 37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.viewers.TreeViewer; 38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.viewers.Viewer; 39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.jface.viewers.ViewerFilter; 40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.SWT; 41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.graphics.Color; 42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.widgets.Composite; 43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.widgets.DirectoryDialog; 44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.widgets.Display; 45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.widgets.Menu; 46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.swt.widgets.Shell; 47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.test.internal.performance.results.db.DB_Results; 48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.test.internal.performance.results.model.BuildResultsElement; 49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.test.internal.performance.results.model.PerformanceResultsElement; 50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.test.internal.performance.results.utils.IPerformancesConstants; 51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.test.internal.performance.results.utils.Util; 52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IActionBars; 53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IMemento; 54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IViewPart; 55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IViewSite; 56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IWorkbench; 57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IWorkbenchPage; 58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.IWorkbenchWindow; 59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.PartInitException; 60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.PlatformUI; 61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.part.ViewPart; 62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.views.properties.IPropertySheetPage; 63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.ui.views.properties.PropertySheetPage; 64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.osgi.service.prefs.BackingStoreException; 65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Abstract view for performance results. 69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic abstract class PerformancesView extends ViewPart implements ISelectionChangedListener, IPreferenceChangeListener { 71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Format 73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final NumberFormat DOUBLE_FORMAT = NumberFormat.getNumberInstance(Locale.US); 74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static { 75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DOUBLE_FORMAT.setMaximumFractionDigits(3); 76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Graphic constants 79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Display DEFAULT_DISPLAY = Display.getDefault(); 80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color BLACK= DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_BLACK); 81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color BLUE= DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_BLUE); 82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color GREEN= DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_GREEN); 83402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color RED = DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_RED); 84402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color GRAY = DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_GRAY); 85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color DARK_GRAY = DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_DARK_GRAY); 86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color YELLOW = DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_YELLOW); 87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final Color WHITE = DEFAULT_DISPLAY.getSystemColor(SWT.COLOR_WHITE); 88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 89402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Viewer filters 90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final ViewerFilter[] NO_FILTER = new ViewerFilter[0]; 91402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll final static ViewerFilter FILTER_BASELINE_BUILDS = new ViewerFilter() { 92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean select(Viewer v, Object parentElement, Object element) { 93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (element instanceof BuildResultsElement) { 94402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll BuildResultsElement buildElement = (BuildResultsElement) element; 95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return !buildElement.getName().startsWith(DB_Results.getDbBaselinePrefix()); 96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return true; 98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public final static ViewerFilter FILTER_NIGHTLY_BUILDS = new ViewerFilter() { 101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean select(Viewer v, Object parentElement, Object element) { 102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (element instanceof BuildResultsElement) { 103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll BuildResultsElement buildElement = (BuildResultsElement) element; 104402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return buildElement.getName().charAt(0) != 'N'; 105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return true; 107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll final static ViewerFilter FILTER_OLD_BUILDS = new ViewerFilter() { 110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean select(Viewer v, Object parentElement, Object element) { 111402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (element instanceof BuildResultsElement) { 112402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll BuildResultsElement buildElement = (BuildResultsElement) element; 113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return buildElement.isImportant(); 114402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return true; 116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static String LAST_BUILD; 119402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll final static ViewerFilter FILTER_LAST_BUILDS = new ViewerFilter() { 120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean select(Viewer v, Object parentElement, Object element) { 121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (LAST_BUILD != null && element instanceof BuildResultsElement) { 122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll BuildResultsElement buildElement = (BuildResultsElement) element; 123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return buildElement.isBefore(LAST_BUILD); 124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return true; 126402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 127402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 128402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Set viewFilters = new HashSet(); 129402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 130402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // SWT resources 131402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Shell shell; 132402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Display display; 133402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll TreeViewer viewer; 134402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IPropertySheetPage propertyPage; 135402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 136402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Data info 137402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File dataDir; 138402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 139402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Views 140402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IMemento viewState; 141402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 142402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Results model information 143402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PerformanceResultsElement results; 144402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 145402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Actions 146402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Action changeDataDir; 147402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Action filterBaselineBuilds; 148402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Action filterNightlyBuilds; 149402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Action filterOldBuilds; 150402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Action filterLastBuilds; 151402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// Action dbConnection; 152402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 153402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Eclipse preferences 154402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IEclipsePreferences preferences; 155402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 156402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 157402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Get a view from its ID. 158402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * 159402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param viewId The ID of the view 160402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return The found view or <code>null</null> if not found. 161402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 162402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollstatic IViewPart getWorkbenchView(String viewId) { 163402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IWorkbench workbench = PlatformUI.getWorkbench(); 164402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IWorkbenchWindow[] windows = workbench.getWorkbenchWindows(); 165402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int length = windows.length; 166402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i=0; i<length; i++) { 167402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IWorkbenchWindow window = windows[i]; 168402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IWorkbenchPage[] pages = window.getPages(); 169402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int pLength = pages.length; 170402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int j=0; j<pLength; j++) { 171402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IWorkbenchPage page = pages[i]; 172402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IViewPart view = page.findView(viewId); 173402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (view != null) { 174402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return view; 175402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 176402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 177402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 178402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return null; 179402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 180402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 181402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 182402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * The constructor. 183402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 184402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic PerformancesView() { 185402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 186402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Get preferences 187402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences = new InstanceScope().getNode(IPerformancesConstants.PLUGIN_ID); 188402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 189402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Init db constants 190402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int eclipseVersion = this.preferences.getInt(IPerformancesConstants.PRE_ECLIPSE_VERSION, IPerformancesConstants.DEFAULT_ECLIPSE_VERSION); 191402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String databaseLocation = this.preferences.get(IPerformancesConstants.PRE_DATABASE_LOCATION, IPerformancesConstants.NETWORK_DATABASE_LOCATION); 192402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean connected = this.preferences.getBoolean(IPerformancesConstants.PRE_DATABASE_CONNECTION, IPerformancesConstants.DEFAULT_DATABASE_CONNECTION); 193402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DB_Results.updateDbConstants(connected, eclipseVersion, databaseLocation); 194402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.addPreferenceChangeListener(this); 195402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 196402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Init tool tip 197402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll setTitleToolTip(); 198402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 199402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Init milestones 200402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Util.initMilestones(this.preferences); 201402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 202402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Init last build 203402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String lastBuild = this.preferences.get(IPerformancesConstants.PRE_LAST_BUILD, null); 204402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll LAST_BUILD = lastBuild == null || lastBuild.length() == 0 ? null : lastBuild; 205402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 206402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 207402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollFile changeDataDir() { 208402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String localDataDir = this.preferences.get(IPerformancesConstants.PRE_LOCAL_DATA_DIR, ""); 209402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String filter = (this.dataDir == null) ? localDataDir : this.dataDir.getPath(); 210402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File dir = this.dataDir; 211402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.dataDir = changeDir(filter, "Select directory for data local files"); 212402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean refresh = false; 213402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (this.dataDir != null) { 214402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.put(IPerformancesConstants.PRE_LOCAL_DATA_DIR, this.dataDir.getAbsolutePath()); 215402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (dir != null && dir.getPath().equals(this.dataDir.getPath())) { 216402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll refresh = MessageDialog.openQuestion(this.shell, getTitleToolTip(), "Do you want to read local file again?"); 217402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 218402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll refresh = true; 219402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 220402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (refresh) { 221402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Confirm the read when there's a last build set 222402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (LAST_BUILD != null) { 223402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!MessageDialog.openConfirm(PerformancesView.this.shell, getTitleToolTip(), "Only builds before "+LAST_BUILD+" will be taken into account!\nDo you want to continue?")) { 224402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return null; 225402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 226402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 227402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 228402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Read local files 229402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll readLocalFiles(); 230402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 231402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Refresh views 232402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll refreshInput(); 233402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PerformancesView resultsView = getSiblingView(); 234402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll resultsView.refreshInput(); 235402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return resultsView.dataDir = this.dataDir; 236402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 237402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 238402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return null; 239402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 240402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 241402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 242402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Select a directory. 243402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 244402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollFile changeDir(String filter, String msg) { 245402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DirectoryDialog dialog = new DirectoryDialog(getSite().getShell(), SWT.OPEN); 246402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dialog.setText(getTitleToolTip()); 247402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dialog.setMessage(msg); 248402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (filter != null) { 249402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dialog.setFilterPath(filter); 250402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 251402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String path = dialog.open(); 252402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (path != null) { 253402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File dir = new File(path); 254402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (dir.exists() && dir.isDirectory()) { 255402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return dir; 256402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 257402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 258402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return null; 259402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 260402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 261402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 262402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Contribute actions to bars. 263402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 264402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid contributeToActionBars() { 265402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IActionBars bars = getViewSite().getActionBars(); 266402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fillLocalPullDown(bars.getMenuManager()); 267402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fillLocalToolBar(bars.getToolBarManager()); 268402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 269402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 270402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 271402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * (non-Javadoc) 272402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) 273402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 274402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void createPartControl(Composite parent) { 275402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Cache the shell and display. 276402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.shell = parent.getShell (); 277402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.display = this.shell.getDisplay (); 278402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 279402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 280402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 281402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Fill the context menu. 282402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 283402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid fillContextMenu(IMenuManager manager) { 284402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // no default contextual action 285402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 286402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 287402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 288402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Fill the filters drop-down menu. 289402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 290402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid fillFiltersDropDown(IMenuManager manager) { 291402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll manager.add(this.filterBaselineBuilds); 292402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll manager.add(this.filterNightlyBuilds); 293402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 294402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 295402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 296402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Fill the local data drop-down menu 297402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 298402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid fillLocalDataDropDown(IMenuManager manager) { 299402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll manager.add(this.changeDataDir); 300402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 301402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 302402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 303402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Fill the local pull down menu. 304402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 305402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid fillLocalPullDown(IMenuManager manager) { 306402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 307402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filters menu 308402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll MenuManager filtersManager= new MenuManager("Filters"); 309402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fillFiltersDropDown(filtersManager); 310402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll manager.add(filtersManager); 311402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 312402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Local data menu 313402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll MenuManager localDataManager= new MenuManager("Local data"); 314402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fillLocalDataDropDown(localDataManager); 315402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll manager.add(localDataManager); 316402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 317402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 318402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 319402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Fill the local toolbar. 320402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 321402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid fillLocalToolBar(IToolBarManager manager) { 322402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // no default toolbar action 323402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 324402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 325402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 326402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Filter non fingerprints scenarios action run. 327402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 328402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid filterLastBuilds(boolean filter, boolean updatePreference) { 329402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (filter) { 330402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_LAST_BUILDS); 331402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 332402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.remove(FILTER_LAST_BUILDS); 333402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 334402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.putBoolean(IPerformancesConstants.PRE_FILTER_LAST_BUILDS, filter); 335402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll updateFilters(); 336402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 337402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 338402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 339402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Filter non milestone builds action run. 340402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 341402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid filterNightlyBuilds(boolean filter, boolean updatePreference) { 342402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (filter) { 343402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_NIGHTLY_BUILDS); 344402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 345402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.remove(FILTER_NIGHTLY_BUILDS); 346402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 347402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.putBoolean(IPerformancesConstants.PRE_FILTER_NIGHTLY_BUILDS, filter); 348402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll updateFilters(); 349402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 350402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 351402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 352402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Filter non milestone builds action run. 353402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 354402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid filterOldBuilds(boolean filter, boolean updatePreference) { 355402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (filter) { 356402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_OLD_BUILDS); 357402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 358402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.remove(FILTER_OLD_BUILDS); 359402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 360402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.putBoolean(IPerformancesConstants.PRE_FILTER_OLD_BUILDS, filter); 361402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll updateFilters(); 362402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 363402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 364402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 365402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Finalize the viewer creation 366402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 367402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid finalizeViewerCreation() { 368402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll makeActions(); 369402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll hookContextMenu(); 370402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contributeToActionBars(); 371402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll restoreState(); 372402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll updateFilters(); 373402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.setInput(getViewSite()); 374402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.addSelectionChangedListener(this); 375402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 376402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 377402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* (non-Javadoc) 378402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Method declared on IAdaptable 379402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 380402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic Object getAdapter(Class adapter) { 381402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (adapter.equals(IPropertySheetPage.class)) { 382402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return getPropertySheet(); 383402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 384402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return super.getAdapter(adapter); 385402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 386402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 387402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 388402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Returns the property sheet. 389402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 390402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollprotected IPropertySheetPage getPropertySheet() { 391402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (this.propertyPage == null) { 392402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.propertyPage = new PropertySheetPage(); 393402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 394402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return this.propertyPage; 395402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 396402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 397402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 398402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Get the sibling view (see subclasses). 399402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 400402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollabstract PerformancesView getSiblingView(); 401402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 402402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 403402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Hook the context menu. 404402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 405402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid hookContextMenu() { 406402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll MenuManager menuMgr = new MenuManager("#PopupMenu"); 407402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll menuMgr.setRemoveAllWhenShown(true); 408402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll menuMgr.addMenuListener(new IMenuListener() { 409402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void menuAboutToShow(IMenuManager manager) { 410402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fillContextMenu(manager); 411402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 412402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }); 413402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Menu menu = menuMgr.createContextMenu(this.viewer.getControl()); 414402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.getControl().setMenu(menu); 415402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getSite().registerContextMenu(menuMgr, this.viewer); 416402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 417402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 418402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 419402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * (non-Javadoc) 420402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento) 421402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 422402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void init(IViewSite site, IMemento memento) throws PartInitException { 423402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll super.init(site, memento); 424402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewState = memento; 425402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 426402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 427402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 428402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Init results 429402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 430402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid initResults() { 431402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.results = PerformanceResultsElement.PERF_RESULTS_MODEL; 432402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (this.results.isInitialized()) { 433402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.dataDir = getSiblingView().dataDir; 434402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 435402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String localDataDir = this.preferences.get(IPerformancesConstants.PRE_LOCAL_DATA_DIR, null); 436402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (localDataDir != null) { 437402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File dir = new File(localDataDir); 438402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (dir.exists() && dir.isDirectory()) { 439402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.dataDir = dir; 440402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll readLocalFiles(); 441402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 442402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 443402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 444402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 445402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 446402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 447402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Make common actions to performance views. 448402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 449402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid makeActions() { 450402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 451402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Change data dir action 452402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.changeDataDir = new Action("&Read...") { 453402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void run() { 454402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll changeDataDir(); 455402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 456402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 457402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.changeDataDir.setToolTipText("Change the directory of the local data files"); 458402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// this.changeDataDir.setImageDescriptor(ResultsElement.FOLDER_IMAGE_DESCRIPTOR); 459402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 460402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter baselines action 461402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterBaselineBuilds = new Action("&Baselines", IAction.AS_CHECK_BOX) { 462402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void run() { 463402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (isChecked()) { 464402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PerformancesView.this.viewFilters.add(FILTER_BASELINE_BUILDS); 465402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 466402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PerformancesView.this.viewFilters.remove(FILTER_BASELINE_BUILDS); 467402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 468402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll updateFilters(); 469402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 470402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 471402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterBaselineBuilds.setToolTipText("Filter baseline builds"); 472402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 473402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter baselines action 474402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterNightlyBuilds = new Action("&Nightly", IAction.AS_CHECK_BOX) { 475402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void run() { 476402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll filterNightlyBuilds(isChecked(), true/*update preference*/); 477402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 478402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 479402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterNightlyBuilds.setToolTipText("Filter nightly builds"); 480402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 481402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter non-important builds action 482402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterOldBuilds = new Action("&Old Builds", IAction.AS_CHECK_BOX) { 483402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void run() { 484402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll filterOldBuilds(isChecked(), true/*update preference*/); 485402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 486402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 487402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterOldBuilds.setChecked(false); 488402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterOldBuilds.setToolTipText("Filter old builds (i.e. before last milestone) but keep all previous milestones)"); 489402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 490402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter non-important builds action 491402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterLastBuilds = new Action("&Last Builds", IAction.AS_CHECK_BOX) { 492402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void run() { 493402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll filterLastBuilds(isChecked(), true/*update preference*/); 494402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 495402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 496402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll final String lastBuild = this.preferences.get(IPerformancesConstants.PRE_LAST_BUILD, null); 497402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterLastBuilds.setChecked(false); 498402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (lastBuild == null) { 499402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterLastBuilds.setEnabled(false); 500402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 501402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterLastBuilds.setToolTipText("Filter last builds (i.e. after "+lastBuild+" build)"); 502402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 503402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 504402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 505402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* (non-Javadoc) 506402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent) 507402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 508402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void preferenceChange(PreferenceChangeEvent event) { 509402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String propertyName = event.getKey(); 510402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// String newValue = (String) event.getNewValue(); 511402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 512402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Eclipse version change 513402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (propertyName.equals(IPerformancesConstants.PRE_ECLIPSE_VERSION)) { 514402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// int eclipseVersion = newValue == null ? IPerformancesConstants.DEFAULT_ECLIPSE_VERSION : Integer.parseInt(newValue); 515402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// String databaseLocation = this.preferences.get(IPerformancesConstants.PRE_DATABASE_LOCATION, IPerformancesConstants.NETWORK_DATABASE_LOCATION); 516402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// boolean connected = this.preferences.getBoolean(IPerformancesConstants.PRE_DATABASE_CONNECTION, IPerformancesConstants.DEFAULT_DATABASE_CONNECTION); 517402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// DB_Results.updateDbConstants(connected, eclipseVersion, databaseLocation); 518402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// setTitleToolTip(); 519402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 520402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 521402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Database location change 522402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (propertyName.equals(IPerformancesConstants.PRE_DATABASE_LOCATION)) { 523402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// boolean connected = this.preferences.getBoolean(IPerformancesConstants.PRE_DATABASE_CONNECTION, IPerformancesConstants.DEFAULT_DATABASE_CONNECTION); 524402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// int eclipseVersion = this.preferences.getInt(IPerformancesConstants.PRE_ECLIPSE_VERSION, IPerformancesConstants.DEFAULT_ECLIPSE_VERSION); 525402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// DB_Results.updateDbConstants(connected, eclipseVersion, newValue); 526402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// setTitleToolTip(); 527402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 528402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 529402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Database connection 530402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (propertyName.equals(IPerformancesConstants.PRE_DATABASE_CONNECTION)) { 531402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// boolean connected = newValue == null ? IPerformancesConstants.DEFAULT_DATABASE_CONNECTION : newValue.equals(Boolean.TRUE); 532402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// int eclipseVersion = this.preferences.getInt(IPerformancesConstants.PRE_ECLIPSE_VERSION, IPerformancesConstants.DEFAULT_ECLIPSE_VERSION); 533402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// String databaseLocation = this.preferences.get(IPerformancesConstants.PRE_DATABASE_LOCATION, IPerformancesConstants.NETWORK_DATABASE_LOCATION); 534402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// DB_Results.updateDbConstants(connected, eclipseVersion, databaseLocation); 535402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// setTitleToolTip(); 536402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 537402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 538402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Last build 539402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (propertyName.equals(IPerformancesConstants.PRE_LAST_BUILD)) { 540402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// if (newValue == null || newValue.length() == 0) { 541402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// this.filterLastBuilds.setEnabled(false); 542402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// LAST_BUILD = null; 543402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// } else { 544402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// this.filterLastBuilds.setEnabled(true); 545402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// this.filterLastBuilds.setToolTipText("Filter last builds (i.e. after "+newValue+" build)"); 546402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// LAST_BUILD = newValue; 547402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// } 548402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 549402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 550402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 551402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 552402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Read local files 553402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 554402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid readLocalFiles() { 555402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 556402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Create runnable to read local files 557402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll IRunnableWithProgress runnable = new IRunnableWithProgress() { 558402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { 559402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 560402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll monitor.beginTask("Read local files", 1000); 561402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PerformancesView.this.results.readLocal(PerformancesView.this.dataDir, monitor, LAST_BUILD); 562402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll monitor.done(); 563402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (Exception e) { 564402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 565402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 566402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 567402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }; 568402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 569402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Execute the runnable with progress 570402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll ProgressMonitorDialog readProgress = new ProgressMonitorDialog(getSite().getShell()); 571402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 572402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll readProgress.run(true, true, runnable); 573402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (InvocationTargetException e) { 574402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // skip 575402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (InterruptedException e) { 576402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // skip 577402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 578402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 579402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 580402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 581402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Refresh the entire view by resetting its input. 582402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 583402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid refreshInput() { 584402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.setInput(getViewSite()); 585402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.refresh(); 586402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 587402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 588402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 589402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Clear view content. 590402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 591402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid resetInput() { 592402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.results.reset(null); 593402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.setInput(getViewSite()); 594402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.refresh(); 595402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 596402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 597402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 598402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Restore the view state from the memento information. 599402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 600402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid restoreState() { 601402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 602402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter baselines action state 603402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (this.viewState != null) { 604402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Boolean filterBaselinesState = this.viewState.getBoolean(IPerformancesConstants.PRE_FILTER_BASELINE_BUILDS); 605402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean filterBaselinesValue = filterBaselinesState == null ? false : filterBaselinesState.booleanValue(); 606402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterBaselineBuilds.setChecked(filterBaselinesValue); 607402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (filterBaselinesValue) { 608402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_BASELINE_BUILDS); 609402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 610402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 611402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 612402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter nightly builds action 613402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean checked = this.preferences.getBoolean(IPerformancesConstants.PRE_FILTER_NIGHTLY_BUILDS, IPerformancesConstants.DEFAULT_FILTER_NIGHTLY_BUILDS); 614402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterNightlyBuilds.setChecked(checked); 615402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (checked) { 616402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_NIGHTLY_BUILDS); 617402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 618402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 619402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter non important builds action state 620402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll checked = this.preferences.getBoolean(IPerformancesConstants.PRE_FILTER_OLD_BUILDS, IPerformancesConstants.DEFAULT_FILTER_OLD_BUILDS); 621402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterOldBuilds.setChecked(checked); 622402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (checked) { 623402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_OLD_BUILDS); 624402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 625402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 626402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Filter last builds action state 627402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll checked = this.preferences.getBoolean(IPerformancesConstants.PRE_FILTER_LAST_BUILDS, IPerformancesConstants.DEFAULT_FILTER_LAST_BUILDS); 628402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.filterLastBuilds.setChecked(checked); 629402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (checked) { 630402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.add(FILTER_LAST_BUILDS); 631402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 632402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 633402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 634402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void saveState(IMemento memento) { 635402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll super.saveState(memento); 636402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll memento.putBoolean(IPerformancesConstants.PRE_FILTER_BASELINE_BUILDS, this.filterBaselineBuilds.isChecked()); 637402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 638402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.flush(); 639402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (BackingStoreException e) { 640402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // ignore 641402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 642402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 643402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 644402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 645402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * (non-Javadoc) 646402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) 647402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 648402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void selectionChanged(SelectionChangedEvent event) { 649402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (this.propertyPage != null) { 650402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.propertyPage.selectionChanged(this, event.getSelection()); 651402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 652402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 653402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 654402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 655402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Passing the focus request to the viewer's control. 656402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 657402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void setFocus() { 658402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.getControl().setFocus(); 659402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 660402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 661402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 662402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Set the view tooltip to reflect the DB connection kind. 663402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 664402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid setTitleToolTip() { 665402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String title = DB_Results.getDbTitle(); 666402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (title == null) { 667402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // DB is not connected 668402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int version = this.preferences.getInt(IPerformancesConstants.PRE_ECLIPSE_VERSION, IPerformancesConstants.DEFAULT_ECLIPSE_VERSION); 669402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll title = "Eclipse v" + version + " - DB not connected"; 670402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 671402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll setTitleToolTip(title); 672402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 673402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 674402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 675402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Set/unset the database connection. 676402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * 677402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollvoid toogleDbConnection() { 678402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 679402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Toogle DB connection and store new state 680402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean dbConnected = this.preferences.getBoolean(IPerformancesConstants.PRE_DATABASE_CONNECTION, IPerformancesConstants.DEFAULT_DATABASE_CONNECTION); 681402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DB_Results.DB_CONNECTION = !dbConnected; 682402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getSiblingView().dbConnection.setChecked(DB_Results.DB_CONNECTION); 683402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.preferences.putBoolean(IPerformancesConstants.PRE_DATABASE_CONNECTION, DB_Results.DB_CONNECTION); 684402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 685402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // First close DB connection 686402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!DB_Results.DB_CONNECTION) { 687402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DB_Results.shutdown(); 688402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 689402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 690402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Read local files if any 691402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (this.dataDir != null) { 692402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll readLocalFiles(); 693402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 694402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 695402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Refresh views 696402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll refreshInput(); 697402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getSiblingView().refreshInput(); 698402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 699402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll*/ 700402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 701402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/* 702402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Update the filters from the stored list and apply them to the view. 703402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 704402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollfinal void updateFilters() { 705402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll ViewerFilter[] filters = new ViewerFilter[this.viewFilters.size()]; 706402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewFilters.toArray(filters); 707402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.viewer.setFilters(filters); 708402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 709402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 710402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll}