package org.jactr.eclipse.ui.content; /* * default logging */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.viewers.ILazyTreeContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; public class ACTRLazyContentProvider implements ILazyTreeContentProvider { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(ACTRLazyContentProvider.class); private ACTRContentProvider _contentProvider; private TreeViewer _treeViewer; public ACTRLazyContentProvider() { _contentProvider = new ACTRContentProvider(true); _contentProvider.setShowOnlyLocal(true); } public boolean isImportedContentFiltered() { return _contentProvider.isShowOnlyLocal(); } public void setImportedContentFiltered(boolean filter) { _contentProvider.setShowOnlyLocal(filter); } public Object getParent(Object element) { if (LOGGER.isDebugEnabled()) LOGGER.debug("Returning parent for " + element); return _contentProvider.getParent(element); } public void updateChildCount(Object element, int currentChildCount) { Object[] children = _contentProvider.getChildren(element); if (children.length != currentChildCount) { if (LOGGER.isDebugEnabled()) LOGGER.debug("Setting child count of " + element + " to " + children.length + " from " + currentChildCount); _treeViewer.setChildCount(element, children.length); } } public void updateElement(Object parent, int index) { if(parent==null) return; Object[] children = _contentProvider.getChildren(parent); if (children.length == 0) return; Object child = children[index]; if (LOGGER.isDebugEnabled()) LOGGER.debug("Updating element " + index + " of " + parent + " to " + child); _treeViewer.replace(parent, index, children[index]); children = _contentProvider.getChildren(child); _treeViewer.setChildCount(child, children.length); } public void dispose() { _contentProvider.dispose(); } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { _treeViewer = (TreeViewer) viewer; _contentProvider.inputChanged(viewer, oldInput, newInput); } }