Eclipse - 在工具栏中实现和递增 swt 进度条



我正在开发一个应用程序来解析目录树中的数据,并在这样做时在底部工具栏中显示进度监视器。我正在使用java Files.walk((来遍历结构,并尝试使用IEventBroker,向工具栏部分发送消息以增加进度条,但他似乎不适合我。有谁知道更好的方法吗?

这是搜索开始和广播事件的代码。

Path file = Paths.get(directoryPath);
if (!file.toFile().exists())
{
return null;
}
_broker.send(Constants.INITIALISE_PROGRESS_BAR, file.toFile().list().length);
try (final Stream<Path> pathStream = Files.walk(file))
{
pathStream.forEach(path ->
{
_broker.send(Constants.INCREMENT_PROGRESS_BAR, "inc");
........
});
}

在我的工具栏部分中,我有以下方法来初始化进度的最大大小,并在收到事件时递增。

@Inject
@Optional
private void initialiseProgressBar(@UIEventTopic(Constants.INITIALISE_PROGRESS_BAR) Integer max)
{
_progressBar.setMinimum(0);
_progressBar.setMaximum(max);
}
@Inject
@Optional
private void incrementProgressBar(@UIEventTopic(Constants.INCREMENT_PROGRESS_BAR) String path)
{
incrementProgressBar();
}
private void incrementProgressBar()
{
_progressBar.setSelection(_progressBar.getSelection() + 1);
}

由于我不知道文件结构大小,因此最好不要递增,而只是进行某种连续的进展。

一种方法(除了建议的@greg-449之外(是像这样更改触发初始化/刷新事件的方式

@Inject
private UISynchronize       sync;
...
sync.asyncExec(new Runnable() {
@Override
public void run() {
_broker.send(Constants.INCREMENT_PROGRESS_BAR, "inc");            
}
});

最新更新