/** * */ package org.nightlabs.jfire.trade.ui.legalentity.search; import org.eclipse.swt.widgets.Composite; import org.nightlabs.jdo.query.ui.search.SearchFilterProvider; import org.nightlabs.jdo.query.ui.search.SearchResultFetcher; import org.nightlabs.jdo.search.SearchFilter; import org.nightlabs.jfire.base.ui.person.search.DynamicPersonSearchFilterProvider; import org.nightlabs.jfire.base.ui.prop.search.PropertySetSearchComposite; import org.nightlabs.jfire.base.ui.prop.search.PropertySetSearchFilterItemListMutator; import org.nightlabs.jfire.base.ui.prop.search.PropertySetSearchFilterProvider; import org.nightlabs.jfire.organisation.Organisation; import org.nightlabs.jfire.person.Person; import org.nightlabs.jfire.prop.Struct; import org.nightlabs.jfire.prop.StructLocal; import org.nightlabs.jfire.prop.id.StructLocalID; import org.nightlabs.jfire.prop.search.PropSearchFilter; import org.nightlabs.jfire.trade.LegalEntity; import org.nightlabs.jfire.trade.config.LegalEntitySearchConfigModule; import org.nightlabs.jfire.trade.query.LegalEntitySearchFilter; import org.nightlabs.jfire.transfer.id.AnchorID; /** * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> * */ public class LegalEntitySearchComposite extends PropertySetSearchComposite<AnchorID, LegalEntity> { /** * @param parent * @param style * @param quickSearchText */ public LegalEntitySearchComposite(Composite parent, int style, String quickSearchText) { super(parent, style, quickSearchText, LegalEntitySearchConfigModule.class, PersonSearchUseCaseConstants.USE_CASE_ID_LEGALENTITY_SEARCH); createSearchButton(getButtonBar()); } /** * {@inheritDoc} * <p> * Overrides to create {@link LegalEntitySearchFilter}. * </p> */ @Override protected SearchFilterProvider createStaticSearchFilterProvider(SearchResultFetcher resultFetcher) { SearchFilterProvider provider = new PropertySetSearchFilterProvider(resultFetcher, false, LegalEntitySearchConfigModule.class, getPropertySetSearchUseCase(), getSearchText()) { @Override protected PropSearchFilter createSearchFilter() { return new LegalEntitySearchFilter(SearchFilter.CONJUNCTION_DEFAULT); } }; return provider; } /** * {@inheritDoc} * <p> * Overrides to create {@link LegalEntitySearchFilter}. * </p> */ @Override protected SearchFilterProvider createDynamicSearchFilterProvider( SearchResultFetcher resultFetcher) { SearchFilterProvider provider = new DynamicPersonSearchFilterProvider(new PropertySetSearchFilterItemListMutator( createPersonStructLocalID()), resultFetcher) { @Override protected PropSearchFilter createSearchFilter() { return new LegalEntitySearchFilter(SearchFilter.CONJUNCTION_DEFAULT); } }; return provider; } /** * @return the {@link StructLocalID} that will be used to get the list of StructFields that will * be presented for search in the dynamic filter-provider. */ protected static StructLocalID createPersonStructLocalID() { return StructLocalID.create(Organisation.DEV_ORGANISATION_ID, Person.class, Struct.DEFAULT_SCOPE, StructLocal.DEFAULT_SCOPE); } }