@@ -92,6 +92,10 @@ public class LocationEditForm extends AbstractEditForm<LocationDto> {
9292
9393 private MapPopupView leafletMapPopup ;
9494 private ComboBox addressType ;
95+ private ComboBox facilityTypeGroup ;
96+ private ComboBox facilityType ;
97+ private ComboBox facility ;
98+ private TextField facilityDetails ;
9599
96100 public LocationEditForm (FieldVisibilityCheckers fieldVisibilityCheckers , UiFieldAccessCheckers fieldAccessCheckers ) {
97101 super (LocationDto .class , LocationDto .I18N_PREFIX , true , fieldVisibilityCheckers , fieldAccessCheckers );
@@ -135,18 +139,35 @@ protected void addFields() {
135139 Arrays .asList (LocationDto .ADDRESS_TYPE_DETAILS ),
136140 Arrays .asList (PersonAddressType .OTHER_ADDRESS ));
137141
138- ComboBox facilityTypeGroup = new ComboBox ();
142+ facilityTypeGroup = new ComboBox ();
139143 facilityTypeGroup .setId ("typeGroup" );
140144 facilityTypeGroup .setCaption (I18nProperties .getCaption (Captions .Facility_typeGroup ));
141145 facilityTypeGroup .setWidth (100 , Unit .PERCENTAGE );
142146 facilityTypeGroup .addItems (FacilityTypeGroup .values ());
143147 getContent ().addComponent (facilityTypeGroup , FACILITY_TYPE_GROUP_LOC );
144- ComboBox facilityType = addField (LocationDto .FACILITY_TYPE );
145- ComboBox facility = addInfrastructureField (LocationDto .FACILITY );
148+ facilityType = addField (LocationDto .FACILITY_TYPE );
149+ facility = addInfrastructureField (LocationDto .FACILITY );
146150 facility .setImmediate (true );
147- TextField facilityDetails = addField (LocationDto .FACILITY_DETAILS , TextField .class );
151+ facilityDetails = addField (LocationDto .FACILITY_DETAILS , TextField .class );
148152 facilityDetails .setVisible (false );
149153
154+ addressType .addValueChangeListener (e -> {
155+ FacilityTypeGroup oldGroup = (FacilityTypeGroup ) facilityTypeGroup .getValue ();
156+ FacilityType oldType = (FacilityType ) facilityType .getValue ();
157+ FacilityReferenceDto oldFacility = (FacilityReferenceDto ) facility .getValue ();
158+ String oldDetails = facilityDetails .getValue ();
159+ facilityTypeGroup .removeAllItems ();
160+ if (PersonAddressType .HOME .equals (addressType .getValue ())) {
161+ facilityTypeGroup .addItems (FacilityTypeGroup .getAccomodationGroups ());
162+ } else {
163+ facilityTypeGroup .addItems (FacilityTypeGroup .values ());
164+ }
165+ facilityTypeGroup .setValue (oldGroup );
166+ facilityType .setValue (oldType );
167+ facility .setValue (oldFacility );
168+ facilityDetails .setValue (oldDetails );
169+ });
170+
150171 addField (LocationDto .STREET , TextField .class );
151172 addField (LocationDto .HOUSE_NUMBER , TextField .class );
152173 addField (LocationDto .ADDITIONAL_INFORMATION , TextField .class );
0 commit comments