package org.nightlabs.jfire.trade.ui.history;
import javax.jdo.FetchPlan;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.nightlabs.base.ui.layout.WeightedTableLayout;
import org.nightlabs.base.ui.table.AbstractTableComposite;
import org.nightlabs.base.ui.table.TableContentProvider;
import org.nightlabs.base.ui.table.TableLabelProvider;
import org.nightlabs.jfire.accounting.Invoice;
import org.nightlabs.jfire.accounting.pay.ModeOfPaymentFlavour;
import org.nightlabs.jfire.accounting.pay.Payment;
import org.nightlabs.jfire.security.User;
import org.nightlabs.jfire.store.DeliveryNote;
import org.nightlabs.jfire.store.deliver.ModeOfDeliveryFlavour;
import org.nightlabs.jfire.trade.ArticleContainerUtil;
import org.nightlabs.jfire.trade.LegalEntity;
import org.nightlabs.jfire.trade.Offer;
import org.nightlabs.jfire.trade.Order;
import org.nightlabs.jfire.trade.history.ProductHistoryItem;
import org.nightlabs.jfire.trade.history.ProductHistoryItem.ProductHistoryItemType;
import org.nightlabs.jfire.trade.ui.resource.Messages;
import org.nightlabs.l10n.DateFormatter;
import org.nightlabs.l10n.IDateFormatter;
/**
* @author Daniel Mazurek - daniel [at] nightlabs [dot] de
*
*/
public class ProductHistoryTable
extends AbstractTableComposite<ProductHistoryItem>
{
public static final String[] FETCH_GROUPS_PRODUCT_HISTORY = new String[] {
FetchPlan.DEFAULT,
User.FETCH_GROUP_PERSON,
// Person.FETCH_GROUP_FULL_DATA,
Offer.FETCH_GROUP_CREATE_USER,
Order.FETCH_GROUP_CREATE_USER,
Invoice.FETCH_GROUP_CREATE_USER,
DeliveryNote.FETCH_GROUP_CREATE_USER,
Offer.FETCH_GROUP_CUSTOMER,
Order.FETCH_GROUP_CUSTOMER,
Invoice.FETCH_GROUP_CUSTOMER,
DeliveryNote.FETCH_GROUP_CUSTOMER,
ModeOfDeliveryFlavour.FETCH_GROUP_NAME,
ModeOfPaymentFlavour.FETCH_GROUP_NAME,
LegalEntity.FETCH_GROUP_PERSON,
Payment.FETCH_GROUP_MODE_OF_PAYMENT_FLAVOUR,
Payment.FETCH_GROUP_USER,
ModeOfDeliveryFlavour.FETCH_GROUP_NAME,
ModeOfPaymentFlavour.FETCH_GROUP_NAME,
};
class ProductHistoryTableLabelProvider
extends TableLabelProvider
{
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
@Override
public String getColumnText(final Object element, final int index)
{
if (element != null && element instanceof ProductHistoryItem)
{
final ProductHistoryItem item = (ProductHistoryItem) element;
switch (index) {
// createDT
case 0:
return DateFormatter.formatDate(item.getCreateDT(), IDateFormatter.FLAGS_DATE_SHORT_TIME_HMS);
// user
case 1:
return item.getUser().getName();
// type
case 2:
final ProductHistoryItemType type = item.getType();
switch (type) {
case ALLOCATION:
return Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.allocation"); //$NON-NLS-1$
case DELIVERY:
return Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.delivery"); //$NON-NLS-1$
case DELIVERY_NOTE:
return Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.deliveryNote"); //$NON-NLS-1$
case INVOICE:
return Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.invoice"); //$NON-NLS-1$
case OFFER:
return Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.offer"); //$NON-NLS-1$
case PAYMENT:
return Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.payment"); //$NON-NLS-1$
default:
return ""; //$NON-NLS-1$
}
// name
case 3:
return item.getName();
// id
case 4:
// return item.getArticleContainer().getArticleContainerIDAsString();
final String id = ArticleContainerUtil.getArticleContainerID(item.getArticleContainer());
return id != null ? id : ""; //$NON-NLS-1$
// payment
case 5:
final ModeOfPaymentFlavour paymentFlavour = item.getModeOfPaymentFlavour();
if (paymentFlavour != null) {
return paymentFlavour.getName().getText();
}
return ""; //$NON-NLS-1$
// delivery
case 6:
final ModeOfDeliveryFlavour deliveryFlavour = item.getModeOfDeliveryFlavour();
if (deliveryFlavour != null) {
return deliveryFlavour.getName().getText();
}
return ""; //$NON-NLS-1$
// customer
case 7:
return item.getCustomer().getPerson().getDisplayName();
}
}
return null;
}
}
/**
* @param parent
* @param style
*/
public ProductHistoryTable(final Composite parent, final int style) {
super(parent, style);
}
/**
* @param parent
* @param style
* @param initTable
*/
public ProductHistoryTable(final Composite parent, final int style, final boolean initTable) {
super(parent, style, initTable);
}
/**
* @param parent
* @param style
* @param initTable
* @param viewerStyle
*/
public ProductHistoryTable(final Composite parent, final int style, final boolean initTable,
final int viewerStyle) {
super(parent, style, initTable, viewerStyle);
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.table.AbstractTableComposite#createTableColumns(org.eclipse.jface.viewers.TableViewer, org.eclipse.swt.widgets.Table)
*/
@Override
protected void createTableColumns(final TableViewer tableViewer, final Table table)
{
final TableColumn createDTColumn = new TableColumn(table, SWT.LEFT);
createDTColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.createDate.text")); //$NON-NLS-1$
createDTColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.createDate.tooltip")); //$NON-NLS-1$
final TableColumn userColumn = new TableColumn(table, SWT.LEFT);
userColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.user.text")); //$NON-NLS-1$
userColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.user.tooltip")); //$NON-NLS-1$
final TableColumn historyTypeColumn = new TableColumn(table, SWT.LEFT);
historyTypeColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.type.text")); //$NON-NLS-1$
historyTypeColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.type.tooltip")); //$NON-NLS-1$
final TableColumn nameColumn = new TableColumn(table, SWT.LEFT);
nameColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.name.text")); //$NON-NLS-1$
nameColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.name.tooltip")); //$NON-NLS-1$
final TableColumn articleContainerIDColumn = new TableColumn(table, SWT.LEFT);
articleContainerIDColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.id.text")); //$NON-NLS-1$
articleContainerIDColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.id.tooltip")); //$NON-NLS-1$
final TableColumn paymentColumn = new TableColumn(table, SWT.LEFT);
paymentColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.payment.text")); //$NON-NLS-1$
paymentColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.payment.tooltip")); //$NON-NLS-1$
final TableColumn deliveryColumn = new TableColumn(table, SWT.LEFT);
deliveryColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.delivery.text")); //$NON-NLS-1$
deliveryColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.delivery.tooltip")); //$NON-NLS-1$
final TableColumn customerColumn = new TableColumn(table, SWT.LEFT);
customerColumn.setText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.customer.text")); //$NON-NLS-1$
customerColumn.setToolTipText(Messages.getString("org.nightlabs.jfire.trade.ui.history.ProductHistoryTable.column.customer.tooltip")); //$NON-NLS-1$
final WeightedTableLayout layout = new WeightedTableLayout(new int [] {20, 15, 15, 15, 20, 20, 20, 40});
table.setLayout(layout);
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.table.AbstractTableComposite#setTableProvider(org.eclipse.jface.viewers.TableViewer)
*/
@Override
protected void setTableProvider(final TableViewer tableViewer) {
tableViewer.setContentProvider(new TableContentProvider());
tableViewer.setLabelProvider(new ProductHistoryTableLabelProvider());
}
}