2011-01-10 58 views
3

我實現了一個在TreeViewer中顯示數據的Eclipse插件。僅更新JFace TreeViewer中的可見項目

樹結構在初始化時被讀取,並且在運行時不會改變。 A LabelProvider用於設置要顯示的每個項目的數據。該對象通過從我們的硬件中讀取來完成。讀取值可能需要一段時間(〜0.5秒)。每次調試器暫停並且每次用戶單擊指定的「刷新」按鈕時都會更新值。

我有很多項目和子項目,所以一次讀取所有的值太耗費時間。 因此,我只想讀取用戶可見的項目數據。

我嘗試使用ILazyTreeContentProvider但當樹加載這個既節省了時間:滾動或擴大TreeItem後,可見項目加入到項目列表更新,而不是更換無形的節點。

我該如何做到這一點?

回答

1

找到了!我還在使用ILazyTreeContentProvider。 每次調試器停止或單擊刷新按鈕時,我都會簡單地使用tree.clearAll(true)刪除所有元素,而不是檢查要刷新的元素。刪除將調用ILazyTreeContentProvider僅在可見項目上再次完成其工作。