下面列出了org.eclipse.jface.viewers.CheckboxTreeViewer#setChecked ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private static void setChecked(final CheckboxTreeViewer tv, Object element) {
// When user checks a checkbox in the tree, check all its children and mark parent as greyed
// When a user uncheck a checkbox, mark the subtree as unchecked and ungrayed and if unique
// sibling parent as grayed.
DirectoryTreeContentProvider provider = (DirectoryTreeContentProvider) tv.getContentProvider();
boolean isChecked = tv.getChecked(element);
if (tv.getGrayed(element)) {
isChecked = !isChecked;
}
tv.setChecked(element, isChecked);
tv.setGrayed(element, false);
if (isChecked) {
tv.setSubtreeChecked(element, true);
} else {
tv.setSubtreeChecked(element, false);
}
setGrayed(tv, provider.getParent(element));
}
private static void setGrayed(CheckboxTreeViewer tv, Object element) {
if (element == null) {
return;
}
DirectoryTreeContentProvider provider = (DirectoryTreeContentProvider) tv.getContentProvider();
boolean checked = tv.getChecked(element);
boolean grayed = false;
for (Object object : provider.getChildren(element)) {
grayed = grayed || tv.getGrayed(object) || tv.getChecked(object);
checked = checked && tv.getChecked(object) && !tv.getGrayed(element);
}
if (checked) {
tv.setChecked(element, true);
tv.setGrayed(element, false);
} else if (grayed) {
tv.setGrayChecked(element, true);
} else {
tv.setChecked(element, false);
tv.setGrayed(element, false);
}
setGrayed(tv, provider.getParent(element));
}
private void updateParentState(IResource child, boolean baseChildState) {
if (mode == MODE_FLAT || child == null || child.getParent() == null || resourceList.contains(child.getParent())) {
return;
}
CheckboxTreeViewer checkboxTreeViewer = (CheckboxTreeViewer)treeViewer;
if (child == null) return;
Object parent = resourceSelectionContentProvider.getParent(child);
if (parent == null) return;
boolean allSameState = true;
Object[] children = null;
children = resourceSelectionContentProvider.getChildren(parent);
for (int i = children.length - 1; i >= 0; i--) {
if (checkboxTreeViewer.getChecked(children[i]) != baseChildState || checkboxTreeViewer.getGrayed(children[i])) {
allSameState = false;
break;
}
}
checkboxTreeViewer.setGrayed(parent, !allSameState);
checkboxTreeViewer.setChecked(parent, !allSameState || baseChildState);
updateParentState((IResource)parent, baseChildState);
}
/**
* A version of setSubtreeChecked that is aware of isEnabled
*
* @param viewer
* the viewer
* @param element
* the element
* @param enabledOnly
* if only enabled elements should be considered
* @param checked
* true if the item should be checked, and false if it should be
* unchecked
*/
protected static void setSubtreeChecked(CheckboxTreeViewer viewer, TracePackageElement element, boolean enabledOnly, boolean checked) {
if (!enabledOnly || element.isEnabled()) {
viewer.setChecked(element, checked);
if (checked) {
viewer.setGrayed(element, false);
}
element.setChecked(checked);
if (element.getChildren() != null) {
for (TracePackageElement child : element.getChildren()) {
setSubtreeChecked(viewer, child, enabledOnly, checked);
}
}
}
}
protected void newFolderButtonPressed() {
Object createdFolder= createFolder(fSelectedContainer);
if (createdFolder != null) {
CheckboxTreeViewer treeViewer= fViewer;
treeViewer.refresh(fSelectedContainer);
treeViewer.reveal(createdFolder);
treeViewer.setChecked(createdFolder, true);
treeViewer.setSelection(new StructuredSelection(createdFolder));
updateOKStatus();
}
}
private void deselectParentIfNoChildSelected(CheckStateChangedEvent event,
FieldToContractInputMapping mapping,
CheckboxTreeViewer checkboxTreeViewer) {
FieldToContractInputMapping parentMapping = mapping.getParent();
if (parentMapping != null && !event.getChecked() && hasNoChildGenerated(parentMapping)) {
checkboxTreeViewer.setChecked(parentMapping, false);
parentMapping.setGenerated(false);
setGeneratedStatePersistenceIdChild(parentMapping, false);
deselectParentIfNoChildSelected(event, parentMapping, checkboxTreeViewer);
}
}
private void selectParentIfChildIsSelected(CheckStateChangedEvent event, FieldToContractInputMapping mapping,
CheckboxTreeViewer checkboxTreeViewer) {
if (event.getChecked()) {
final FieldToContractInputMapping parentMapping = mapping.getParent();
if (parentMapping != null) {
checkboxTreeViewer.setChecked(parentMapping, true);
parentMapping.setGenerated(true);
setGeneratedStatePersistenceIdChild(parentMapping, true);
selectParentIfChildIsSelected(event, parentMapping, checkboxTreeViewer);
}
}
}
private void setChecked(CheckboxTreeViewer viewer, DiffNode node, boolean value, boolean selectChildren) {
DiffResult result = node.getContent();
if (node.isModelTypeNode() || !result.local.tracked || result.noAction()) {
viewer.setChecked(node, false);
} else if (value) {
selected.add(node);
} else if (lockNewElements && result.local.type == DiffType.NEW) {
viewer.setChecked(node, true);
} else {
selected.remove(node);
}
}