package org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference;
import java.util.List;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.nightlabs.base.ui.composite.ListComposite;
import org.nightlabs.jfire.accounting.Currency;
import org.nightlabs.jfire.accounting.dao.CurrencyDAO;
import org.nightlabs.jfire.trade.admin.ui.resource.Messages;
import org.nightlabs.jfire.trade.ui.currency.CurrencyLabelProvider;
import org.nightlabs.progress.ProgressMonitor;
public class CurrencyComposite extends AbstractCellReferenceComposite{
private Currency selectedCurrency = null;
private ListComposite<Currency> currencyListComposite;
private CellReferencePage cellReferencePage;
public CurrencyComposite(CellReferencePage cellReferencePage, Composite parent) {
super(parent, SWT.None);
this.cellReferencePage = cellReferencePage;
currencyListComposite = new ListComposite<Currency>(this, SWT.SINGLE | SWT.BORDER);
currencyListComposite.setLabelProvider(new CurrencyLabelProvider());
Currency dummy = new Currency(
"dummy", //$NON-NLS-1$
Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CurrencyComposite.name.loadData"), //$NON-NLS-1$
0);
currencyListComposite.addElement(dummy);
org.nightlabs.base.ui.job.Job job = new org.nightlabs.base.ui.job.Job(Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CurrencyComposite.job.loadCurrencies.name")) { //$NON-NLS-1$
@Override
protected IStatus run(ProgressMonitor monitor)
throws Exception
{
final List<Currency> currencies = CurrencyDAO.sharedInstance().getCurrencies(monitor);
Display.getDefault().asyncExec(new Runnable()
{
public void run()
{
if (currencyListComposite.isDisposed())
return;
currencyListComposite.removeAll();
currencyListComposite.addElements(currencies);
}
});
return Status.OK_STATUS;
}
};
job.schedule();
currencyListComposite.addSelectionChangedListener(new ISelectionChangedListener(){
public void selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent arg0) {
Currency c = currencyListComposite.getSelectedElement();
if(c != null){
selectedCurrency = c;
checked(true);
}//if
}
});
}
@Override
protected void createScript(){
StringBuffer scriptBuffer = new StringBuffer();
scriptBuffer.append("CurrencyID.create") //$NON-NLS-1$
.append(CellReferenceWizard.L_BRACKET)
.append(CellReferenceWizard.DOUBLE_QUOTE).append(selectedCurrency.getCurrencyID()).append(CellReferenceWizard.DOUBLE_QUOTE)
.append(CellReferenceWizard.R_BRACKET);
cellReferencePage.setDimensionScript(this.getClass().getName(), scriptBuffer.toString());
}
@Override
protected void doEnable() {
if(selectedCurrency != null)
createScript();
}
@Override
protected void doDisable() {
cellReferencePage.clearDimensionScript(this.getClass().getName());
}
}