/*******************************************************************************
 * Copyright (c) 2008, 2011 Wind River Systems and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     Wind River Systems - initial API and implementation
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.debug.internal.ui.viewers.model.provisional;

import org.eclipse.debug.internal.ui.viewers.model.InternalVirtualTreeModelViewer;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.ViewerLabel;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IMemento;

/**
 * A virtual tree model viewer.  This viewer does not have a user
 * interface.  Instead, clients configure and access the viewer's data through
 * its public methods.
 * <p>
 * Style flags supported by this viewer are:
 * <ul>
 * <li>SWT.VIRTUAL - Indicates that the viewer should be in lazy mode:
 * retrieving only elements that are requested.</li>
 * <li>SWT.POP_UP - Indicates that the viewer should ignore requests from the
 * model to select, expand, or collapse tree elements.</li>
 * </ul>
 * </p>
 * @since 3.5
 * @noextend This class is not intended to be sub-classed by clients.
 */
public class VirtualTreeModelViewer extends InternalVirtualTreeModelViewer {


    /**
     * Creates a virtual tree model viewer.
     * @param display Display used by the viewer to call the data providers
     * on the UI thread.
     * @param style Stlye flags.
     * @param context Viewer's presentation context.
     */
    public VirtualTreeModelViewer(Display display, int style, IPresentationContext context) {
        super(display, style, context, null);
    }

    /**
     * Creates a virtual tree model viewer.
     * @param display Display used by the viewer to call the data providers
     * on the UI thread.
     * @param style style flags.
     * @param context Viewer's presentation context.
     * @param validator Optional validator that is used to determine which items should be
     * considered visible when SWT.VIRTUAL style is used.  If <code>null</code> then the
     * standard validator is used that updates only the selected items.
     *
     * @since 3.8
     */
    public VirtualTreeModelViewer(Display display, int style, IPresentationContext context, IVirtualItemValidator validator) {
        super(display, style, context, validator);
    }

    /**
     * Returns this viewer's presentation context.
     *
     * @return presentation context
     */
    @Override
	public IPresentationContext getPresentationContext() {
        return super.getPresentationContext();
    }

    /**
     * Registers the given listener for model delta notification.
     *
     * @param listener model delta listener
     */
    @Override
	public void addModelChangedListener(IModelChangedListener listener) {
        super.addModelChangedListener(listener);
    }

    /**
     * Unregisters the given listener from model delta notification.
     *
     * @param listener model delta listener
     */
    @Override
	public void removeModelChangedListener(IModelChangedListener listener) {
        super.removeModelChangedListener(listener);
    }

    /**
     * Registers the specified listener for view update notifications.
     *
     * @param listener listener
     */
    @Override
	public void addViewerUpdateListener(IViewerUpdateListener listener) {
        super.addViewerUpdateListener(listener);
    }

    /**
     * Removes the specified listener from update notifications.
     *
     * @param listener listener
     */
    @Override
	public void removeViewerUpdateListener(IViewerUpdateListener listener) {
        super.removeViewerUpdateListener(listener);
    }

    /**
     * Returns whether columns can be toggled on/off for this viewer's current
     * input element.
     *
     * @return whether columns can be toggled on/off
     */
    @Override
	public boolean canToggleColumns() {
        return super.canToggleColumns();
    }

    /**
     * Returns the current column presentation for this viewer, or <code>null</code>
     * if none.
     *
     * @return column presentation or <code>null</code>
     */
    @Override
	public IColumnPresentation getColumnPresentation() {
        return super.getColumnPresentation();
    }

    /**
     * Returns identifiers of the visible columns in this viewer, or <code>null</code>
     * if there are currently no columns.
     *
     * @return visible columns identifiers or <code>null</code>
     */
    @Override
	public String[] getVisibleColumns() {
        return super.getVisibleColumns();
    }

    /**
     * Initializes viewer state from the memento
     *
     * @param memento the {@link IMemento} to read from
     */
    @Override
	public void initState(IMemento memento) {
        super.initState(memento);
    }

    /**
     * Save viewer state into the given memento.
     *
     * @param memento the {@link IMemento} to save to
     */
    @Override
	public void saveState(IMemento memento) {
        super.saveState(memento);
    }

    /**
     * @return Returns true if columns are being displayed currently.
     */
    @Override
	public boolean isShowColumns() {
        return super.isShowColumns();
    }

    /**
     * Toggles columns on/off for the current column presentation, if any.
     *
     * @param show whether to show columns if the current input supports
     *  columns
     */
    @Override
	public void setShowColumns(boolean show) {
        super.setShowColumns(show);
    }

    /**
     * Sets the visible columns for this viewer. Id's correspond to
     * column identifiers from a column presentation. Use <code>null</code>
     * or an empty collection to display default columns for the current
     * column presentation. Only affects the current column presentation.
     *
     * @param ids column identifiers or <code>null</code>
     */
    @Override
	public void setVisibleColumns(String[] ids) {
        super.setVisibleColumns(ids);
    }

    @Override
	public void updateViewer(IModelDelta delta) {
        super.updateViewer(delta);
    }

    @Override
	public ViewerLabel getElementLabel(TreePath path, String columnId) {
        return super.getElementLabel(path, columnId);
    }

    @Override
	public VirtualItem[] findItems(Object elementOrTreePath) {
        return super.findItems(elementOrTreePath);
    }

    @Override
	public VirtualItem findItem(TreePath path) {
        return super.findItem(path);
    }



}
