package org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.deliverydate;
import java.util.Collection;
import javax.jdo.FetchPlan;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.nightlabs.base.ui.job.Job;
import org.nightlabs.eclipse.ui.dialog.ResizableTitleAreaDialog;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.base.JFireEjb3Factory;
import org.nightlabs.jfire.base.login.ui.Login;
import org.nightlabs.jfire.trade.Article;
import org.nightlabs.jfire.trade.TradeManagerRemote;
import org.nightlabs.jfire.trade.deliverydate.ArticleDeliveryDateCarrier;
import org.nightlabs.jfire.trade.deliverydate.DeliveryDateMode;
import org.nightlabs.jfire.trade.ui.resource.Messages;
import org.nightlabs.progress.ProgressMonitor;
/**
* @author Daniel Mazurek - daniel [at] nightlabs [dot] de
*
*/
public class EditDeliveryDateDialog
extends ResizableTitleAreaDialog
{
private EditDeliveryDateComposite deliveryDateComposite;
private Collection<Article> articles;
private DeliveryDateMode mode;
public EditDeliveryDateDialog(Shell shell, Collection<Article> articles, DeliveryDateMode mode) {
super(shell, null);
if (articles == null)
throw new IllegalArgumentException("Param articles must notbe null"); //$NON-NLS-1$
this.articles = articles;
this.mode = mode;
}
@Override
protected Control createDialogArea(Composite parent)
{
getShell().setText(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.deliverydate.EditDeliveryDateDialog.window.title")); //$NON-NLS-1$
setTitle(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.deliverydate.EditDeliveryDateDialog.dialog.title")); //$NON-NLS-1$
setMessage(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.deliverydate.EditDeliveryDateDialog.dialog.message")); //$NON-NLS-1$
deliveryDateComposite = new EditDeliveryDateComposite(parent, SWT.NONE, mode);
deliveryDateComposite.setArticles(articles, mode);
return deliveryDateComposite;
}
@Override
protected void okPressed()
{
Job job = new Job(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.deliverydate.EditDeliveryDateDialog.job.assignDeliveryDates.name")) { //$NON-NLS-1$
/* (non-Javadoc)
* @see org.nightlabs.base.ui.job.Job#run(org.nightlabs.progress.ProgressMonitor)
*/
@Override
protected IStatus run(ProgressMonitor monitor) throws Exception
{
monitor.beginTask(Messages.getString("org.nightlabs.jfire.trade.ui.articlecontainer.detail.action.deliverydate.EditDeliveryDateDialog.task.assignDeliveryDates.name"), 200); //$NON-NLS-1$
TradeManagerRemote tm = JFireEjb3Factory.getRemoteBean(TradeManagerRemote.class,
Login.getLogin().getInitialContextProperties());
Collection<ArticleDeliveryDateCarrier> articleDeliveryDateCarriers =
deliveryDateComposite.getArticleDeliveryDateCarriers();
tm.assignDeliveryDate(articleDeliveryDateCarriers,
false, new String[] {FetchPlan.DEFAULT}, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT);
monitor.done();
return Status.OK_STATUS;
}
};
job.schedule();
super.okPressed();
}
}