package org.nightlabs.jfire.trade.ui.store.search;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.nightlabs.jdo.query.QueryEvent;
import org.nightlabs.jdo.query.QueryProvider;
import org.nightlabs.jdo.query.AbstractSearchQuery.FieldChangeCarrier;
import org.nightlabs.jfire.base.ui.search.AbstractQueryFilterComposite;
import org.nightlabs.jfire.store.search.AbstractProductTypeQuery;
import org.nightlabs.jfire.trade.ui.resource.Messages;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
* @author Marius Heinzmann - marius[at]nightlabs[dot]com
*/
public class ProductTypeSearchCriteriaComposite<Q extends AbstractProductTypeQuery>
extends AbstractQueryFilterComposite<Q>
{
// private ActiveTextComposite ownerComp;
// private ActiveTextComposite productTypeGroupComp;
private Class<Q> queryClass;
private ProductTypeRelatedQueryStateTable stateTable;
/**
* @param parent
* @param style
*/
public ProductTypeSearchCriteriaComposite(Composite parent, int style,
QueryProvider<? super Q> queryProvider, Class<Q> queryClass)
{
super(parent, style, queryProvider);
this.queryClass = queryClass;
createComposite();
}
/**
* @param parent
* @param style
* @param layoutMode
* @param layoutDataMode
*/
public ProductTypeSearchCriteriaComposite(Composite parent, int style,
LayoutMode layoutMode, LayoutDataMode layoutDataMode,
QueryProvider<? super Q> queryProvider, Class<Q> queryClass)
{
super(parent, style, layoutMode, layoutDataMode, queryProvider);
this.queryClass = queryClass;
createComposite();
}
@Override
protected void createComposite()
{
setLayout(new GridLayout(2, true));
// ownerComp = new ActiveTextComposite(this, Messages.getString("org.nightlabs.jfire.trade.ui.store.search.ProductTypeSearchCriteriaComposite.ownerGroup.text"), //$NON-NLS-1$
// ownerActiveListener, ownerBrowseListener);
// productTypeGroupComp = new ActiveTextComposite(this, Messages.getString("org.nightlabs.jfire.trade.ui.store.search.ProductTypeSearchCriteriaComposite.productTypeGroupGroup.text"), //$NON-NLS-1$
// productTypeGroupActiveListener, productTypeGroupBrowseListener);
Group statesGroup = new Group(this, SWT.NONE);
statesGroup.setText(Messages.getString("org.nightlabs.jfire.trade.ui.store.search.ProductTypeSearchCriteriaComposite.group.productTypeStates.text")); //$NON-NLS-1$
statesGroup.setLayout(new GridLayout());
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
gd.horizontalSpan = 2;
statesGroup.setLayoutData(gd);
stateTable = new ProductTypeRelatedQueryStateTable(statesGroup, SWT.NONE);
stateTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
stateTable.setInput(getQuery());
}
// private ButtonSelectionListener ownerActiveListener = new ButtonSelectionListener() {
// @Override
// protected void handleSelection(boolean active)
// {
// getQuery().setOwnerID(active ? selectedOwnerID : null);
// ownerComp.setActive(active);
// }
// };
//
// private SelectionListener ownerBrowseListener = new SelectionAdapter() {
// @Override
// public void widgetSelected(SelectionEvent e) {
// LegalEntity legalEntity = LegalEntitySearchCreateWizard.open("", false); //$NON-NLS-1$
// if (legalEntity != null) {
// selectedOwnerID = (AnchorID) JDOHelper.getObjectId(legalEntity);
// ownerComp.setText(legalEntity.getPerson().getDisplayName());
// getQuery().setOwnerID(selectedOwnerID);
// }
// }
// };
//
// private ButtonSelectionListener productTypeGroupActiveListener = new ButtonSelectionListener() {
// @Override
// protected void handleSelection(boolean active)
// {
// getQuery().setProductTypeGroupID(active ? selectedProductTypeGroupID : null);
// productTypeGroupComp.setActive(active);
// }
// };
//
// private SelectionListener productTypeGroupBrowseListener = new SelectionAdapter() {
// @Override
// public void widgetSelected(SelectionEvent e) {
// // TODO: Implement ProductTypeGroupSearch
// }
// };
//
// private AnchorID selectedOwnerID = null;
// public AnchorID getSelectedOwnerID() {
// return selectedOwnerID;
// }
//
// private ProductTypeGroupID selectedProductTypeGroupID = null;
// public ProductTypeGroupID getSelectedProductTypeGroupID() {
// return selectedProductTypeGroupID;
// }
private static final String ProductType_Group_ID = "ProductTypeSearchCriteriaComposite"; //$NON-NLS-1$
private static final Set<String> fieldNames;
static
{
fieldNames = new HashSet<String>();
fieldNames.add(AbstractProductTypeQuery.FieldName.ownerID);
fieldNames.add(AbstractProductTypeQuery.FieldName.productTypeGroupID);
fieldNames.add(AbstractProductTypeQuery.FieldName.closed);
fieldNames.add(AbstractProductTypeQuery.FieldName.confirmed);
fieldNames.add(AbstractProductTypeQuery.FieldName.published);
fieldNames.add(AbstractProductTypeQuery.FieldName.saleable);
}
@Override
protected Set<String> getFieldNames()
{
return fieldNames;
}
@Override
protected String getGroupID()
{
return ProductType_Group_ID;
}
/* (non-Javadoc)
* @see org.nightlabs.jfire.base.ui.overview.search.AbstractQueryFilterComposite#updateUI(org.nightlabs.jdo.query.QueryEvent)
*/
@Override
protected void updateUI(QueryEvent event, List<FieldChangeCarrier> changedFields)
{
// // there is a new Query -> the changedFieldList is not null!
// for (FieldChangeCarrier changedField : event.getChangedFields())
// {
// final String changedPropName = changedField.getPropertyName();
// if (AbstractProductTypeQuery.FieldName.ownerID.equals(changedPropName))
// {
// AnchorID ownerID = (AnchorID) changedField.getNewValue();
// if (ownerID == null) {
// ownerComp.clear();
// }
// else {
// final LegalEntity legalEntity = LegalEntityDAO.sharedInstance().getLegalEntity(
// ownerID,
// new String[] {LegalEntity.FETCH_GROUP_PERSON, FetchPlan.DEFAULT},
// NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor()
// );
// ownerComp.setText(legalEntity.getPerson().getDisplayName());
// }
// }
// else if (getEnableFieldName(AbstractProductTypeQuery.FieldName.ownerID).equals(
// changedPropName))
// {
// final Boolean active = (Boolean) changedField.getNewValue();
// ownerComp.setActive(active);
// setSearchSectionActive(ownerComp.getActiveButton(), active);
// }
// else if (AbstractProductTypeQuery.FieldName.productTypeGroupID.equals(changedPropName))
// {
// ProductTypeGroupID productTypeGroupID = (ProductTypeGroupID) changedField.getNewValue();
// if (productTypeGroupID == null) {
// productTypeGroupComp.clear();
// }
// else {
// ProductTypeGroup productTypeGroup = ProductTypeGroupDAO.sharedInstance().getProductTypeGroup(
// productTypeGroupID, new String[] {ProductTypeGroup.FETCH_GROUP_NAME},
// NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor());
// productTypeGroupComp.setText(productTypeGroup.getName().getText());
// }
// }
// else if (getEnableFieldName(AbstractProductTypeQuery.FieldName.productTypeGroupID).equals(changedPropName))
// {
// final Boolean active = (Boolean) changedField.getNewValue();
// productTypeGroupComp.setActive(active);
// setSearchSectionActive(productTypeGroupComp.getActiveButton(), active);
// }
// }
}
/* (non-Javadoc)
* @see org.nightlabs.jfire.base.ui.overview.search.AbstractQueryFilterComposite#getQueryClass()
*/
@Override
public Class<Q> getQueryClass() {
return queryClass;
}
}