ingo@523: package de.intevation.flys.client.client.ui.chart; ingo@523: ingo@523: import com.google.gwt.core.client.GWT; ingo@523: felix@854: import com.smartgwt.client.types.Alignment; felix@854: import com.smartgwt.client.widgets.Canvas; felix@854: import com.google.gwt.user.client.rpc.AsyncCallback; ingo@523: import com.smartgwt.client.types.ListGridFieldType; felix@854: import com.smartgwt.client.widgets.grid.ListGrid; ingo@523: import com.smartgwt.client.widgets.grid.ListGridField; felix@854: import com.smartgwt.client.widgets.grid.ListGridRecord; ingo@523: import com.smartgwt.client.widgets.layout.VLayout; felix@854: import com.smartgwt.client.widgets.layout.HLayout; felix@854: import com.smartgwt.client.widgets.form.fields.SpinnerItem; felix@854: import com.smartgwt.client.widgets.form.DynamicForm; felix@854: import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; felix@854: import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; ingo@523: felix@854: import de.intevation.flys.client.client.Config; felix@854: import de.intevation.flys.client.shared.model.Artifact; ingo@523: import de.intevation.flys.client.shared.model.Collection; ingo@524: import de.intevation.flys.client.shared.model.Theme; ingo@805: import de.intevation.flys.client.shared.model.OutputMode; ingo@523: ingo@523: import de.intevation.flys.client.client.FLYSConstants; ingo@805: import de.intevation.flys.client.client.ui.ThemePanel; ingo@523: felix@854: import de.intevation.flys.client.client.services.FeedService; felix@854: import de.intevation.flys.client.client.services.FeedServiceAsync; felix@854: ingo@523: ingo@523: /** ingo@523: * @author Ingo Weinzierl ingo@523: */ ingo@805: public class ChartThemePanel extends ThemePanel { ingo@805: ingo@523: /** The interface that provides i18n messages. */ ingo@523: private FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@523: ingo@526: felix@854: public static final String GRID_FIELD_ACTIVE = "active"; felix@854: public static final String GRID_FIELD_NAME = "name"; felix@854: public static final String GRID_FIELD_ACTIONS = "actions"; ingo@523: felix@854: FeedServiceAsync feedService = GWT.create( felix@854: de.intevation.flys.client.client.services.FeedService.class); ingo@523: ingo@523: public ChartThemePanel(Collection collection, OutputMode mode) { ingo@805: super(collection, mode); ingo@523: ingo@523: initGrid(); ingo@523: initLayout(); ingo@523: ingo@523: updateGrid(); ingo@523: } ingo@523: ingo@523: ingo@523: /** felix@854: * Create and configure the Grid to display. felix@854: */ felix@854: protected ListGrid createGrid() { felix@854: ListGrid list = new ListGrid() { felix@854: @Override felix@854: protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) { felix@854: GWT.log("createRecordComponent! " + this.getFieldName(colNum)); felix@854: felix@854: String fieldName = this.getFieldName(colNum); felix@854: felix@854: if (fieldName.equals("actions")) { felix@854: GWT.log("GG UU II: Put actopms"); felix@854: HLayout recordCanvas = new HLayout(3); felix@854: recordCanvas.setHeight(22); felix@854: recordCanvas.setAlign(Alignment.CENTER); felix@854: // Grid Cell Widgets example felix@854: SpinnerItem spinnerItem = new SpinnerItem(); felix@854: spinnerItem.setShowTitle(false); felix@854: spinnerItem.setTitle("Waterlevel-Spinner"); felix@854: spinnerItem.setWidth(50); felix@854: spinnerItem.setDefaultValue(5); felix@854: spinnerItem.setMin(130); felix@854: spinnerItem.setMax(1000); felix@854: spinnerItem.setStep(5f); felix@854: Config config = Config.getInstance(); felix@854: final String serverUrl = config.getServerUrl(); felix@854: final String locale = config.getLocale(); felix@854: felix@854: spinnerItem.addChangedHandler(new ChangedHandler() { felix@854: @Override felix@854: public void onChanged(ChangedEvent ce) { felix@854: // artifact instead of null felix@854: // data[] instead of null felix@854: feedService.feed(serverUrl, locale, null, null, felix@854: new AsyncCallback() { felix@854: public void onFailure(Throwable caught) { felix@854: GWT.log("Could not feed artifact"); felix@854: // TODO SC.warn felix@854: } felix@854: public void onSuccess(Artifact artifact) { felix@854: GWT.log("Successfully fed"); felix@854: //TODO and now? felix@854: } felix@854: }); felix@854: } felix@854: } felix@854: ); felix@854: felix@854: DynamicForm formWrap = new DynamicForm(); felix@854: formWrap.setFields(spinnerItem); felix@854: formWrap.setTitlePrefix(""); felix@854: formWrap.setTitleSuffix(""); felix@854: recordCanvas.addMember(formWrap); felix@854: return recordCanvas; felix@854: } felix@854: else { felix@854: return null; felix@854: } felix@854: } felix@854: }; felix@854: list.setCanResizeFields(true); felix@854: list.setShowRecordComponents(true); felix@854: list.setShowRecordComponentsByCell(true); felix@854: list.setShowAllRecords(true); felix@854: return list; felix@854: } felix@854: felix@854: felix@854: /** 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@527: layout.addMember(navigation); 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); felix@854: //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: felix@854: // TODO Visibility of this Field (~"column") shall depend on felix@854: // availability of facets allowing for actions. felix@854: ListGridField actions = new ListGridField(GRID_FIELD_ACTIONS, felix@854: GRID_FIELD_ACTIONS, 60); felix@854: felix@854: list.setFields(active, name, actions); ingo@523: } ingo@523: ingo@523: ingo@805: @Override ingo@805: public void activateTheme(Theme theme, boolean active) { ingo@805: theme.setActive(active ? 1 : 0); ingo@527: } ingo@523: } ingo@523: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :