Java Eclipse插件开发关闭Eclipse透视图重置

Java Eclipse插件开发关闭Eclipse透视图重置,java,eclipse,plugins,Java,Eclipse,Plugins,我为Eclipse编写了一个插件,它是一个带有一些视图的透视图。我在关闭Eclipse时重置透视图时遇到问题。我已经到了可以释放视图上的所有内容并隐藏视图的地步,但是当您再次启动Eclipse时,我隐藏的视图又回来了。如何在用户关闭Eclipse时重置透视图?我使用org.Eclipse.ui.PerspectiveAdapter监视透视图。 每次打开透视图时,请检查是否有内容,然后 采取措施打开或关闭某些视图 我在激活器中注册透视适配器。开始(文本上下文) 事件调用方法 我的breif激活器代

我为Eclipse编写了一个插件,它是一个带有一些视图的透视图。我在关闭Eclipse时重置透视图时遇到问题。我已经到了可以释放视图上的所有内容并隐藏视图的地步,但是当您再次启动Eclipse时,我隐藏的视图又回来了。如何在用户关闭Eclipse时重置透视图?

我使用org.Eclipse.ui.PerspectiveAdapter监视透视图。 每次打开透视图时,请检查是否有内容,然后 采取措施打开或关闭某些视图

我在激活器中注册透视适配器。开始(文本上下文) 事件调用方法

我的breif激活器代码如下

/*
 * (non-Javadoc)
 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
 */
public void start(BundleContext context) throws Exception {
    super.start(context);
    plugin = this;
    .......
    ll = new fomomentumplugin.perspectives.LicenseListener();
    IWorkbench wbench = PlatformUI.getWorkbench();
     IWorkbenchWindow window =  wbench.getActiveWorkbenchWindow() ;
     window.addPerspectiveListener(ll);
     ...........
}


and 

public class LicenseListener extends PerspectiveAdapter {

public  void perspectiveOpened(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
    String componentName = "FOMomentum";
    if(perspective.getId().equals("org.softools.FOMomentumPLugin.FO")){
        if(Activator.checkLicense == null || !Activator.checkLicense.isValidLicense(componentName)){
            System.out.println("org.softools.FOMomentumPLugin.FO perspective Activated with no license found message !");
        //page.resetPerspective();
            hideViews(page);
        }
        else showViews(page);
    }
}

public  void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
    String componentName = "FOMomentum";
    if(perspective.getId().equals("org.softools.FOMomentumPLugin.FO")){
        if(Activator.checkLicense == null || !Activator.checkLicense.isValidLicense(componentName)){
            System.out.println("org.softools.FOMomentumPLugin.FO perspective Activated with no license found message !");
        //page.resetPerspective();
            hideViews(page);
        }
        else showViews(page);
    }

}

private void hideViews(IWorkbenchPage page){
    IViewPart momentum = page.findView("fomomentumplugin.views.FOMomentumView") ;
        if(momentum != null){
            ((fomomentumplugin.views.FOMomentumView)momentum).removeCalendarCombo();
            page.hideView(momentum);
        }

    IViewPart momentumDetail = page.findView("fomomentumplugin.views.FOMomentumDetailView") ;
    page.hideView(momentumDetail);
    IViewPart movingAverageview = page.findView("FOCallCandlebarView") ;
    page.hideView(movingAverageview);
    IViewPart priceVolumeView = page.findView("FOMomentumPLugin.FOPutCandlebarView") ;
    page.hideView(priceVolumeView);
}

private void showViews(IWorkbenchPage page){
    try {
        page.showView("fomomentumplugin.views.FOMomentumView");
        page.showView("fomomentumplugin.views.FOMomentumDetailView");
        page.showView("FOCallCandlebarView");
        page.showView("FOMomentumPLugin.FOPutCandlebarView");
    } catch (PartInitException e) {
        e.printStackTrace();
    }       
}
}


我希望这会有所帮助。

当Eclipse关闭时,为什么需要重置透视图?通常情况下,透视图设置应该在重新启动时保持不变。我希望在您第一次打开透视图时,它会返回到布局。我有一些视图,这些视图仅在建立某些数据库连接时显示,当您关闭eclipse时,这些连接将关闭,所以当您再次启动eclipse时,我不希望看到这些视图。