如何刷新多页编辑器的页面?

How to refresh multipage editor's page?

我创建了一个插件,其中有一个包含两个页面的多页面编辑器。 Page1- 源代码编辑器。 Page2- 用于操作。

我的问题是,如果代码中存在任何编译错误,第二页必须显示其他内容,如 "Error"。 否则它会显示我的操作形式。 为此,每次 pageChanges 时,我都需要用不同的内容填充复合材料。但是没用。

如何实现场景。单击第二页时,必须为新内容重新创建或刷新内容

  public void createPage1(){

    intializePage1Composite();

    updatePage1Content(this.page1Compostie);

    int index = addPage(this.page1Compostie);
    setPageText(index, "Service Behaviors ");
}
 public void updatePage1Content(Composite composite){

    boolean error=getPageStatus();


    if(!error){

        /**
         *Content of Normal Page
         */
    }

    /**
     * setting the page to error
     */
    else{
            /**
             *Content of Error Page
              */

        }
}


   protected void pageChange(int newPageIndex) {
    super.pageChange(newPageIndex);
    if (newPageIndex == 1) {


        updatePage1Content(this.page1Compostie);

        this.page1Compostie.redraw();


    }

}

有什么建议吗?

要替换复合的所有子控件,您首先要对每个现有的子控件调用 dispose()。接下来添加新控件。最后调用

composite.layout(true, true);

在父组合上强制更新布局。

如果您只想在两组控件之间切换,您可以使用 GridData.exclude 标志和 Control.setVisible 到 include/exclude 控件。最后再次调用 layout