ingo@523: package de.intevation.flys.client.client.ui.chart;
ingo@523:
ingo@523: import java.util.List;
ingo@523:
ingo@523: import com.google.gwt.core.client.GWT;
ingo@523:
ingo@523: import com.smartgwt.client.types.ListGridFieldType;
ingo@523: import com.smartgwt.client.widgets.Canvas;
ingo@523: import com.smartgwt.client.widgets.grid.events.EditCompleteEvent;
ingo@523: import com.smartgwt.client.widgets.grid.events.EditCompleteHandler;
ingo@523: import com.smartgwt.client.widgets.grid.ListGrid;
ingo@523: import com.smartgwt.client.widgets.grid.ListGridField;
ingo@523: import com.smartgwt.client.widgets.grid.ListGridRecord;
ingo@523: import com.smartgwt.client.widgets.layout.VLayout;
ingo@523:
ingo@523: import de.intevation.flys.client.shared.model.Collection;
ingo@523: import de.intevation.flys.client.shared.model.Facet;
ingo@523: import de.intevation.flys.client.shared.model.FacetRecord;
ingo@523: import de.intevation.flys.client.shared.model.OutputMode;
ingo@523:
ingo@523: import de.intevation.flys.client.client.FLYSConstants;
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * @author Ingo Weinzierl
ingo@523: */
ingo@523: public class ChartThemePanel extends Canvas implements EditCompleteHandler {
ingo@523:
ingo@523: /** The interface that provides i18n messages. */
ingo@523: private FLYSConstants MSG = GWT.create(FLYSConstants.class);
ingo@523:
ingo@523: public static final String GRID_FIELD_ACTIVE = "active";
ingo@523: public static final String GRID_FIELD_NAME = "name";
ingo@523:
ingo@523:
ingo@523: protected Collection collection;
ingo@523:
ingo@523: protected OutputMode mode;
ingo@523:
ingo@523: protected ListGrid list;
ingo@523:
ingo@523:
ingo@523:
ingo@523: public ChartThemePanel(Collection collection, OutputMode mode) {
ingo@523: this.collection = collection;
ingo@523: this.mode = mode;
ingo@523: this.list = new ListGrid();
ingo@523:
ingo@523: initGrid();
ingo@523: initLayout();
ingo@523:
ingo@523: updateGrid();
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * Initializes the layout of this panel.
ingo@523: */
ingo@523: protected void initLayout() {
ingo@523: setWidth100();
ingo@523: setHeight100();
ingo@523:
ingo@523: VLayout layout = new VLayout();
ingo@523: layout.setWidth100();
ingo@523: layout.setHeight100();
ingo@523:
ingo@523: layout.addMember(list);
ingo@523:
ingo@523: addChild(layout);
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * Initializes the components (columns) of the theme grid.
ingo@523: */
ingo@523: protected void initGrid() {
ingo@523: list.setCanEdit(true);
ingo@523: list.setCanSort(false);
ingo@523: list.setShowRecordComponents(false);
ingo@523: list.setShowRecordComponentsByCell(true);
ingo@523: list.setShowHeader(true);
ingo@523: list.setShowHeaderContextMenu(false);
ingo@523: list.setWidth100();
ingo@523: list.setHeight100();
ingo@523:
ingo@523: list.addEditCompleteHandler(this);
ingo@523:
ingo@523: ListGridField active = new ListGridField(GRID_FIELD_ACTIVE, " ", 20);
ingo@523: active.setType(ListGridFieldType.BOOLEAN);
ingo@523:
ingo@523: ListGridField name = new ListGridField(
ingo@523: GRID_FIELD_NAME, MSG.chart_themepanel_header_themes());
ingo@523: name.setType(ListGridFieldType.TEXT);
ingo@523:
ingo@523: list.setFields(active, name);
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * A method that removes all records from theme grid.
ingo@523: */
ingo@523: protected void clearGrid() {
ingo@523: ListGridRecord[] records = list.getRecords();
ingo@523:
ingo@523: if (records == null || records.length == 0) {
ingo@523: return;
ingo@523: }
ingo@523:
ingo@523: for (ListGridRecord record: records) {
ingo@523: list.removeData(record);
ingo@523: }
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * This method is used to clear the current theme grid and add new updated
ingo@523: * data.
ingo@523: */
ingo@523: protected void updateGrid() {
ingo@523: clearGrid();
ingo@523:
ingo@523: List facets = mode.getFacets();
ingo@523:
ingo@523: for (Facet facet: facets) {
ingo@523: list.addData(new FacetRecord(facet));
ingo@523: }
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * This method is called after a cell in the theme grid has been modified.
ingo@523: *
ingo@523: * @param event The event that stores information about the modified record.
ingo@523: */
ingo@523: public void onEditComplete(EditCompleteEvent event) {
ingo@523: GWT.log("Edited record.");
ingo@523:
ingo@523: int row = event.getRowNum();
ingo@523: FacetRecord rec = (FacetRecord) list.getRecord(row);
ingo@523:
ingo@523: // TODO Save modified facets
ingo@523: }
ingo@523: }
ingo@523: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :