私は最近CheckboxTreeViewer
、自分でa を実装しましたDialog
。これは、ツリーがデフォルトでノードを展開できないことを除いて、これまでのところ正常に機能します。次の画像でわかるように、チェックボックスをオンにした場合にのみ機能します。
これはデフォルトです。ご覧のとおり、子ノードはありますが、ノードを展開することはできません。
チェックボックスをオンにすると、次のように機能します。
私はすでに を使用しようとしましsetExpandPreCheckFilters
たが、成功しませんでした:
Composite container = (Composite) super.createDialogArea(parent);
tv = new CheckboxTreeViewer(container, SWT.MULTI | SWT.H_SCROLL| SWT.V_SCROLL);
GridData gridData = new GridData(GridData.FILL_BOTH);
tv.getTree().setLayoutData(gridData);
tv.setContentProvider(new FeaturePropertyDialogContentProvider());
tv.setLabelProvider(new FeaturePropertyDialogLabelProvider());
tv.setAutoExpandLevel(2);
tv.setExpandPreCheckFilters(true);
何か案は?
- - - - - - - - - - - - - - - - - -アップデート - - - - - - - -----------------------
問題の原因がわかりました。hasChildrenメソッドのすべての要素をチェックするのを忘れていました。次のコードは現在私のために働いています:
public boolean hasChildren(Object element) {
if (element instanceof ProductLine) {
ProductLine productLine = (ProductLine) element;
if (productLine.getPropertyList() != null) {
return true;
} else {
return false;
}
}
if (element instanceof PropertyList) {
PropertyList propertyList = (PropertyList) element;
if (!(propertyList.getGeneralPlatforms().isEmpty())) {
return true;
} else {
return false;
}
} else if (element instanceof GeneralPlatform) {
GeneralPlatform platform = (GeneralPlatform) element;
if (!(platform.getHardwareElements().isEmpty())) {
return true;
} else {
return false;
}
} else if (element instanceof HardwareElement) {
HardwareElement hw = (HardwareElement) element;
if (!(hw.getHardwareElements().isEmpty())
|| !(hw.getProperties().isEmpty())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
ありがとうございます!