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 :