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@4474: public static final String MAPFISH_COMMENT = "mapfish-comment"; christian@4474: public static final String MAPFISH_LAYOUT = "mapfish-layout"; christian@4474: public static final String MAPFISH_MAPTITLE = "mapfish-mapTitle"; christian@4474: public static final String MAPFISH_PAGESIZE = "mapfish-pageSize"; christian@4474: 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@4474: protected SelectItem pageFormat = createPageFormatSelectItem(); christian@4474: protected TextItem pageComment = new TextItem(); christian@4474: protected MapToolbar mapToolbar; christian@4474: protected MapPrintSettingsWindow parent; christian@4472: christian@4474: public MapPrintSettingsPanel(Collection collection, MapToolbar mapToolbar, MapPrintSettingsWindow parent) { christian@4472: this.collection = collection; christian@4474: this.mapToolbar = mapToolbar; christian@4474: this.parent = parent; christian@4472: initLayout(); christian@4472: christian@4472: this.settings = collection.getSettings("print-settings"); christian@4472: if (settings == null) { christian@4472: settings = new OutputSettings(); christian@4473: GWT.log("settings are empty"); christian@4472: } christian@4472: else { christian@4472: List properties = settings.getSettings("default"); christian@4472: for (Property prop : properties) { christian@4473: GWT.log("prop=" + prop.getName()); christian@4472: PropertySetting props = (PropertySetting)prop; christian@4474: if (props.getName().equals(MAPFISH_PAGESIZE)) { christian@4474: this.pageFormat.setValue(props.getValue()); christian@4472: } christian@4474: else if (props.getName().equals(MAPFISH_MAPTITLE)) { christian@4472: this.pageTitle.setValue(props.getValue()); christian@4472: GWT.log(props.getName() + "=" + props.getValue()); christian@4472: } christian@4474: else if (props.getName().equals(MAPFISH_COMMENT)) { christian@4474: this.pageComment.setValue(props.getValue()); christian@4474: } christian@4472: } christian@4472: } christian@4472: } christian@4472: christian@4472: protected void initLayout() { christian@4474: // TODO: i18n christian@4472: this.pageTitle.setTitle("Seitentitel:"); christian@4474: this.pageComment.setTitle("Kommentar:"); christian@4472: christian@4472: DynamicForm df = new DynamicForm(); christian@4472: df.setFields( christian@4474: this.pageFormat, christian@4472: this.pageTitle, christian@4474: this.pageComment, 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@4474: // TODO: i18n christian@4474: values.put("A4 portrait", "DIN A4 (Hochformat)"); christian@4474: values.put("A0 portrait", "DIN A0 (Hochformat)"); christian@4472: christian@4472: SelectItem selItem = new SelectItem(); christian@4474: selItem.setTitle("Seitengröße:"); // TODO: i18n 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@4474: mapToolbar.updatePrintUrl(); christian@4474: parent.destroy(); 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@4474: properties.add(new PropertySetting(MAPFISH_MAPTITLE, this.pageTitle.getValueAsString())); christian@4474: properties.add(new PropertySetting(MAPFISH_COMMENT, this.pageComment.getValueAsString())); christian@4474: properties.add(new PropertySetting(MAPFISH_LAYOUT, this.pageFormat.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: }