我正在开发一个需要在命令行和Eclipse作业上运行的java组件。执行可能需要几分钟,因此我想告知用户发生了什么。我不希望依赖于我的" pure"中的Eclipse进度监视器包。 java代码。
如何在Eclipse工作中提供进度监控,而不会污染"我的java代码与Eclipse depenendcies?
答案 0 :(得分:3)
编写您在代码中使用的自己的进度监视器界面,如:
interface MyProgressMonitor
{
public void beginTask(String name, int totalWork);
public void done();
public boolean isCanceled();
public void worked(int work);
}
对于Java应用程序,您可以使用不执行任何操作的实现。
对于Eclipse作业,请使用委托给Eclipse IProgressMonitor的实现:
class EclipseMyProgressMonitor implements MyProgressMonitor
{
private final IProgressMonitor monitor;
EclipseMyProgressMonitor(IProgressMonitor theMonitor)
{
monitor = theMonitor;
}
public void beginTask(String name, int totalWork)
{
monitor.beginTask(name, totalWork);
}
public void done()
{
monitor.done();
}
public boolean isCanceled()
{
return monitor.isCanceled();
}
public void worked(int work)
{
monitor.worked(work);
}
}
答案 1 :(得分:0)
应该不那么困难。使用纯java在单独的项目中创建java组件。然后创建负责启动作业的eclipse功能,请参阅this article以获取帮助。你eclise代码将启动一个工作,这将反过来调用你的java组件。
难以处理的问题:
org.eclipse.core.runtime.IProgressMonitor
引入您可能不需要的依赖关系。