package org.jboss.seam.excel;
import java.util.List;
import org.jboss.seam.document.DocumentData.DocumentType;
import org.jboss.seam.excel.ui.UIColumn;
import org.jboss.seam.excel.ui.UILink;
import org.jboss.seam.excel.ui.UIWorkbook;
import org.jboss.seam.excel.ui.UIWorksheet;
import org.jboss.seam.excel.ui.command.Command;
/**
* General interface interacting with an Excel Workbook abstraction
*
* @author Nicklas Karlsson (nickarls@gmail.com)
* @author Daniel Roth (danielc.roth@gmail.com)
*/
public interface ExcelWorkbook
{
public abstract DocumentType getDocumentType();
/**
* Moves the internal column pointer to the next column, called by the tag to
* indicate that a new column has been started. If the pointer exceeds the
* maximum allowed, throws an exception
*/
public abstract void nextColumn();
/**
* Creates a new worksheet in the workbook (or selects one if it exists).
* Will require a rework for auto-renaming when support for auto-adding of
* new worksheets if there are more than 65k rows.
*
* @param uiWorksheet Worksheet to create or select
*/
public abstract void createOrSelectWorksheet(UIWorksheet uiWorksheet);
/**
* Returns the binary data from the internal representation of the workbook
*
* @return the bytes
*/
public abstract byte[] getBytes();
/**
* Initializes a new workbook. Must be called first
*
* @param uiWorkbook the workbook UI item to create
*/
public abstract void createWorkbook(UIWorkbook uiWorkbook);
/**
* Applies column settings to the current column
*
* @param uiColumn The UI column to inspect for settings
*/
public abstract void applyColumnSettings(UIColumn uiColumn);
/**
* Adds an item (cell, image, hyperlink) to add to the worksheet
*
* @param item The item to add
*/
public abstract void addItem(WorksheetItem item);
/**
* Executes a command for a worksheet
*
* @param command The command to execute
*/
public abstract void executeCommand(Command command);
/**
* Places an item in the worksheet header
*
* @param item The item to add
* @param colspan The number of columns to span
*/
public abstract void addWorksheetHeader(WorksheetItem item, int colspan);
/**
* Places an item in the worksheet footer
*
* @param item The item to add
* @param colspan The number of columns to span
*/
public abstract void addWorksheetFooter(WorksheetItem item, int colspan);
/**
* Sets stylesheets for the workbook
*
* @param stylesheets The stylesheets to set
*/
public abstract void setStylesheets(List<UILink> stylesheets);
}