@Override protected void setInternalValue(Collection newValue) { super.setInternalValue(newValue); optionGroup.setValue(newValue); }
@Override protected void setInternalValue(Integer newValue) { super.setInternalValue(newValue); if (newValue == null || newValue <= 0) { disableSelection.setValue(true); periodSelection.setValue(null); combo.setValue(null); } else { disableSelection.setValue(null); periodSelection.setValue(true); if (combo.getItem(newValue) == null) { combo.addItem(newValue); } combo.setValue(newValue); } }
@Override protected void setValue(Object newValue, boolean repaintIsNotNeeded) throws ReadOnlyException { Set oldvalue = (Set) getValue(); super.setValue(newValue, repaintIsNotNeeded); if (clientSideChange) { // TODO add strategies for maintaining the order in case of List // e.g. same as listing, selection order ... Collection collection = getEditedCollection(); Set newvalue = (Set) getValue(); Set orphaned = new HashSet(oldvalue); orphaned.removeAll(newvalue); collection.removeAll(orphaned); Set newValues = new LinkedHashSet(newvalue); newValues.removeAll(oldvalue); collection.addAll(newValues); CheckBoxGroup.this.fireValueChange(true); } }
@Override public void valueChange(Property.ValueChangeEvent event) { if (event.getProperty().getValue() != null) { disableSelection.setValue(null); } } });
@Override public void valueChange(Property.ValueChangeEvent event) { if (event.getProperty().getValue() != null) { periodSelection.setValue(null); } } });
@Test public void discardUnselectedOptions() throws Exception { // GIVEN SwitchableFieldDefinition definition = switchableFieldDefinition("switchable"); Node node = session.getRootNode().addNode("node"); JcrNodeAdapter nodeAdapter = new JcrNodeAdapter(node); SwitchableFieldFactory<SwitchableFieldDefinition> factory = new SwitchableFieldFactory<>(definition, nodeAdapter, fieldFactoryFactory, componentProvider, i18nAuthoringSupport); SwitchableField field = (SwitchableField) factory.createField(); Iterator<Component> componentIterator = field.iterator(); // CustomField#getContent is lazy, we trigger it via ComponentIterator#next() VerticalLayout layout = (VerticalLayout) componentIterator.next(); OptionGroup options = (OptionGroup) layout.getComponent(0); TextField t1 = (TextField) layout.getComponent(1); TextField t2 = (TextField) layout.getComponent(2); // WHEN options.setValue("t1"); enterText(t1, "v1"); options.setValue("t2"); enterText(t2, "v2"); nodeAdapter.applyChanges(); // THEN assertThat(node, hasProperty("switchable", "t2")); assertThat(node, hasProperty("switchablet2", "v2")); assertThat(node, not(hasProperty("switchablet1"))); }