1 /******************************************************************************* 2 * Copyright (c) 2005, 2006 IBM Corporation and others. 3 * All rights reserved. This program and the accompanying materials 4 * are made available under the terms of the Eclipse Public License v1.0 5 * which accompanies this distribution, and is available at 6 * http://www.eclipse.org/legal/epl-v10.html 7 * 8 * Contributors: 9 * IBM Corporation - initial API and implementation 10 *******************************************************************************/ 11 package org.eclipse.jface.viewers; 12 13 /** 14 * The ILazyTreeContentProvider is the content provider for tree viewers created 15 * using the SWT.VIRTUAL flag that only wish to return their contents as they 16 * are queried. 17 * 18 * @since 3.2 19 */ 20 public interface ILazyTreeContentProvider extends IContentProvider { 21 /** 22 * Called when a previously-blank item becomes visible in the TreeViewer. If 23 * the content provider knows the child element for the given parent at this 24 * index, it should respond by calling 25 * {@link TreeViewer#replace(Object, int, Object)}. The content provider 26 * should also update the child count for any replaced element by calling 27 * {@link TreeViewer#setChildCount(Object, int)}. If the given current child 28 * count is already correct, setChildCount does not have to be called since 29 * a call to replace will not change the child count. 30 * 31 * <strong>NOTE</strong> #updateElement(int index) can be used to determine 32 * selection values. If TableViewer#replace(Object, int) is not called 33 * before returning from this method, selections may have missing or stale 34 * elements. In this situation it is suggested that the selection is asked 35 * for again after replace() has been called. 36 * 37 * @param parent 38 * The parent of the element, or the viewer's input if the 39 * element to update is a root element 40 * @param index 41 * The index of the element to update in the tree 42 */ 43 public void updateElement(Object parent, int index); 44 45 /** 46 * Called when the TreeViewer needs an up-to-date child count for the given 47 * element, for example from {@link TreeViewer#refresh()} and 48 * {@link TreeViewer#setInput(Object)}. If the content provider knows the 49 * given element, it should respond by calling 50 * {@link TreeViewer#setChildCount(Object, int)}. If the given current 51 * child count is already correct, no action has to be taken by this content 52 * provider. 53 * 54 * @param element 55 * The element for which an up-to-date child count is needed, or 56 * the viewer's input if the number of root elements is requested 57 * @param currentChildCount 58 * The current child count for the element that needs updating 59 */ 60 public void updateChildCount(Object element, int currentChildCount); 61 62 /** 63 * Returns the parent for the given element, or <code>null</code> 64 * indicating that the parent can't be computed. 65 * In this case the tree-structured viewer can't expand 66 * a given node correctly if requested. 67 * 68 * @param element the element 69 * @return the parent element, or <code>null</code> if it 70 * has none or if the parent cannot be computed 71 */ 72 public Object getParent(Object element); 73 } 74