Improved enable save button functionality when update tag
Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com>
This commit is contained in:
@@ -13,7 +13,6 @@ import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||
@@ -73,8 +72,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
@Autowired
|
||||
private transient EntityFactory entityFactory;
|
||||
|
||||
private Label mandatoryLabel;
|
||||
|
||||
private TextField nameTextField;
|
||||
|
||||
private TextField versionTextField;
|
||||
@@ -136,14 +133,14 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
nameTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY,
|
||||
true, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
nameTextField.setId(SPUIComponentIdProvider.SOFT_MODULE_NAME);
|
||||
nameTextField.addTextChangeListener(this::nameTextFieldChanged);
|
||||
nameTextField.addTextChangeListener(this::listenerNameTextFieldChanged);
|
||||
|
||||
/* version text field */
|
||||
versionTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.version"), "",
|
||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.version"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
versionTextField.setId(SPUIComponentIdProvider.SOFT_MODULE_VERSION);
|
||||
versionTextField.addTextChangeListener(this::versionTextFieldChanged);
|
||||
versionTextField.addTextChangeListener(this::listenerVersionTextFieldChanged);
|
||||
|
||||
/* Vendor text field */
|
||||
vendorTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.vendor"), "", ValoTheme.TEXTFIELD_TINY,
|
||||
@@ -157,49 +154,29 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
addDescriptionTextChangeListener();
|
||||
addVendorTextChangeListener();
|
||||
|
||||
/* Label for mandatory symbol */
|
||||
mandatoryLabel = new Label(i18n.get("label.mandatory.field"));
|
||||
mandatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR);
|
||||
mandatoryLabel.addStyleName(ValoTheme.LABEL_SMALL);
|
||||
|
||||
typeComboBox = SPUIComponentProvider.getComboBox(i18n.get("upload.swmodule.type"), "", "", null, null, true,
|
||||
null, i18n.get("upload.swmodule.type"));
|
||||
typeComboBox.setId(SPUIComponentIdProvider.SW_MODULE_TYPE);
|
||||
typeComboBox.setStyleName(SPUIDefinitions.COMBO_BOX_SPECIFIC_STYLE + " " + ValoTheme.COMBOBOX_TINY);
|
||||
typeComboBox.setNewItemsAllowed(Boolean.FALSE);
|
||||
typeComboBox.setImmediate(Boolean.TRUE);
|
||||
typeComboBox.addValueChangeListener(this::typeComboBoxChanged);
|
||||
typeComboBox.addValueChangeListener(this::listenerTypeComboBoxChanged);
|
||||
|
||||
populateTypeNameCombo();
|
||||
|
||||
resetOldValues();
|
||||
}
|
||||
|
||||
private void nameTextFieldChanged(final TextChangeEvent event) {
|
||||
if (StringUtils.isNotBlank(event.getText())) {
|
||||
window.getRequiredFields().put(nameTextField.getCaption(), Boolean.TRUE);
|
||||
} else {
|
||||
window.getRequiredFields().put(nameTextField.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
window.checkMandatoryFields();
|
||||
private void listenerNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, nameTextField);
|
||||
}
|
||||
|
||||
private void versionTextFieldChanged(final TextChangeEvent event) {
|
||||
if (StringUtils.isNotBlank(event.getText())) {
|
||||
window.getRequiredFields().put(versionTextField.getCaption(), Boolean.TRUE);
|
||||
} else {
|
||||
window.getRequiredFields().put(versionTextField.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
window.checkMandatoryFields();
|
||||
private void listenerVersionTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, versionTextField);
|
||||
}
|
||||
|
||||
private void typeComboBoxChanged(final ValueChangeEvent event) {
|
||||
if (event.getProperty().getValue() != null) {
|
||||
window.getRequiredFields().put(typeComboBox.getCaption(), Boolean.TRUE);
|
||||
} else {
|
||||
window.getRequiredFields().put(typeComboBox.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
window.checkMandatoryFields();
|
||||
private void listenerTypeComboBoxChanged(final ValueChangeEvent event) {
|
||||
window.checkMandatoryComboBox(event, typeComboBox);
|
||||
}
|
||||
|
||||
private void populateTypeNameCombo() {
|
||||
@@ -212,6 +189,10 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
private void resetOldValues() {
|
||||
oldDescriptionValue = null;
|
||||
oldVendorValue = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
}
|
||||
}
|
||||
|
||||
private void createWindow() {
|
||||
@@ -227,7 +208,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
addStyleName("lay-color");
|
||||
|
||||
final FormLayout formLayout = new FormLayout();
|
||||
// formLayout.addComponent(mandatoryLabel);
|
||||
formLayout.addComponent(typeComboBox);
|
||||
formLayout.addComponent(nameTextField);
|
||||
formLayout.addComponent(versionTextField);
|
||||
@@ -252,13 +232,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
}
|
||||
// else if (c instanceof TextField && ((TextField) c).isRequired())
|
||||
// {
|
||||
// requiredFields.put(c.getCaption(), null);
|
||||
// } else if (c instanceof TextArea && ((TextArea) c).isRequired())
|
||||
// {
|
||||
// requiredFields.put(c.getCaption(), null);
|
||||
// }
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
@@ -347,6 +320,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
private void closeThisWindow() {
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -383,6 +357,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
} else {
|
||||
addNewBaseSoftware();
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private boolean hasDescriptionChanged(final TextChangeEvent event) {
|
||||
|
||||
@@ -9,7 +9,10 @@
|
||||
package org.eclipse.hawkbit.ui.artifacts.smtype;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
@@ -31,11 +34,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
|
||||
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.AbstractField;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.OptionGroup;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
|
||||
@@ -69,7 +75,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
@Override
|
||||
protected void addListeners() {
|
||||
super.addListeners();
|
||||
optiongroup.addValueChangeListener(this::createOptionValueChanged);
|
||||
optiongroup.addValueChangeListener(this::optionValueChanged);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -86,11 +92,13 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_NAME, true, "", i18n.get("textfield.name"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
tagName.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_NAME);
|
||||
tagName.addTextChangeListener(this::listenerTagNameTextFieldChanged);
|
||||
|
||||
typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_KEY, true, "", i18n.get("textfield.key"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
typeKey.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_KEY);
|
||||
typeKey.addTextChangeListener(this::typeKeyTextFieldChanged);
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, false, "",
|
||||
@@ -103,6 +111,14 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
singleMultiOptionGroup();
|
||||
}
|
||||
|
||||
private void listenerTagNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, tagName);
|
||||
}
|
||||
|
||||
private void typeKeyTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, typeKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildLayout() {
|
||||
|
||||
@@ -112,13 +128,23 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
getFormLayout().addComponent(assignOptiongroup);
|
||||
}
|
||||
|
||||
// TODO MR requiredFields
|
||||
|
||||
@Override
|
||||
public void createWindow() {
|
||||
reset();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, null);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields());
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
final Iterator<Component> iterate = getFormLayout().iterator();
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,9 +154,9 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
* ValueChangeEvent
|
||||
*/
|
||||
@Override
|
||||
protected void createOptionValueChanged(final ValueChangeEvent event) {
|
||||
protected void optionValueChanged(final ValueChangeEvent event) {
|
||||
|
||||
super.createOptionValueChanged(event);
|
||||
super.optionValueChanged(event);
|
||||
|
||||
if (updateTypeStr.equals(event.getProperty().getValue())) {
|
||||
assignOptiongroup.setEnabled(false);
|
||||
@@ -172,6 +198,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
.findSoftwareModuleTypeByName(targetTagSelected);
|
||||
if (null != selectedTypeTag) {
|
||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||
setTagDescOriginal(selectedTypeTag.getDescription());
|
||||
typeKey.setValue(selectedTypeTag.getKey());
|
||||
if (selectedTypeTag.getMaxAssignments() == Integer.MAX_VALUE) {
|
||||
assignOptiongroup.setValue(multiAssignStr);
|
||||
@@ -201,6 +228,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
@Override
|
||||
protected void save(final ClickEvent event) {
|
||||
if (!mandatoryValuesPresent()) {
|
||||
window.setSaveButtonEnabled(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -216,6 +244,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
|
||||
updateSWModuleType(existingSMTypeByName);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void createNewSWModuleType() {
|
||||
|
||||
@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.common;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -20,11 +21,14 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.ui.AbstractOrderedLayout;
|
||||
import com.vaadin.ui.AbstractSelect;
|
||||
import com.vaadin.ui.AbstractTextField;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Button.ClickListener;
|
||||
@@ -40,9 +44,7 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
* Superclass for pop-up-windows including a minimize and close icon in the
|
||||
* upper right corner and a save and cancel button at the bottom.
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class CommonDialogWindow extends Window {
|
||||
public class CommonDialogWindow extends Window implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -1321949234316858703L;
|
||||
|
||||
@@ -100,12 +102,38 @@ public class CommonDialogWindow extends Window {
|
||||
init();
|
||||
}
|
||||
|
||||
public void checkMandatoryTextField(final TextChangeEvent event, final AbstractTextField textfield) {
|
||||
|
||||
if (StringUtils.isNotBlank(event.getText())) {
|
||||
getRequiredFields().put(textfield.getCaption(), Boolean.TRUE);
|
||||
} else {
|
||||
getRequiredFields().put(textfield.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
checkMandatoryFields();
|
||||
}
|
||||
|
||||
public void checkMandatoryComboBox(final ValueChangeEvent event, final AbstractSelect select) {
|
||||
|
||||
if (event.getProperty().getValue() != null) {
|
||||
if (StringUtils.isNotBlank(select.getCaption())) {
|
||||
getRequiredFields().put(select.getCaption(), Boolean.TRUE);
|
||||
}
|
||||
getRequiredFields().put(select.getId(), Boolean.TRUE);
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(select.getCaption())) {
|
||||
getRequiredFields().put(select.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
getRequiredFields().put(select.getId(), Boolean.FALSE);
|
||||
}
|
||||
checkMandatoryFields();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the mandatory fields in the pop-up-window content. If all
|
||||
* mandatory fields are filled the save button is enabled. Otherwise the
|
||||
* save button is disabled.
|
||||
*/
|
||||
public void checkMandatoryFields() {
|
||||
private void checkMandatoryFields() {
|
||||
|
||||
for (final Map.Entry<String, Boolean> entry : requiredFields.entrySet()) {
|
||||
if (entry.getValue() == null || entry.getValue().equals(Boolean.FALSE)) {
|
||||
@@ -116,6 +144,40 @@ public class CommonDialogWindow extends Window {
|
||||
saveButton.setEnabled(true);
|
||||
}
|
||||
|
||||
public void updateRequiredFields(final String fieldId, final Boolean filled) {
|
||||
|
||||
getRequiredFields().put(fieldId, Boolean.TRUE);
|
||||
checkMandatoryFields();
|
||||
}
|
||||
|
||||
public void checkChanges(final String newText, final String oldText) {
|
||||
|
||||
if ((StringUtils.isNotBlank(newText) && !newText.equals(oldText))
|
||||
|| (StringUtils.isNotBlank(oldText) && !oldText.equals(newText))) {
|
||||
saveButton.setEnabled(true);
|
||||
} else {
|
||||
saveButton.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void checkColorChange(final Color newColor, final Color oldColor) {
|
||||
|
||||
if (newColor.equals(oldColor)) {
|
||||
setSaveButtonEnabled(false);
|
||||
} else {
|
||||
setSaveButtonEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void resetRequiredFieldsValues() {
|
||||
// Reset mandatory fields are filled marker
|
||||
if (getRequiredFields() != null) {
|
||||
for (final Map.Entry<String, Boolean> entry : getRequiredFields().entrySet()) {
|
||||
entry.setValue(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final void init() {
|
||||
|
||||
if (content instanceof AbstractOrderedLayout) {
|
||||
|
||||
@@ -205,6 +205,8 @@ public final class SPUIComponentProvider {
|
||||
/**
|
||||
* Get Label UI component. *
|
||||
*
|
||||
* @param caption
|
||||
* set the caption of the textArea
|
||||
* @param style
|
||||
* set style
|
||||
* @param styleName
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.distributions.disttype;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
@@ -37,9 +40,11 @@ import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
|
||||
import com.vaadin.data.Item;
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.util.IndexedContainer;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.AbstractField;
|
||||
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
@@ -94,11 +99,13 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_NAME, true, "",
|
||||
i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
tagName.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_NAME);
|
||||
tagName.addTextChangeListener(this::listenerTagNameTextFieldChanged);
|
||||
|
||||
typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_KEY, true, "", i18n.get("textfield.key"),
|
||||
true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
typeKey.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_KEY);
|
||||
typeKey.addTextChangeListener(this::listenerTypeKeyTextFieldChanged);
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_DESC, false, "",
|
||||
@@ -109,6 +116,15 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
tagDesc.setNullRepresentation("");
|
||||
}
|
||||
|
||||
private void listenerTagNameTextFieldChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkMandatoryTextField(event, tagName);
|
||||
}
|
||||
|
||||
private void listenerTypeKeyTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, typeKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildLayout() {
|
||||
|
||||
@@ -247,10 +263,12 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
private void addSMType() {
|
||||
|
||||
final Set<Long> selectedIds = (Set<Long>) sourceTable.getValue();
|
||||
if (null != selectedIds && !selectedIds.isEmpty()) {
|
||||
if (selectedIds != null && !selectedIds.isEmpty()) {
|
||||
for (final Long id : selectedIds) {
|
||||
addTargetTableData(id);
|
||||
}
|
||||
|
||||
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,6 +282,9 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
selectedTable.removeItem(id);
|
||||
}
|
||||
}
|
||||
if (selectedIds == null || selectedIds.isEmpty()) {
|
||||
window.updateRequiredFields(selectedTable.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -484,9 +505,9 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
* ValueChangeEvent
|
||||
*/
|
||||
@Override
|
||||
protected void createOptionValueChanged(final ValueChangeEvent event) {
|
||||
protected void optionValueChanged(final ValueChangeEvent event) {
|
||||
|
||||
super.createOptionValueChanged(event);
|
||||
super.optionValueChanged(event);
|
||||
|
||||
if (updateTypeStr.equals(event.getProperty().getValue())) {
|
||||
selectedTable.getContainerDataSource().removeAllItems();
|
||||
@@ -551,18 +572,17 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
final DistributionSetType selectedTypeTag = fetchDistributionSetType(distSetTypeSelected);
|
||||
if (null != selectedTypeTag) {
|
||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||
setTagDescOriginal(selectedTypeTag.getDescription());
|
||||
typeKey.setValue(selectedTypeTag.getKey());
|
||||
|
||||
if (distributionSetManagement.countDistributionSetsByType(selectedTypeTag) <= 0) {
|
||||
distTypeSelectLayout.setEnabled(true);
|
||||
selectedTable.setEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
} else {
|
||||
uiNotification.displayValidationError(
|
||||
selectedTypeTag.getName() + " " + i18n.get("message.error.dist.set.type.update"));
|
||||
distTypeSelectLayout.setEnabled(false);
|
||||
selectedTable.setEnabled(false);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
for (final SoftwareModuleType swModuleType : selectedTypeTag.getOptionalModuleTypes()) {
|
||||
addTargetTableforUpdate(swModuleType, false);
|
||||
@@ -607,15 +627,30 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
} else {
|
||||
updateDistributionSetType(existingDistTypeByKey);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO MR requiredFields
|
||||
@Override
|
||||
public void createWindow() {
|
||||
reset();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, null);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields());
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
final Iterator<Component> iterate = getFormLayout().iterator();
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
}
|
||||
}
|
||||
// Selected SoftwareModulesType
|
||||
requiredFields.put(selectedTable.getId(), null);
|
||||
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.layouts;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
import org.eclipse.hawkbit.repository.SpPermissionChecker;
|
||||
@@ -25,7 +29,6 @@ import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
@@ -33,11 +36,14 @@ import org.vaadin.spring.events.EventBus;
|
||||
import com.google.common.base.Strings;
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.server.Page;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.ui.AbstractField;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.GridLayout;
|
||||
@@ -87,7 +93,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
protected CommonDialogWindow window;
|
||||
|
||||
protected Label colorLabel;
|
||||
protected Label madatoryLabel;
|
||||
protected TextField tagName;
|
||||
protected TextArea tagDesc;
|
||||
protected Button tagColorPreviewBtn;
|
||||
@@ -105,11 +110,25 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
protected String tagNameValue;
|
||||
protected String tagDescValue;
|
||||
|
||||
// TODO MR requiredFields
|
||||
private Color selectedColorOriginal;
|
||||
private String tagDescOriginal;
|
||||
|
||||
protected void createWindow() {
|
||||
reset();
|
||||
setWindow(SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, null));
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields()));
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
final Iterator<Component> iterate = formLayout.iterator();
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -158,7 +177,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
createTagStr = i18n.get("label.create.tag");
|
||||
updateTagStr = i18n.get("label.update.tag");
|
||||
comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag"), null);
|
||||
madatoryLabel = getMandatoryLabel();
|
||||
colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag.color"), null);
|
||||
colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE);
|
||||
|
||||
@@ -166,6 +184,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_NAME, true, "", i18n.get("textfield.name"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
tagName.setId(SPUIDefinitions.NEW_TARGET_TAG_NAME);
|
||||
tagName.addTextChangeListener(this::listenerTagNameTextFieldChanged);
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_DESC, false, "", i18n.get("textfield.description"),
|
||||
@@ -174,6 +193,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
tagDesc.setId(SPUIDefinitions.NEW_TARGET_TAG_DESC);
|
||||
tagDesc.setImmediate(true);
|
||||
tagDesc.setNullRepresentation("");
|
||||
tagDesc.addTextChangeListener(this::listenerTagDescTextAreaChanged);
|
||||
|
||||
tagNameComboBox = SPUIComponentProvider.getComboBox(null, "", "", null, null, false, "",
|
||||
i18n.get("label.combobox.tag"));
|
||||
@@ -186,6 +206,16 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE);
|
||||
}
|
||||
|
||||
private void listenerTagNameTextFieldChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkMandatoryTextField(event, tagName);
|
||||
}
|
||||
|
||||
private void listenerTagDescTextAreaChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkChanges(event.getText(), tagDescOriginal);
|
||||
}
|
||||
|
||||
protected void buildLayout() {
|
||||
|
||||
mainLayout = new GridLayout(3, 2);
|
||||
@@ -201,7 +231,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
|
||||
formLayout.addComponent(optiongroup);
|
||||
formLayout.addComponent(comboLayout);
|
||||
formLayout.addComponent(madatoryLabel);
|
||||
formLayout.addComponent(tagName);
|
||||
formLayout.addComponent(tagDesc);
|
||||
formLayout.addStyleName("form-lastrow");
|
||||
@@ -269,12 +298,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
}
|
||||
}
|
||||
|
||||
protected Label getMandatoryLabel() {
|
||||
final Label label = new Label(i18n.get("label.mandatory.field"));
|
||||
label.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
return label;
|
||||
}
|
||||
|
||||
private void tagNameChosen(final ValueChangeEvent event) {
|
||||
final String tagSelected = (String) event.getProperty().getValue();
|
||||
if (null != tagSelected) {
|
||||
@@ -319,6 +342,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
// close the color picker layout
|
||||
tagPreviewBtnClicked = false;
|
||||
// reset the selected color - Set default color
|
||||
@@ -347,6 +371,10 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||
tagPreviewBtnClicked = false;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -434,11 +462,14 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
createDynamicStyleForComponents(tagName, tagDesc, colorPickedPreview);
|
||||
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
|
||||
}
|
||||
|
||||
window.checkColorChange(colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
}
|
||||
|
||||
protected void closeWindow() {
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -643,4 +674,20 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
return formLayout;
|
||||
}
|
||||
|
||||
public Color getSelectedColorOriginal() {
|
||||
return selectedColorOriginal;
|
||||
}
|
||||
|
||||
public void setSelectedColorOriginal(final Color selectedColorOriginal) {
|
||||
this.selectedColorOriginal = selectedColorOriginal;
|
||||
}
|
||||
|
||||
public String getTagDescOriginal() {
|
||||
return tagDescOriginal;
|
||||
}
|
||||
|
||||
public void setTagDescOriginal(final String tagDescOriginal) {
|
||||
this.tagDescOriginal = tagDescOriginal;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
@Override
|
||||
protected void addListeners() {
|
||||
super.addListeners();
|
||||
optiongroup.addValueChangeListener(this::createOptionValueChanged);
|
||||
optiongroup.addValueChangeListener(this::optionValueChanged);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -61,7 +61,6 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
createTypeStr = i18n.get("label.create.type");
|
||||
updateTypeStr = i18n.get("label.update.type");
|
||||
comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null);
|
||||
madatoryLabel = getMandatoryLabel();
|
||||
colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null);
|
||||
colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE);
|
||||
|
||||
@@ -137,7 +136,8 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
* @param event
|
||||
* ValueChangeEvent
|
||||
*/
|
||||
protected void createOptionValueChanged(final ValueChangeEvent event) {
|
||||
@Override
|
||||
protected void optionValueChanged(final ValueChangeEvent event) {
|
||||
|
||||
if (updateTypeStr.equals(event.getProperty().getValue())) {
|
||||
tagName.clear();
|
||||
@@ -158,6 +158,7 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
restoreComponentStyles();
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
getColorPickerLayout().getSelPreview()
|
||||
@@ -236,12 +237,14 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, ColorPickerConstants.DEFAULT_COLOR);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
||||
} else {
|
||||
getColorPickerLayout().setSelectedColor(ColorPickerHelper.rgbToColorConverter(color));
|
||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, color);
|
||||
getPreviewButtonColor(color);
|
||||
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(color));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.management.dstable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -49,12 +50,12 @@ import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.event.FieldEvents.TextChangeListener;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.AbstractField;
|
||||
import com.vaadin.ui.CheckBox;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.TextArea;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
@@ -92,13 +93,12 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
|
||||
private TextField distNameTextField;
|
||||
private TextField distVersionTextField;
|
||||
private Label madatoryLabel;
|
||||
private TextArea descTextArea;
|
||||
private CheckBox reqMigStepCheckbox;
|
||||
private ComboBox distsetTypeNameComboBox;
|
||||
private boolean editDistribution = Boolean.FALSE;
|
||||
private Long editDistId;
|
||||
private CommonDialogWindow addDistributionWindow;
|
||||
private CommonDialogWindow window;
|
||||
private String originalDistName;
|
||||
private String originalDistVersion;
|
||||
private String originalDistDescription;
|
||||
@@ -132,7 +132,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
setSizeUndefined();
|
||||
|
||||
formLayout = new FormLayout();
|
||||
formLayout.addComponent(madatoryLabel);
|
||||
formLayout.addComponent(distsetTypeNameComboBox);
|
||||
formLayout.addComponent(distNameTextField);
|
||||
formLayout.addComponent(distVersionTextField);
|
||||
@@ -152,12 +151,14 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
true, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
distNameTextField.setId(SPUIComponentIdProvider.DIST_ADD_NAME);
|
||||
distNameTextField.setNullRepresentation("");
|
||||
distNameTextField.addTextChangeListener(this::listenerDistNameTextFieldChanged);
|
||||
|
||||
distVersionTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.version"), "",
|
||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.version"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
distVersionTextField.setId(SPUIComponentIdProvider.DIST_ADD_VERSION);
|
||||
distVersionTextField.setNullRepresentation("");
|
||||
distVersionTextField.addTextChangeListener(this::listenerDistVersionTextFieldChanged);
|
||||
|
||||
distsetTypeNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, "",
|
||||
false, "", i18n.get("label.combobox.type"));
|
||||
@@ -171,16 +172,20 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
descTextArea.setId(SPUIComponentIdProvider.DIST_ADD_DESC);
|
||||
descTextArea.setNullRepresentation("");
|
||||
|
||||
/* Label for mandatory symbol */
|
||||
madatoryLabel = new Label(i18n.get("label.mandatory.field"));
|
||||
madatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
|
||||
reqMigStepCheckbox = SPUIComponentProvider.getCheckBox(i18n.get("checkbox.dist.required.migration.step"),
|
||||
"dist-checkbox-style", null, false, "");
|
||||
reqMigStepCheckbox.addStyleName(ValoTheme.CHECKBOX_SMALL);
|
||||
reqMigStepCheckbox.setId(SPUIComponentIdProvider.DIST_ADD_MIGRATION_CHECK);
|
||||
}
|
||||
|
||||
private void listenerDistNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, distNameTextField);
|
||||
}
|
||||
|
||||
private void listenerDistVersionTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, distVersionTextField);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the LazyQueryContainer instance for DistributionSetTypes.
|
||||
*
|
||||
@@ -201,7 +206,7 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
|
||||
private void enableSaveButton() {
|
||||
addDistributionWindow.setSaveButtonEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
private DistributionSetType getDefaultDistributionSetType() {
|
||||
@@ -210,17 +215,16 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
|
||||
private void disableSaveButton() {
|
||||
addDistributionWindow.setSaveButtonEnabled(false);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void saveDistribution() {
|
||||
/* add new or update target */
|
||||
if (editDistribution) {
|
||||
updateDistribution();
|
||||
} else {
|
||||
addNewDistribution();
|
||||
}
|
||||
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -298,8 +302,9 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
* Close window.
|
||||
*/
|
||||
private void closeThisWindow() {
|
||||
addDistributionWindow.close();
|
||||
UI.getCurrent().removeWindow(addDistributionWindow);
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -398,11 +403,15 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
distsetTypeNameComboBox.removeStyleName(SPUIStyleDefinitions.SP_COMBOFIELD_ERROR);
|
||||
descTextArea.clear();
|
||||
reqMigStepCheckbox.clear();
|
||||
if (addDistributionWindow != null) {
|
||||
addDistributionWindow.setSaveButtonEnabled(true);
|
||||
if (window != null) {
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
removeListeners();
|
||||
changedComponents.clear();
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
}
|
||||
}
|
||||
|
||||
private void populateRequiredComponents() {
|
||||
@@ -482,7 +491,7 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
public void populateValuesOfDistribution(final Long editDistId) {
|
||||
this.editDistId = editDistId;
|
||||
editDistribution = Boolean.TRUE;
|
||||
addDistributionWindow.setSaveButtonEnabled(false);
|
||||
window.setSaveButtonEnabled(false);
|
||||
final DistributionSet distSet = distributionSetManagement.findDistributionSetByIdWithDetails(editDistId);
|
||||
if (distSet != null) {
|
||||
distNameTextField.setValue(distSet.getName());
|
||||
@@ -504,17 +513,28 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO MR requiredFields
|
||||
public CommonDialogWindow getWindow() {
|
||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
||||
populateRequiredComponents();
|
||||
resetComponents();
|
||||
addDistributionWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null,
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(),
|
||||
null, null);
|
||||
addDistributionWindow.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||
null, getMandatoryFields());
|
||||
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||
|
||||
return addDistributionWindow;
|
||||
return window;
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
final Iterator<Component> iterate = formLayout.iterator();
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -98,6 +98,7 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
||||
updateExistingTag(existingDistTag);
|
||||
}
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,11 +160,14 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
||||
final DistributionSetTag selectedDistTag = tagManagement.findDistributionSetTag(distTagSelected);
|
||||
if (null != selectedDistTag) {
|
||||
tagDesc.setValue(selectedDistTag.getDescription());
|
||||
setTagDescOriginal(selectedDistTag.getDescription());
|
||||
if (null == selectedDistTag.getColour()) {
|
||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
||||
} else {
|
||||
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()),
|
||||
selectedDistTag.getColour());
|
||||
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,4 +185,5 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
||||
setOptionGroupDefaultValue(permChecker.hasCreateDistributionPermission(),
|
||||
permChecker.hasUpdateDistributionPermission());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,9 +8,13 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.management.targettable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
@@ -35,6 +39,8 @@ import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.event.FieldEvents.TextChangeListener;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.VaadinSessionScope;
|
||||
import com.vaadin.ui.AbstractField;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
@@ -73,7 +79,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
private TextField controllerIDTextField;
|
||||
private TextField nameTextField;
|
||||
private TextArea descTextArea;
|
||||
private Label madatoryLabel;
|
||||
private boolean editTarget = Boolean.FALSE;
|
||||
private String controllerId;
|
||||
private FormLayout formLayout;
|
||||
@@ -100,6 +105,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
controllerIDTextField = SPUIComponentProvider.getTextField( i18n.get("prompt.target.id"), "", ValoTheme.TEXTFIELD_TINY, true, null,
|
||||
i18n.get("prompt.target.id"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
controllerIDTextField.setId(SPUIComponentIdProvider.TARGET_ADD_CONTROLLER_ID);
|
||||
controllerIDTextField.addTextChangeListener(this::listenerControllerIDTextFieldChanged);
|
||||
|
||||
/* Textfield for target name */
|
||||
nameTextField = SPUIComponentProvider.getTextField( i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY, false, null,
|
||||
@@ -111,10 +117,10 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
descTextArea.setId(SPUIComponentIdProvider.TARGET_ADD_DESC);
|
||||
descTextArea.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||
|
||||
/* Label for mandatory symbol */
|
||||
madatoryLabel = new Label(i18n.get("label.mandatory.field"));
|
||||
madatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
}
|
||||
|
||||
private void listenerControllerIDTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, controllerIDTextField);
|
||||
}
|
||||
|
||||
private void buildLayout() {
|
||||
@@ -125,14 +131,10 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
*/
|
||||
|
||||
formLayout = new FormLayout();
|
||||
formLayout.addComponent(madatoryLabel);
|
||||
formLayout.addComponent(controllerIDTextField);
|
||||
formLayout.addComponent(nameTextField);
|
||||
formLayout.addComponent(descTextArea);
|
||||
|
||||
if (Boolean.TRUE.equals(editTarget)) {
|
||||
madatoryLabel.setVisible(Boolean.FALSE);
|
||||
}
|
||||
nameTextField.focus();
|
||||
}
|
||||
|
||||
@@ -211,6 +213,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
} else {
|
||||
addNewTarget();
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void discardTargetListner() {
|
||||
@@ -241,13 +244,24 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO MR requiredFields
|
||||
public Window getWindow() {
|
||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.target"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(), event -> discardTargetListner(), null, null);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(), event -> discardTargetListner(), null, getMandatoryFields());
|
||||
return window;
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
final Iterator<Component> iterate = formLayout.iterator();
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
/**
|
||||
* clear all fields of Target Edit Window.
|
||||
@@ -261,12 +275,17 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
controllerIDTextField.clear();
|
||||
descTextArea.clear();
|
||||
editTarget = Boolean.FALSE;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
}
|
||||
}
|
||||
|
||||
private void closeThisWindow() {
|
||||
editTarget = Boolean.FALSE;
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void setTargetValues(final Target target, final String name, final String description) {
|
||||
@@ -287,7 +306,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
private boolean duplicateCheck(final String newControlllerId) {
|
||||
final Target existingTarget = targetManagement.findTargetByControllerID(newControlllerId.trim());
|
||||
if (existingTarget != null) {
|
||||
uINotification.displayValidationError(i18n.get("message.target.duplicate.check"));
|
||||
uINotification.displayValidationError(i18n.get("message.target.duplicate.check", new Object[] {newControlllerId}));
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
|
||||
@@ -91,11 +91,14 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
|
||||
final TargetTag selectedTargetTag = tagManagement.findTargetTag(targetTagSelected);
|
||||
if (null != selectedTargetTag) {
|
||||
tagDesc.setValue(selectedTargetTag.getDescription());
|
||||
setTagDescOriginal(selectedTargetTag.getDescription());
|
||||
if (null == selectedTargetTag.getColour()) {
|
||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
||||
} else {
|
||||
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()),
|
||||
selectedTargetTag.getColour());
|
||||
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -112,6 +115,7 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
|
||||
updateExistingTag(existingTag);
|
||||
}
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,7 +10,9 @@ package org.eclipse.hawkbit.ui.rollout.rollout;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
@@ -58,6 +60,7 @@ import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Validator;
|
||||
import com.vaadin.data.validator.IntegerRangeValidator;
|
||||
import com.vaadin.data.validator.RegexpValidator;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
@@ -115,8 +118,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
@Autowired
|
||||
private transient EventBus.SessionEventBus eventBus;
|
||||
|
||||
private Label mandatoryLabel;
|
||||
|
||||
private TextField rolloutName;
|
||||
|
||||
private ComboBox distributionSet;
|
||||
@@ -135,7 +136,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
private OptionGroup errorThresholdOptionGroup;
|
||||
|
||||
private CommonDialogWindow addUpdateRolloutWindow;
|
||||
private CommonDialogWindow window;
|
||||
|
||||
private Boolean editRolloutEnabled;
|
||||
|
||||
@@ -157,13 +158,25 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
buildLayout();
|
||||
}
|
||||
|
||||
// TODO MR requiredFields
|
||||
public CommonDialogWindow getWindow() {
|
||||
|
||||
addUpdateRolloutWindow = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null,
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard(),
|
||||
uiProperties.getLinks().getDocumentation().getRolloutView(), null);
|
||||
return addUpdateRolloutWindow;
|
||||
uiProperties.getLinks().getDocumentation().getRolloutView(), getMandatoryFields());
|
||||
return window;
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
requiredFields.put(rolloutName.getId(), null);
|
||||
requiredFields.put(distributionSet.getId(), null);
|
||||
requiredFields.put(targetFilterQueryCombo.getId(), null);
|
||||
requiredFields.put(noOfGroups.getId(), null);
|
||||
requiredFields.put(triggerThreshold.getId(), null);
|
||||
requiredFields.put(errorThreshold.getId(), null);
|
||||
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,6 +200,10 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
actionTypeOptionGroupLayout.selectDefaultOption();
|
||||
totalTargetsCount = 0L;
|
||||
rolloutForEdit = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
}
|
||||
}
|
||||
|
||||
private void resetFields() {
|
||||
@@ -208,26 +225,25 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
setRows(9);
|
||||
setColumns(3);
|
||||
|
||||
addComponent(mandatoryLabel, 1, 0, 2, 0);
|
||||
addComponent(getLabel("textfield.name"), 0, 1);
|
||||
addComponent(rolloutName, 1, 1);
|
||||
addComponent(getLabel("prompt.distribution.set"), 0, 2);
|
||||
addComponent(distributionSet, 1, 2);
|
||||
addComponent(getLabel("prompt.target.filter"), 0, 3);
|
||||
addComponent(targetFilterQueryCombo, 1, 3);
|
||||
addComponent(totalTargetsLabel, 2, 3);
|
||||
addComponent(getLabel("prompt.number.of.groups"), 0, 4);
|
||||
addComponent(noOfGroups, 1, 4);
|
||||
addComponent(groupSizeLabel, 2, 4);
|
||||
addComponent(getLabel("prompt.tigger.threshold"), 0, 5);
|
||||
addComponent(triggerThreshold, 1, 5);
|
||||
addComponent(getPercentHintLabel(), 2, 5);
|
||||
addComponent(getLabel("prompt.error.threshold"), 0, 6);
|
||||
addComponent(errorThreshold, 1, 6);
|
||||
addComponent(errorThresholdOptionGroup, 2, 6);
|
||||
addComponent(getLabel("textfield.description"), 0, 7);
|
||||
addComponent(description, 1, 7, 2, 7);
|
||||
addComponent(actionTypeOptionGroupLayout, 0, 8, 2, 8);
|
||||
addComponent(getLabel("textfield.name"), 0, 0);
|
||||
addComponent(rolloutName, 1, 0);
|
||||
addComponent(getLabel("prompt.distribution.set"), 0, 1);
|
||||
addComponent(distributionSet, 1, 1);
|
||||
addComponent(getLabel("prompt.target.filter"), 0, 2);
|
||||
addComponent(targetFilterQueryCombo, 1, 2);
|
||||
addComponent(totalTargetsLabel, 2, 2);
|
||||
addComponent(getLabel("prompt.number.of.groups"), 0, 3);
|
||||
addComponent(noOfGroups, 1, 3);
|
||||
addComponent(groupSizeLabel, 2, 3);
|
||||
addComponent(getLabel("prompt.tigger.threshold"), 0, 4);
|
||||
addComponent(triggerThreshold, 1, 4);
|
||||
addComponent(getPercentHintLabel(), 2, 4);
|
||||
addComponent(getLabel("prompt.error.threshold"), 0, 5);
|
||||
addComponent(errorThreshold, 1, 5);
|
||||
addComponent(errorThresholdOptionGroup, 2, 5);
|
||||
addComponent(getLabel("textfield.description"), 0, 6);
|
||||
addComponent(description, 1, 6, 2, 6);
|
||||
addComponent(actionTypeOptionGroupLayout, 0, 7, 2, 7);
|
||||
|
||||
rolloutName.focus();
|
||||
}
|
||||
@@ -249,7 +265,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void createRequiredComponents() {
|
||||
mandatoryLabel = createMandatoryLabel();
|
||||
rolloutName = createRolloutNameField();
|
||||
distributionSet = createDistributionSetCombo();
|
||||
populateDistributionSet();
|
||||
@@ -308,11 +323,11 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
errorThresoldOptions.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL);
|
||||
errorThresoldOptions.addStyleName(SPUIStyleDefinitions.ROLLOUT_OPTION_GROUP);
|
||||
errorThresoldOptions.setSizeUndefined();
|
||||
errorThresoldOptions.addValueChangeListener(this::onErrorThresoldOptionChange);
|
||||
errorThresoldOptions.addValueChangeListener(this::listenerOnErrorThresoldOptionChange);
|
||||
return errorThresoldOptions;
|
||||
}
|
||||
|
||||
private void onErrorThresoldOptionChange(final ValueChangeEvent event) {
|
||||
private void listenerOnErrorThresoldOptionChange(final ValueChangeEvent event) {
|
||||
errorThreshold.clear();
|
||||
errorThreshold.removeAllValidators();
|
||||
if (event.getProperty().getValue().equals(ERRORTHRESOLDOPTIONS.COUNT.getValue())) {
|
||||
@@ -331,11 +346,11 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
targetFilter.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
targetFilter.setId(SPUIComponentIdProvider.ROLLOUT_TARGET_FILTER_COMBO_ID);
|
||||
targetFilter.setSizeUndefined();
|
||||
targetFilter.addValueChangeListener(event -> onTargetFilterChange());
|
||||
targetFilter.addValueChangeListener(this::onTargetFilterChange);
|
||||
return targetFilter;
|
||||
}
|
||||
|
||||
private void onTargetFilterChange() {
|
||||
private void onTargetFilterChange(final ValueChangeEvent event) {
|
||||
final String filterQueryString = getTargetFilterQuery();
|
||||
if (!Strings.isNullOrEmpty(filterQueryString)) {
|
||||
totalTargetsCount = targetManagement.countTargetByTargetFilterQuery(filterQueryString);
|
||||
@@ -346,6 +361,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
totalTargetsLabel.setVisible(false);
|
||||
}
|
||||
onGroupNumberChange();
|
||||
|
||||
window.checkMandatoryComboBox(event, targetFilterQueryCombo);
|
||||
}
|
||||
|
||||
private String getTotalTargetMessage() {
|
||||
@@ -490,8 +507,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void closeThisWindow() {
|
||||
addUpdateRolloutWindow.close();
|
||||
UI.getCurrent().removeWindow(addUpdateRolloutWindow);
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
}
|
||||
|
||||
private boolean mandatoryCheck() {
|
||||
@@ -560,18 +577,29 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
errorField.setId(SPUIComponentIdProvider.ROLLOUT_ERROR_THRESOLD_ID);
|
||||
errorField.setMaxLength(7);
|
||||
errorField.setSizeUndefined();
|
||||
errorField.addTextChangeListener(this::listenerErrorThresholdTextFieldChanged);
|
||||
return errorField;
|
||||
}
|
||||
|
||||
private void listenerErrorThresholdTextFieldChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkMandatoryTextField(event, errorThreshold);
|
||||
}
|
||||
|
||||
private TextField createTriggerThresold() {
|
||||
final TextField thresholdField = getTextfield("prompt.tigger.threshold");
|
||||
thresholdField.setId(SPUIComponentIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
|
||||
thresholdField.addValidator(new ThresholdFieldValidator());
|
||||
thresholdField.setSizeUndefined();
|
||||
thresholdField.setMaxLength(3);
|
||||
thresholdField.addTextChangeListener(this::listenerTriggerThresholdTextFieldChanged);
|
||||
return thresholdField;
|
||||
}
|
||||
|
||||
private void listenerTriggerThresholdTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, triggerThreshold);
|
||||
}
|
||||
|
||||
private TextField createNoOfGroupsField() {
|
||||
final TextField noOfGroupsField = getTextfield("prompt.number.of.groups");
|
||||
noOfGroupsField.setId(SPUIComponentIdProvider.ROLLOUT_NO_OF_GROUPS_ID);
|
||||
@@ -579,9 +607,14 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
noOfGroupsField.setSizeUndefined();
|
||||
noOfGroupsField.setMaxLength(3);
|
||||
noOfGroupsField.addValueChangeListener(evevt -> onGroupNumberChange());
|
||||
noOfGroupsField.addTextChangeListener(this::listenerNoOfGroupsTextFieldChanged);
|
||||
return noOfGroupsField;
|
||||
}
|
||||
|
||||
private void listenerNoOfGroupsTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, noOfGroups);
|
||||
}
|
||||
|
||||
private void onGroupNumberChange() {
|
||||
if (noOfGroups.isValid() && !Strings.isNullOrEmpty(noOfGroups.getValue())) {
|
||||
groupSizeLabel.setValue(getTargetPerGroupMessage(String.valueOf(getGroupSize())));
|
||||
@@ -599,9 +632,14 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
dsSet.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
dsSet.setId(SPUIComponentIdProvider.ROLLOUT_DS_ID);
|
||||
dsSet.setSizeUndefined();
|
||||
dsSet.addValueChangeListener(this::listenerDistributionSetChanged);
|
||||
return dsSet;
|
||||
}
|
||||
|
||||
private void listenerDistributionSetChanged(final ValueChangeEvent event) {
|
||||
window.checkMandatoryComboBox(event, distributionSet);
|
||||
}
|
||||
|
||||
private void populateDistributionSet() {
|
||||
final Container container = createDsComboContainer();
|
||||
distributionSet.setContainerDataSource(container);
|
||||
@@ -620,13 +658,12 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
final TextField rolloutNameField = getTextfield("textfield.name");
|
||||
rolloutNameField.setId(SPUIComponentIdProvider.ROLLOUT_NAME_FIELD_ID);
|
||||
rolloutNameField.setSizeUndefined();
|
||||
rolloutNameField.addTextChangeListener(this::listenerRolloutNameTextFieldChanged);
|
||||
return rolloutNameField;
|
||||
}
|
||||
|
||||
private Label createMandatoryLabel() {
|
||||
final Label madatoryLbl = new Label(i18n.get("label.mandatory.field"));
|
||||
madatoryLbl.addStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
return madatoryLbl;
|
||||
private void listenerRolloutNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, rolloutName);
|
||||
}
|
||||
|
||||
private String getRolloutName() {
|
||||
|
||||
Reference in New Issue
Block a user