Добавление подредакторов списка на панель вкладок
Я использую 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>
тогда тоже!