package org.nightlabs.jfire.issuetracking.trade.ui.issuelink; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.jdo.JDOHelper; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.widgets.Composite; import org.nightlabs.base.ui.table.AbstractTableComposite; import org.nightlabs.jdo.ObjectID; import org.nightlabs.jfire.issue.Issue; import org.nightlabs.jfire.issue.IssueLink; import org.nightlabs.jfire.issue.IssueLinkType; import org.nightlabs.jfire.issuetracking.ui.issuelink.AbstractIssueLinkAdder; import org.nightlabs.jfire.trade.Order; import org.nightlabs.jfire.trade.ui.overview.order.OrderEntryFactory; import org.nightlabs.jfire.trade.ui.overview.order.OrderEntryViewer; import org.nightlabs.progress.ProgressMonitor; /** * @author Chairat Kongarayawetchakun - chairat at nightlabs dot de * */ public class IssueLinkAdderOrder extends AbstractIssueLinkAdder { private OrderEntryViewer oViewer; @Override protected Composite doCreateComposite(Composite parent) { oViewer = new OrderEntryViewer(new OrderEntryFactory().createEntry()) { @Override protected void addResultTableListeners(AbstractTableComposite<Order> tableComposite) { tableComposite.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent evt) { notifyIssueLinkDoubleClickListeners(); } }); tableComposite.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent e) { fireSelectionChangedEvent(); } }); } }; oViewer.setErrorMessageDisplayer(getErrorMessageDisplayer()); oViewer.createComposite(parent); return oViewer.getComposite(); } @Override protected void doSearch() { oViewer.search(); } public Set<ObjectID> getLinkedObjectIDs() { Set<ObjectID> result = new HashSet<ObjectID>(); Collection<Order> elements = oViewer.getListComposite().getSelectedElements(); for(Object o : elements) { result.add((ObjectID)JDOHelper.getObjectId(o)); } return result; } public boolean isComplete() { if (oViewer == null) return false; return !oViewer.getListComposite().getSelectedElements().isEmpty(); } @Override public Set<IssueLink> createIssueLinks( Issue issue, IssueLinkType issueLinkType, ProgressMonitor monitor) { Set<IssueLink> issueLinks = new HashSet<IssueLink>(); for (Order linkedOrder : oViewer.getListComposite().getSelectedElements()) { issueLinks.add( issue.createIssueLink(issueLinkType, (ObjectID)JDOHelper.getObjectId(linkedOrder), Order.class)); } return issueLinks; } }