/* * 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.layer.client.view.wizard; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.ui.Widget; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.SelectionStyle; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.layout.VLayout; import org.geomajas.gwt2.plugin.wms.client.capabilities.WmsLayerInfo; import org.geomajas.widget.layer.client.i18n.LayerMessages; import org.geomajas.widget.layer.client.presenter.CreateClientWmsPresenter; import java.util.List; /** * @author Jan Venstermans */ public class SelectLayerViewImpl implements CreateClientWmsPresenter.SelectLayerView { protected static final LayerMessages MESSAGES = GWT.create(LayerMessages.class); /* grid fields */ private static final String FLD_NAME = "name"; private static final String FLD_DESC = "description"; private static final String FLD_LAYER = "layer"; private CreateClientWmsPresenter.SelectLayerHandler handler; private VLayout layout; private ListGrid grid; public SelectLayerViewImpl() { buildGui(); } private void buildGui() { grid = new ListGrid(); grid.setWidth100(); grid.setHeight("*"); grid.setSelectionType(SelectionStyle.SINGLE); grid.setShowAllRecords(true); ListGridField nameFld = new ListGridField(FLD_NAME, MESSAGES.layerListClientWmsWizardStepSelectLayerGridName()); nameFld.setType(ListGridFieldType.TEXT); nameFld.setWidth("*"); ListGridField descFld = new ListGridField(FLD_DESC, MESSAGES.layerListClientWmsWizardStepSelectLayerGridDescription()); descFld.setType(ListGridFieldType.TEXT); descFld.setWidth("*"); grid.setFields(nameFld, descFld); grid.setCanResizeFields(true); layout = new VLayout(); layout.setWidth100(); layout.setHeight100(); layout.addMember(grid); } @Override public Widget getWidget() { return layout; } @Override public String getTitle() { return MESSAGES.layerListClientWmsWizardStepSelectLayerWindowTitle(); } @Override public boolean isValid() { return grid.getSelectedRecords().length == 1; } @Override public String getInvalidMessage() { return MESSAGES.layerListClientWmsWizardStepSelectLayerInvalidMessage(); } @Override public void clear() { grid.clear(); } @Override public void sendDataToHandler() { handler.onFinishStepSelectLayer((WmsLayerInfo) grid.getSelectedRecord().getAttributeAsObject(FLD_LAYER)); } @Override public void setSelectLayerFromCapabilitiesHandler( CreateClientWmsPresenter.SelectLayerHandler handler) { this.handler = handler; } @Override public void setWmsLayersData(List<WmsLayerInfo> wmsLayersData) { grid.deselectAllRecords(); grid.setData(new ListGridRecord[]{}); for (WmsLayerInfo layerInfo : wmsLayersData) { ListGridRecord lgr = new ListGridRecord(); lgr.setAttribute(FLD_NAME, layerInfo.getName()); lgr.setAttribute(FLD_DESC, layerInfo.getTitle()); lgr.setAttribute(FLD_LAYER, layerInfo); grid.addData(lgr); } } }