使用兼容层时如何注册e4生命周期钩子?
How to register an e4 lifecycle hook when using the compatibility layer?
将基于 3.7 的 eclipse 应用程序迁移到 e4 时如何注册生命周期挂钩?
对于纯 e4,我会使用产品扩展点设置产品的 lifeCycleURI
属性。这也是定义应用程序模型的地方。
我的印象是,兼容层负责所有这些,因为它使用遗留应用程序模型定义。因此,我根本不知道如何使用我的生命周期钩子。
您仍然可以在产品定义中使用 lifeCycleURI
定义生命周期 class,前提是您的产品指定的应用程序调用 PlatformUI.createAndRunWorkbench
。这将运行处理生命周期的代码。
例如在一个简单的测试 RCP 中。产品是:
<extension
id="TestRCPView.product"
point="org.eclipse.core.runtime.products">
<product
application="TestRCPView.application"
name="TestRCPView">
<property
name="lifeCycleURI"
value="bundleclass://TestRCPView/testrcpview.LifeCycle">
</property>
</product>
</extension>
其中有 lifeCycleURI。
它引用的应用程序是:
<extension
id="TestRCPView.application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="testrcpview.Application">
</run>
</application>
</extension>
还有 testrcpview.Application
public class Application implements IApplication
{
@Override
public Object start(final IApplicationContext context)
{
Display display = PlatformUI.createDisplay();
try
{
int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
return IApplication.EXIT_OK;
}
finally
{
display.dispose();
}
}
@Override
public void stop()
{
if (!PlatformUI.isWorkbenchRunning())
return;
IWorkbench workbench = PlatformUI.getWorkbench();
Display display = workbench.getDisplay();
display.syncExec(new Runnable()
{
@Override
public void run()
{
if (!display.isDisposed())
workbench.close();
}
});
}
}
将基于 3.7 的 eclipse 应用程序迁移到 e4 时如何注册生命周期挂钩?
对于纯 e4,我会使用产品扩展点设置产品的 lifeCycleURI
属性。这也是定义应用程序模型的地方。
我的印象是,兼容层负责所有这些,因为它使用遗留应用程序模型定义。因此,我根本不知道如何使用我的生命周期钩子。
您仍然可以在产品定义中使用 lifeCycleURI
定义生命周期 class,前提是您的产品指定的应用程序调用 PlatformUI.createAndRunWorkbench
。这将运行处理生命周期的代码。
例如在一个简单的测试 RCP 中。产品是:
<extension
id="TestRCPView.product"
point="org.eclipse.core.runtime.products">
<product
application="TestRCPView.application"
name="TestRCPView">
<property
name="lifeCycleURI"
value="bundleclass://TestRCPView/testrcpview.LifeCycle">
</property>
</product>
</extension>
其中有 lifeCycleURI。
它引用的应用程序是:
<extension
id="TestRCPView.application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="testrcpview.Application">
</run>
</application>
</extension>
还有 testrcpview.Application
public class Application implements IApplication
{
@Override
public Object start(final IApplicationContext context)
{
Display display = PlatformUI.createDisplay();
try
{
int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
return IApplication.EXIT_OK;
}
finally
{
display.dispose();
}
}
@Override
public void stop()
{
if (!PlatformUI.isWorkbenchRunning())
return;
IWorkbench workbench = PlatformUI.getWorkbench();
Display display = workbench.getDisplay();
display.syncExec(new Runnable()
{
@Override
public void run()
{
if (!display.isDisposed())
workbench.close();
}
});
}
}