/** * Restores the checked state of items based on the cached check state. This will only check leaf * nodes, but parent items will be updated by the container viewer. No events will be fired. */ public void restoreLeafCheckState() { if (checkState == null) return; getTree().setRedraw(false); // Call the super class so we don't mess up the cache super.setCheckedElements(new Object[0]); setGrayedElements(new Object[0]); // Now we are only going to set the check state of the leaf nodes // and rely on our container checked code to update the parents properly. Iterator iter = checkState.iterator(); Object element = null; if (iter.hasNext()) expandAll(); while (iter.hasNext()) { element = iter.next(); // Call the super class as there is no need to update the check state super.setChecked(element, true); } getTree().setRedraw(true); }
/* (non-Javadoc) * @see org.eclipse.jface.viewers.CheckboxTreeViewer#setCheckedElements(java.lang.Object[]) */ public void setCheckedElements(Object[] elements) { super.setCheckedElements(elements); checkState.clear(); ITreeContentProvider contentProvider = null; if (getContentProvider() instanceof ITreeContentProvider) { contentProvider = (ITreeContentProvider) getContentProvider(); } for (int i = 0; i < elements.length; i++) { Object[] children = contentProvider != null ? contentProvider.getChildren(elements[i]) : null; if (!getGrayed(elements[i]) && (children == null || children.length == 0)) { if (!checkState.contains(elements[i])) { checkState.add(elements[i]); } } } }
/* (non-Javadoc) * @see org.eclipse.jface.viewers.AbstractTreeViewer#remove(java.lang.Object) */ public void remove(Object elementsOrTreePaths) { updateCheckState(elementsOrTreePaths, false); super.remove(elementsOrTreePaths); }
/* (non-Javadoc) * @see org.eclipse.jface.viewers.AbstractTreeViewer#remove(java.lang.Object[]) */ public void remove(Object[] elementsOrTreePaths) { for (int i = 0; i < elementsOrTreePaths.length; i++) { updateCheckState(elementsOrTreePaths[i], false); } super.remove(elementsOrTreePaths); }