/* * This is part of Geomajas, a GIS framework, http://www.geomajas.org/. * * Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium. * * The program is available in open source according to the GNU Affero * General Public License. All contributions in this program are covered * by the Geomajas Contributors License Agreement. For full licensing * details, see LICENSE.txt in the project root. */ package org.geomajas.widget.searchandfilter.client.widget.configuredsearch; import com.google.gwt.core.client.GWT; import org.geomajas.gwt.client.widget.MapWidget; import org.geomajas.widget.searchandfilter.client.SearchAndFilterMessages; import org.geomajas.widget.searchandfilter.client.widget.search.DockableWindowSearchWidget; import org.geomajas.widget.searchandfilter.client.widget.search.SearchWidget; import org.geomajas.widget.searchandfilter.client.widget.search.SearchWidgetCreator; import org.geomajas.widget.searchandfilter.search.dto.ConfiguredSearch; /** * Creator (or factory) pattern for constructing {@link ConfiguredSearchPanel} object. * By default, they are created in a {@link DockableWindowConfiguredSearchWidget} window. * * @author Jan Venstermans */ public class ConfiguredSearchCreator implements SearchWidgetCreator { public static final String IDENTIFIER = "ConfiguredSearch"; private final SearchAndFilterMessages messages = GWT.create(SearchAndFilterMessages.class); public ConfiguredSearchCreator() { } public String getSearchWidgetId() { return IDENTIFIER; } public String getSearchWidgetName() { return messages.configuredSearchWidgetTitle(); } public SearchWidget createInstance(MapWidget mapWidget) { return new DockableWindowConfiguredSearchWidget(IDENTIFIER, getSearchWidgetName(), new ConfiguredSearchPanel(mapWidget)); } /** * Extention of {@link DockableWindowSearchWidget} for passing searchConfig. */ public class DockableWindowConfiguredSearchWidget extends DockableWindowSearchWidget { private ConfiguredSearchPanel configuredSearchPanel; /** * @param widgetId needed to find the widget in the SearchWidgetRegistry. * @param name name of the widget to show in window title and on buttons. * @param configuredSearchPanel */ public DockableWindowConfiguredSearchWidget(String widgetId, String name, ConfiguredSearchPanel configuredSearchPanel) { super(widgetId, name, configuredSearchPanel); this.configuredSearchPanel = configuredSearchPanel; } public void setSearchConfig(ConfiguredSearch searchConfig, String layerId) { configuredSearchPanel.setSearchConfig(searchConfig, layerId); setTitle(searchConfig.getTitleInWindow()); } } }