将列表子编辑器添加到选项卡面板

时间:2012-05-05 16:30:57

标签: gwt gwt2 gwt-editors

我使用ListEditor来编辑chilren列表,我就像在一些示例中看到的那样做。与示例的唯一区别是我希望将编辑子项的小部件作为选项卡添加到某些{{ 1}}。

问题是我想给这个新标签添加一个标题,这个标题不是常量,而是取决于新创建的子编辑器正在编辑的对象(所以让标题为TabLayoutPanel)我不喜欢不知道里面的child.getName()方法。

EditorSource#create()

如何将依赖于值的标头设置为ListEditor<ChildProxy, ChildPanel> children = ListEditor .of(new EditorSource<ChildPanel>() { @Override public ChildPanel create(int index) { ChildPanel tab = new ChildPanel(); //here's a problem, how I can get tabHeader here? tabPanel.add(tab,tabHeader); } }); 创建的标签?任何帮助/解决方法将不胜感激。

2 个答案:

答案 0 :(得分:0)

这种方法是否适合您:

public class ChildrenEditor extends Composite implements
        IsEditor<ListEditor<Child, ChildInTabEditor>> {


    ListEditor<Child, ChildInTabEditor> editor;

    public ChildrenEditor() {
        initWidget(uiBinder.createAndBindUi(this));
        editor = ListEditor.of(new ChildInTabEditorSource());
    }


    private class ChildInTabEditorSource extends EditorSource<ChildInTabEditor> {

            public ChildInTabEditor create(int index) {
                ChildInTabEditor tab = new ChildInTabEditor();
                // here's the trick :
                Child child = editor.getList().get(index);
                tabPanel.add(tab,child.getTabTitle());
                return tab;
            }

      }

    @Override
    public ListEditor<Child, ChildInTabEditor> asEditor() {
        return editor;
    }


}

ChildInTabEditor必须是同时实现Editor<Child>的标签!

答案 1 :(得分:0)

对我有用的是将tabPanelindex传递给新创建的ChildPanel()并将其设为ValueAwareEditor。然后在setValue()上,我在给定tabPanel的{​​{1}}引用上设置标题。