import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.StyledString.Styler;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.wizard.WizardPage;
ignoreCheckEvent = true;
try {
- TreePath path = ((ITreeSelection) viewer.getSelection()).getPaths()[0];
+
checkChildren(event.getElement(), event.getChecked());
- checkParents(path.getParentPath());
+
+ grayParents(event.getElement());
}
finally {
ignoreCheckEvent = false;
}
List<TermVocabulary<DefinedTermBase>> vocs = CdmStore.getService(IVocabularyService.class).findByTermType(
TermType.NamedArea, null);
+
return vocs;
}
}
}
}
+ /**
+ *
+ * @param path
+ * @param checked
+ */
+ private void grayParents(final Object element) {
+ TermContentProvider tcp = new TermContentProvider();
+
+ if (element == null) {
+ return;
+ }
+ // final Object element = path.getLastSegment();
+ Object parent = tcp.getParent(element);
+ if (parent != null) {
+ boolean allChecked = true;
+ boolean allUnchecked = true;
+ for (final Object fieldElement : tcp.getChildren(parent)) {
+ allChecked = allChecked && this.viewer.getChecked(fieldElement);
+ allUnchecked = allUnchecked && !this.viewer.getChecked(fieldElement);
+ }
+ if (allUnchecked) {
+ this.viewer.setChecked(parent, false);
+ this.viewer.setGrayed(parent, false);
+ } else if (allChecked) {
+ this.viewer.setChecked(parent, true);
+ this.viewer.setGrayed(parent, false);
+ } else if (!allUnchecked && !allChecked) {
+ this.viewer.setChecked(parent, true);
+ this.viewer.setGrayed(parent, true);
+ }
+
+ grayParents(tcp.getParent(parent));
+ }
+ }
@Override
public void dispose() {