如何在Eclipse作业中集成java组件(具有进度监控)?

时间:2014-09-15 06:27:59

标签: java eclipse

我正在开发一个需要在命令行和Eclipse作业上运行的java组件。执行可能需要几分钟,因此我想告知用户发生了什么。我不希望依赖于我的" pure"中的Eclipse进度监视器包。 java代码。

如何在Eclipse工作中提供进度监控,而不会污染"我的java代码与Eclipse depenendcies?

2 个答案:

答案 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引入您可能不需要的依赖关系。