如何使自定义视图完全占用RCP应用程序中的透视图

时间:2011-11-25 11:21:33

标签: plugins eclipse-plugin swt eclipse-rcp jface

我创建了一个以视图为模板的RCP应用程序 最初创建项目后,我的透视图类看起来像这样

import org.eclipse.ui.IPageLayout;

public class Perspective implements IPerspectiveFactory {

    public void createInitialLayout(IPageLayout layout) {
        layout.setEditorAreaVisible(false);
        layout.setFixed(true);

    }

}

我创建了一个新视图并添加到名为ErrorView的org.eclipse.ui.views扩展中,并生成了该视图的相应类。 我对透视类

进行了一些小改动
public class Perspective implements IPerspectiveFactory {
     private URL u;
        private HttpURLConnection huc;
    public void createInitialLayout(IPageLayout layout) {
        try{
            u= new URL("https://google.com/");
            huc = ( HttpURLConnection )u.openConnection ();
            huc.setRequestMethod("GET");
            huc.connect();
        if(huc.getResponseCode()==200){
        layout.setEditorAreaVisible(false);
        layout.setFixed(true);
         }
         else{
             layout.addStandaloneView(View1.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());
             layout.getViewLayout(View1.ID).setCloseable(false);
             layout.setEditorAreaVisible(false);
         }
        }
         catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                layout.addStandaloneView(View1.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());
                layout.getViewLayout(View1.ID).setCloseable(false);
                layout.setEditorAreaVisible(false);
            }
    }
}

肯定是else / catch块被执行

output

如何在不显示基本视图的情况下使ErrorView占用整个透视图,或者只是完全隐藏基础(默认视图)。

2 个答案:

答案 0 :(得分:2)

您无法在IPerspectiveFactory中执行此操作,因为该类的实例仅执行一次,以在第一次选择透视图时定义布局。之后,布局已知,实例不会重新运行。

但是在运行时如果您可以确定希望ErrorView支配您的视角,则可以使用org.eclipse.ui.IWorkbenchPage.setPartState(IWorkbenchPartReference, int)来最大化该部分。

编辑:API信息

有关详细信息,请参阅Plugging into the Workbench。如果您是自己的一部分,可以从视图或编辑器站点获取IWorkbenchPage,或者如果您在命令处理程序中,可以从ExecutionEvent获取IWorkbenchWindow。您也可以从org.eclipse.ui.PlatformUI上的静态获取活动的IWorkbenchWindow,尽管这是最不受欢迎的方法。

答案 1 :(得分:1)

视图要么在Perspective类中定义,要么在plugin.xml中定义。打开MANIFEST.MF,切换到Extensions标签,然后选择org.eclipse.ui.perspectiveExtensions。以下是配置定义的透视图。删除“默认视图”。然后,您还可以删除org.eclipse.ui.views节点

中的视图