/*******************************************************************************
* Copyright (c) 2012 xored software, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* xored software, Inc. - initial API and implementation (Yuri Strot)
******************************************************************************/
package com.xored.glance.internal.ui.search;
import org.eclipse.core.runtime.IProgressMonitor;
import com.xored.glance.ui.panels.ISearchPanel;
public class SearchProgressMonitor implements IProgressMonitor {
private final ISearchPanel panel;
private double total = 1;
private double current;
private boolean cancel;
public SearchProgressMonitor(ISearchPanel panel) {
this.panel = panel;
}
public void beginTask(String name, int totalWork) {
total = totalWork;
panel.newTask(name);
current = 0;
}
public void done() {
if (isCanceled()) {
return;
}
panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED);
}
public void internalWorked(double work) {
if (isCanceled()) {
return;
}
current += work / total;
if (current > 1) {
current = 1;
}
panel.updateIndexingPercent(current);
}
public boolean isCanceled() {
return cancel || panel.getControl().isDisposed();
}
public void setCanceled(boolean value) {
this.cancel = value;
panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED);
}
public void setTaskName(String name) {
}
public void subTask(String name) {
}
public void worked(int work) {
internalWorked(work);
}
}