/**
*
*/
package org.nightlabs.jfire.issuetracking.trade.ui.accounting.issuelink;
import java.util.Collection;
import java.util.Set;
import javax.jdo.FetchPlan;
import org.eclipse.swt.graphics.Image;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.accounting.Invoice;
import org.nightlabs.jfire.accounting.dao.InvoiceDAO;
import org.nightlabs.jfire.accounting.id.InvoiceID;
import org.nightlabs.jfire.issue.IssueLink;
import org.nightlabs.jfire.issuetracking.trade.ui.IssueTrackingTradePlugin;
import org.nightlabs.jfire.issuetracking.trade.ui.resource.Messages;
import org.nightlabs.jfire.issuetracking.trade.ui.store.issuelink.IssueLinkHandlerDeliveryNote;
import org.nightlabs.jfire.issuetracking.ui.issuelink.AbstractIssueLinkHandler;
import org.nightlabs.jfire.trade.ArticleContainerUtil;
import org.nightlabs.jfire.trade.ui.overview.invoice.action.EditInvoiceAction;
import org.nightlabs.l10n.GlobalDateFormatter;
import org.nightlabs.l10n.IDateFormatter;
import org.nightlabs.progress.ProgressMonitor;
/**
* @author chairatk
*
*/
public class IssueLinkHandlerInvoice
extends AbstractIssueLinkHandler<InvoiceID, Invoice>
{
@Override
public String getLinkedObjectName(IssueLink issueLink, Invoice invoice) {
// TODO Here we should return more information about the invoice - e.g. vendor, customer
// return String.format(
// Messages.getString("org.nightlabs.jfire.issuetracking.trade.ui.accounting.issuelink.IssueLinkHandlerInvoice.invoice.name"), //$NON-NLS-1$
// invoice.getPrimaryKey(),
// invoice.getFinalizeDT());
return String.format(
Messages.getString("org.nightlabs.jfire.issuetracking.trade.ui.accounting.issuelink.IssueLinkHandlerInvoice.invoice.name"), //$NON-NLS-1$
ArticleContainerUtil.getArticleContainerID(invoice),
GlobalDateFormatter.sharedInstance().formatDate(invoice.getFinalizeDT(), IDateFormatter.FLAGS_DATE_SHORT));
}
@Override
public Image getLinkedObjectImage(IssueLink issueLink, Invoice linkedObject) {
return SharedImages.getSharedImageDescriptor(
IssueTrackingTradePlugin.getDefault(),
IssueLinkHandlerDeliveryNote.class,
"LinkedObject").createImage(); //$NON-NLS-1$
}
@Override
public void openLinkedObject(IssueLink issueLink, InvoiceID objectID) {
EditInvoiceAction editAction = new EditInvoiceAction();
editAction.setArticleContainerID(objectID);
editAction.run();
}
@Override
protected Collection<Invoice> _getLinkedObjects(
Set<IssueLink> issueLinks, Set<InvoiceID> linkedObjectIDs,
ProgressMonitor monitor)
{
return InvoiceDAO.sharedInstance().getInvoices(
linkedObjectIDs,
new String[] { FetchPlan.DEFAULT }, // TODO do we need more?
NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
monitor);
}
}