/* * 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; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.grid.events.CellClickEvent; import com.smartgwt.client.widgets.grid.events.CellClickHandler; import org.geomajas.gwt.client.map.layer.InternalClientWmsLayer; import org.geomajas.gwt.client.map.layer.Layer; import org.geomajas.gwt.client.util.WidgetLayout; import org.geomajas.widget.layer.client.presenter.RemovableLayerListPresenter; import java.util.List; /** * Extension of {@link LayerListGrid} with remove buttons. * * @author Jan Venstermans * */ public class LayerListWithRemoveButtonGrid extends LayerListGrid implements RemovableLayerListPresenter.View { public static final String FLD_DELETE = "fldDelete"; private static final int FLD_DELETE_WIDTH = 50; private RemovableLayerListPresenter.Handler handler; private String removeIconUrl = WidgetLayout.iconRemove; @Override public void setHandler(RemovableLayerListPresenter.Handler handler) { super.setHandler(handler); this.handler = handler; } @Override public void setRemoveIconUrl(String removeIconUrl) { this.removeIconUrl = removeIconUrl; } @Override protected List<ListGridField> createAndGetListGridFields() { List<ListGridField> fields = super.createAndGetListGridFields(); ListGridField deleteFld = new ListGridField(FLD_DELETE, MESSAGES.layerListGridClientWmsColumnDeleteName(), FLD_DELETE_WIDTH); deleteFld.setType(ListGridFieldType.IMAGE); deleteFld.setAlign(Alignment.CENTER); addCellClickHandler(new CellClickHandler() { @Override public void onCellClick(CellClickEvent cellClickEvent) { if (cellClickEvent.getColNum() == getFieldNum(FLD_DELETE)) { Object layer = cellClickEvent.getRecord().getAttributeAsObject(FLD_OBJECT); if (layer instanceof InternalClientWmsLayer) { handler.onRemoveClientWmsLayer((InternalClientWmsLayer) layer); } } } }); fields.add(deleteFld); return fields; } @Override protected ListGridRecord createAndFillListGridRecord(Layer layer) { ListGridRecord record = super.createAndFillListGridRecord(layer); if (layer instanceof InternalClientWmsLayer) { record.setAttribute(FLD_DELETE, removeIconUrl); } return record; } }