2011-02-16 55 views
3

我們的應用程序(基於Eclipse RCP的,使用基於JFace/SWT的接口)需要支持編輯數學矩陣。矩陣總是正方形的,可以是從2×2到11×11的任何大小。另外,按鈕將被放置在界面上,以允許用戶增長或縮小矩陣。用EditingSupport構建一個用於數學矩陣的JFace TableViewer

我們在整個代碼中使用JFace TableViewers和TreeViewer來編輯非矩陣數據。如果可能,我想使用相同的通用結構來編輯矩陣。

我堅持用每矩陣元件一行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的矩陣,將9行傳入代理對象,並用3 * 3的數組調用viewer.setInput(Object)。這似乎是支持的噩夢,因爲我需要保留這個對象既與內部模型和數據庫同步。

是否有人在這裏有這種事情的經驗,並可能借我一些建議嗎?

回答

1

一個多星期後,沒有答案,所以我結束了。我自己的滾動在這一個我做了一個類,有效地擔當了輸入JFace的表,轉換行和矩陣的列到List<List<Double>>;再有ContentProvider的,LabelProvider和EditingSupport與工作,我也是。能夠添加「增加大小」和「減少e尺寸「按鈕以允許用戶根據需要增大或縮小矩陣。