Добавление подредакторов списка на панель вкладок

Я использую ListEditor чтобы разрешить редактирование списка детей, и я делаю все так, как я видел в некоторых примерах. Единственное отличие от примеров в том, что я хочу, чтобы дочерние виджеты, редактирующие виджеты, добавлялись в качестве вкладок для некоторых 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);
            }

        });

Как установить зависящие от значения заголовки для вкладок, созданных create()? Любая помощь / обходной путь будет принята с благодарностью.

2 ответа

Решение

То, что работало для меня, проходило мимо tabPanel а также index недавно создан ChildPanel() и сделать это ValueAwareEditor, Затем на setValue() Я устанавливал заголовок на tabPanel ссылка на данный index,

Работает ли этот подход для вас:

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> тогда тоже!

Другие вопросы по тегам