felix@858: package de.intevation.flys.client.client.ui.chart; felix@858: felix@858: import com.google.gwt.core.client.GWT; felix@858: felix@858: import com.smartgwt.client.types.Alignment; felix@858: import com.smartgwt.client.widgets.Canvas; felix@858: import com.google.gwt.user.client.rpc.AsyncCallback; felix@858: import com.smartgwt.client.types.ListGridFieldType; felix@858: import com.smartgwt.client.widgets.grid.ListGrid; felix@858: import com.smartgwt.client.widgets.grid.ListGridField; felix@858: import com.smartgwt.client.widgets.grid.ListGridRecord; felix@858: import com.smartgwt.client.widgets.layout.HLayout; felix@858: import com.smartgwt.client.widgets.form.fields.SpinnerItem; felix@858: import com.smartgwt.client.widgets.form.DynamicForm; felix@858: import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; felix@858: import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; felix@858: felix@858: import de.intevation.flys.client.client.Config; felix@858: import de.intevation.flys.client.shared.model.Artifact; felix@858: import de.intevation.flys.client.shared.model.Collection; felix@858: import de.intevation.flys.client.shared.model.OutputMode; felix@858: felix@858: import de.intevation.flys.client.shared.model.Data; felix@858: import de.intevation.flys.client.shared.model.DataItem; felix@858: import de.intevation.flys.client.shared.model.DefaultArtifact; felix@858: import de.intevation.flys.client.shared.model.DefaultData; felix@858: import de.intevation.flys.client.shared.model.DefaultDataItem; felix@858: import de.intevation.flys.client.shared.model.FacetRecord; felix@858: felix@858: felix@858: /** felix@858: * ThemePanel much like ChartThemePanel, but shows an "Actions" column, felix@858: * needed for interaction in the CrossSection Charts. felix@858: */ felix@858: public class CrossSectionChartThemePanel felix@858: extends ChartThemePanel { felix@858: felix@858: /** felix@858: * Trivial constructor. felix@858: */ felix@858: public CrossSectionChartThemePanel( felix@858: Collection collection, felix@858: OutputMode mode) felix@858: { felix@858: super(collection, mode); felix@858: } felix@858: felix@858: felix@858: /** felix@858: * Create and configure the Grid to display. felix@858: */ felix@858: @Override felix@858: protected ListGrid createGrid() { felix@858: ListGrid list = new ListGrid() { felix@858: @Override felix@858: protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) { felix@861: // Only cross_section Facets display an action widget. felix@861: final FacetRecord facetRecord = (FacetRecord) record; felix@861: if (!facetRecord.getTheme().getFacet().equals( felix@861: "cross_section")) { felix@861: return null; felix@861: } felix@858: felix@858: String fieldName = this.getFieldName(colNum); felix@858: felix@888: if (fieldName.equals(GRID_FIELD_ACTIONS)) { felix@858: HLayout recordCanvas = new HLayout(3); felix@858: recordCanvas.setHeight(22); felix@858: recordCanvas.setAlign(Alignment.CENTER); felix@858: // TODO Refactor in createSpinner(data, artifact) felix@858: SpinnerItem spinnerItem = new SpinnerItem(); felix@858: spinnerItem.setShowTitle(false); felix@858: spinnerItem.setTitle("Waterlevel-Spinner"); felix@861: spinnerItem.setWidth(45); felix@858: // TODO actually get the value from artifact felix@858: // TODO actually get the range from artifact (or river?) felix@858: spinnerItem.setDefaultValue(0); felix@858: spinnerItem.setMin(0); felix@858: spinnerItem.setMax(1000); felix@858: spinnerItem.setStep(5f); felix@890: spinnerItem.setChangeOnKeypress(true); felix@858: felix@858: Config config = Config.getInstance(); felix@858: final String serverUrl = config.getServerUrl(); felix@858: final String locale = config.getLocale(); felix@858: felix@858: spinnerItem.addChangedHandler(new ChangedHandler() { felix@858: @Override felix@858: public void onChanged(ChangedEvent ce) { felix@890: if (ce.getValue() == null) { felix@890: return; felix@890: } felix@858: DefaultDataItem kmItem = new DefaultDataItem("cross_section.km", felix@858: "cross_section.km", ce.getValue().toString()); felix@858: DefaultData km = new DefaultData("cross_section.km", felix@858: null, null, new DataItem[] {kmItem}); felix@858: Data[] feedData = new Data[] {km}; felix@858: feedService.feed(serverUrl, felix@858: locale, felix@858: new DefaultArtifact(facetRecord.getTheme().getArtifact(), "TODO:hash"), felix@858: feedData, felix@858: new AsyncCallback() { felix@858: public void onFailure(Throwable caught) { felix@858: GWT.log("Could not feed artifact " + caught.getMessage()); felix@858: // TODO SC.warn felix@858: } felix@858: public void onSuccess(Artifact artifact) { felix@858: GWT.log("Successfully fed"); felix@858: //TODO and now? felix@858: // fireOutputParameterChanged(); felix@858: // Also update content of spinnerbox felix@858: requestRedraw(); felix@858: } felix@858: }); felix@858: } felix@858: } felix@858: ); felix@858: felix@858: DynamicForm formWrap = new DynamicForm(); felix@858: formWrap.setFields(spinnerItem); felix@858: formWrap.setTitlePrefix(""); felix@858: formWrap.setTitleSuffix(""); felix@858: recordCanvas.addMember(formWrap); felix@858: return recordCanvas; felix@858: } felix@858: else { felix@858: return null; felix@858: } felix@858: } felix@858: }; felix@858: list.setCanResizeFields(true); felix@858: list.setShowRecordComponents(true); felix@858: list.setShowRecordComponentsByCell(true); felix@858: list.setShowAllRecords(true); felix@858: return list; felix@858: } felix@858: felix@858: felix@858: /** felix@858: * Initializes the components (columns) of the theme grid. felix@858: */ felix@858: @Override felix@858: protected void initGrid() { felix@858: list.setCanEdit(true); felix@858: list.setCanSort(false); felix@858: list.setShowRecordComponents(true); felix@858: list.setShowRecordComponentsByCell(true); felix@858: list.setShowHeader(true); felix@858: //list.setShowHeaderContextMenu(false); felix@858: list.setWidth100(); felix@858: list.setHeight100(); felix@858: felix@858: list.addEditCompleteHandler(this); felix@858: felix@858: ListGridField active = new ListGridField(GRID_FIELD_ACTIVE, " ", 20); felix@858: active.setType(ListGridFieldType.BOOLEAN); felix@858: felix@858: ListGridField name = new ListGridField( felix@858: GRID_FIELD_NAME, MSG.chart_themepanel_header_themes()); felix@858: name.setType(ListGridFieldType.TEXT); felix@858: felix@858: ListGridField actions = new ListGridField(GRID_FIELD_ACTIONS, felix@891: MSG.chart_themepanel_header_actions(), 50); felix@858: felix@858: list.setFields(active, name, actions); felix@858: } felix@858: } felix@858: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :