2012-02-22 4 views
0

CheckedTreeSelectionDialogを使用して何らかのリファクタリングを実装しています。リファクタリングは大規模なオブジェクトセットで実行されるため、選択ツリーの各ルートノードはオブジェクトであり、これらのオブジェクトのそれぞれは子ノードとして推奨される変更を持っています。例えば、CheckedTreeSelectionDialogから選択した要素を取得するためのアドバイス

CheckedTreeSelectionDialog:私はすべてのそれらの5つの要素は、前に示した選択した場合、私はリストを取得します、

Object[] result = dialog.getResult(); 

と::

ObjectA 
    ---------- Remove attribute attA1 
    ---------- Remove attribute attA2 
Object B 
    ---------- Remove attribute attB1 
. 
. 
. 

は、私が選択したelementesをこのように得る

私は、例えば、私は何かの木が得られると思いました。オブジェクト "ObjectA"を選択し、その子のどれが選択されているかを確認します。

私はこの権利を行っていますか?

ありがとうございます!

答えて

3

また、ツリービューアを取得して、そこからチェックされた要素を取得することもできます。

Map<Object, List<Object>> mapOfCheckedElements = new HashMap<Object, List<Object>>(); 
    for (TreeItem level1 : checkBoxTreeViewer.getTree().getItems()) { 
     if (level1.getChecked()) { 
      List<Object> checkedChildren = new ArrayList<Object>(); 
      for (TreeItem level2 : level1.getItems()) { 
       if (level2.getChecked()) { 
        checkedChildren.add(level2); 
       } 
      } 
      mapOfCheckedElements.put(level1, checkedChildren); 
     } 
    } 
+0

Thanks、@codejammer、どうしたらCheckedTreeSelectionDialogからツリービューアを取得できますか? –

+0

getTreeViewer()メソッドは、javadocのhttp://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%に従ってダイアログに表示されます。 2Fui%2Fdialogs%2FCheckedTreeSelectionDialog.html – codejammer

+0

私はCheckedTreeSelectionDialogをサブクラス化し、提案したメソッドを作成しましたが、org.eclipse.swt.SWTExceptionを取得しました:runnable(org.eclipse.swt.SWTException:Widgetが破棄されています)を実行できませんでしたgetItems()が呼び出されます。何か案が? –

関連する問題