Eclipse RCP 中 ImportWizard 的通知

发布于 2024-11-10 01:12:27 字数 81 浏览 2 评论 0原文

我正在开发一个 Eclipse RCP 应用程序。在此应用程序中,我使用导入向导导入项目。我希望在导入向导结束后收到通知。

请帮我!

I am developing an Eclipse RCP application. In this application I am importing the project using an Import Wizard. I want to get notified after the Import wizard is over.

Please help me!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

您的好友蓝忘机已上羡 2024-11-17 01:12:27

当您启动导入向导时,我会将 org.eclipse.core.resources.IWorkspace.addResourceChangeListener(IResourceChangeListener) 添加到工作区。监视事件并查看导入完成后是否发出 org.eclipse.core.resources.IResourceChangeEvent.POST_CHANGE 。

I would add an org.eclipse.core.resources.IWorkspace.addResourceChangeListener(IResourceChangeListener) to the workspace when you launch the import wizard. Monitor the events and see if org.eclipse.core.resources.IResourceChangeEvent.POST_CHANGE is issued when the import it done.

玩物 2024-11-17 01:12:27

您可以使用 ICommandService 来监视 Eclipse 平台中命令的执行。

因此,当使用命令 id 执行导入时,您可以收到通知“
org.eclipse.ui.file.import”:

ICommandService service = (ICommandService)
    PlatformUI.getWorkbench().getService(ICommandService.class);
service.addExecutionListener(...)

您可以通过扩展 WorkspaceJob 来描述导入后将执行的逻辑。WorkspaceJob

public AfterImportingJob extends WorkspaceJob{ 
    ...
    public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException{
        ... do something
        return Status.OK_STATUS;
    }
    ...
}

自动与 Workspace 同步。因此,在 Workspace 中完成所有更改后,您的作业将运行。并且它确保没有其他在您的作业执行期间,工作区修改不会运行。

要使用这个魔法,您所要做的只是安排:

AfterImportingJob myJob = new AfterImporingJob();
myJob.schdule();

You can use ICommandService to monitor execution of commands in Eclipse Platform.

So you can notified when importing is executed with command id "
org.eclipse.ui.file.import":

ICommandService service = (ICommandService)
    PlatformUI.getWorkbench().getService(ICommandService.class);
service.addExecutionListener(...)

You can describe logic which will executed after importing with extending WorkspaceJob.

public AfterImportingJob extends WorkspaceJob{ 
    ...
    public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException{
        ... do something
        return Status.OK_STATUS;
    }
    ...
}

WorkspaceJob automatically synchronized with Workspace. So After all change is done in Workspace, your Job will run. And it makes sure No other workspace modification is not running during your job is executing.

All you have to do to use this magic is just scheduling:

AfterImportingJob myJob = new AfterImporingJob();
myJob.schdule();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文