Наше приложение (на основе Eclipse RCP, с использованием интерфейса на основе JFace / SWT) должно поддерживать редактирование математических матриц.Матрицы всегда квадратные и могут быть любого размера от 2х2 до 11х11.Кроме того, на интерфейсе будут размещены кнопки, позволяющие пользователю увеличивать или уменьшать матрицу.
Мы используем JFace TableViewers и TreeViewers в нашем коде для редактирования нематричных данных.Если это вообще возможно, я бы хотел использовать ту же общую структуру для редактирования матриц.
Я сохраняю данные в базе данных MySQL, используя по одной строке на элемент матрицы, как таковой:
+----------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------+------+-----+---------+-------+
| id | bigint(20) | NO | PRI | NULL | |
| rowNum | bigint(20) | NO | | NULL | |
| columnNum | bigint(20) | NO | | NULL | |
| value | double | NO | | NULL | |
| matrix_id | bigint(20) | NO | MUL | NULL | |
+----------------------+------------+------+-----+---------+-------+
Проблема, с которой я сталкиваюсь, заключается в том, что «вход» JFace, похоже, соответствует одной строке таблицы в отображаемой таблице.В моем случае одна строка базы данных соответствует ячейке в таблице, а не всей строке.
Единственное, о чем я могу думать, - это как-то сохранить объект за кулисами, который сохраняет состояние матрицы.и эффективно переводит строки базы данных в подходящую модель JFace.(Например, если у меня есть матрица 3x3, передайте девять строк в прокси-объект и вызовите его viewer.setInput(Object)
с массивом три на три. Это кажется кошмаром для поддержки, так как мне нужно будетсинхронизируйте этот объект как с внутренней моделью, так и с базой данных.
Есть ли у кого-нибудь опыт работы с подобными вещами и, возможно, могли бы дать мне несколько советов?