Вот так я обновляю свой TableViewer, который отображает список:
public void view(MyListClass list) {
ViewerSupport.bind(
this,
new WritableList(list, controller.theClass()),
BeanProperties.values(controller.theClass(), controller.strings())
);
}
controller
- это экземпляр класса, который инкапсулирует мой клейкий код (это другой класс для двух списков;controller.theClass()
).strings()
- это массив имен свойств.MyListClass происходит от ArrayList<MyListEntryObject>
.Это отлично работает.Но я хочу отобразить матрицу данных.MyMatrixClass
- это HashMap<Point, MyMatrixEntryObject>
.Вот что я попробовал:
private void view(MyMatrixClass matrix) {
columns(matrix.columns());
List<WritableList> lists = new ArrayList<WritableList>(matrix.rows());
for (MyEntityClass list : matrix.children())
if (list instanceof MyListClass)
lists.add(new WritableList((MyListClass) list, controller.theClass()));
WritableList[] alists = lists.toArray(new WritableList[0]);
MultiList mlist = new MultiList(alists);
ViewerSupport.bind(
this,
mlist,
BeanProperties.value(controller.theClass(), "value")
);
}
Это не работает.Я получаю ошибки всплывающих окон с нулевым аргументом.(Каждый класс модели данных реализует MyEntityClass
. Имена классов были изменены из-за того, что это проприетарная программа, которую я использую для разработки.)
Короче говоря, как мне использовать ViewerSupport
и BeanProperties
для отображения матрицы данных в виде TableViewer
?