/*******************************************************************************
* 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 com.xored.glance.ui.panels.ISearchPanel;
import org.eclipse.core.runtime.IProgressMonitor;
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;
}
@Override
public void beginTask(String name, int totalWork) {
total = totalWork;
panel.newTask(name);
current = 0;
}
@Override
public void done() {
if (isCanceled()) {
return;
}
panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED);
}
@Override
public void internalWorked(double work) {
if (isCanceled()) {
return;
}
current += work / total;
if (current > 1) {
current = 1;
}
panel.updateIndexingPercent(current);
}
@Override
public boolean isCanceled() {
return cancel || panel.getControl().isDisposed();
}
@Override
public void setCanceled(boolean value) {
this.cancel = value;
panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED);
}
@Override
public void setTaskName(String name) {
}
@Override
public void subTask(String name) {
}
@Override
public void worked(int work) {
internalWorked(work);
}
}