4

私はCheckedTreeSelectionDialogを使用しており、最初にいくつかの項目を選択したいと考えています。

メソッドsetInitialSelectionsを使用して、level1 ではなく子(level2 アイテム) を選択するにはどうすればよいですか。

CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(
    this.containerComposite.getShell(), new myLabelProvider(), new
    myContentProvider());

dialog.setContainerMode(true);
dialog.setInput(new MyModel());

Parent p = new Parent("I am a parent");
p.getChildren.add(new Child("I am a child"));
dialog.setInitialSelection(p);

例のように、containerMode が false の場合は子が選択されず、true の場合はすべての子が選択されます。

4

2 に答える 2

1

ダイアログを開く
dialog.setInitialElementSelections(model.getAllElements());
前に必ず実行してくださいdialog.open();
。そうしないと機能しません。

私は同じ問題を抱えていました-最初のレベルの要素しかマークできませんでした。解決策は、これらのメソッドがITreeContentProvider実装クラスで機能することを確認することでした:

// this is the object that would get passed into setInput()
private MyModelProvider model; 

@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) 
    this.model = (MyModelProvider ) newInput;
}

@Override
public Object getParent(Object element) {
    if (element instanceof Child)
        return model.getCategories().get(0);    // I only have one category 
    return null;
}
于 2013-07-19T09:01:09.953 に答える
1

メソッドSelectionDialog#setInitialElementSelections(List elements)を使用して、選択したい要素をList:

CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(
this.containerComposite.getShell(), new myLabelProvider(), new myContentProvider());

dialog.setContainerMode(true);
dialog.setInput(new MyModel());

List<Child> list = new ArrayList<Child>();

/* fill your list */

dialog.setInitialElementSelections(list);
于 2012-12-13T14:33:03.897 に答える