我创建了一个以视图为模板的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块被执行
如何在不显示基本视图的情况下使ErrorView占用整个透视图,或者只是完全隐藏基础(默认视图)。
答案 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
节点