/*******************************************************************************
* Copyright (c) 2017 Dirk Fauth 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:
* Dirk Fauth - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.export;
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
/**
* Interface for an exporter that can be used to export a NatTable. This type of
* exporter gives the implementor full control on how the export should be done.
* In comparison the {@link ILayerExporter} is used to export a NatTable data
* driven by iterating over the content.
*
* @since 1.5
*/
public interface ITableExporter extends IExporter {
/**
* Export a given {@link ILayer} to the given {@link OutputStream}.
*
* @param shell
* The current active {@link Shell}.
* @param progressBar
* The {@link ProgressBar} that can be used to report the export
* progress to the user.
* @param outputStream
* The {@link OutputStream} to write the export to. Typically
* previously retrieved by calling
* {@link #getOutputStream(Shell)}.
* @param layer
* The {@link ILayer} to export, typically a NatTable instance.
* @param configRegistry
* The {@link IConfigRegistry} used to retrieve configuration
* information on exporting.
* @throws IOException
* If an error occurs while exporting.
*/
void exportTable(Shell shell,
ProgressBar progressBar,
OutputStream outputStream,
ILayer layer,
IConfigRegistry configRegistry) throws IOException;
}