# HG changeset patch # User Raimund Renkert # Date 1324464782 0 # Node ID d0bcf5ba7adfcb51f15b314d7b07fb559fc49a51 # Parent c899a7ffdc8f1b4e026b3b1e1dc8ed0e12816243 Create the properties dialog content dynamically based on the properties read from describe collection document. flys-client/trunk@3505 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/ChangeLog --- a/flys-client/ChangeLog Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/ChangeLog Wed Dec 21 10:53:02 2011 +0000 @@ -1,3 +1,20 @@ +2011-12-21 Raimund Renkert + + Create the properties dialog dynamically. + + * src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java: + Create the content based on the properties read from describe collection + document. + + * src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java: + Added getter for single property by name. + + * src/main/java/de/intevation/flys/client/client/FLYSConstants.java, + src/main/java/de/intevation/flys/client/client/FLYSConstants.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties: + Added i18n strings. + 2011-12-20 Raimund Renkert * src/main/java/de/intevation/flys/client/shared/model/Collection.java: diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Wed Dec 21 10:53:02 2011 +0000 @@ -635,5 +635,21 @@ String capabilitiesEmail(); String capabilitiesPhone(); + + String visibility(); + + String upper(); + + String lower(); + + String fixation(); + + String font_size(); + + String label(); + + String subtitle(); + + String display_grid(); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Wed Dec 21 10:53:02 2011 +0000 @@ -328,3 +328,13 @@ capabilitiesContactInformation = Further Information capabilitiesEmail = Email capabilitiesPhone = Phone + +visibility = Visibility +upper = from +lower = to +fixation = Fix +font_size = Fontsize +label = Title +title = Title +subtitle = Subtitle +display_grid = Display grid diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Wed Dec 21 10:53:02 2011 +0000 @@ -328,3 +328,12 @@ capabilitiesContactInformation = Weitere Informationen capabilitiesEmail = Email capabilitiesPhone = Telefon +visibility = Sichtbarkeit +upper = von +lower = bis +fixation = Fix +font_size = Schriftgröße +label = Titel +title = Titel +subtitle = Untertitel +display_grid = Gitterlinien anzeigen diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Wed Dec 21 10:53:02 2011 +0000 @@ -328,3 +328,12 @@ capabilitiesContactInformation = Further Information capabilitiesEmail = Email capabilitiesPhone = Phone +visibility = Visibility +upper = from +lower = to +fixation = Fix +font_size = Fontsize +label = Title +title = Title +subtitle = Subtitle +display_grid = Display grid diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java Wed Dec 21 10:53:02 2011 +0000 @@ -1,5 +1,6 @@ package de.intevation.flys.client.client.ui.chart; +import java.util.List; import com.google.gwt.core.client.GWT; @@ -10,6 +11,8 @@ import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.Canvas; + import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.FormItem; import com.smartgwt.client.widgets.form.fields.CheckboxItem; @@ -17,11 +20,22 @@ import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; +import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.types.Alignment; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.ui.OutputTab; +import de.intevation.flys.client.shared.model.Property; +import de.intevation.flys.client.shared.model.PropertyGroup; +import de.intevation.flys.client.shared.model.PropertySetting; +import de.intevation.flys.client.shared.model.BooleanProperty; +import de.intevation.flys.client.shared.model.DoubleProperty; +import de.intevation.flys.client.shared.model.IntegerProperty; +import de.intevation.flys.client.shared.model.StringProperty; +import de.intevation.flys.client.shared.model.Settings; +import de.intevation.flys.client.shared.model.Collection; /** * @author Raimund Renkert */ @@ -57,12 +71,36 @@ setCanDragReposition(true); setCanDragResize(true); - Tab diagram = new Tab(MSG.diagram()); - Tab axes = new Tab(MSG.axes()); - Tab legend = new Tab(MSG.legend()); - tabs.addTab(diagram); - tabs.addTab(axes); - tabs.addTab(legend); + + Collection c = tab.getCollectionView().getCollection(); + String outputName = tab.getOutputName(); + Settings settings = c.getSettings(outputName); + + if (settings == null) { + return; + } + List list = settings.getCategories(); + + for (int i = 0; i < list.size(); i++) { + Tab t = new Tab(MSG.getString(list.get(i))); + List props = settings.getSettings(list.get(i)); + VLayout layout = new VLayout(); + for (int j = 0; j < props.size(); j++) { + if (props.get(j) instanceof PropertyGroup) { + layout.addMember(generatePropertyGroup(props.get(j))); + } + else if (props.get(j) instanceof PropertySetting) { + PropertySetting p = (PropertySetting)props.get(j); + + if (p.getAttribute("display").equals("false")) { + continue; + } + layout.addMember(generatePropertySetting(props.get(j))); + } + } + t.setPane(layout); + tabs.addTab(t); + } Button accept = new Button(MSG.label_ok()); Button cancel = new Button(MSG.label_cancel()); @@ -79,10 +117,6 @@ buttons.setAlign(Alignment.CENTER); buttons.setHeight(30); - initChartPropertiesTab(diagram); - initAxesPropertiesTab(axes); - initLegendPropertiesTab(legend); - addItem(tabs); addItem(buttons); setWidth(340); @@ -98,214 +132,172 @@ this.hide(); } - /** - * Initializes the tab for general chart properties. - */ - protected void initChartPropertiesTab(Tab t) { - VLayout properties = new VLayout(); - DynamicForm form = new DynamicForm(); - - TextItem title = new TextItem (); - title.setTitle(MSG.chart_title()); - title.setTitleAlign(Alignment.LEFT); - - TextItem subTitle = new TextItem(); - subTitle.setTitle(MSG.chart_subtitle()); - subTitle.setTitleAlign(Alignment.LEFT); - - CheckboxItem grid = new CheckboxItem("grid", MSG.grid()); - grid.setLabelAsTitle(true); - grid.setTitleStyle("color:#000;"); - grid.setTitleAlign(Alignment.LEFT); - - CheckboxItem antialiasing = new CheckboxItem("antialiasing", - MSG.antialiasing()); - antialiasing.setLabelAsTitle(true); - antialiasing.setTitleStyle("color:#000;"); - antialiasing.setTitleAlign(Alignment.LEFT); - - form.setFields(new FormItem[] {title, subTitle, grid, antialiasing}); - properties.addMember(form); - t.setPane(properties); - } /** - * Initializes the tab for axes properties. + * */ - protected void initAxesPropertiesTab(Tab t) { - VLayout properties = new VLayout(); - Label scale = new Label(MSG.scale() + " :"); - Label scale1 = new Label(MSG.scale() + " :"); - Label scale2 = new Label(MSG.scale() + " :"); - Label scale3 = new Label(MSG.scale() + " :"); - scale.setHeight(25); - scale1.setHeight(25); - scale2.setHeight(25); - scale3.setHeight(25); - - DynamicForm xform1 = new DynamicForm(); - DynamicForm xform2 = new DynamicForm(); - xform2.setNumCols(6); + protected Canvas generatePropertyGroup(Property group) { + PropertyGroup pg = (PropertyGroup)group; + List list = pg.getProperties(); - Label x_axis = new Label (MSG.x_axis()); - x_axis.setHeight(30); - HLayout x_scale = new HLayout(); - TextItem xname = new TextItem (); - xname.setTitle(MSG.axis_name()); - xname.setTitleAlign(Alignment.LEFT); - - TextItem xrange1 = new TextItem(); - xrange1.setTitle(MSG.chart_start()); - xrange1.setTitleAlign(Alignment.LEFT); - xrange1.setWidth(50); + if (pg.getName().equals("axis")) { + Label scale = new Label(MSG.scale() + " :"); + scale.setHeight(25); + scale.setMargin(2); - TextItem xrange2 = new TextItem(); - xrange2.setTitle(MSG.chart_end()); - xrange2.setTitleAlign(Alignment.LEFT); - xrange2.setWidth(50); + DynamicForm form1 = new DynamicForm(); + DynamicForm form2 = new DynamicForm(); + form2.setNumCols(6); - CheckboxItem xfix = new CheckboxItem("xfix", "Fix"); - xfix.setLabelAsTitle(true); - xfix.setTitleStyle("color:#000;"); - xfix.setTitleAlign(Alignment.LEFT); + StringProperty label = + (StringProperty)pg.getPropertyByName("label"); + FormItem title = createStringProperty(label); + title.setValue(label.getValue()); - xform1.setFields(xname); - xform2.setFields(xrange1, xrange2, xfix); - x_scale.addMember(scale); - x_scale.addMember(xform2); + IntegerProperty fontsize = + (IntegerProperty)pg.getPropertyByName("font-size"); + FormItem fs = createIntegerProperty(fontsize); + fs.setValue(fontsize.getValue()); + + DoubleProperty upper = + (DoubleProperty)pg.getPropertyByName("upper"); + final FormItem range1 = createDoubleProperty(upper); + range1.setValue(upper.getValue()); + range1.setWidth(50); + + DoubleProperty lower = + (DoubleProperty)pg.getPropertyByName("lower"); + final FormItem range2 = createDoubleProperty(lower); + range2.setValue(lower.getValue()); + range2.setWidth(50); + + BooleanProperty fixation = + (BooleanProperty)pg.getPropertyByName("fixation"); + FormItem fix = createBooleanProperty(fixation); + fix.addChangedHandler(new ChangedHandler() { + public void onChanged(ChangedEvent e) { + if ((Boolean)e.getValue()) { + range1.enable(); + range2.enable(); + } + else { + range1.disable(); + range2.disable(); + } + } + }); + if (fixation.getValue().equals("true")) { + fix.setValue(true); + range1.enable(); + range2.enable(); + } + else { + fix.setValue(false); + range1.disable(); + range2.disable(); + } + + form1.setFields(title, fs); + form2.setFields(fix, range1, range2); + + HLayout scaleLayout = new HLayout(); + scaleLayout.setHeight(30); + scaleLayout.addMember(scale); + scaleLayout.addMember(form2); + scaleLayout.addStyleName("property-dialog-axis"); + + VLayout root = new VLayout(); + root.addMember(form1); + root.addMember(scaleLayout); + root.setHeight(90); + + return root; + } + return null; + } - DynamicForm y1form1 = new DynamicForm(); - DynamicForm y1form2 = new DynamicForm(); - y1form2.setNumCols(6); - - Label y1_axis = new Label (MSG.y1_axis()); - y1_axis.setHeight(30); - HLayout y1_scale = new HLayout(); - TextItem y1name = new TextItem (); - y1name.setTitle(MSG.axis_name()); - y1name.setTitleAlign(Alignment.LEFT); - - TextItem y1range1 = new TextItem(); - y1range1.setTitle(MSG.chart_start()); - y1range1.setTitleAlign(Alignment.LEFT); - y1range1.setWidth(50); - - TextItem y1range2 = new TextItem(); - y1range2.setTitle(MSG.chart_end()); - y1range2.setTitleAlign(Alignment.LEFT); - y1range2.setWidth(50); - - CheckboxItem y1fix = new CheckboxItem("y1fix", "Fix"); - y1fix.setLabelAsTitle(true); - y1fix.setTitleStyle("color:#000;"); - y1fix.setTitleAlign(Alignment.LEFT); - - y1form1.setFields(y1name); - y1form2.setFields(y1range1, y1range2, y1fix); - y1_scale.addMember(scale1); - y1_scale.addMember(y1form2); - - - DynamicForm y2form1 = new DynamicForm(); - DynamicForm y2form2 = new DynamicForm(); - y2form2.setNumCols(6); - - Label y2_axis = new Label (MSG.y2_axis()); - y2_axis.setHeight(30); - HLayout y2_scale = new HLayout(); - TextItem y2name = new TextItem (); - y2name.setTitle(MSG.axis_name()); - y2name.setTitleAlign(Alignment.LEFT); - - TextItem y2range1 = new TextItem(); - y2range1.setTitle(MSG.chart_start()); - y2range1.setTitleAlign(Alignment.LEFT); - y2range1.setWidth(50); - - TextItem y2range2 = new TextItem(); - y2range2.setTitle(MSG.chart_end()); - y2range2.setTitleAlign(Alignment.LEFT); - y2range2.setWidth(50); - - CheckboxItem y2fix = new CheckboxItem("y2fix", "Fix"); - y2fix.setLabelAsTitle(true); - y2fix.setTitleStyle("color:#000;"); - y2fix.setTitleAlign(Alignment.LEFT); - - y2form1.setFields(y2name); - y2form2.setFields(y2range1, y2range2, y2fix); - y2_scale.addMember(scale2); - y2_scale.addMember(y2form2); + /** + * + */ + protected DynamicForm generatePropertySetting(Property setting) { + DynamicForm form = new DynamicForm(); + if (setting instanceof BooleanProperty) { + form.setFields(createBooleanProperty((BooleanProperty)setting)); + } + else if (setting instanceof DoubleProperty) { + form.setFields(createDoubleProperty((DoubleProperty)setting)); + } + else if (setting instanceof IntegerProperty) { + form.setFields(createIntegerProperty((IntegerProperty)setting)); + } + else if (setting instanceof StringProperty) { + form.setFields(createStringProperty((StringProperty)setting)); + } + return form; + } - DynamicForm y3form1 = new DynamicForm(); - DynamicForm y3form2 = new DynamicForm(); - y3form2.setNumCols(6); - - Label y3_axis = new Label (MSG.y3_axis()); - y3_axis.setHeight(30); - HLayout y3_scale = new HLayout(); - TextItem y3name = new TextItem (); - y3name.setTitle(MSG.axis_name()); - y3name.setTitleAlign(Alignment.LEFT); - - TextItem y3range1 = new TextItem(); - y3range1.setTitle(MSG.chart_start()); - y3range1.setTitleAlign(Alignment.LEFT); - y3range1.setWidth(50); - - TextItem y3range2 = new TextItem(); - y3range2.setTitle(MSG.chart_end()); - y3range2.setTitleAlign(Alignment.LEFT); - y3range2.setWidth(50); - - CheckboxItem y3fix = new CheckboxItem("y3fix", "Fix"); - y3fix.setLabelAsTitle(true); - y3fix.setTitleStyle("color:#000;"); - y3fix.setTitleAlign(Alignment.LEFT); - - y3form1.setFields(y3name); - y3form2.setFields(y3range1, y3range2, y3fix); - y3_scale.addMember(scale3); - y3_scale.addMember(y3form2); + /** + * + */ + protected FormItem createStringProperty(StringProperty sp) { + String name = sp.getName(); + if (name.contains("-")) { + name = name.replace("-", "_"); + } + TextItem item = new TextItem(); + item.setTitle(MSG.getString(name)); + item.setTitleAlign(Alignment.LEFT); + return item; + } - properties.addMember(x_axis); - properties.addMember(xform1); - properties.addMember(x_scale); - properties.addMember(y1_axis); - properties.addMember(y1form1); - properties.addMember(y1_scale); - properties.addMember(y2_axis); - properties.addMember(y2form1); - properties.addMember(y2_scale); - properties.addMember(y3_axis); - properties.addMember(y3form1); - properties.addMember(y3_scale); + /** + * + */ + protected FormItem createBooleanProperty(BooleanProperty bp) { + String name = bp.getName(); + if (name.contains("-")) { + name = name.replace("-", "_"); + } - t.setPane(properties); + CheckboxItem item = new CheckboxItem("item", MSG.getString(name)); + item.setLabelAsTitle(true); + item.setTitleStyle("color:#000;"); + item.setTitleAlign(Alignment.LEFT); + return item; } + /** - * Initializes the tab for legend properties. + * */ - protected void initLegendPropertiesTab(Tab t) { - VLayout properties = new VLayout(); - DynamicForm form = new DynamicForm(); + protected FormItem createDoubleProperty(DoubleProperty dp) { + String name = dp.getName(); + if (name.contains("-")) { + name = name.replace("-", "_"); + } - TextItem name = new TextItem (); - name.setTitle(MSG.legend_name()); - name.setTitleAlign(Alignment.LEFT); - - CheckboxItem show = new CheckboxItem("show", MSG.show_legend()); - show.setLabelAsTitle(true); - show.setTitleStyle("color:#000;"); - show.setTitleAlign(Alignment.LEFT); - - form.setFields(name, show); - properties.addMember(form); - t.setPane(properties); + TextItem item = new TextItem(); + item.setTitle(MSG.getString(name)); + item.setTitleAlign(Alignment.LEFT); + return item; } + + /** + * + */ + protected FormItem createIntegerProperty(IntegerProperty ip) { + String name = ip.getName(); + if (name.contains("-")) { + name = name.replace("-", "_"); + } + + TextItem item = new TextItem(); + item.setTitle(MSG.getString(name)); + item.setTitleAlign(Alignment.LEFT); + return item; + } } diff -r c899a7ffdc8f -r d0bcf5ba7adf flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java Tue Dec 20 15:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java Wed Dec 21 10:53:02 2011 +0000 @@ -40,4 +40,13 @@ public void setProperties(List properties) { this.properties = properties; } + + public Property getPropertyByName(String name) { + for (int i = 0; i < properties.size(); i++) { + if (properties.get(i).getName().equals(name)) { + return properties.get(i); + } + } + return null; + } }