/*
* 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.gwt2.plugin.corewidget.client.map.mapcontrolpanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import org.geomajas.annotation.Api;
import org.geomajas.gwt2.client.map.MapPresenter;
import org.geomajas.gwt2.plugin.corewidget.client.CoreWidget;
import org.geomajas.gwt2.plugin.corewidget.client.map.mapcontrolpanel.resource.MapControlPanelResource;
/**
* Map control panel widget.
*
* Control panel that shows the layers for an entire map. It uses the
* {@link org.geomajas.gwt2.plugin.corewidget.client.map.layercontrolpanel.LayerControlPanel}
* to render all individual layers.
* This widget will keep track of the layers in the map's {@link org.geomajas.gwt2.client.map.layer.LayersModel}.
* If a new layer is added or layer is removed from the map, this widget will change accordingly.
*
* @author Pieter De Graef
* @author Dosi Bingov
*
* @since 2.1.0
*/
@Api(allMethods = true)
public class MapControlPanel implements IsWidget {
private MapControlPanelPresenter presenter;
private MapControlPanelView view;
/**
* Create {@link MapControlPanel} widget.
*
* @param mapPresenter {@link MapPresenter}.
*/
public MapControlPanel(MapPresenter mapPresenter) {
this(CoreWidget.getInstance().getClientBundleFactory().createMapControlPanelResource(), mapPresenter, true);
}
/**
* Create {@link MapControlPanel} widget.
*
* @param mapPresenter {@link MapPresenter}.
* @param disableToggleOutOfRange Should layer visibility toggle control stay enabled when its layer is out
* of range. Default when the layer is out of range visibility toggle control is
* disabled.
*/
public MapControlPanel(MapPresenter mapPresenter, boolean disableToggleOutOfRange) {
this(CoreWidget.getInstance().getClientBundleFactory().createMapControlPanelResource(), mapPresenter,
disableToggleOutOfRange);
}
/**
* Create {@link MapControlPanel} widget.
*
* @param resource GWT client resource bundle
* {@link org.geomajas.gwt2.plugin.corewidget.client.map.mapcontrolpanel.resource.MapControlPanelResource}.
* @param mapPresenter {@link MapPresenter}.
* @param disableToggleOutOfRange Should layer visibility toggle control stay enabled when its layer is out
* of range. Default when the layer is out of range visibility toggle control is
* disabled.
*/
public MapControlPanel(MapControlPanelResource resource, MapPresenter mapPresenter,
boolean disableToggleOutOfRange) {
view = CoreWidget.getInstance().getViewFactory().createMapControlPanel(resource);
presenter = new MapControlPanelPresenterImpl(view, mapPresenter, disableToggleOutOfRange);
view.setPresenter(presenter);
}
/**
* Implementation of {@link com.google.gwt.user.client.ui.IsWidget}.
*
* @return {@link Widget}.
*/
@Override
public Widget asWidget() {
return view.asWidget();
}
}