--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysperfana/perfinvestigator/com.nokia.carbide.cpp.pi/src/com/nokia/carbide/cpp/internal/pi/actions/SetThresholdsDialog.java Thu Feb 11 15:32:31 2010 +0200
@@ -0,0 +1,585 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "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.carbide.cpp.internal.pi.actions;
+
+import java.text.DecimalFormat;
+import java.util.Enumeration;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import com.nokia.carbide.cpp.internal.pi.analyser.NpiInstanceRepository;
+import com.nokia.carbide.cpp.internal.pi.analyser.PIChangeEvent;
+import com.nokia.carbide.cpp.internal.pi.manager.PluginInitialiser;
+import com.nokia.carbide.cpp.internal.pi.plugin.model.IEventListener;
+import com.nokia.carbide.cpp.pi.editors.PIPageEditor;
+
+
+public class SetThresholdsDialog {
+
+ private Shell shell;
+
+ private Group threadGroup;
+ private Label threadLoadLabel;
+ private Label threadCountLabel;
+ private Text threadLoadText;
+ private Text threadCountText;
+
+ private Button button;
+
+ private Group binaryGroup;
+ private Label binaryLoadLabel;
+ private Label binaryCountLabel;
+ private Text binaryLoadText;
+ private Text binaryCountText;
+
+ private Group functionGroup;
+ private Label functionLoadLabel;
+ private Label functionCountLabel;
+ private Text functionLoadText;
+ private Text functionCountText;
+
+ private Button ok;
+ private Button cancel;
+ private GridData gridData;
+ private DecimalFormat timeFormat = new DecimalFormat(Messages.getString("SetThresholdsDialog.decimalFormat")); //$NON-NLS-1$
+
+ private double thresholdLoadThread;
+ private double thresholdLoadBinary;
+ private double thresholdLoadFunction;
+ private int thresholdCountThread;
+ private int thresholdCountBinary;
+ private int thresholdCountFunction;
+
+ public SetThresholdsDialog(Display display)
+ {
+ thresholdLoadThread = (Double) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdLoadThread"); //$NON-NLS-1$
+ thresholdLoadBinary = (Double) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdLoadBinary"); //$NON-NLS-1$
+ thresholdLoadFunction = (Double) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdLoadFunction"); //$NON-NLS-1$
+ thresholdCountThread = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountThread"); //$NON-NLS-1$
+ thresholdCountBinary = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountBinary"); //$NON-NLS-1$
+ thresholdCountFunction = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountFunction"); //$NON-NLS-1$
+
+ shell = new Shell(display, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM);
+ shell.setText(Messages.getString("SetThresholdsDialog.thresholdTitle")); //$NON-NLS-1$
+ shell.setLayout(new GridLayout(4, false));
+
+ // thread threshold
+ threadGroup = new Group(shell, SWT.NONE);
+ threadGroup.setText(Messages.getString("SetThresholdsDialog.threadThreshold")); //$NON-NLS-1$
+ threadGroup.setFont(PIPageEditor.helvetica_10);
+ gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
+ gridData.horizontalSpan = 4;
+ threadGroup.setLayoutData(gridData);
+ threadGroup.setLayout(new FillLayout());
+
+ threadLoadLabel = new Label(threadGroup, SWT.RIGHT);
+ threadLoadLabel.setText(Messages.getString("SetThresholdsDialog.averageLoad")); //$NON-NLS-1$
+ threadLoadLabel.setFont(PIPageEditor.helvetica_9);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ threadLoadText = new Text(threadGroup, SWT.BORDER | SWT.RIGHT);
+ threadLoadText.setFont(PIPageEditor.helvetica_9);
+ threadLoadText.setData(Messages.getString("SetThresholdsDialog.minimumPercent")); //$NON-NLS-1$
+ threadLoadText.setText(timeFormat.format(thresholdLoadThread * 100.0));
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ threadCountLabel = new Label(threadGroup, SWT.LEFT);
+ threadCountLabel.setText(Messages.getString("SetThresholdsDialog.totalSamples")); //$NON-NLS-1$
+ threadCountLabel.setFont(PIPageEditor.helvetica_9);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ threadCountText = new Text(threadGroup, SWT.BORDER | SWT.RIGHT);
+ threadCountText.setFont(PIPageEditor.helvetica_9);
+ threadCountText.setData(Messages.getString("SetThresholdsDialog.minimumSamples")); //$NON-NLS-1$
+ threadCountText.setText("" + thresholdCountThread); //$NON-NLS-1$
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ // add the thread listeners
+ threadLoadText.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdLoadThread = convert(threadLoadText, thresholdLoadThread, 0, 100, timeFormat) / 100.0;
+ thresholdCountThread = (int) ((totalSampleCount / samplingInterval) * thresholdLoadThread + 0.5);
+ threadLoadText.setText(timeFormat.format(thresholdLoadThread * 100.0));
+ threadCountText.setText("" + thresholdCountThread); //$NON-NLS-1$
+
+ Boolean useOnlyThreadThresholds = (Boolean) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds"); //$NON-NLS-1$
+ if (useOnlyThreadThresholds) {
+ copyThreadThresholds();
+ }
+ }
+ });
+
+ threadLoadText.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdLoadThread = convert(threadLoadText, thresholdLoadThread, 0, 100, timeFormat) / 100.0;
+ thresholdCountThread = (int) ((totalSampleCount / samplingInterval) * thresholdLoadThread + 0.5);
+ threadLoadText.setText(timeFormat.format(thresholdLoadThread * 100.0));
+ threadCountText.setText("" + thresholdCountThread); //$NON-NLS-1$
+
+ Boolean useOnlyThreadThresholds = (Boolean) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds"); //$NON-NLS-1$
+ if (useOnlyThreadThresholds) {
+ copyThreadThresholds();
+ }
+ }
+ });
+
+ threadCountText.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdCountThread = convert(threadCountText, thresholdCountThread, 0, totalSampleCount / samplingInterval);
+ thresholdLoadThread = ((double)thresholdCountThread * samplingInterval) / ((double)totalSampleCount);
+ threadLoadText.setText(timeFormat.format(thresholdLoadThread * 100.0));
+ threadCountText.setText("" + thresholdCountThread); //$NON-NLS-1$
+
+ Boolean useOnlyThreadThresholds = (Boolean) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds"); //$NON-NLS-1$
+ if (useOnlyThreadThresholds) {
+ copyThreadThresholds();
+ }
+ }
+ });
+
+ threadCountText.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdCountThread = convert(threadCountText, thresholdCountThread, 0, totalSampleCount / samplingInterval);
+ thresholdLoadThread = ((double)thresholdCountThread * samplingInterval) / ((double)totalSampleCount);
+ threadLoadText.setText(timeFormat.format(thresholdLoadThread * 100.0));
+ threadCountText.setText("" + thresholdCountThread); //$NON-NLS-1$
+
+ Boolean useOnlyThreadThresholds = (Boolean) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds"); //$NON-NLS-1$
+ if (useOnlyThreadThresholds) {
+ copyThreadThresholds();
+ }
+ }
+ });
+
+ threadGroup.pack();
+
+ button = new Button(shell, SWT.LEFT | SWT.CHECK);
+ button.setText(Messages.getString("SetThresholdsDialog.useThreadForAll")); //$NON-NLS-1$
+ button.setFont(PIPageEditor.helvetica_8);
+ button.setSelection((Boolean) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds")); //$NON-NLS-1$
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 10;
+ button.setLayoutData(gridData);
+
+ // add the button listeners
+ button.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds", button.getSelection()); //$NON-NLS-1$
+ Boolean useOnlyThreadThresholds = (Boolean) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds"); //$NON-NLS-1$
+
+ if (useOnlyThreadThresholds) {
+ // disable the other numbers
+ binaryLoadText.setEnabled(false);
+ binaryCountText.setEnabled(false);
+ functionLoadText.setEnabled(false);
+ functionCountText.setEnabled(false);
+ copyThreadThresholds();
+ } else {
+ binaryLoadText.setEnabled(true);
+ binaryCountText.setEnabled(true);
+ functionLoadText.setEnabled(true);
+ functionCountText.setEnabled(true);
+ }
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+ });
+
+ // binary threshold
+ binaryGroup = new Group(shell, SWT.LEFT);
+ binaryGroup.setText(Messages.getString("SetThresholdsDialog.binaryThreshold")); //$NON-NLS-1$
+ binaryGroup.setFont(PIPageEditor.helvetica_10);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 4;
+ binaryGroup.setLayoutData(gridData);
+ binaryGroup.setLayout(new FillLayout());
+
+ binaryLoadLabel = new Label(binaryGroup, SWT.RIGHT);
+ binaryLoadLabel.setText(Messages.getString("SetThresholdsDialog.averageLoad")); //$NON-NLS-1$
+ binaryLoadLabel.setFont(PIPageEditor.helvetica_9);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ binaryLoadText = new Text(binaryGroup, SWT.BORDER | SWT.RIGHT);
+ binaryLoadText.setFont(PIPageEditor.helvetica_9);
+ binaryLoadText.setData(Messages.getString("SetThresholdsDialog.minimumPercent")); //$NON-NLS-1$
+ binaryLoadText.setText(timeFormat.format(thresholdLoadBinary * 100.0));
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ binaryCountLabel = new Label(binaryGroup, SWT.LEFT);
+ binaryCountLabel.setText(Messages.getString("SetThresholdsDialog.totalSamples")); //$NON-NLS-1$
+ binaryCountLabel.setFont(PIPageEditor.helvetica_9);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ binaryCountText = new Text(binaryGroup, SWT.BORDER | SWT.RIGHT);
+ binaryCountText.setFont(PIPageEditor.helvetica_9);
+ binaryCountText.setData(Messages.getString("SetThresholdsDialog.minimumSamples")); //$NON-NLS-1$
+ binaryCountText.setText("" + thresholdCountBinary); //$NON-NLS-1$
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 1;
+
+ // add the listeners
+ binaryLoadText.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdLoadBinary = convert(binaryLoadText, thresholdLoadBinary, 0, 100, timeFormat) / 100.0;
+ thresholdCountBinary = (int) ((totalSampleCount / samplingInterval) * thresholdLoadBinary + 0.5);
+ binaryLoadText.setText(timeFormat.format(thresholdLoadBinary * 100.0));
+ binaryCountText.setText("" + thresholdCountBinary); //$NON-NLS-1$
+ }
+ });
+
+ binaryLoadText.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdLoadBinary = convert(binaryLoadText, thresholdLoadBinary, 0, 100, timeFormat) / 100.0;
+ thresholdCountBinary = (int) ((totalSampleCount / samplingInterval) * thresholdLoadBinary + 0.5);
+ binaryLoadText.setText(timeFormat.format(thresholdLoadBinary * 100.0));
+ binaryCountText.setText("" + thresholdCountBinary); //$NON-NLS-1$
+ }
+ });
+
+ binaryCountText.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdCountBinary = convert(binaryCountText, thresholdCountBinary, 0, totalSampleCount / samplingInterval);
+ thresholdLoadBinary = ((double)thresholdCountBinary * samplingInterval) / ((double)totalSampleCount);
+ binaryLoadText.setText(timeFormat.format(thresholdLoadBinary * 100.0));
+ binaryCountText.setText("" + thresholdCountBinary); //$NON-NLS-1$
+ }
+ });
+
+ binaryCountText.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdCountBinary = convert(binaryCountText, thresholdCountBinary, 0, totalSampleCount / samplingInterval);
+ thresholdLoadBinary = ((double)thresholdCountBinary * samplingInterval) / ((double)totalSampleCount);
+ binaryLoadText.setText(timeFormat.format(thresholdLoadBinary * 100.0));
+ binaryCountText.setText("" + thresholdCountBinary); //$NON-NLS-1$
+ }
+ });
+
+ binaryGroup.pack();
+
+ // function threshold
+ functionGroup = new Group(shell, SWT.LEFT);
+ functionGroup.setText(Messages.getString("SetThresholdsDialog.functionThreshold")); //$NON-NLS-1$
+ functionGroup.setFont(PIPageEditor.helvetica_10);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gridData.horizontalSpan = 4;
+ functionGroup.setLayoutData(gridData);
+ functionGroup.setLayout(new FillLayout());
+
+ functionLoadLabel = new Label(functionGroup, SWT.RIGHT);
+ functionLoadLabel.setText(Messages.getString("SetThresholdsDialog.averageLoad")); //$NON-NLS-1$
+ functionLoadLabel.setFont(PIPageEditor.helvetica_9);
+
+ functionLoadText = new Text(functionGroup, SWT.BORDER | SWT.RIGHT);
+ functionLoadText.setFont(PIPageEditor.helvetica_9);
+ functionLoadText.setData(Messages.getString("SetThresholdsDialog.minimumPercent")); //$NON-NLS-1$
+ functionLoadText.setText(timeFormat.format(thresholdLoadFunction * 100.0));
+
+ functionCountLabel = new Label(functionGroup, SWT.LEFT);
+ functionCountLabel.setText(Messages.getString("SetThresholdsDialog.totalSamples")); //$NON-NLS-1$
+ functionCountLabel.setFont(PIPageEditor.helvetica_9);
+
+ functionCountText = new Text(functionGroup, SWT.BORDER | SWT.RIGHT);
+ functionCountText.setFont(PIPageEditor.helvetica_9);
+ functionCountText.setData(Messages.getString("SetThresholdsDialog.minimumSamples")); //$NON-NLS-1$
+ functionCountText.setText("" + thresholdCountFunction); //$NON-NLS-1$
+
+ // add the listeners
+ functionLoadText.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdLoadFunction = convert(functionLoadText, thresholdLoadFunction, 0, 100, timeFormat) / 100.0;
+ thresholdCountFunction = (int) ((totalSampleCount / samplingInterval) * thresholdLoadFunction + 0.5);
+ functionLoadText.setText(timeFormat.format(thresholdLoadFunction * 100.0));
+ functionCountText.setText("" + thresholdCountFunction); //$NON-NLS-1$
+ }
+ });
+
+ functionLoadText.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdLoadFunction = convert(functionLoadText, thresholdLoadFunction, 0, 100, timeFormat) / 100.0;
+ thresholdCountFunction = (int) ((totalSampleCount / samplingInterval) * thresholdLoadFunction + 0.5);
+ functionLoadText.setText(timeFormat.format(thresholdLoadFunction * 100.0));
+ functionCountText.setText("" + thresholdCountFunction); //$NON-NLS-1$
+ }
+ });
+
+ functionCountText.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdCountFunction = convert(functionCountText, thresholdCountFunction, 0, totalSampleCount / samplingInterval);
+ thresholdLoadFunction = ((double)thresholdCountFunction * samplingInterval) / ((double)totalSampleCount);
+ functionLoadText.setText(timeFormat.format(thresholdLoadFunction * 100.0));
+ functionCountText.setText("" + thresholdCountFunction); //$NON-NLS-1$
+ }
+ });
+
+ functionCountText.addSelectionListener(new SelectionAdapter() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ int uid = NpiInstanceRepository.getInstance().activeUid();
+ int totalSampleCount = NpiInstanceRepository.getInstance().getProfilePage(uid, PIPageEditor.THREADS_PAGE).getLastSampleX();
+ int samplingInterval = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.samplingInterval"); //$NON-NLS-1$
+ thresholdCountFunction = convert(functionCountText, thresholdCountFunction, 0, totalSampleCount / samplingInterval);
+ thresholdLoadFunction = ((double)thresholdCountFunction * samplingInterval) / ((double)totalSampleCount);
+ functionLoadText.setText(timeFormat.format(thresholdLoadFunction * 100.0));
+ functionCountText.setText("" + thresholdCountFunction); //$NON-NLS-1$
+ }
+ });
+
+ functionGroup.pack();
+
+ // create the OK button
+ ok = new Button(shell, SWT.NONE);
+ ok.setEnabled(false);
+ ok.setVisible(false);
+
+ ok = new Button(shell, SWT.NONE);
+ ok.setText(Messages.getString("SetThresholdsDialog.ok")); //$NON-NLS-1$
+ gridData = new GridData(SWT.CENTER, SWT.CENTER, true, true);
+ gridData.minimumWidth = 60;
+ ok.setLayoutData(gridData);
+ ok.addSelectionListener(new SelectionListener(){
+
+ public void widgetSelected(SelectionEvent e) {
+ boolean changedThread = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountThread") != thresholdCountThread; //$NON-NLS-1$
+ boolean changedBinary = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountBinary") != thresholdCountBinary; //$NON-NLS-1$
+ boolean changedFunction = (Integer) NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountFunction") != thresholdCountFunction; //$NON-NLS-1$
+
+ if (changedThread) {
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.thresholdLoadThread", new Double(thresholdLoadThread)); //$NON-NLS-1$
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountThread", new Integer(thresholdCountThread)); //$NON-NLS-1$
+ PIChangeEvent.action("changeThresholdThread"); //$NON-NLS-1$
+ PIChangeEvent.action("changeSelection"); //$NON-NLS-1$
+ }
+
+ if (changedBinary) {
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.thresholdLoadBinary", new Double(thresholdLoadBinary)); //$NON-NLS-1$
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountBinary", new Integer(thresholdCountBinary)); //$NON-NLS-1$
+ PIChangeEvent.action("changeThresholdBinary"); //$NON-NLS-1$
+ PIChangeEvent.action("changeSelection"); //$NON-NLS-1$
+ }
+
+ if (changedFunction) {
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.thresholdLoadFunction", new Double(thresholdLoadFunction)); //$NON-NLS-1$
+ NpiInstanceRepository.getInstance().activeUidSetPersistState("com.nokia.carbide.cpp.pi.address.thresholdCountFunction", new Integer(thresholdCountFunction)); //$NON-NLS-1$
+ PIChangeEvent.action("changeThresholdFunction"); //$NON-NLS-1$
+ PIChangeEvent.action("changeSelection"); //$NON-NLS-1$
+ }
+
+ // after the graphs have been updated, notify plugins that might have tables but no graphs
+ Enumeration enu = PluginInitialiser.getPluginInstances(
+ "com.nokia.carbide.cpp.internal.pi.plugin.model.IEventListener"); //$NON-NLS-1$
+ if (enu != null) {
+ Event event = new Event();
+
+ while (enu.hasMoreElements())
+ {
+ IEventListener plugin = (IEventListener)enu.nextElement();
+ if (changedThread) {
+ event.data = new Double(thresholdLoadThread);
+ event.count = thresholdCountThread;
+ plugin.receiveEvent("changeThresholdThread", event); //$NON-NLS-1$
+ }
+
+ if (changedBinary) {
+ event.data = new Double(thresholdLoadBinary);
+ event.count = thresholdCountBinary;
+ plugin.receiveEvent("changeThresholdBinary", event); //$NON-NLS-1$
+ }
+
+ if (changedFunction) {
+ event.data = new Double(thresholdLoadFunction);
+ event.count = thresholdCountFunction;
+ plugin.receiveEvent("changeThresholdFunction", event); //$NON-NLS-1$
+ }
+ }
+ }
+
+ shell.close();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
+
+ ok = new Button(shell, SWT.NONE);
+ ok.setEnabled(false);
+ ok.setVisible(false);
+
+ // create the Cancel button
+ cancel = new Button(shell, SWT.NONE);
+ cancel.setText(Messages.getString("SetThresholdsDialog.cancel")); //$NON-NLS-1$
+ gridData = new GridData(SWT.LEFT, SWT.CENTER, true, true);
+ gridData.minimumWidth = 60;
+ cancel.setLayoutData(gridData);
+ cancel.addSelectionListener(new SelectionListener(){
+
+ public void widgetSelected(SelectionEvent e) {
+ shell.close();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
+
+ if ((Boolean)NpiInstanceRepository.getInstance().activeUidGetPersistState("com.nokia.carbide.cpp.pi.address.useOnlyThreadThresholds") == true) { //$NON-NLS-1$
+ // disable the other numbers
+ binaryLoadText.setEnabled(false);
+ binaryCountText.setEnabled(false);
+ functionLoadText.setEnabled(false);
+ functionCountText.setEnabled(false);
+ }
+
+ shell.pack();
+ shell.open();
+
+ while (!shell.isDisposed()) {
+ if (!shell.getDisplay().readAndDispatch()) {
+ shell.getDisplay().sleep();
+ }
+ }
+ }
+
+ private double convert(Text text, double currentDouble, double minimum, double maximum, DecimalFormat format)
+ {
+ double new_double;
+
+ // convert, catch (NumberFormatException e1)
+ try {
+ new_double = Double.parseDouble(text.getText().replace(',','.'));
+ if (new_double >= 0)
+ currentDouble = new_double;
+ } catch (NumberFormatException exc) {
+ // just keep the old value
+ }
+
+ if (currentDouble > maximum)
+ currentDouble = maximum;
+ else if (currentDouble < minimum)
+ currentDouble = minimum;
+
+ text.setText(format.format(currentDouble));
+
+ return currentDouble;
+ }
+
+ private int convert(Text text, int currentInt, int minimum, int maximum)
+ {
+ int new_int;
+
+ // convert, catch (NumberFormatException e1)
+ try {
+ new_int = Integer.parseInt(text.getText().replace(',','.'));
+ if (new_int >= 0)
+ currentInt = new_int;
+ } catch (NumberFormatException exc) {
+ // just keep the old value
+ }
+
+ if (currentInt > maximum)
+ currentInt = maximum;
+ else if (currentInt < minimum)
+ currentInt = minimum;
+
+ text.setText("" + currentInt); //$NON-NLS-1$
+
+ return currentInt;
+ }
+
+ private void copyThreadThresholds() {
+ thresholdLoadBinary = thresholdLoadThread;
+ thresholdCountBinary = thresholdCountThread;
+ thresholdLoadFunction = thresholdLoadThread;
+ thresholdCountFunction = thresholdCountThread;
+ binaryLoadText.setText(timeFormat.format(thresholdLoadBinary * 100.0));
+ binaryCountText.setText("" + thresholdCountBinary); //$NON-NLS-1$
+ functionLoadText.setText(timeFormat.format(thresholdLoadFunction * 100.0));
+ functionCountText.setText("" + thresholdCountFunction); //$NON-NLS-1$
+ }
+
+ public void dispose()
+ {
+ if (this.shell != null) {
+ if (!this.shell.isDisposed()) {
+ this.shell.close();
+ }
+ this.shell.dispose();
+ }
+
+ this.shell = null;
+ }
+}