/** * */ package org.nightlabs.jfire.issuetracking.trade.ui.store.issuelink; 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.store.ReceptionNote; import org.nightlabs.jfire.trade.ui.overview.receptionnote.ReceptionNoteEntryFactory; import org.nightlabs.jfire.trade.ui.overview.receptionnote.ReceptionNoteEntryViewer; import org.nightlabs.progress.ProgressMonitor; /** * @author Chairat Kongarayawetchakun - chairat at nightlabs dot de * */ public class IssueLinkAdderReceptionNote extends AbstractIssueLinkAdder { private ReceptionNoteEntryViewer rViewer; @Override protected Composite doCreateComposite(Composite parent) { rViewer = new ReceptionNoteEntryViewer(new ReceptionNoteEntryFactory().createEntry()) { @Override protected void addResultTableListeners(AbstractTableComposite<ReceptionNote> tableComposite) { tableComposite.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent evt) { notifyIssueLinkDoubleClickListeners(); } }); tableComposite.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent e) { fireSelectionChangedEvent(); } }); } }; rViewer.setErrorMessageDisplayer(getErrorMessageDisplayer()); rViewer.createComposite(parent); return rViewer.getComposite(); } @Override protected void doSearch() { rViewer.search(); } public Set<ObjectID> getLinkedObjectIDs() { Set<ObjectID> result = new HashSet<ObjectID>(); for(Object o : rViewer.getListComposite().getSelectedElements()) { result.add((ObjectID)JDOHelper.getObjectId(o)); } return result; } public boolean isComplete() { if (rViewer == null) return false; return !rViewer.getListComposite().getSelectedElements().isEmpty(); } @Override public Set<IssueLink> createIssueLinks( Issue issue, IssueLinkType issueLinkType, ProgressMonitor monitor) { Set<IssueLink> issueLinks = new HashSet<IssueLink>(); for (ReceptionNote linkedReceptionNote : rViewer.getListComposite().getSelectedElements()) { issueLinks.add(issue.createIssueLink(issueLinkType, (ObjectID)JDOHelper.getObjectId(linkedReceptionNote), ReceptionNote.class)); } return issueLinks; } }