crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/ui/preferences/CrashAnalyserPreferences.java
changeset 0 5ad7ad99af01
child 4 615035072f7e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/crashanalysis/crashanalyser/com.nokia.s60tools.crashanalyser/src/com/nokia/s60tools/crashanalyser/ui/preferences/CrashAnalyserPreferences.java	Thu Feb 11 15:06:45 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.s60tools.crashanalyser.ui.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Group;
+import com.nokia.s60tools.crashanalyser.plugin.*;
+import com.nokia.s60tools.crashanalyser.resources.HelpContextIDs;
+import com.nokia.s60tools.crashanalyser.model.*;
+import org.eclipse.swt.events.*;
+
+/**
+ * Crash Analyser preferences page 
+ *
+ */
+public class CrashAnalyserPreferences extends PreferencePage implements IWorkbenchPreferencePage, 
+																		SelectionListener{
+	private Button buttonListenTraceViewer;
+	private Button buttonShowVisualizer;
+	private Button buttonEpocwind;
+	
+	/**
+	 * Constructor
+	 */
+	public CrashAnalyserPreferences() {
+		super();
+	}
+	
+	public void init(IWorkbench arg0) {
+		// No implementation needed
+	}
+
+	@Override
+	protected Control createContents(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 1;
+		container.setLayout(gridLayout);
+
+		Group emulatorGroup = new Group(container, SWT.NONE);
+		emulatorGroup.setLayout(gridLayout);
+		emulatorGroup.setText("WINSCW Emulator Support");
+		emulatorGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		
+		buttonEpocwind = new Button(emulatorGroup, SWT.CHECK);
+		buttonEpocwind.setToolTipText("Automatically pick-up panics from epocwind.out while running the Emulator");
+		buttonEpocwind.setText("Listen panics from epocwind.out");
+		
+		Group hardwareGroup = new Group(container, SWT.NONE);
+		hardwareGroup.setLayout(gridLayout);		
+		hardwareGroup.setText("Target Hardware Support");
+		hardwareGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		
+		buttonListenTraceViewer = new Button(hardwareGroup, SWT.CHECK);
+		buttonListenTraceViewer.setToolTipText("Listens for MobileCrash files while tracing e.g. with Profiler Activator or Trace Viewer.");
+		buttonListenTraceViewer.setText("Listen MobileCrash panics via TraceViewer");
+		buttonListenTraceViewer.addSelectionListener(this);
+		
+		buttonShowVisualizer = new Button(hardwareGroup, SWT.CHECK);
+		buttonShowVisualizer.setToolTipText("When a MobileCrash panic is read via TraceViewer, automatically show panic data");
+		buttonShowVisualizer.setText("Show Crash Visualiser when crash occurs");
+		GridData gd = new GridData();
+		gd.horizontalIndent = 20;
+		buttonShowVisualizer.setLayoutData(gd);
+		
+		if (!TraceListener.traceProviderAvailable())
+			hardwareGroup.setVisible(false);
+		
+		getPrefsStoreValues();
+
+		setHelps();
+		
+		return container;
+	}
+
+	private void getPrefsStoreValues(){
+		IPreferenceStore store = CrashAnalyserPlugin.getCrashAnalyserPrefsStore();
+		boolean listener = store.getBoolean(CrashAnalyserPreferenceConstants.TRACE_LISTENER);
+		buttonListenTraceViewer.setSelection(listener);
+		
+		boolean epocwind = store.getBoolean(CrashAnalyserPreferenceConstants.EPOCWIND_LISTENER);
+		buttonEpocwind.setSelection(epocwind);
+		
+		boolean showVisualizer = store.getBoolean(CrashAnalyserPreferenceConstants.SHOW_VISUALIZER);
+		buttonShowVisualizer.setSelection(showVisualizer);
+		buttonShowVisualizer.setEnabled(listener);
+	}
+	
+	@Override
+	protected void performDefaults() {
+		buttonListenTraceViewer.setSelection(true);
+		buttonShowVisualizer.setSelection(true);
+		buttonShowVisualizer.setEnabled(true);
+		buttonEpocwind.setSelection(false);
+		super.performDefaults();
+	}
+	
+	@Override
+	public boolean performOk() {
+		IPreferenceStore store = CrashAnalyserPlugin.getCrashAnalyserPrefsStore();
+	
+		store.setValue(CrashAnalyserPreferenceConstants.TRACE_LISTENER, buttonListenTraceViewer.getSelection());
+		store.setValue(CrashAnalyserPreferenceConstants.EPOCWIND_LISTENER, buttonEpocwind.getSelection());
+		store.setValue(CrashAnalyserPreferenceConstants.SHOW_VISUALIZER, buttonShowVisualizer.getSelection());
+		
+		CrashAnalyserPlugin.startEmulatorListener();
+		CrashAnalyserPlugin.startTraceListener();
+		
+		return super.performOk();
+	}
+	
+	public void widgetDefaultSelected(SelectionEvent arg0) {
+		// No implementation needed
+	}
+
+	public void widgetSelected(SelectionEvent event) {
+		if (buttonListenTraceViewer.getSelection()) {
+			buttonShowVisualizer.setEnabled(true);
+		} else {
+			buttonShowVisualizer.setEnabled(false);
+			buttonShowVisualizer.setSelection(false);
+		}
+	}	
+	
+	public static boolean traceListenerOn() {
+		IPreferenceStore store = CrashAnalyserPlugin.getCrashAnalyserPrefsStore();
+		return store.getBoolean(CrashAnalyserPreferenceConstants.TRACE_LISTENER);
+	}
+	
+	public static boolean epocwindListenerOn() {
+		IPreferenceStore store = CrashAnalyserPlugin.getCrashAnalyserPrefsStore();
+		return store.getBoolean(CrashAnalyserPreferenceConstants.EPOCWIND_LISTENER);
+	}
+	
+	public static boolean showVisualizer() {
+		IPreferenceStore store = CrashAnalyserPlugin.getCrashAnalyserPrefsStore();
+		return store.getBoolean(CrashAnalyserPreferenceConstants.SHOW_VISUALIZER);
+	}
+	
+	/**
+	 * Sets this page's context sensitive helps
+	 *
+	 */
+	protected void setHelps() {
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(buttonListenTraceViewer,
+				HelpContextIDs.CRASH_ANALYSER_HELP_PREFERENCES);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(buttonEpocwind,
+				HelpContextIDs.CRASH_ANALYSER_HELP_PREFERENCES);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(buttonShowVisualizer,
+				HelpContextIDs.CRASH_ANALYSER_HELP_PREFERENCES);
+	}	
+	
+}