/*******************************************************************************
 * Copyright (c) 2003, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.progress;

import org.eclipse.core.runtime.IProgressMonitor;

/**
 * IElementCollector is a type that allows for the incremental update of a
 * collection of objects. This used for updating trees incrementally with
 * a progress monitor so that the update can be reported.
 * 
 * @see org.eclipse.ui.progress.IDeferredWorkbenchAdapter
 * @see org.eclipse.ui.progress.DeferredTreeContentManager
 * @since 1.0
 */
public interface IElementCollector {
    /**
     * Add the element to the IElementCollector. Send any progress information
     * to monitor.
     * 
     * @param element
     *            The element being added
     * @param monitor
     *            The monitor to send updates to.
     */
    public void add(Object element, IProgressMonitor monitor);

    /**
     * Add the elements to the IElementCollector. Send any progress information
     * to monitor.
     * 
     * @param elements
     *            The elements being added
     * @param monitor
     *            The monitor to send updates to.
     */
    public void add(Object[] elements, IProgressMonitor monitor);

    /**
     * The element collection is done. Clean up any temporary state.
     *  
     */
    public void done();
}
