【问题标题】:How to make a Custom View occupy completely in a perspective in an RCP application如何使自定义视图完全占据 RCP 应用程序的透视图
【发布时间】:2023-03-20 01:44:01
【问题描述】:

我创建了一个以视图为模板的 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 占据整个视角而不显示基本视图或完全隐藏基本视图(默认视图)。

【问题讨论】:

  • IPerspectiveFactory 类只执行一次,用于在第一次打开透视图时定义布局。之后它不会运行,因为布局是已知的。你想要什么行为?它是一种启动行为吗(例如您重新启动并且打开了一个编辑器但 google 不会给您信息)?
  • @Paul Webster 更准确地说,我想单独显示完全适合透视图的 erroview,而不是加载默认视图(上图中的右侧部分)。是的,这是显示视图之前的一种启动行为问题

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


【解决方案1】:

您不能在 IPerspectiveFactory 中这样做,因为该类的实例只执行一次,以便在第一次选择透视时定义布局。之后布局是已知的,实例不会重新运行。

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

编辑:API 信息

请参阅Plugging into the Workbench 了解更多信息。如果您是零件,则可以从视图或编辑器站点获取 IWorkbenchPage,如果您在命令处理程序中,则可以从 ExecutionEvent 获取 IWorkbenchWindow。您也可以从 org.eclipse.ui.PlatformUI 上的静态数据中获取活动的 IWorkbenchWindow,尽管这是最不受欢迎的方法。

【讨论】:

  • 看起来很合适,但我无法实现 IWorkbenchPage 接口,我应该在哪个类中实现这个接口,并且对这个 setPartState 方法的使用没什么新意
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2012-07-16
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多