ValueProviderGUIInvoiceByCustomer.java :  » ERP-CRM-Financial » JFire-1.0.1 » org » nightlabs » jfire » reporting » trade » ui » articlecontainer » invoice » Java Open Source

Java Open Source » ERP CRM Financial » JFire 1.0.1 
JFire 1.0.1 » org » nightlabs » jfire » reporting » trade » ui » articlecontainer » invoice » ValueProviderGUIInvoiceByCustomer.java
package org.nightlabs.jfire.reporting.trade.ui.articlecontainer.invoice;

import java.util.Collection;

import javax.jdo.FetchPlan;
import javax.jdo.JDOHelper;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.nightlabs.base.ui.job.Job;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jdo.query.QueryCollection;
import org.nightlabs.jfire.accounting.Invoice;
import org.nightlabs.jfire.accounting.InvoiceLocal;
import org.nightlabs.jfire.accounting.dao.InvoiceDAO;
import org.nightlabs.jfire.accounting.id.InvoiceID;
import org.nightlabs.jfire.jbpm.graph.def.State;
import org.nightlabs.jfire.jbpm.graph.def.StateDefinition;
import org.nightlabs.jfire.reporting.parameter.config.ValueProviderConfig;
import org.nightlabs.jfire.reporting.parameter.id.ValueProviderID;
import org.nightlabs.jfire.reporting.trade.ReportingTradeConstants;
import org.nightlabs.jfire.reporting.ui.parameter.AbstractValueProviderGUI;
import org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI;
import org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUIFactory;
import org.nightlabs.jfire.trade.LegalEntity;
import org.nightlabs.jfire.trade.query.InvoiceQuery;
import org.nightlabs.jfire.trade.ui.overview.invoice.InvoiceListComposite;
import org.nightlabs.jfire.trade.ui.resource.Messages;
import org.nightlabs.jfire.transfer.id.AnchorID;
import org.nightlabs.progress.ProgressMonitor;

/**
 * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
 *
 */
public class ValueProviderGUIInvoiceByCustomer
extends AbstractValueProviderGUI<InvoiceID>
{
  public static final String[] FETCH_GROUPS_INVOICES = new String[] {
    FetchPlan.DEFAULT,
    Invoice.FETCH_GROUP_THIS_INVOICE,
    State.FETCH_GROUP_STATE_DEFINITION,
    StateDefinition.FETCH_GROUP_NAME,
    LegalEntity.FETCH_GROUP_PERSON,
    InvoiceLocal.FETCH_GROUP_THIS_INVOICE_LOCAL
  };

  public static class Factory implements IValueProviderGUIFactory {

    /* (non-Javadoc)
     * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUIFactory#createValueProviderGUI()
     */
    public IValueProviderGUI<InvoiceID> createValueProviderGUI(ValueProviderConfig valueProviderConfig, boolean isScheduledReportParameterConfig) {
      return new ValueProviderGUIInvoiceByCustomer(valueProviderConfig);
    }

    /* (non-Javadoc)
     * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUIFactory#getValueProviderID()
     */
    public ValueProviderID getValueProviderID() {
      return ReportingTradeConstants.VALUE_PROVIDER_ID_TRADE_DOCUMENTS_INVOICE_BY_CUSTOMER;
    }

    /* (non-Javadoc)
     * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
     */
    public void setInitializationData(IConfigurationElement arg0, String arg1,
        Object arg2) throws CoreException {
    }
  }

  private InvoiceListComposite invoiceListComposite;

  public ValueProviderGUIInvoiceByCustomer(ValueProviderConfig valueProviderConfig) {
    super(valueProviderConfig);
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#createGUI(org.eclipse.swt.widgets.Composite)
   */
  public Control createGUI(Composite wrapper) {
    invoiceListComposite = new InvoiceListComposite(wrapper, SWT.NONE);
    invoiceListComposite.addSelectionChangedListener(new ISelectionChangedListener() {
      public void selectionChanged(SelectionChangedEvent arg0) {
        notifyOutputChanged();
      }
    });
    return invoiceListComposite;
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#getOutputValue()
   */
  public InvoiceID getOutputValue() {
    if (invoiceListComposite.getSelectedElements().size() >= 1)
      return (InvoiceID) JDOHelper.getObjectId(invoiceListComposite.getSelectedElements().iterator().next());
    return null;
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#isAcquisitionComplete()
   */
  public boolean isAcquisitionComplete() {
    return getOutputValue() != null || getValueProviderConfig().isAllowNullOutputValue();
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#setInputParameterValue(java.lang.String, java.lang.Object)
   */
  public void setInputParameterValue(String parameterID, final Object value) {
    Job loadJob = new Job(Messages.getString("org.nightlabs.jfire.trade.ui.overview.invoice.report.ValueProviderGUIInvoiceByCustomer.loadInvoicesJob.name")) { //$NON-NLS-1$
      @Override
      protected IStatus run(ProgressMonitor monitor) {
        InvoiceQuery query = new InvoiceQuery();
        query.setCustomerID((AnchorID) value);
        QueryCollection<InvoiceQuery> qs = new QueryCollection<InvoiceQuery>(Invoice.class);
        qs.add(query);

        final Collection<Invoice> invoices = InvoiceDAO.sharedInstance().getInvoices(
          qs,
          FETCH_GROUPS_INVOICES,
          NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
          monitor);

        Display.getDefault().asyncExec(new Runnable() {
          public void run() {
            invoiceListComposite.setInput(invoices);
          }
        });
        return Status.OK_STATUS;
      }
    };
    loadJob.schedule();
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.