fix enable save button problem when update
Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com>
This commit is contained in:
@@ -32,8 +32,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.AbstractField;
|
||||
@@ -84,9 +82,15 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
|
||||
private CommonDialogWindow window;
|
||||
|
||||
private String oldDescriptionValue;
|
||||
private String originalDescriptionValue;
|
||||
|
||||
private String oldVendorValue;
|
||||
private String originalVendorValue;
|
||||
|
||||
private String originalNameValue;
|
||||
|
||||
private String originalVersionValue;
|
||||
|
||||
private String originalComboBoxValue;
|
||||
|
||||
private Boolean editSwModule = Boolean.FALSE;
|
||||
|
||||
@@ -135,26 +139,31 @@ 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::listenerNameTextFieldChanged);
|
||||
nameTextField.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalNameValue));
|
||||
nameTextField.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, nameTextField));
|
||||
|
||||
/* 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::listenerVersionTextFieldChanged);
|
||||
versionTextField
|
||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalVersionValue));
|
||||
versionTextField.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, versionTextField));
|
||||
|
||||
/* Vendor text field */
|
||||
vendorTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.vendor"), "", ValoTheme.TEXTFIELD_TINY,
|
||||
false, null, i18n.get("textfield.vendor"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
vendorTextField.setId(SPUIComponentIdProvider.SOFT_MODULE_VENDOR);
|
||||
vendorTextField
|
||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalVendorValue));
|
||||
|
||||
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
||||
ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"),
|
||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
descTextArea.setId(SPUIComponentIdProvider.ADD_SW_MODULE_DESCRIPTION);
|
||||
addDescriptionTextChangeListener();
|
||||
addVendorTextChangeListener();
|
||||
descTextArea
|
||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalDescriptionValue));
|
||||
|
||||
typeComboBox = SPUIComponentProvider.getComboBox(i18n.get("upload.swmodule.type"), "", "", null, null, true,
|
||||
null, i18n.get("upload.swmodule.type"));
|
||||
@@ -162,43 +171,40 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
typeComboBox.setStyleName(SPUIDefinitions.COMBO_BOX_SPECIFIC_STYLE + " " + ValoTheme.COMBOBOX_TINY);
|
||||
typeComboBox.setNewItemsAllowed(Boolean.FALSE);
|
||||
typeComboBox.setImmediate(Boolean.TRUE);
|
||||
typeComboBox.addValueChangeListener(this::listenerTypeComboBoxChanged);
|
||||
|
||||
populateTypeNameCombo();
|
||||
|
||||
resetOldValues();
|
||||
}
|
||||
|
||||
private void listenerNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, nameTextField);
|
||||
}
|
||||
|
||||
private void listenerVersionTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, versionTextField);
|
||||
}
|
||||
|
||||
private void listenerTypeComboBoxChanged(final ValueChangeEvent event) {
|
||||
window.checkMandatoryComboBox(event, typeComboBox);
|
||||
typeComboBox.addValueChangeListener(
|
||||
event -> window.checkMandatoryEditedValue(event, typeComboBox, originalComboBoxValue));
|
||||
}
|
||||
|
||||
private void populateTypeNameCombo() {
|
||||
typeComboBox.setContainerDataSource(HawkbitCommonUtil.createLazyQueryContainer(
|
||||
new BeanQueryFactory<SoftwareModuleTypeBeanQuery>(SoftwareModuleTypeBeanQuery.class)));
|
||||
typeComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
|
||||
}
|
||||
|
||||
private void resetOldValues() {
|
||||
oldDescriptionValue = null;
|
||||
oldVendorValue = null;
|
||||
private void resetComponents() {
|
||||
|
||||
vendorTextField.clear();
|
||||
nameTextField.clear();
|
||||
versionTextField.clear();
|
||||
descTextArea.clear();
|
||||
typeComboBox.clear();
|
||||
|
||||
originalDescriptionValue = null;
|
||||
originalVendorValue = null;
|
||||
originalComboBoxValue = null;
|
||||
originalNameValue = null;
|
||||
originalVersionValue = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetMandatoryAndEditedFields();
|
||||
window.reset();
|
||||
}
|
||||
}
|
||||
|
||||
private void createWindow() {
|
||||
|
||||
resetComponents();
|
||||
|
||||
final Label madatoryStarLabel = new Label("*");
|
||||
madatoryStarLabel.setStyleName("v-caption v-required-field-indicator");
|
||||
madatoryStarLabel.setWidth(null);
|
||||
@@ -223,9 +229,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
/* add main layout to the window */
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveOrUpdate(), event -> closeThisWindow(), null,
|
||||
getMandatoryFields(formLayout), null, i18n);
|
||||
getMandatoryFields(formLayout), geEditedFields(), i18n);
|
||||
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||
nameTextField.focus();
|
||||
typeComboBox.focus();
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields(final FormLayout formLayout) {
|
||||
@@ -234,18 +240,20 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
requiredFields.put(c.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
private void addDescriptionTextChangeListener() {
|
||||
descTextArea.addTextChangeListener(event -> window.setSaveButtonEnabled(hasDescriptionChanged(event)));
|
||||
}
|
||||
|
||||
private void addVendorTextChangeListener() {
|
||||
vendorTextField.addTextChangeListener(event -> window.setSaveButtonEnabled(hasVendorChanged(event)));
|
||||
private Map<String, Boolean> geEditedFields() {
|
||||
final Map<String, Boolean> editedFields = new HashMap<>();
|
||||
editedFields.put(typeComboBox.getId(), Boolean.FALSE);
|
||||
editedFields.put(nameTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(vendorTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(versionTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(descTextArea.getId(), Boolean.FALSE);
|
||||
return editedFields;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -309,13 +317,13 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getVendor()));
|
||||
descTextArea.setValue(swModle.getDescription() == null ? HawkbitCommonUtil.SP_STRING_EMPTY
|
||||
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getDescription()));
|
||||
oldDescriptionValue = descTextArea.getValue();
|
||||
oldVendorValue = vendorTextField.getValue();
|
||||
originalDescriptionValue = descTextArea.getValue();
|
||||
originalVendorValue = vendorTextField.getValue();
|
||||
originalComboBoxValue = swModle.getType().getName();
|
||||
if (swModle.getType().isDeleted()) {
|
||||
typeComboBox.addItem(swModle.getType().getName());
|
||||
}
|
||||
typeComboBox.setValue(swModle.getType().getName());
|
||||
window.setSaveButtonEnabled(Boolean.FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -324,7 +332,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
private void closeThisWindow() {
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -361,15 +368,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
} else {
|
||||
addNewBaseSoftware();
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private boolean hasDescriptionChanged(final TextChangeEvent event) {
|
||||
return !(event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue));
|
||||
}
|
||||
|
||||
private boolean hasVendorChanged(final TextChangeEvent event) {
|
||||
return !(event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue));
|
||||
}
|
||||
|
||||
public FormLayout getFormLayout() {
|
||||
|
||||
@@ -44,7 +44,6 @@ import com.vaadin.ui.UI;
|
||||
|
||||
/**
|
||||
* Header of Software module table.
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
|
||||
@@ -34,7 +34,6 @@ 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;
|
||||
@@ -92,13 +91,15 @@ 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);
|
||||
tagName.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagName()));
|
||||
tagName.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, tagName));
|
||||
|
||||
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);
|
||||
typeKey.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTypeKey()));
|
||||
typeKey.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, typeKey));
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, false, "",
|
||||
@@ -106,19 +107,11 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
tagDesc.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_DESC);
|
||||
tagDesc.setImmediate(true);
|
||||
tagDesc.setNullRepresentation("");
|
||||
tagDesc.addTextChangeListener(this::listenerTagDescTextAreaChanged);
|
||||
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagDesc()));
|
||||
|
||||
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() {
|
||||
|
||||
@@ -142,7 +135,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
requiredFields.put(c.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
@@ -164,6 +157,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
} else {
|
||||
assignOptiongroup.setEnabled(true);
|
||||
}
|
||||
assignOptiongroup.select(singleAssignStr);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -195,18 +189,19 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
@Override
|
||||
protected void setTagDetails(final String targetTagSelected) {
|
||||
tagName.setValue(targetTagSelected);
|
||||
setOriginalTagName(targetTagSelected);
|
||||
final SoftwareModuleType selectedTypeTag = swTypeManagementService
|
||||
.findSoftwareModuleTypeByName(targetTagSelected);
|
||||
if (null != selectedTypeTag) {
|
||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||
setTagDescOriginal(selectedTypeTag.getDescription());
|
||||
setOriginalTagDesc(selectedTypeTag.getDescription());
|
||||
typeKey.setValue(selectedTypeTag.getKey());
|
||||
setOriginalTypeKey(selectedTypeTag.getKey());
|
||||
if (selectedTypeTag.getMaxAssignments() == Integer.MAX_VALUE) {
|
||||
assignOptiongroup.setValue(multiAssignStr);
|
||||
} else {
|
||||
assignOptiongroup.setValue(singleAssignStr);
|
||||
}
|
||||
|
||||
setColorPickerComponentsColor(selectedTypeTag.getColour());
|
||||
}
|
||||
}
|
||||
@@ -245,7 +240,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
|
||||
updateSWModuleType(existingSMTypeByName);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
// window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void createNewSWModuleType() {
|
||||
|
||||
@@ -11,8 +11,10 @@ package org.eclipse.hawkbit.ui.common;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
@@ -22,16 +24,14 @@ import org.eclipse.hawkbit.ui.management.targettable.TargetAddUpdateWindowLayout
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
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.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.ui.AbstractComponent;
|
||||
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;
|
||||
@@ -74,9 +74,8 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
|
||||
private Map<String, Boolean> requiredFields;
|
||||
|
||||
private final Map<String, Boolean> editedFields;
|
||||
private Map<String, Boolean> editedFields;
|
||||
|
||||
@Autowired
|
||||
private final I18N i18n;
|
||||
|
||||
/**
|
||||
@@ -104,41 +103,155 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
this.saveButtonClickListener = saveButtonClickListener;
|
||||
this.cancelButtonClickListener = cancelButtonClickListener;
|
||||
this.requiredFields = requiredFields;
|
||||
if (requiredFields == null) {
|
||||
this.requiredFields = Collections.emptyMap();
|
||||
}
|
||||
|
||||
this.editedFields = editedFields;
|
||||
if (editedFields == null) {
|
||||
this.editedFields = Collections.emptyMap();
|
||||
}
|
||||
this.i18n = i18n;
|
||||
init();
|
||||
}
|
||||
|
||||
public void checkMandatoryTextField(final TextChangeEvent event, final AbstractTextField textfield) {
|
||||
|
||||
if (StringUtils.isNotBlank(event.getText())) {
|
||||
if (StringUtils.isNotBlank(textfield.getCaption())) {
|
||||
requiredFields.put(textfield.getCaption(), Boolean.TRUE);
|
||||
}
|
||||
getRequiredFields().put(textfield.getId(), Boolean.TRUE);
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(textfield.getCaption())) {
|
||||
requiredFields.put(textfield.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
requiredFields.put(textfield.getId(), Boolean.FALSE);
|
||||
/**
|
||||
* Checks if all mandatory fields are filled, and if there are changes in
|
||||
* the current field. If yes, the save button will be enabled.
|
||||
*
|
||||
* @param event
|
||||
* TextChangeEvent
|
||||
* @param originalValue
|
||||
* original Value of the current field
|
||||
*/
|
||||
public void checkMandatoryEditedTextField(final TextChangeEvent event, final String originalValue) {
|
||||
final Component component = event.getComponent();
|
||||
if (!(component instanceof AbstractComponent)) {
|
||||
throw new IllegalStateException("Only AbstractComponent not allow");
|
||||
}
|
||||
checkMandatoryFieldsFilled();
|
||||
|
||||
if (requiredFields.containsKey(component.getId())) {
|
||||
final boolean isTextChangeNotEmpty = StringUtils.isNotBlank(event.getText());
|
||||
setRequiredFieldChangeValue((AbstractComponent) component, isTextChangeNotEmpty);
|
||||
}
|
||||
checkChanges(component.getId(), event.getText(), originalValue);
|
||||
checkSaveButtonEnabled();
|
||||
}
|
||||
|
||||
public void checkMandatoryComboBox(final ValueChangeEvent event, final AbstractSelect select) {
|
||||
|
||||
if (event.getProperty().getValue() != null) {
|
||||
if (StringUtils.isNotBlank(select.getCaption())) {
|
||||
requiredFields.put(select.getCaption(), Boolean.TRUE);
|
||||
}
|
||||
requiredFields.put(select.getId(), Boolean.TRUE);
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(select.getCaption())) {
|
||||
requiredFields.put(select.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
requiredFields.put(select.getId(), Boolean.FALSE);
|
||||
/**
|
||||
* Checks if all mandatory fields are filled, and if there are changes in
|
||||
* the current field. If yes, the save button will be enabled.
|
||||
*
|
||||
* @param event
|
||||
* ValueChangeEvent
|
||||
* @param component
|
||||
* current Component
|
||||
* @param originalValue
|
||||
* original Value of the current field
|
||||
*/
|
||||
public void checkMandatoryEditedValue(final ValueChangeEvent event, final AbstractComponent component,
|
||||
final String originalValue) {
|
||||
final boolean isChangedValueNotNull = event.getProperty().getValue() != null;
|
||||
if (requiredFields.containsKey(component.getId())) {
|
||||
setRequiredFieldChangeValue(component, isChangedValueNotNull);
|
||||
}
|
||||
checkMandatoryFieldsFilled();
|
||||
if (event.getProperty().getValue() != null) {
|
||||
checkChanges(component.getId(), event.getProperty().getValue().toString(), originalValue);
|
||||
} else {
|
||||
checkChanges(component.getId(), null, originalValue);
|
||||
}
|
||||
checkSaveButtonEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if all mandatory fields are filled, and if there are changes in
|
||||
* the current field. (Boolean) If yes, the save button will be enabled.
|
||||
*
|
||||
* @param event
|
||||
* ValueChangeEvent
|
||||
* @param component
|
||||
* current Component
|
||||
* @param originalValue
|
||||
* original Boolean Value of the current field
|
||||
*/
|
||||
public void checkMandatoryEditedValueBoolean(final ValueChangeEvent event, final AbstractComponent component,
|
||||
final Boolean originalValue) {
|
||||
final boolean isChangedValueNotNull = event.getProperty().getValue() != null;
|
||||
if (requiredFields.containsKey(component.getId())) {
|
||||
setRequiredFieldChangeValue(component, isChangedValueNotNull);
|
||||
}
|
||||
final Boolean changed = (Boolean) event.getProperty().getValue();
|
||||
editedFields.put(component.getId(), BooleanUtils.compare(changed, originalValue) != 0);
|
||||
checkSaveButtonEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the map of required fields if a value is set. (e.g. on Update
|
||||
* when editing a component)
|
||||
*
|
||||
* @param event
|
||||
* ValueChangeEvent
|
||||
* @param component
|
||||
* current Component
|
||||
*/
|
||||
public void setRequiredFieldWhenUpdate(final ValueChangeEvent event, final AbstractComponent component) {
|
||||
final boolean isChangedValueNotNull = event.getProperty().getValue() != null;
|
||||
setRequiredFieldChangeValue(component, isChangedValueNotNull);
|
||||
}
|
||||
|
||||
/**
|
||||
* * Updates the map of required fields if a value is set. (e.g. on Update
|
||||
* when editing a component)
|
||||
*
|
||||
* @param fieldId
|
||||
* Id of the current component
|
||||
* @param filled
|
||||
* Boolean if field is filled
|
||||
*/
|
||||
public void updateRequiredFields(final String fieldId, final Boolean filled) {
|
||||
|
||||
requiredFields.put(fieldId, filled);
|
||||
checkSaveButtonEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if Color is changed
|
||||
*
|
||||
* @param fieldId
|
||||
* Id of the current component
|
||||
* @param newColor
|
||||
* new Color
|
||||
* @param oldColor
|
||||
* old Color
|
||||
*/
|
||||
public void checkColorChange(final String fieldId, final Color newColor, final Color oldColor) {
|
||||
editedFields.put(fieldId, !newColor.equals(oldColor));
|
||||
checkSaveButtonEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the map of fields which can be edited.
|
||||
*
|
||||
* @param fieldId
|
||||
* Id of the current component
|
||||
* @param hasTextValueChanged
|
||||
* Boolean if value has changed
|
||||
*/
|
||||
public void updateEditedFields(final String fieldId, final Boolean hasTextValueChanged) {
|
||||
editedFields.put(fieldId, hasTextValueChanged);
|
||||
checkSaveButtonEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the map of mandatory and edited Fields and disable the save button
|
||||
*/
|
||||
public void reset() {
|
||||
saveButton.setEnabled(false);
|
||||
resetFields();
|
||||
}
|
||||
|
||||
private void setRequiredFieldChangeValue(final AbstractComponent component, final boolean isTextChangeNotEmpty) {
|
||||
requiredFields.put(component.getId(), isTextChangeNotEmpty);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,69 +259,23 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
* mandatory fields are filled the save button is enabled. Otherwise the
|
||||
* save button is disabled.
|
||||
*/
|
||||
private void checkMandatoryFieldsFilled() {
|
||||
private void checkSaveButtonEnabled() {
|
||||
saveButton.setEnabled(!requiredFields.containsValue(Boolean.FALSE) && editedFields.containsValue(Boolean.TRUE));
|
||||
}
|
||||
|
||||
private void checkChanges(final String fieldName, final String newText, final String oldText) {
|
||||
final boolean hasTextValueChanged = (StringUtils.isNotBlank(newText) && !newText.equals(oldText))
|
||||
|| (StringUtils.isNotBlank(oldText) && !oldText.equals(newText));
|
||||
editedFields.put(fieldName, hasTextValueChanged);
|
||||
}
|
||||
|
||||
private void resetFields() {
|
||||
for (final Map.Entry<String, Boolean> entry : requiredFields.entrySet()) {
|
||||
if (entry.getValue() == null || entry.getValue().equals(Boolean.FALSE)) {
|
||||
saveButton.setEnabled(false);
|
||||
return;
|
||||
}
|
||||
entry.setValue(Boolean.FALSE);
|
||||
}
|
||||
saveButton.setEnabled(true);
|
||||
}
|
||||
|
||||
private void checkExistsChanges() {
|
||||
|
||||
if (editedFields == null) {
|
||||
return;
|
||||
}
|
||||
for (final Map.Entry<String, Boolean> entry : editedFields.entrySet()) {
|
||||
if (entry.getValue() != null && entry.getValue().equals(Boolean.TRUE)) {
|
||||
saveButton.setEnabled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
saveButton.setEnabled(false);
|
||||
}
|
||||
|
||||
public void updateRequiredFields(final String fieldId, final Boolean filled) {
|
||||
|
||||
requiredFields.put(fieldId, filled);
|
||||
checkMandatoryFieldsFilled();
|
||||
}
|
||||
|
||||
public void checkChanges(final String fieldName, final String newText, final String oldText) {
|
||||
|
||||
if ((StringUtils.isNotBlank(newText) && !newText.equals(oldText))
|
||||
|| (StringUtils.isNotBlank(oldText) && !oldText.equals(newText))) {
|
||||
editedFields.put(fieldName, Boolean.TRUE);
|
||||
} else {
|
||||
editedFields.put(fieldName, Boolean.FALSE);
|
||||
}
|
||||
checkExistsChanges();
|
||||
}
|
||||
|
||||
public void checkColorChange(final String fieldName, final Color newColor, final Color oldColor) {
|
||||
|
||||
if (newColor.equals(oldColor)) {
|
||||
editedFields.put(fieldName, Boolean.FALSE);
|
||||
} else {
|
||||
editedFields.put(fieldName, Boolean.TRUE);
|
||||
}
|
||||
checkExistsChanges();
|
||||
}
|
||||
|
||||
public void resetMandatoryAndEditedFields() {
|
||||
resetFields(requiredFields);
|
||||
resetFields(editedFields);
|
||||
}
|
||||
|
||||
private void resetFields(final Map<String, Boolean> fields) {
|
||||
// Reset mandatory fields are filled marker / fields are edited marker
|
||||
if (fields != null) {
|
||||
for (final Map.Entry<String, Boolean> entry : fields.entrySet()) {
|
||||
entry.setValue(null);
|
||||
}
|
||||
entry.setValue(Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,20 +325,22 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
|
||||
private void createMandatoryLabel() {
|
||||
|
||||
if (existsMandatoryFieldsInWindowContent()) {
|
||||
final Label mandatoryLabel = new Label(i18n.get("label.mandatory.field"));
|
||||
mandatoryLabel.addStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_TINY);
|
||||
|
||||
if (content instanceof TargetAddUpdateWindowLayout) {
|
||||
((TargetAddUpdateWindowLayout) content).getFormLayout().addComponent(mandatoryLabel);
|
||||
} else if (content instanceof SoftwareModuleAddUpdateWindow) {
|
||||
((SoftwareModuleAddUpdateWindow) content).getFormLayout().addComponent(mandatoryLabel);
|
||||
} else if (content instanceof AbstractCreateUpdateTagLayout) {
|
||||
((AbstractCreateUpdateTagLayout) content).getMainLayout().addComponent(mandatoryLabel);
|
||||
}
|
||||
|
||||
mainLayout.addComponent(mandatoryLabel);
|
||||
if (!existsMandatoryFieldsInWindowContent()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Label mandatoryLabel = new Label(i18n.get("label.mandatory.field"));
|
||||
mandatoryLabel.addStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_TINY);
|
||||
|
||||
if (content instanceof TargetAddUpdateWindowLayout) {
|
||||
((TargetAddUpdateWindowLayout) content).getFormLayout().addComponent(mandatoryLabel);
|
||||
} else if (content instanceof SoftwareModuleAddUpdateWindow) {
|
||||
((SoftwareModuleAddUpdateWindow) content).getFormLayout().addComponent(mandatoryLabel);
|
||||
} else if (content instanceof AbstractCreateUpdateTagLayout) {
|
||||
((AbstractCreateUpdateTagLayout) content).getMainLayout().addComponent(mandatoryLabel);
|
||||
}
|
||||
|
||||
mainLayout.addComponent(mandatoryLabel);
|
||||
}
|
||||
|
||||
private void createCancelButton() {
|
||||
@@ -292,18 +361,14 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
saveButton.setSizeUndefined();
|
||||
saveButton.addStyleName("default-color");
|
||||
saveButton.addClickListener(saveButtonClickListener);
|
||||
saveButton.setEnabled(!existsMandatoryFieldsInWindowContent());
|
||||
saveButton.setEnabled(false);
|
||||
buttonsLayout.addComponent(saveButton);
|
||||
buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT);
|
||||
buttonsLayout.setExpandRatio(saveButton, 1.0F);
|
||||
}
|
||||
|
||||
private boolean existsMandatoryFieldsInWindowContent() {
|
||||
|
||||
if (requiredFields != null && requiredFields.size() > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return !requiredFields.isEmpty();
|
||||
}
|
||||
|
||||
private void addHelpLink() {
|
||||
|
||||
@@ -14,7 +14,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||
@@ -41,7 +40,6 @@ 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;
|
||||
@@ -93,6 +91,8 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
|
||||
private IndexedContainer originalSelectedTableContainer;
|
||||
|
||||
private String originalTypeKey;
|
||||
|
||||
@Override
|
||||
protected void createRequiredComponents() {
|
||||
|
||||
@@ -102,13 +102,15 @@ 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);
|
||||
tagName.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagName()));
|
||||
tagName.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, tagName));
|
||||
|
||||
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);
|
||||
typeKey.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTypeKey));
|
||||
typeKey.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, typeKey));
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_DESC, false, "",
|
||||
@@ -116,16 +118,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
tagDesc.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_DESC);
|
||||
tagDesc.setImmediate(true);
|
||||
tagDesc.setNullRepresentation("");
|
||||
tagDesc.addTextChangeListener(this::listenerTagDescTextAreaChanged);
|
||||
}
|
||||
|
||||
private void listenerTagNameTextFieldChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkMandatoryTextField(event, tagName);
|
||||
}
|
||||
|
||||
private void listenerTypeKeyTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, typeKey);
|
||||
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagDesc()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -279,14 +272,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
for (final Long id : selectedIds) {
|
||||
addTargetTableData(id);
|
||||
}
|
||||
if (optiongroup.getValue().equals(updateTypeStr)) {
|
||||
updateMandatoryFields();
|
||||
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
|
||||
} else {
|
||||
if (!selectedTableContainer.getItemIds().isEmpty()) {
|
||||
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,19 +284,20 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
for (final Long id : selectedIds) {
|
||||
addSourceTableData(id);
|
||||
selectedTable.removeItem(id);
|
||||
if (optiongroup.getValue().equals(updateTypeStr)) {
|
||||
updateMandatoryFields();
|
||||
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
|
||||
}
|
||||
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Boolean hasContentChanged() {
|
||||
|
||||
if (originalSelectedTableContainer == null) {
|
||||
originalSelectedTableContainer = new IndexedContainer();
|
||||
}
|
||||
for (final Iterator itemIterator = selectedTableContainer.getItemIds().iterator(); itemIterator.hasNext();) {
|
||||
final long itemId = (Long) itemIterator.next();
|
||||
if (!originalSelectedTableContainer.containsId(itemId)) {
|
||||
window.updateEditedFields(selectedTable.getId(), Boolean.TRUE);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
@@ -319,23 +306,17 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
.hasNext();) {
|
||||
final long itemId = (Long) itemIterator.next();
|
||||
if (selectedTableContainer.size() > 0 && !selectedTableContainer.containsId(itemId)) {
|
||||
window.updateEditedFields(selectedTable.getId(), Boolean.TRUE);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedTableContainer.size() > 0) {
|
||||
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
private void updateMandatoryFields() {
|
||||
|
||||
if (StringUtils.isNotBlank(tagName.getValue())) {
|
||||
window.getRequiredFields().put("Name", Boolean.TRUE);
|
||||
}
|
||||
if (StringUtils.isNotBlank(typeKey.getValue())) {
|
||||
window.getRequiredFields().put("Key", Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void getSourceTableData() {
|
||||
|
||||
@@ -543,6 +524,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
super.optionValueChanged(event);
|
||||
|
||||
if (updateTypeStr.equals(event.getProperty().getValue())) {
|
||||
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
||||
selectedTable.getContainerDataSource().removeAllItems();
|
||||
getSourceTableData();
|
||||
distTypeSelectLayout.setEnabled(false);
|
||||
@@ -600,14 +582,15 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
protected void setTagDetails(final String distSetTypeSelected) {
|
||||
|
||||
tagName.setValue(distSetTypeSelected);
|
||||
setOriginalTagName(distSetTypeSelected);
|
||||
getSourceTableData();
|
||||
selectedTable.getContainerDataSource().removeAllItems();
|
||||
final DistributionSetType selectedTypeTag = fetchDistributionSetType(distSetTypeSelected);
|
||||
if (null != selectedTypeTag) {
|
||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||
setTagDescOriginal(selectedTypeTag.getDescription());
|
||||
setOriginalTagDesc(selectedTypeTag.getDescription());
|
||||
typeKey.setValue(selectedTypeTag.getKey());
|
||||
setTypeKeyOriginal(selectedTypeTag.getKey());
|
||||
setOriginalTypeKey(selectedTypeTag.getKey());
|
||||
if (distributionSetManagement.countDistributionSetsByType(selectedTypeTag) <= 0) {
|
||||
distTypeSelectLayout.setEnabled(true);
|
||||
selectedTable.setEnabled(true);
|
||||
@@ -669,7 +652,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
} else {
|
||||
updateDistributionSetType(existingDistTypeByKey);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -687,14 +669,24 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
requiredFields.put(c.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
// Selected SoftwareModulesType
|
||||
requiredFields.put(selectedTable.getId(), null);
|
||||
requiredFields.put(selectedTable.getId(), Boolean.FALSE);
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> changeMap = new HashMap<>();
|
||||
changeMap.put(tagName.getId(), Boolean.FALSE);
|
||||
changeMap.put(colorPickerLayout.getId(), Boolean.FALSE);
|
||||
changeMap.put(tagDesc.getId(), Boolean.FALSE);
|
||||
changeMap.put(selectedTable.getId(), Boolean.FALSE);
|
||||
return changeMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void previewButtonClicked() {
|
||||
if (!tagPreviewBtnClicked) {
|
||||
@@ -729,4 +721,14 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
optiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOriginalTypeKey() {
|
||||
return originalTypeKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOriginalTypeKey(final String originalTypeKey) {
|
||||
this.originalTypeKey = originalTypeKey;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@ 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;
|
||||
@@ -110,8 +109,9 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
protected String tagNameValue;
|
||||
protected String tagDescValue;
|
||||
|
||||
protected Color selectedColorOriginal;
|
||||
private String tagDescOriginal;
|
||||
private Color originalSelectedColor;
|
||||
private String originalTagDesc;
|
||||
private String originalTagName;
|
||||
|
||||
protected void createWindow() {
|
||||
reset();
|
||||
@@ -126,7 +126,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
requiredFields.put(c.getId(), null);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
@@ -134,8 +134,9 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
|
||||
protected Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> changeMap = new HashMap<>();
|
||||
changeMap.put(tagDesc.getCaption(), Boolean.FALSE);
|
||||
changeMap.put(tagName.getId(), Boolean.FALSE);
|
||||
changeMap.put(colorPickerLayout.getId(), Boolean.FALSE);
|
||||
changeMap.put(tagDesc.getId(), Boolean.FALSE);
|
||||
return changeMap;
|
||||
}
|
||||
|
||||
@@ -192,7 +193,8 @@ 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);
|
||||
tagName.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTagName));
|
||||
tagName.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, tagName));
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_DESC, false, "", i18n.get("textfield.description"),
|
||||
@@ -200,7 +202,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
tagDesc.setId(SPUIDefinitions.NEW_TARGET_TAG_DESC);
|
||||
tagDesc.setImmediate(true);
|
||||
tagDesc.setNullRepresentation("");
|
||||
tagDesc.addTextChangeListener(this::listenerTagDescTextAreaChanged);
|
||||
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTagDesc));
|
||||
|
||||
tagNameComboBox = SPUIComponentProvider.getComboBox(null, "", "", null, null, false, "",
|
||||
i18n.get("label.combobox.tag"));
|
||||
@@ -214,16 +216,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE);
|
||||
}
|
||||
|
||||
private void listenerTagNameTextFieldChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkMandatoryTextField(event, tagName);
|
||||
}
|
||||
|
||||
protected void listenerTagDescTextAreaChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkChanges(tagDesc.getCaption(), event.getText(), tagDescOriginal);
|
||||
}
|
||||
|
||||
protected void buildLayout() {
|
||||
|
||||
mainLayout = new GridLayout(3, 2);
|
||||
@@ -352,7 +344,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
window.reset();
|
||||
// close the color picker layout
|
||||
tagPreviewBtnClicked = false;
|
||||
// reset the selected color - Set default color
|
||||
@@ -383,7 +375,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
tagPreviewBtnClicked = false;
|
||||
|
||||
if (window != null) {
|
||||
window.resetMandatoryAndEditedFields();
|
||||
window.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -474,13 +466,12 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
|
||||
}
|
||||
|
||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), originalSelectedColor);
|
||||
}
|
||||
|
||||
protected void closeWindow() {
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -687,23 +678,39 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
}
|
||||
|
||||
public Color getSelectedColorOriginal() {
|
||||
return selectedColorOriginal;
|
||||
return originalSelectedColor;
|
||||
}
|
||||
|
||||
public void setSelectedColorOriginal(final Color selectedColorOriginal) {
|
||||
this.selectedColorOriginal = selectedColorOriginal;
|
||||
}
|
||||
|
||||
public String getTagDescOriginal() {
|
||||
return tagDescOriginal;
|
||||
}
|
||||
|
||||
public void setTagDescOriginal(final String tagDescOriginal) {
|
||||
this.tagDescOriginal = tagDescOriginal;
|
||||
this.originalSelectedColor = selectedColorOriginal;
|
||||
}
|
||||
|
||||
public GridLayout getMainLayout() {
|
||||
return mainLayout;
|
||||
}
|
||||
|
||||
public Color getOriginalSelectedColor() {
|
||||
return originalSelectedColor;
|
||||
}
|
||||
|
||||
public void setOriginalSelectedColor(final Color originalSelectedColor) {
|
||||
this.originalSelectedColor = originalSelectedColor;
|
||||
}
|
||||
|
||||
public String getOriginalTagDesc() {
|
||||
return originalTagDesc;
|
||||
}
|
||||
|
||||
public void setOriginalTagDesc(final String originalTagDesc) {
|
||||
this.originalTagDesc = originalTagDesc;
|
||||
}
|
||||
|
||||
public String getOriginalTagName() {
|
||||
return originalTagName;
|
||||
}
|
||||
|
||||
public void setOriginalTagName(final String originalTagName) {
|
||||
this.originalTagName = originalTagName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,10 +33,8 @@ import com.vaadin.ui.components.colorpicker.ColorSelector;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
*
|
||||
* Superclass defining common properties and methods for creating/updating
|
||||
* types.
|
||||
*
|
||||
*/
|
||||
public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
|
||||
@@ -45,7 +43,7 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
protected String createTypeStr;
|
||||
protected String updateTypeStr;
|
||||
protected TextField typeKey;
|
||||
protected String typeKeyOriginal;
|
||||
protected String originalTypeKey;
|
||||
|
||||
public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name";
|
||||
private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc";
|
||||
@@ -152,14 +150,13 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
} else {
|
||||
typeKey.setEnabled(true);
|
||||
tagName.setEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
tagName.clear();
|
||||
tagDesc.clear();
|
||||
typeKey.clear();
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
window.reset();
|
||||
restoreComponentStyles();
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
getColorPickerLayout().getSelPreview()
|
||||
@@ -186,7 +183,8 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview);
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelPreview().getColor());
|
||||
}
|
||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(),
|
||||
getOriginalSelectedColor());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -324,22 +322,12 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
// is implemented in the inherited class
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color getSelectedColorOriginal() {
|
||||
return selectedColorOriginal;
|
||||
public String getOriginalTypeKey() {
|
||||
return originalTypeKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectedColorOriginal(final Color selectedColorOriginal) {
|
||||
this.selectedColorOriginal = selectedColorOriginal;
|
||||
}
|
||||
|
||||
public String getTypeKeyOriginal() {
|
||||
return typeKeyOriginal;
|
||||
}
|
||||
|
||||
public void setTypeKeyOriginal(final String typeKeyOriginal) {
|
||||
this.typeKeyOriginal = typeKeyOriginal;
|
||||
public void setOriginalTypeKey(final String originalTypeKey) {
|
||||
this.originalTypeKey = originalTypeKey;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,10 +8,8 @@
|
||||
*/
|
||||
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;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
@@ -44,10 +42,6 @@ import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
|
||||
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
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;
|
||||
@@ -62,8 +56,7 @@ import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* WindowContent for adding/editing a Distribution
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
@@ -104,12 +97,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
private String originalDistDescription;
|
||||
private Boolean originalReqMigStep;
|
||||
private String originalDistSetType;
|
||||
private final List<Component> changedComponents = new ArrayList<>();
|
||||
private ValueChangeListener reqMigStepCheckboxListerner;
|
||||
private TextChangeListener descTextAreaListener;
|
||||
private TextChangeListener distNameTextFieldListener;
|
||||
private TextChangeListener distVersionTextFieldListener;
|
||||
private ValueChangeListener distsetTypeNameComboBoxListener;
|
||||
|
||||
private FormLayout formLayout;
|
||||
|
||||
@@ -139,7 +126,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
formLayout.addComponent(reqMigStepCheckbox);
|
||||
|
||||
setCompositionRoot(formLayout);
|
||||
|
||||
distNameTextField.focus();
|
||||
}
|
||||
|
||||
@@ -151,43 +137,42 @@ 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);
|
||||
distNameTextField.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalDistName));
|
||||
distNameTextField.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, distNameTextField));
|
||||
|
||||
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);
|
||||
distVersionTextField
|
||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalDistVersion));
|
||||
distVersionTextField
|
||||
.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, distVersionTextField));
|
||||
|
||||
distsetTypeNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, "",
|
||||
false, "", i18n.get("label.combobox.type"));
|
||||
distsetTypeNameComboBox.setImmediate(true);
|
||||
distsetTypeNameComboBox.setNullSelectionAllowed(false);
|
||||
distsetTypeNameComboBox.setId(SPUIComponentIdProvider.DIST_ADD_DISTSETTYPE);
|
||||
populateDistSetTypeNameCombo();
|
||||
distsetTypeNameComboBox.addValueChangeListener(
|
||||
event -> window.checkMandatoryEditedValue(event, distsetTypeNameComboBox, originalDistSetType));
|
||||
|
||||
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
||||
ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"),
|
||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
descTextArea.setId(SPUIComponentIdProvider.DIST_ADD_DESC);
|
||||
descTextArea.setNullRepresentation("");
|
||||
descTextArea
|
||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalDistDescription));
|
||||
|
||||
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) {
|
||||
if (!editDistribution) {
|
||||
window.checkMandatoryTextField(event, distNameTextField);
|
||||
}
|
||||
}
|
||||
|
||||
private void listenerDistVersionTextFieldChanged(final TextChangeEvent event) {
|
||||
if (!editDistribution) {
|
||||
window.checkMandatoryTextField(event, distVersionTextField);
|
||||
}
|
||||
reqMigStepCheckbox.addValueChangeListener(
|
||||
event -> window.checkMandatoryEditedValueBoolean(event, reqMigStepCheckbox, originalReqMigStep));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -209,26 +194,17 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
return disttypeContainer;
|
||||
}
|
||||
|
||||
private void enableSaveButton() {
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
private DistributionSetType getDefaultDistributionSetType() {
|
||||
final TenantMetaData tenantMetaData = systemManagement.getTenantMetadata();
|
||||
return tenantMetaData.getDefaultDsType();
|
||||
}
|
||||
|
||||
private void disableSaveButton() {
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void saveDistribution() {
|
||||
if (editDistribution) {
|
||||
updateDistribution();
|
||||
} else {
|
||||
addNewDistribution();
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -262,19 +238,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
}
|
||||
|
||||
private void addListeners() {
|
||||
reqMigStepCheckboxListerner = event -> checkValueChanged(originalReqMigStep, event);
|
||||
descTextAreaListener = event -> checkValueChanged(originalDistDescription, event);
|
||||
distNameTextFieldListener = event -> checkValueChanged(originalDistName, event);
|
||||
distVersionTextFieldListener = event -> checkValueChanged(originalDistVersion, event);
|
||||
distsetTypeNameComboBoxListener = event -> checkValueChanged(originalDistSetType, event);
|
||||
reqMigStepCheckbox.addValueChangeListener(reqMigStepCheckboxListerner);
|
||||
descTextArea.addTextChangeListener(descTextAreaListener);
|
||||
distNameTextField.addTextChangeListener(distNameTextFieldListener);
|
||||
distVersionTextField.addTextChangeListener(distVersionTextFieldListener);
|
||||
distsetTypeNameComboBox.addValueChangeListener(distsetTypeNameComboBoxListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add new Distribution set.
|
||||
*/
|
||||
@@ -308,7 +271,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
private void closeThisWindow() {
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -381,7 +343,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
if (distSetTypeName == null) {
|
||||
distsetTypeNameComboBox.addStyleName(SPUIStyleDefinitions.SP_COMBOFIELD_ERROR);
|
||||
}
|
||||
|
||||
notificationMessage.displayValidationError(i18n.get("message.mandatory.check"));
|
||||
return false;
|
||||
}
|
||||
@@ -391,7 +352,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
|
||||
private void discardDistribution() {
|
||||
/* Just close this window */
|
||||
distsetTypeNameComboBox.removeValueChangeListener(distsetTypeNameComboBoxListener);
|
||||
closeThisWindow();
|
||||
}
|
||||
|
||||
@@ -407,14 +367,15 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
distsetTypeNameComboBox.removeStyleName(SPUIStyleDefinitions.SP_COMBOFIELD_ERROR);
|
||||
descTextArea.clear();
|
||||
reqMigStepCheckbox.clear();
|
||||
if (window != null) {
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
removeListeners();
|
||||
changedComponents.clear();
|
||||
|
||||
originalDistDescription = null;
|
||||
originalDistName = null;
|
||||
originalDistSetType = null;
|
||||
originalDistVersion = null;
|
||||
originalReqMigStep = Boolean.FALSE;
|
||||
|
||||
if (window != null) {
|
||||
window.resetMandatoryAndEditedFields();
|
||||
window.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,71 +383,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
populateDistSetTypeNameCombo();
|
||||
}
|
||||
|
||||
private void removeListeners() {
|
||||
reqMigStepCheckbox.removeValueChangeListener(reqMigStepCheckboxListerner);
|
||||
descTextArea.removeTextChangeListener(descTextAreaListener);
|
||||
distNameTextField.removeTextChangeListener(distNameTextFieldListener);
|
||||
distVersionTextField.removeTextChangeListener(distVersionTextFieldListener);
|
||||
}
|
||||
|
||||
public void setOriginalDistName(final String originalDistName) {
|
||||
this.originalDistName = originalDistName;
|
||||
}
|
||||
|
||||
public void setOriginalDistVersion(final String originalDistVersion) {
|
||||
this.originalDistVersion = originalDistVersion;
|
||||
}
|
||||
|
||||
public void setOriginalDistDescription(final String originalDistDescription) {
|
||||
this.originalDistDescription = originalDistDescription;
|
||||
}
|
||||
|
||||
private void checkValueChanged(final String originalValue, final TextChangeEvent event) {
|
||||
if (editDistribution) {
|
||||
final String newValue = event.getText();
|
||||
if (!originalValue.equalsIgnoreCase(newValue)) {
|
||||
changedComponents.add(event.getComponent());
|
||||
} else {
|
||||
changedComponents.remove(event.getComponent());
|
||||
}
|
||||
enableDisableSaveButton();
|
||||
}
|
||||
}
|
||||
|
||||
private void checkValueChanged(final Boolean originalValue, final ValueChangeEvent event) {
|
||||
if (editDistribution) {
|
||||
if (!originalValue.equals(event.getProperty().getValue())) {
|
||||
changedComponents.add(reqMigStepCheckbox);
|
||||
} else {
|
||||
changedComponents.remove(reqMigStepCheckbox);
|
||||
}
|
||||
enableDisableSaveButton();
|
||||
}
|
||||
}
|
||||
|
||||
private void checkValueChanged(final String originalValue, final ValueChangeEvent event) {
|
||||
if (editDistribution) {
|
||||
if (!originalValue.equals(event.getProperty().getValue())) {
|
||||
changedComponents.add(distsetTypeNameComboBox);
|
||||
} else {
|
||||
changedComponents.remove(distsetTypeNameComboBox);
|
||||
}
|
||||
enableDisableSaveButton();
|
||||
}
|
||||
}
|
||||
|
||||
private void enableDisableSaveButton() {
|
||||
if (changedComponents.isEmpty()) {
|
||||
disableSaveButton();
|
||||
} else {
|
||||
enableSaveButton();
|
||||
}
|
||||
}
|
||||
|
||||
private void setOriginalReqMigStep(final Boolean originalReqMigStep) {
|
||||
this.originalReqMigStep = originalReqMigStep;
|
||||
}
|
||||
|
||||
/**
|
||||
* populate data.
|
||||
*
|
||||
@@ -495,7 +391,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
public void populateValuesOfDistribution(final Long editDistId) {
|
||||
this.editDistId = editDistId;
|
||||
editDistribution = Boolean.TRUE;
|
||||
window.setSaveButtonEnabled(false);
|
||||
final DistributionSet distSet = distributionSetManagement.findDistributionSetByIdWithDetails(editDistId);
|
||||
if (distSet != null) {
|
||||
distNameTextField.setValue(distSet.getName());
|
||||
@@ -508,23 +403,24 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
if (distSet.getDescription() != null) {
|
||||
descTextArea.setValue(distSet.getDescription());
|
||||
}
|
||||
setOriginalDistName(distSet.getName());
|
||||
setOriginalDistVersion(distSet.getVersion());
|
||||
setOriginalDistDescription(distSet.getDescription());
|
||||
setOriginalReqMigStep(distSet.isRequiredMigrationStep());
|
||||
setOriginalDistSetTYpe(distSet.getType().getName());
|
||||
addListeners();
|
||||
originalDistName = distSet.getName();
|
||||
originalDistVersion = distSet.getVersion();
|
||||
originalDistDescription = distSet.getDescription();
|
||||
originalReqMigStep = distSet.isRequiredMigrationStep();
|
||||
originalDistSetType = distSet.getType().getName();
|
||||
window.updateEditedFields(distsetTypeNameComboBox.getId(), Boolean.FALSE);
|
||||
window.updateEditedFields(reqMigStepCheckbox.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
public CommonDialogWindow getWindow() {
|
||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
||||
populateRequiredComponents();
|
||||
resetComponents();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(),
|
||||
null, getMandatoryFields(), null, i18n);
|
||||
null, getMandatoryFields(), getEditedFields(), i18n);
|
||||
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||
populateRequiredComponents();
|
||||
resetComponents();
|
||||
return window;
|
||||
}
|
||||
|
||||
@@ -534,12 +430,22 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
while (iterate.hasNext()) {
|
||||
final Component c = iterate.next();
|
||||
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
|
||||
requiredFields.put(c.getCaption(), null);
|
||||
requiredFields.put(c.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> editedFields = new HashMap<>();
|
||||
editedFields.put(distsetTypeNameComboBox.getId(), Boolean.FALSE);
|
||||
editedFields.put(distNameTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(distVersionTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(descTextArea.getId(), Boolean.FALSE);
|
||||
editedFields.put(reqMigStepCheckbox.getId(), Boolean.FALSE);
|
||||
return editedFields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate DistributionSet Type name combo.
|
||||
*/
|
||||
@@ -549,12 +455,4 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
distsetTypeNameComboBox.setValue(getDefaultDistributionSetType().getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param originalDistSetTYpe
|
||||
* the originalDistSetTYpe to set
|
||||
*/
|
||||
public void setOriginalDistSetTYpe(final String originalDistSetType) {
|
||||
this.originalDistSetType = originalDistSetType;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,9 +32,7 @@ import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.UI;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class for Create/Update Tag Layout of distribution set
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
@@ -98,7 +96,6 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
||||
updateExistingTag(existingDistTag);
|
||||
}
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -157,10 +154,11 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
||||
@Override
|
||||
public void setTagDetails(final String distTagSelected) {
|
||||
tagName.setValue(distTagSelected);
|
||||
setOriginalTagName(distTagSelected);
|
||||
final DistributionSetTag selectedDistTag = tagManagement.findDistributionSetTag(distTagSelected);
|
||||
if (null != selectedDistTag) {
|
||||
tagDesc.setValue(selectedDistTag.getDescription());
|
||||
setTagDescOriginal(selectedDistTag.getDescription());
|
||||
setOriginalTagDesc(selectedDistTag.getDescription());
|
||||
if (null == selectedDistTag.getColour()) {
|
||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
||||
|
||||
@@ -14,7 +14,6 @@ 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,15 +34,12 @@ import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
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;
|
||||
import com.vaadin.ui.TextArea;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
@@ -57,7 +53,7 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
@VaadinSessionScope
|
||||
public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
private static final long serialVersionUID = -6659290471705262389L;
|
||||
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@@ -69,10 +65,10 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
|
||||
@Autowired
|
||||
private transient UINotification uINotification;
|
||||
|
||||
|
||||
@Autowired
|
||||
private transient EntityFactory entityFactory;
|
||||
|
||||
|
||||
private TextField controllerIDTextField;
|
||||
private TextField nameTextField;
|
||||
private TextArea descTextArea;
|
||||
@@ -81,47 +77,47 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
private FormLayout formLayout;
|
||||
private CommonDialogWindow window;
|
||||
|
||||
private String oldTargetName;
|
||||
private String oldTargetDesc;
|
||||
|
||||
private String originalTargetName;
|
||||
private String originalTargetDesc;
|
||||
private String originalControllerId;
|
||||
|
||||
/**
|
||||
* Initialize the Add Update Window Component for Target.
|
||||
*/
|
||||
public void init() {
|
||||
/* create components */
|
||||
createRequiredComponents();
|
||||
/* display components in layout */
|
||||
buildLayout();
|
||||
/* register all listeners related to the Window */
|
||||
addListeners();
|
||||
setCompositionRoot(formLayout);
|
||||
}
|
||||
|
||||
private void createRequiredComponents() {
|
||||
/* Textfield for controller Id */
|
||||
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 = 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);
|
||||
controllerIDTextField
|
||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalControllerId));
|
||||
controllerIDTextField
|
||||
.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, controllerIDTextField));
|
||||
|
||||
/* Textfield for target name */
|
||||
nameTextField = SPUIComponentProvider.getTextField( i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY, false, null,
|
||||
i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
nameTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY,
|
||||
false, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
nameTextField.setId(SPUIComponentIdProvider.TARGET_ADD_NAME);
|
||||
nameTextField.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTargetName));
|
||||
|
||||
/* Textarea for target description */
|
||||
descTextArea = SPUIComponentProvider.getTextArea( i18n.get("textfield.description"), "text-area-style", ValoTheme.TEXTFIELD_TINY, false, null,
|
||||
i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
||||
ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"),
|
||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
descTextArea.setId(SPUIComponentIdProvider.TARGET_ADD_DESC);
|
||||
descTextArea.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||
}
|
||||
|
||||
private void listenerControllerIDTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, controllerIDTextField);
|
||||
descTextArea.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTargetDesc));
|
||||
}
|
||||
|
||||
private void buildLayout() {
|
||||
|
||||
|
||||
/*
|
||||
* The main layout of the window contains mandatory info, textboxes
|
||||
* (controller Id, name & description) and action buttons layout
|
||||
@@ -131,56 +127,10 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
formLayout.addComponent(controllerIDTextField);
|
||||
formLayout.addComponent(nameTextField);
|
||||
formLayout.addComponent(descTextArea);
|
||||
|
||||
|
||||
controllerIDTextField.focus();
|
||||
}
|
||||
|
||||
private void addListeners() {
|
||||
|
||||
addTargetNameChangeListner();
|
||||
addTargetDescChangeListner();
|
||||
}
|
||||
|
||||
private void addTargetNameChangeListner() {
|
||||
nameTextField.addTextChangeListener(new TextChangeListener() {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1761855781481115921L;
|
||||
|
||||
@Override
|
||||
public void textChange(final TextChangeEvent event) {
|
||||
if (event.getText().equals(oldTargetName) && descTextArea.getValue().equals(oldTargetDesc)) {
|
||||
window.setSaveButtonEnabled(false);
|
||||
} else {
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void addTargetDescChangeListner() {
|
||||
descTextArea.addTextChangeListener(new TextChangeListener() {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 5770734934988115068L;
|
||||
|
||||
@Override
|
||||
public void textChange(final TextChangeEvent event) {
|
||||
if (event.getText().equals(oldTargetDesc) && nameTextField.getValue().equals(oldTargetName)) {
|
||||
window.setSaveButtonEnabled(false);
|
||||
} else {
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the Target if modified.
|
||||
*/
|
||||
@@ -210,7 +160,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
} else {
|
||||
addNewTarget();
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void discardTargetListner() {
|
||||
@@ -244,37 +193,49 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
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, getMandatoryFields(), null, i18n);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(),
|
||||
event -> discardTargetListner(), null, getMandatoryFields(), getEditedFields(), i18n);
|
||||
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);
|
||||
requiredFields.put(c.getId(), Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
|
||||
private Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> editedFields = new HashMap<>();
|
||||
editedFields.put(controllerIDTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(nameTextField.getId(), Boolean.FALSE);
|
||||
editedFields.put(descTextArea.getId(), Boolean.FALSE);
|
||||
return editedFields;
|
||||
}
|
||||
|
||||
/**
|
||||
* clear all fields of Target Edit Window.
|
||||
*/
|
||||
public void resetComponents() {
|
||||
nameTextField.clear();
|
||||
nameTextField.removeStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR);
|
||||
controllerIDTextField.setEnabled(true);
|
||||
controllerIDTextField.setReadOnly(false);
|
||||
controllerIDTextField.setEnabled(Boolean.TRUE);
|
||||
controllerIDTextField.removeStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR);
|
||||
controllerIDTextField.clear();
|
||||
descTextArea.clear();
|
||||
editTarget = Boolean.FALSE;
|
||||
|
||||
originalControllerId = null;
|
||||
originalTargetDesc = null;
|
||||
originalTargetName = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetMandatoryAndEditedFields();
|
||||
window.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,7 +243,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
editTarget = Boolean.FALSE;
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void setTargetValues(final Target target, final String name, final String description) {
|
||||
@@ -303,7 +263,8 @@ 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", new Object[] {newControlllerId}));
|
||||
uINotification.displayValidationError(
|
||||
i18n.get("message.target.duplicate.check", new Object[] { newControlllerId }));
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
@@ -319,15 +280,15 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
editTarget = Boolean.TRUE;
|
||||
final Target target = targetManagement.findTargetByControllerID(controllerId);
|
||||
controllerIDTextField.setValue(target.getControllerId());
|
||||
controllerIDTextField.setReadOnly(Boolean.TRUE);
|
||||
controllerIDTextField.setEnabled(Boolean.FALSE);
|
||||
nameTextField.setValue(target.getName());
|
||||
if (target.getDescription() != null) {
|
||||
descTextArea.setValue(target.getDescription());
|
||||
}
|
||||
window.setSaveButtonEnabled(Boolean.FALSE);
|
||||
|
||||
oldTargetDesc = descTextArea.getValue();
|
||||
oldTargetName = nameTextField.getValue();
|
||||
originalTargetDesc = descTextArea.getValue();
|
||||
originalTargetName = nameTextField.getValue();
|
||||
originalControllerId = controllerIDTextField.getValue();
|
||||
window.addStyleName("target-update-window");
|
||||
}
|
||||
|
||||
|
||||
@@ -88,10 +88,11 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
|
||||
@Override
|
||||
public void setTagDetails(final String targetTagSelected) {
|
||||
tagName.setValue(targetTagSelected);
|
||||
setOriginalTagName(targetTagSelected);
|
||||
final TargetTag selectedTargetTag = tagManagement.findTargetTag(targetTagSelected);
|
||||
if (null != selectedTargetTag) {
|
||||
tagDesc.setValue(selectedTargetTag.getDescription());
|
||||
setTagDescOriginal(selectedTargetTag.getDescription());
|
||||
setOriginalTagDesc(selectedTargetTag.getDescription());
|
||||
if (null == selectedTargetTag.getColour()) {
|
||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
||||
@@ -115,7 +116,6 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
|
||||
updateExistingTag(existingTag);
|
||||
}
|
||||
}
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -75,9 +75,7 @@ import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
*
|
||||
* Rollout add or update popup layout.
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
@@ -150,19 +148,21 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
private TextArea targetFilterQuery;
|
||||
|
||||
private Boolean updateMode = Boolean.FALSE;
|
||||
private String originalDistributionSet;
|
||||
|
||||
private String distributionSetOriginal;
|
||||
private Object originalActionGroup;
|
||||
|
||||
private Object actionGroupOriginal;
|
||||
private String originalRolloutName;
|
||||
|
||||
private String rolloutNameOriginal;
|
||||
private String originalErrorThreshold;
|
||||
|
||||
private String errorThresholdOriginal;;
|
||||
private String originalTriggerThreshold;
|
||||
|
||||
private String triggerThresholdOriginal;
|
||||
private String originalDescription;
|
||||
|
||||
private String descriptionOriginal;
|
||||
private String originalTargetFilterQueryCombo;
|
||||
|
||||
private String originalNoOfGroups;
|
||||
|
||||
/**
|
||||
* Create components and layout.
|
||||
@@ -174,6 +174,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
public CommonDialogWindow getWindow() {
|
||||
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard(),
|
||||
uiProperties.getLinks().getDocumentation().getRolloutView(), getMandatoryFields(), getEditedFields(),
|
||||
@@ -181,25 +182,14 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
return window;
|
||||
}
|
||||
|
||||
public CommonDialogWindow createUpdateWindow() {
|
||||
updateMode = Boolean.TRUE;
|
||||
return getWindow();
|
||||
}
|
||||
|
||||
public CommonDialogWindow createAddWindow() {
|
||||
updateMode = Boolean.FALSE;
|
||||
return getWindow();
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
requiredFields.put(rolloutName.getId(), Boolean.FALSE);
|
||||
requiredFields.put(distributionSet.getId(), Boolean.FALSE);
|
||||
requiredFields.put(targetFilterQueryCombo.getId(), Boolean.FALSE);
|
||||
requiredFields.put(noOfGroups.getId(), Boolean.FALSE);
|
||||
requiredFields.put(triggerThreshold.getId(), Boolean.FALSE);
|
||||
requiredFields.put(errorThreshold.getId(), Boolean.FALSE);
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
@@ -224,7 +214,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
rolloutForEdit = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetMandatoryAndEditedFields();
|
||||
window.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,13 +309,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
private void listenerActionGroupValueChanged(final ValueChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryComboBox(event, actionTypeOptionGroupLayout.getActionTypeOptionGroup());
|
||||
}
|
||||
if (event.getProperty().getValue() != null) {
|
||||
window.checkChanges(actionTypeOptionGroupLayout.getActionTypeOptionGroup().getId(),
|
||||
event.getProperty().getValue().toString(), actionGroupOriginal.toString());
|
||||
}
|
||||
window.checkMandatoryEditedValue(event, actionTypeOptionGroupLayout.getActionTypeOptionGroup(),
|
||||
originalActionGroup.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,9 +331,16 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||
filterField.setEnabled(false);
|
||||
filterField.setSizeUndefined();
|
||||
filterField.addValueChangeListener(event -> listenerFilterFieldValueChanged(event, filterField));
|
||||
return filterField;
|
||||
}
|
||||
|
||||
private void listenerFilterFieldValueChanged(final ValueChangeEvent event, final TextArea filterField) {
|
||||
if (window != null) {
|
||||
window.setRequiredFieldWhenUpdate(event, targetFilterQueryCombo);
|
||||
}
|
||||
}
|
||||
|
||||
private Label createTotalTargetsLabel() {
|
||||
final Label targetCountLabel = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE);
|
||||
targetCountLabel.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message");
|
||||
@@ -404,9 +396,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
totalTargetsCount = 0L;
|
||||
totalTargetsLabel.setVisible(false);
|
||||
}
|
||||
onGroupNumberChange();
|
||||
|
||||
window.checkMandatoryComboBox(event, targetFilterQueryCombo);
|
||||
onGroupNumberChange(event);
|
||||
window.setRequiredFieldWhenUpdate(event, targetFilterQueryCombo);
|
||||
window.checkMandatoryEditedValue(event, targetFilterQueryCombo, originalTargetFilterQueryCombo);
|
||||
}
|
||||
|
||||
private String getTotalTargetMessage() {
|
||||
@@ -618,11 +610,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
private void listenerDescriptionTextFieldChanged(final TextChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, description);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(description.getId(), event.getText(), descriptionOriginal);
|
||||
window.checkMandatoryEditedTextField(event, originalDescription);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -633,16 +621,19 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
errorField.setMaxLength(7);
|
||||
errorField.setSizeUndefined();
|
||||
errorField.addTextChangeListener(this::listenerErrorThresholdTextFieldChanged);
|
||||
errorField.addValueChangeListener(event -> listenerErrorThresholdValueChanged(event, errorField));
|
||||
return errorField;
|
||||
}
|
||||
|
||||
private void listenerErrorThresholdTextFieldChanged(final TextChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, errorThreshold);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(errorThreshold.getId(), event.getText(), errorThresholdOriginal);
|
||||
window.checkMandatoryEditedTextField(event, originalErrorThreshold);
|
||||
}
|
||||
}
|
||||
|
||||
private void listenerErrorThresholdValueChanged(final ValueChangeEvent event, final TextField errorField) {
|
||||
if (window != null) {
|
||||
window.setRequiredFieldWhenUpdate(event, errorField);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -653,16 +644,19 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
thresholdField.setSizeUndefined();
|
||||
thresholdField.setMaxLength(3);
|
||||
thresholdField.addTextChangeListener(this::listenerTriggerThresholdTextFieldChanged);
|
||||
thresholdField.addValueChangeListener(event -> listenerTriggerTresholdValueChanged(event, thresholdField));
|
||||
return thresholdField;
|
||||
}
|
||||
|
||||
private void listenerTriggerTresholdValueChanged(final ValueChangeEvent event, final TextField thresholdField) {
|
||||
if (window != null) {
|
||||
window.setRequiredFieldWhenUpdate(event, thresholdField);
|
||||
}
|
||||
}
|
||||
|
||||
private void listenerTriggerThresholdTextFieldChanged(final TextChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, triggerThreshold);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(triggerThreshold.getId(), event.getText(), triggerThresholdOriginal);
|
||||
window.checkMandatoryEditedTextField(event, originalTriggerThreshold);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -672,28 +666,27 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
noOfGroupsField.addValidator(new GroupNumberValidator());
|
||||
noOfGroupsField.setSizeUndefined();
|
||||
noOfGroupsField.setMaxLength(3);
|
||||
noOfGroupsField.addValueChangeListener(evevt -> onGroupNumberChange());
|
||||
noOfGroupsField.addValueChangeListener(this::onGroupNumberChange);
|
||||
noOfGroupsField.addTextChangeListener(this::listenerNoOfGroupsTextFieldChanged);
|
||||
return noOfGroupsField;
|
||||
}
|
||||
|
||||
private void listenerNoOfGroupsTextFieldChanged(final TextChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, noOfGroups);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(noOfGroups.getId(), event.getText(), noOfGroups.getValue());
|
||||
window.checkMandatoryEditedTextField(event, originalNoOfGroups);
|
||||
}
|
||||
}
|
||||
|
||||
private void onGroupNumberChange() {
|
||||
private void onGroupNumberChange(final ValueChangeEvent event) {
|
||||
if (noOfGroups.isValid() && !Strings.isNullOrEmpty(noOfGroups.getValue())) {
|
||||
groupSizeLabel.setValue(getTargetPerGroupMessage(String.valueOf(getGroupSize())));
|
||||
groupSizeLabel.setVisible(true);
|
||||
} else {
|
||||
groupSizeLabel.setVisible(false);
|
||||
}
|
||||
if (window != null) {
|
||||
window.setRequiredFieldWhenUpdate(event, noOfGroups);
|
||||
}
|
||||
}
|
||||
|
||||
private ComboBox createDistributionSetCombo() {
|
||||
@@ -710,14 +703,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
private void listenerDistributionSetChanged(final ValueChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryComboBox(event, distributionSet);
|
||||
return;
|
||||
}
|
||||
if (event.getProperty().getValue() != null) {
|
||||
window.checkChanges(distributionSet.getId(), event.getProperty().getValue().toString(),
|
||||
distributionSetOriginal);
|
||||
}
|
||||
window.checkMandatoryEditedValue(event, distributionSet, originalDistributionSet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -732,7 +718,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
return new LazyQueryContainer(
|
||||
new LazyQueryDefinition(true, SPUIDefinitions.PAGE_SIZE, SPUILabelDefinitions.VAR_DIST_ID_NAME),
|
||||
distributionQF);
|
||||
|
||||
}
|
||||
|
||||
private TextField createRolloutNameField() {
|
||||
@@ -740,16 +725,19 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
rolloutNameField.setId(SPUIComponentIdProvider.ROLLOUT_NAME_FIELD_ID);
|
||||
rolloutNameField.setSizeUndefined();
|
||||
rolloutNameField.addTextChangeListener(this::listenerRolloutNameTextFieldChanged);
|
||||
rolloutNameField.addValueChangeListener(event -> listenerRolloutNameValueChanged(event, rolloutNameField));
|
||||
return rolloutNameField;
|
||||
}
|
||||
|
||||
private void listenerRolloutNameTextFieldChanged(final TextChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, rolloutName);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(rolloutName.getId(), event.getText(), rolloutNameOriginal);
|
||||
window.checkMandatoryEditedTextField(event, originalRolloutName);
|
||||
}
|
||||
}
|
||||
|
||||
private void listenerRolloutNameValueChanged(final ValueChangeEvent event, final TextField rolloutNameField) {
|
||||
if (window != null) {
|
||||
window.setRequiredFieldWhenUpdate(event, rolloutNameField);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -851,7 +839,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
description.setValue(rolloutForEdit.getDescription());
|
||||
distributionSet.setValue(DistributionSetIdName.generate(rolloutForEdit.getDistributionSet()));
|
||||
final List<RolloutGroup> rolloutGroups = rolloutForEdit.getRolloutGroups();
|
||||
setThresoldValues(rolloutGroups);
|
||||
setThresholdValues(rolloutGroups);
|
||||
setActionType(rolloutForEdit);
|
||||
if (rolloutForEdit.getStatus() != RolloutStatus.READY) {
|
||||
disableRequiredFieldsOnEdit();
|
||||
@@ -870,30 +858,28 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void setOriginalValues() {
|
||||
distributionSetOriginal = distributionSet.getValue().toString();
|
||||
actionGroupOriginal = actionTypeOptionGroupLayout.getActionTypeOptionGroup().getValue();
|
||||
rolloutNameOriginal = rolloutName.getValue();
|
||||
triggerThresholdOriginal = triggerThreshold.getValue();
|
||||
errorThresholdOriginal = errorThreshold.getValue();
|
||||
descriptionOriginal = description.getValue();
|
||||
originalDistributionSet = distributionSet.getValue().toString();
|
||||
originalActionGroup = actionTypeOptionGroupLayout.getActionTypeOptionGroup().getValue();
|
||||
originalRolloutName = rolloutName.getValue();
|
||||
originalTriggerThreshold = triggerThreshold.getValue();
|
||||
originalErrorThreshold = errorThreshold.getValue();
|
||||
originalDescription = description.getValue();
|
||||
originalNoOfGroups = noOfGroups.getValue();
|
||||
if (targetFilterQueryCombo.getValue() != null) {
|
||||
originalTargetFilterQueryCombo = targetFilterQueryCombo.getValue().toString();
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> changeMap = new HashMap<>();
|
||||
if (rolloutForEdit == null) {
|
||||
return changeMap;
|
||||
}
|
||||
if (rolloutForEdit.getStatus() != RolloutStatus.READY) {
|
||||
changeMap.put(rolloutName.getId(), Boolean.FALSE);
|
||||
changeMap.put(description.getId(), Boolean.FALSE);
|
||||
} else {
|
||||
changeMap.put(rolloutName.getId(), Boolean.FALSE);
|
||||
changeMap.put(distributionSet.getId(), Boolean.FALSE);
|
||||
changeMap.put(triggerThreshold.getId(), Boolean.FALSE);
|
||||
changeMap.put(errorThreshold.getId(), Boolean.FALSE);
|
||||
changeMap.put(description.getId(), Boolean.FALSE);
|
||||
changeMap.put(actionTypeOptionGroupLayout.getActionTypeOptionGroup().getId(), Boolean.FALSE);
|
||||
}
|
||||
changeMap.put(rolloutName.getId(), Boolean.FALSE);
|
||||
changeMap.put(distributionSet.getId(), Boolean.FALSE);
|
||||
changeMap.put(targetFilterQueryCombo.getId(), Boolean.FALSE);
|
||||
changeMap.put(noOfGroups.getId(), Boolean.FALSE);
|
||||
changeMap.put(triggerThreshold.getId(), Boolean.FALSE);
|
||||
changeMap.put(errorThreshold.getId(), Boolean.FALSE);
|
||||
changeMap.put(description.getId(), Boolean.FALSE);
|
||||
changeMap.put(actionTypeOptionGroupLayout.getActionTypeOptionGroup().getId(), Boolean.FALSE);
|
||||
return changeMap;
|
||||
}
|
||||
|
||||
@@ -933,7 +919,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
/**
|
||||
* @param rolloutGroups
|
||||
*/
|
||||
private void setThresoldValues(final List<RolloutGroup> rolloutGroups) {
|
||||
private void setThresholdValues(final List<RolloutGroup> rolloutGroups) {
|
||||
if (null != rolloutGroups && !rolloutGroups.isEmpty()) {
|
||||
errorThreshold.setValue(rolloutGroups.get(0).getErrorConditionExp());
|
||||
triggerThreshold.setValue(rolloutGroups.get(0).getSuccessConditionExp());
|
||||
|
||||
@@ -67,9 +67,7 @@ import com.vaadin.ui.renderers.ClickableRenderer.RendererClickEvent;
|
||||
import com.vaadin.ui.renderers.HtmlRenderer;
|
||||
|
||||
/**
|
||||
*
|
||||
* Rollout list grid component.
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
@@ -159,7 +157,6 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
}
|
||||
item.getItemProperty(ROLLOUT_RENDERER_DATA)
|
||||
.setValue(new RolloutRendererData(rollout.getName(), rollout.getStatus().toString()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -200,7 +197,6 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
|
||||
rolloutGridContainer.addContainerProperty(SPUILabelDefinitions.ACTION, String.class,
|
||||
FontAwesome.CIRCLE_O.getHtml(), false, false);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -292,7 +288,6 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
for (final Object propertyId : columnsToBeHidden) {
|
||||
getColumn(propertyId).setHidden(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -315,7 +310,6 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
final RolloutRenderer customObjectRenderer = new RolloutRenderer(RolloutRendererData.class);
|
||||
customObjectRenderer.addClickListener(this::onClickOfRolloutName);
|
||||
getColumn(ROLLOUT_RENDERER_DATA).setRenderer(customObjectRenderer);
|
||||
|
||||
}
|
||||
|
||||
private void createRolloutStatusToFontMap() {
|
||||
@@ -437,8 +431,8 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
}
|
||||
|
||||
private void onUpdate(final ContextMenuData contextMenuData) {
|
||||
final CommonDialogWindow addTargetWindow = addUpdateRolloutWindow.getWindow();
|
||||
addUpdateRolloutWindow.populateData(contextMenuData.getRolloutId());
|
||||
final CommonDialogWindow addTargetWindow = addUpdateRolloutWindow.createUpdateWindow();
|
||||
addTargetWindow.setCaption(i18n.get("caption.update.rollout"));
|
||||
UI.getCurrent().addWindow(addTargetWindow);
|
||||
addTargetWindow.setVisible(Boolean.TRUE);
|
||||
@@ -684,7 +678,6 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
public Class<String> getPresentationType() {
|
||||
return String.class;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class RolloutListHeader extends AbstractGridHeader {
|
||||
@Override
|
||||
protected void addNewItem(final ClickEvent event) {
|
||||
addUpdateRolloutWindow.resetComponents();
|
||||
final Window addTargetWindow = addUpdateRolloutWindow.createAddWindow();
|
||||
final Window addTargetWindow = addUpdateRolloutWindow.getWindow();
|
||||
UI.getCurrent().addWindow(addTargetWindow);
|
||||
addTargetWindow.setVisible(Boolean.TRUE);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user