diff -r ed1c9f64298a -r 5b9d4d8641ce trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/dialog/SearchDialogProgressBarUpdater.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/dialog/SearchDialogProgressBarUpdater.java Wed Jun 23 14:49:59 2010 +0300 @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2007-2010 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: + * + * SearchDialogProgressBar updater class + * + */ +package com.nokia.traceviewer.dialog; + +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.ProgressBar; + +import com.nokia.traceviewer.engine.TraceViewerGlobals; + +/** + * Updates search dialogs progressBar + * + */ +final class SearchDialogProgressBarUpdater implements Runnable { + + /** + * Value of the progressbar + */ + private int value; + + /** + * Line count label to update + */ + private final Label lineCountLabel; + + /** + * Constructor + * + * @param value + * value of the selection + * @param lineCountLabel + * line count label to update + */ + SearchDialogProgressBarUpdater(int value, Label lineCountLabel) { + this.value = value; + this.lineCountLabel = lineCountLabel; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Runnable#run() + */ + public void run() { + ProgressBar bar = TraceViewerGlobals.getTraceViewer() + .getDataProcessorAccess().getSearchProcessor() + .getSearchDialog().getProgressBar(); + + if (bar != null && !bar.isDisposed()) { + int max = 0; + + // Get max value from data reader + if (TraceViewerGlobals.getTraceViewer().getDataReaderAccess() + .getCurrentDataReader() != null) { + max = TraceViewerGlobals.getTraceViewer().getDataReaderAccess() + .getCurrentDataReader().getTraceCount(); + } + // Set maximum value to bar + bar.setMaximum(max); + + // Set selection value + StringBuffer text = new StringBuffer(); + text.append(Messages + .getString("SearchDialogProgressBarUpdater.LineText")); //$NON-NLS-1$ + text.append(':'); + text.append(' '); + + if (value <= 0 && max > 0) { + value = 1; + text.append(value); + } else if (value >= max) { + value = max; + text.append(value); + } else if (max == 0) { + text.append(0); + } else { + text.append(value + 1); + } + bar.setSelection(value); + + text.append(" / "); //$NON-NLS-1$ + text.append(max); + + // Change line text + if (!lineCountLabel.isDisposed()) { + lineCountLabel.setText(text.toString()); + } + } + } +}