package org.nightlabs.jfire.trade.admin.ui.overview;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import javax.jdo.FetchPlan;
import org.eclipse.jface.viewers.ITableLabelProvider;
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.TableLabelProvider;
import org.nightlabs.jfire.accounting.Currency;
import org.nightlabs.jfire.accounting.dao.CurrencyDAO;
import org.nightlabs.jfire.accounting.id.CurrencyID;
import org.nightlabs.jfire.base.jdo.JDOObjectsChangedEvent;
import org.nightlabs.jfire.base.ui.jdo.ActiveJDOObjectController;
import org.nightlabs.jfire.base.ui.jdo.ActiveJDOObjectTableComposite;
import org.nightlabs.jfire.trade.admin.ui.resource.Messages;
import org.nightlabs.progress.ProgressMonitor;
/**
* @author vince
*/
public class CurrencyTable
extends ActiveJDOObjectTableComposite<CurrencyID, Currency>
{
/**
* The fetch groups of issue data.
*/
public static final String[] FETCH_GROUPS = new String[] { FetchPlan.DEFAULT};
private class CurrencyController extends ActiveJDOObjectController<CurrencyID, Currency> {
@Override
protected Class<? extends Currency> getJDOObjectClass() {
return Currency.class;
}
@Override
protected Collection<Currency> retrieveJDOObjects(Set<CurrencyID> objectIDs, ProgressMonitor monitor) {
return CurrencyDAO.sharedInstance().getCurrencies(objectIDs, monitor);
}
@Override
protected Collection<Currency> retrieveJDOObjects(ProgressMonitor monitor) {
return CurrencyDAO.sharedInstance().getCurrencies(monitor);
}
@Override
protected void sortJDOObjects(List<Currency> objects) {
Collections.sort(objects, new Comparator<Currency>() {
@Override
public int compare(Currency o1, Currency o2) {
return o1.getCurrencyID().compareTo(o2.getCurrencyID());
}
});
}
@Override
protected void onJDOObjectsChanged(JDOObjectsChangedEvent<CurrencyID, Currency> event) {
}
}
public CurrencyTable(Composite parent, int style) {
super(parent, style);
load();
}
@Override
protected void createTableColumns(TableViewer tableViewer, Table table) {
new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.overview.CurrencyTable.tablecolumn.currencyId.text")); //$NON-NLS-1$
new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.overview.CurrencyTable.tablecolumn.currencySymbol.text")); //$NON-NLS-1$
table.setLayout(new WeightedTableLayout(new int[]{1,1}));
table.setHeaderVisible(true);
table.setLinesVisible(false);
}
class CurrencyTypeLabelProvider
extends TableLabelProvider
{
public String getColumnText(Object element, int columnIndex)
{
if (element instanceof Currency) {
Currency currencyType = (Currency) element;
switch (columnIndex)
{
case(0):
return currencyType.getCurrencyID();
case(1):
return currencyType.getCurrencySymbol();
default:
return ""; //$NON-NLS-1$
}
}
return null;
}
}
@Override
protected ActiveJDOObjectController<CurrencyID, Currency> createActiveJDOObjectController() {
return new CurrencyController();
}
@Override
protected ITableLabelProvider createLabelProvider() {
return new CurrencyTypeLabelProvider();
}
}