package org.nightlabs.jfire.voucher.ui.articlecontainer.detail; import java.util.Collection; import javax.jdo.JDOHelper; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.nightlabs.base.ui.composite.FadeableComposite; import org.nightlabs.base.ui.composite.QuantitySelector; import org.nightlabs.base.ui.job.FadeableCompositeJob; import org.nightlabs.base.ui.job.Job; import org.nightlabs.jfire.store.ProductType; import org.nightlabs.jfire.store.id.ProductTypeID; import org.nightlabs.jfire.trade.Article; import org.nightlabs.jfire.trade.Offer; import org.nightlabs.jfire.trade.Segment; import org.nightlabs.jfire.trade.id.OfferID; import org.nightlabs.jfire.trade.id.SegmentID; import org.nightlabs.jfire.trade.ui.articlecontainer.detail.SegmentEdit; import org.nightlabs.jfire.voucher.ui.resource.Messages; import org.nightlabs.progress.ProgressMonitor; import org.nightlabs.util.NLLocale; public class ArticleAdderComposite extends FadeableComposite { private ArticleAdder articleAdder; private Label productTypeNameLabel; @SuppressWarnings("unused") private QuantitySelector quantitySelector; public ArticleAdderComposite(Composite parent, ArticleAdder articleAdder) { super(parent, SWT.NONE); this.articleAdder = articleAdder; productTypeNameLabel = new Label(this, SWT.NONE); productTypeNameLabel.setLayoutData(new GridData()); productTypeNameLabel.setText( articleAdder.getProductType().getName().getText(NLLocale.getDefault().getLanguage())); quantitySelector = new QuantitySelector(this) { @Override protected void quantitySelected(int qty) { qtySelected(qty); } @Override protected void relayout() { ArticleAdderComposite.this.layout(true, true); } }; this.getGridLayout().numColumns = this.getChildren().length; ((GridData)productTypeNameLabel.getLayoutData()).horizontalSpan = this.getGridLayout().numColumns; } private void qtySelected(final int qty) { Job addJob = new FadeableCompositeJob(Messages.getString("org.nightlabs.jfire.voucher.ui.articlecontainer.detail.ArticleAdderComposite.addJob.name"), this, this) { //$NON-NLS-1$ @Override protected IStatus run(ProgressMonitor monitor, Object source) throws Exception { SegmentEdit segmentEdit = articleAdder.getSegmentEdit(); OfferID offerID = null; if (segmentEdit.getArticleContainer() instanceof Offer) offerID = (OfferID) JDOHelper.getObjectId(segmentEdit.getArticleContainer()); Segment segment = segmentEdit.getArticleSegmentGroup().getSegment(); SegmentID segmentID = (SegmentID) JDOHelper.getObjectId(segment); ProductType productType = articleAdder.getProductType(); ProductTypeID productTypeID = (ProductTypeID) JDOHelper.getObjectId(productType); Collection<Article> articles = articleAdder.createArticles(segmentID, offerID, productTypeID, qty); segmentEdit.getClientArticleSegmentGroupSet().addArticles(articles); return Status.OK_STATUS; } }; addJob.setPriority(org.eclipse.core.runtime.jobs.Job.SHORT); // addJob.setUser(true); addJob.schedule(); }; }