実装するカスタム コンテンツ プロバイダーITreeContentProvider
と、次のようなカスタム モデルを作成しました: Vogella Tutorial JFaceには、カテゴリと Todos があり、Todos はカテゴリの子としてクラス Category のリストとして格納されます。私は日食ダイアログCheckedTreeSelectionDialog
を使用していますが、それは他のツリーダイアログと同じである必要があり、マップでチェックされた要素を取得できるように拡張しましたが、何らかの理由でレベル1のツリーアイテムを取得できますが、その子は取得できず、理由がわかりません.
public void createMapOfCheckedItems() {
mapOfCheckedElements = new HashMap<Object, List<Object>>();
for (TreeItem level1 : getTreeViewer().getTree().getItems()) {
if (level1.getChecked()) {
List<Object> checkedChildren = new ArrayList<Object>();
for (TreeItem level2 : level1.getItems()) {
if (level2.getChecked()) {
checkedChildren.add(level2.getData());
}
}
mapOfCheckedElements.put(level1.getData(), checkedChildren);
}
}
}
コードは上記ですがlevel1.getItems()
、空のツリー項目を返しますが、選択ダイアログには親と子が正しく表示されます。