christian@4472: package de.intevation.flys.client.client.ui.map; christian@4472: christian@4472: import com.google.gwt.core.client.GWT; christian@4472: import com.google.gwt.user.client.rpc.AsyncCallback; christian@4472: christian@4472: import com.smartgwt.client.util.SC; christian@4472: import com.smartgwt.client.widgets.Canvas; christian@4472: import com.smartgwt.client.widgets.form.DynamicForm; christian@4472: import com.smartgwt.client.widgets.form.fields.ButtonItem; christian@4472: import com.smartgwt.client.widgets.form.fields.SelectItem; christian@4472: import com.smartgwt.client.widgets.form.fields.TextItem; christian@4472: import com.smartgwt.client.widgets.form.fields.events.ClickEvent; christian@4472: import com.smartgwt.client.widgets.form.fields.events.ClickHandler; christian@4472: christian@4472: import de.intevation.flys.client.client.Config; christian@4472: import de.intevation.flys.client.client.FLYSConstants; christian@4472: import de.intevation.flys.client.client.services.CollectionAttributeService; christian@4472: import de.intevation.flys.client.client.services.CollectionAttributeServiceAsync; christian@4472: import de.intevation.flys.client.shared.model.Collection; christian@4472: import de.intevation.flys.client.shared.model.OutputSettings; christian@4472: import de.intevation.flys.client.shared.model.Property; christian@4472: import de.intevation.flys.client.shared.model.PropertySetting; christian@4472: import de.intevation.flys.client.shared.model.Settings; christian@4472: christian@4472: import java.util.ArrayList; christian@4472: import java.util.LinkedHashMap; christian@4472: import java.util.List; christian@4472: christian@4472: public class MapPrintSettingsPanel extends Canvas { christian@4472: christian@4472: /** The interface that provides i18n messages. */ christian@4472: protected FLYSConstants MSG = GWT.create(FLYSConstants.class); christian@4472: christian@4472: /** CollectionAttribute Update Service. */ christian@4472: protected CollectionAttributeServiceAsync updater = christian@4472: GWT.create(CollectionAttributeService.class); christian@4472: christian@4472: protected Collection collection; christian@4472: protected Settings settings; christian@4472: protected TextItem pageTitle = new TextItem(); christian@4472: christian@4472: public MapPrintSettingsPanel(Collection collection) { christian@4472: this.collection = collection; christian@4472: initLayout(); christian@4472: christian@4472: this.settings = collection.getSettings("print-settings"); christian@4472: if (settings == null) { christian@4472: settings = new OutputSettings(); christian@4472: } christian@4472: else { christian@4472: List properties = settings.getSettings("default"); christian@4472: for (Property prop : properties) { christian@4472: PropertySetting props = (PropertySetting)prop; christian@4472: if (props.getName().equals("page-format")) { christian@4472: christian@4472: } christian@4472: else if (props.getName().equals("page-title")) { christian@4472: this.pageTitle.setValue(props.getValue()); christian@4472: GWT.log(props.getName() + "=" + props.getValue()); christian@4472: } christian@4472: } christian@4472: } christian@4472: } christian@4472: christian@4472: protected void initLayout() { christian@4472: this.pageTitle.setTitle("Seitentitel:"); christian@4472: christian@4472: DynamicForm df = new DynamicForm(); christian@4472: df.setFields( christian@4472: createPageFormatSelectItem(), christian@4472: this.pageTitle, christian@4472: createSaveSettingsButtonItem() christian@4472: ); christian@4472: addChild(df); christian@4472: } christian@4472: christian@4472: protected SelectItem createPageFormatSelectItem() { christian@4472: LinkedHashMap values = new LinkedHashMap(); christian@4472: values.put("din_a4", "DIN A4"); christian@4472: values.put("din_a0", "DIN A0"); christian@4472: christian@4472: SelectItem selItem = new SelectItem(); christian@4472: selItem.setTitle("Seitenformat:"); christian@4472: selItem.setValueMap(values); christian@4472: selItem.setDefaultToFirstOption(true); christian@4472: christian@4472: return selItem; christian@4472: } christian@4472: christian@4472: protected ButtonItem createSaveSettingsButtonItem() { christian@4472: ButtonItem btn = new ButtonItem(); christian@4472: btn.addClickHandler(new ClickHandler() { christian@4472: christian@4472: @Override christian@4472: public void onClick(ClickEvent event) { christian@4472: updateCollection(); christian@4472: } christian@4472: }); christian@4472: btn.setTitle("Speichern"); christian@4472: return btn; christian@4472: } christian@4472: christian@4472: protected void updateCollection() { christian@4472: final Config config = Config.getInstance(); christian@4472: final String loc = config.getLocale(); christian@4472: christian@4472: GWT.log("MapPrintSettingsPanel.updateCollection via RPC now"); christian@4472: christian@4472: List properties = new ArrayList(); christian@4472: properties.add(new PropertySetting("page-title", this.pageTitle.getValueAsString())); christian@4472: settings.setSettings("default", properties); christian@4472: christian@4472: collection.addSettings("print-settings", settings); christian@4472: updater.update(collection, loc, new AsyncCallback() { christian@4472: @Override christian@4472: public void onFailure(Throwable caught) { christian@4472: GWT.log("Could not update collection attributes."); christian@4472: SC.warn(MSG.getString(caught.getMessage())); christian@4472: } christian@4472: @Override christian@4472: public void onSuccess(Collection collection) { christian@4472: GWT.log("MapPrintSettings: collection attributes updated"); christian@4472: } christian@4472: }); christian@4472: } christian@4472: }