package org.nightlabs.jfire.trade.ui.transfer.deliver;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.jdo.JDOHelper;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.composite.XComposite.LayoutDataMode;
import org.nightlabs.base.ui.composite.XComposite.LayoutMode;
import org.nightlabs.base.ui.wizard.WizardHopPage;
import org.nightlabs.config.Config;
import org.nightlabs.jfire.store.deliver.DeliveryQueue;
import org.nightlabs.jfire.store.deliver.id.DeliveryQueueID;
import org.nightlabs.jfire.trade.ui.resource.Messages;
class SelectTargetDeliveryQueueWizardPage
extends WizardHopPage
{
// private XComboComposite<DeliveryQueue> queueCombo;
private DeliveryQueueSelectionTable queueTable;
private List<DeliveryQueue> visibleDeliveryQueues;
public SelectTargetDeliveryQueueWizardPage(List<DeliveryQueue> visibleDeliveryQueues) {
super(SelectTargetDeliveryQueueWizardPage.class.getName(), Messages.getString("org.nightlabs.jfire.trade.ui.transfer.deliver.SelectTargetDeliveryQueueWizardPage.title")); //$NON-NLS-1$
setDescription(Messages.getString("org.nightlabs.jfire.trade.ui.transfer.deliver.SelectTargetDeliveryQueueWizardPage.description")); //$NON-NLS-1$
this.visibleDeliveryQueues = visibleDeliveryQueues;
}
@Override
public Control createPageContents(Composite parent) {
XComposite comp = new XComposite(parent, SWT.NONE, LayoutMode.TIGHT_WRAPPER, LayoutDataMode.GRID_DATA);
Label lbl = new Label(comp, SWT.WRAP);
XComposite.setLayoutDataMode(LayoutDataMode.GRID_DATA_HORIZONTAL, lbl);
lbl.setText(Messages.getString("org.nightlabs.jfire.trade.ui.transfer.deliver.SelectTargetDeliveryQueueWizardPage.label")); //$NON-NLS-1$
queueTable = new DeliveryQueueSelectionTable(comp);
Collections.sort(visibleDeliveryQueues, new Comparator<DeliveryQueue>() {
@Override
public int compare(DeliveryQueue o1, DeliveryQueue o2) {
return o1.getName().getText().compareTo(o2.getName().getText());
}
});
queueTable.setInput(visibleDeliveryQueues);
final DeliveryQueueConfigModule configModule = Config.sharedInstance().createConfigModule(DeliveryQueueConfigModule.class);
queueTable.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent arg0) {
getContainer().updateButtons();
configModule.setLastUsedDeliveryQueueId((DeliveryQueueID) JDOHelper.getObjectId(queueTable.getFirstSelectedElement()));
}
});
DeliveryQueue lastSelectedDeliveryQueue = null;
for (DeliveryQueue dq : visibleDeliveryQueues) {
if (dq.getObjectID().equals(configModule.getLastUsedDeliveryQueueId()))
lastSelectedDeliveryQueue = dq;
}
if (lastSelectedDeliveryQueue != null)
queueTable.setSelectedElements(Collections.singleton(lastSelectedDeliveryQueue));
return comp;
}
DeliveryQueue getSelectedDeliveryQueue() {
return queueTable.getFirstSelectedElement();
}
@Override
public boolean isPageComplete() {
return !(queueTable == null || queueTable.getFirstSelectedElement() == null);
}
@Override
public void onNext() {
super.onNext();
}
@Override
public void onFinish() {
super.onFinish();
onNext();
}
}