annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/map/MapPrintSettingsPanel.java @ 4472:dc7e41efd5ba

Work (in progress) on a print settings dialog. Add Wheregroups WMS to printing whitelist.
author Christian Lins <christian.lins@intevation.de>
date Sat, 10 Nov 2012 00:53:28 +0100
parents
children 6db783627137
rev   line source
4472
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui.map;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
2
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
3 import com.google.gwt.core.client.GWT;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
4 import com.google.gwt.user.client.rpc.AsyncCallback;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
5
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
6 import com.smartgwt.client.util.SC;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
7 import com.smartgwt.client.widgets.Canvas;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
8 import com.smartgwt.client.widgets.form.DynamicForm;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
9 import com.smartgwt.client.widgets.form.fields.ButtonItem;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
10 import com.smartgwt.client.widgets.form.fields.SelectItem;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
11 import com.smartgwt.client.widgets.form.fields.TextItem;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
12 import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
13 import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
14
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
15 import de.intevation.flys.client.client.Config;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
16 import de.intevation.flys.client.client.FLYSConstants;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
17 import de.intevation.flys.client.client.services.CollectionAttributeService;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
18 import de.intevation.flys.client.client.services.CollectionAttributeServiceAsync;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
19 import de.intevation.flys.client.shared.model.Collection;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
20 import de.intevation.flys.client.shared.model.OutputSettings;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
21 import de.intevation.flys.client.shared.model.Property;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
22 import de.intevation.flys.client.shared.model.PropertySetting;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.shared.model.Settings;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
24
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
25 import java.util.ArrayList;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
26 import java.util.LinkedHashMap;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
27 import java.util.List;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
28
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
29 public class MapPrintSettingsPanel extends Canvas {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
30
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
31 /** The interface that provides i18n messages. */
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
32 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
33
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
34 /** CollectionAttribute Update Service. */
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
35 protected CollectionAttributeServiceAsync updater =
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
36 GWT.create(CollectionAttributeService.class);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
37
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
38 protected Collection collection;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
39 protected Settings settings;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
40 protected TextItem pageTitle = new TextItem();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
41
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
42 public MapPrintSettingsPanel(Collection collection) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
43 this.collection = collection;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
44 initLayout();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
45
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
46 this.settings = collection.getSettings("print-settings");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
47 if (settings == null) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
48 settings = new OutputSettings();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
49 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
50 else {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
51 List<Property> properties = settings.getSettings("default");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
52 for (Property prop : properties) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
53 PropertySetting props = (PropertySetting)prop;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
54 if (props.getName().equals("page-format")) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
55
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
56 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
57 else if (props.getName().equals("page-title")) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
58 this.pageTitle.setValue(props.getValue());
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
59 GWT.log(props.getName() + "=" + props.getValue());
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
60 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
61 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
62 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
63 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
64
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
65 protected void initLayout() {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
66 this.pageTitle.setTitle("Seitentitel:");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
67
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
68 DynamicForm df = new DynamicForm();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
69 df.setFields(
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
70 createPageFormatSelectItem(),
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
71 this.pageTitle,
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
72 createSaveSettingsButtonItem()
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
73 );
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
74 addChild(df);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
75 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
76
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
77 protected SelectItem createPageFormatSelectItem() {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
78 LinkedHashMap values = new LinkedHashMap();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
79 values.put("din_a4", "DIN A4");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
80 values.put("din_a0", "DIN A0");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
81
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
82 SelectItem selItem = new SelectItem();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
83 selItem.setTitle("Seitenformat:");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
84 selItem.setValueMap(values);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
85 selItem.setDefaultToFirstOption(true);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
86
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
87 return selItem;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
88 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
89
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
90 protected ButtonItem createSaveSettingsButtonItem() {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
91 ButtonItem btn = new ButtonItem();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
92 btn.addClickHandler(new ClickHandler() {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
93
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
94 @Override
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
95 public void onClick(ClickEvent event) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
96 updateCollection();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
97 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
98 });
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
99 btn.setTitle("Speichern");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
100 return btn;
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
101 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
102
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
103 protected void updateCollection() {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
104 final Config config = Config.getInstance();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
105 final String loc = config.getLocale();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
106
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
107 GWT.log("MapPrintSettingsPanel.updateCollection via RPC now");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
108
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
109 List<Property> properties = new ArrayList<Property>();
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
110 properties.add(new PropertySetting("page-title", this.pageTitle.getValueAsString()));
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
111 settings.setSettings("default", properties);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
112
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
113 collection.addSettings("print-settings", settings);
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
114 updater.update(collection, loc, new AsyncCallback<Collection>() {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
115 @Override
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
116 public void onFailure(Throwable caught) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
117 GWT.log("Could not update collection attributes.");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
118 SC.warn(MSG.getString(caught.getMessage()));
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
119 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
120 @Override
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
121 public void onSuccess(Collection collection) {
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
122 GWT.log("MapPrintSettings: collection attributes updated");
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
123 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
124 });
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
125 }
dc7e41efd5ba Work (in progress) on a print settings dialog.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
126 }

http://dive4elements.wald.intevation.org