1
方法org.eclipse.core.runtime.IProgressMonitor.worked(int)
接收整數,這意味着增量。這意味着,唯一可用的單位是自然單位。例如,它不能是百分數。如何在Eclipse插件中的IProgressMonitor中精確設置工作?
因此,如果我在作業中處理某些文件,我無法報告計數階段,因爲我應該調用的第一種方法是org.eclipse.core.runtime.IProgressMonitor.beginTask(String, int)
,這需要我知道總量。
如何完成?
UPDATE
我寫了下面的包裝,但是這看起來荒謬一個需要這樣做:
public class ProgressMonitorDoubleWrapper implements IProgressMonitor {
private IProgressMonitor delegate;
private int currentWork, totalWork;
private double currentWorkDouble;
public ProgressMonitorDoubleWrapper(IProgressMonitor monitor) {
this.delegate = monitor;
}
@Override
public void beginTask(String name, int totalWork) {
beginTask(name, (double) totalWork);
}
public void beginTask(String name, double totalWork) {
this.totalWork = (int) totalWork;
currentWork = 0;
currentWorkDouble = 0;
delegate.beginTask(name, this.totalWork);
}
@Override
public void done() {
delegate.done();
}
@Override
public void internalWorked(double work) {
delegate.internalWorked(work);
}
@Override
public boolean isCanceled() {
return delegate.isCanceled();
}
@Override
public void setCanceled(boolean value) {
delegate.setCanceled(value);
}
@Override
public void setTaskName(String name) {
delegate.setTaskName(name);
}
@Override
public void subTask(String name) {
delegate.subTask(name);
}
@Override
public void worked(int work) {
worked((double)work);
}
public void worked(double work) {
currentWorkDouble += work;
int increment = (int)(currentWorkDouble - (double)currentWork);
currentWork += increment;
delegate.worked(increment);
}
}
感謝。在Eclipse 4中它更好嗎? – Dims
Eclipse 4沒有變化 –