如何在将基于3.7的eclipse应用程序迁移到e4时注册生命周期挂钩?
使用纯e4,我将使用产品扩展点设置产品的lifeCycleURI属性。这也是定义应用程序模型的地方。
我的印象是,兼容性层负责所有这一切,因为它使用了遗留应用程序模型定义。因此,我根本不知道如何使用我的生命周期挂钩。
发布于 2018-10-25 14:47:01
您仍然可以使用产品定义中的lifeCycleURI定义生命周期类,只要您的产品指定的应用程序称为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();
}
});
}
}https://stackoverflow.com/questions/52991143
复制相似问题