Merge branch

'fix_Introduce_consitent_button_icon_for_update_create_dialogs' of
https://github.com/bsinno/hawkbit.git into
fix_Introduce_consitent_button_icon_for_update_create_dialogs

Conflicts:
	hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java
	hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java


Signed-off-by: SirWayne <dennis.melzer@bosch-si.com>
This commit is contained in:
SirWayne
2016-06-28 14:40:52 +02:00
18 changed files with 259 additions and 538 deletions

View File

@@ -9,9 +9,6 @@
package org.eclipse.hawkbit.ui.artifacts.smtable;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
@@ -21,6 +18,7 @@ import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIWindowDecorator;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
@@ -34,9 +32,7 @@ import org.vaadin.spring.events.EventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.ViewScope;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.Label;
@@ -82,16 +78,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
private CommonDialogWindow window;
private String originalDescriptionValue;
private String originalVendorValue;
private String originalNameValue;
private String originalVersionValue;
private String originalComboBoxValue;
private Boolean editSwModule = Boolean.FALSE;
private Long baseSwModuleId;
@@ -126,8 +112,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
this.baseSwModuleId = baseSwModuleId;
createRequiredComponents();
createWindow();
/* populate selected target values to edit. */
populateValuesOfSwModule();
nameTextField.setEnabled(false);
versionTextField.setEnabled(false);
typeComboBox.setEnabled(false);
@@ -178,12 +162,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
versionTextField.clear();
descTextArea.clear();
typeComboBox.clear();
originalDescriptionValue = null;
originalVendorValue = null;
originalComboBoxValue = null;
originalNameValue = null;
originalVersionValue = null;
}
private void createWindow() {
@@ -193,11 +171,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
final Label madatoryStarLabel = new Label("*");
madatoryStarLabel.setStyleName("v-caption v-required-field-indicator");
madatoryStarLabel.setWidth(null);
/*
* The main layout of the window contains mandatory info, textboxes
* (controller Id, name & description) and action buttons layout
*/
addStyleName("lay-color");
setSizeUndefined();
@@ -211,39 +184,14 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
setCompositionRoot(formLayout);
/* add main layout to the window */
window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
populateValuesOfSwModule();
window = SPUIWindowDecorator.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveOrUpdate(), event -> closeThisWindow(), null,
formLayout, i18n);
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
typeComboBox.focus();
}
private Map<String, Boolean> getMandatoryFields(final FormLayout formLayout) {
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.getId(), Boolean.FALSE);
}
}
return requiredFields;
}
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;
}
/**
* Add new SW module.
*/
private void addNewBaseSoftware() {
final String name = HawkbitCommonUtil.trimAndNullIfEmpty(nameTextField.getValue());
final String version = HawkbitCommonUtil.trimAndNullIfEmpty(versionTextField.getValue());
@@ -302,9 +250,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getVendor()));
descTextArea.setValue(swModle.getDescription() == null ? HawkbitCommonUtil.SP_STRING_EMPTY
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getDescription()));
originalDescriptionValue = descTextArea.getValue();
originalVendorValue = vendorTextField.getValue();
originalComboBoxValue = swModle.getType().getName();
if (swModle.getType().isDeleted()) {
typeComboBox.addItem(swModle.getType().getName());
}

View File

@@ -9,10 +9,7 @@
package org.eclipse.hawkbit.ui.artifacts.smtype;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.hawkbit.repository.EntityFactory;
@@ -37,10 +34,8 @@ import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.ViewScope;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.OptionGroup;
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
@@ -91,15 +86,11 @@ 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(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(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, "",
@@ -107,7 +98,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
tagDesc.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_DESC);
tagDesc.setImmediate(true);
tagDesc.setNullRepresentation("");
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagDesc()));
singleMultiOptionGroup();
}
@@ -122,23 +112,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
}
@Override
public void createWindow() {
reset();
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields(),
getEditedFields(), i18n);
}
private Map<String, Boolean> getMandatoryFields() {
final Map<String, Boolean> requiredFields = new HashMap<>();
final Iterator<Component> iterate = getFormLayout().iterator();
while (iterate.hasNext()) {
final Component c = iterate.next();
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
requiredFields.put(c.getId(), Boolean.FALSE);
}
}
return requiredFields;
protected String getWindowCaption() {
return i18n.get("caption.add.type");
}
/**
@@ -189,14 +164,11 @@ 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());
setOriginalTagDesc(selectedTypeTag.getDescription());
typeKey.setValue(selectedTypeTag.getKey());
setOriginalTypeKey(selectedTypeTag.getKey());
if (selectedTypeTag.getMaxAssignments() == Integer.MAX_VALUE) {
assignOptiongroup.setValue(multiAssignStr);
} else {

View File

@@ -12,10 +12,13 @@ import static com.google.common.base.Preconditions.checkNotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
@@ -27,9 +30,14 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
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.event.FieldEvents.TextChangeListener;
import com.vaadin.event.FieldEvents.TextChangeNotifier;
import com.vaadin.server.FontAwesome;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.AbstractOrderedLayout;
@@ -37,7 +45,7 @@ import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.Field;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
@@ -47,9 +55,9 @@ import com.vaadin.ui.Window;
import com.vaadin.ui.themes.ValoTheme;
/**
* TODO: AbstractColorPicker und FlexibleOptionGroupItemComponent Superclass for
* pop-up-windows including a minimize and close icon in the upper right corner
* and a save and cancel button at the bottom.
*
* Table pop-up-windows including a minimize and close icon in the upper right
* corner and a save and cancel button at the bottom. Is not intended to reuse.
*/
public class CommonDialogWindow extends Window implements Serializable {
@@ -75,7 +83,7 @@ public class CommonDialogWindow extends Window implements Serializable {
private final ClickListener cancelButtonClickListener;
private Map<Component, Object> orginalValues;
private final Map<Component, Object> orginalValues;
private final List<AbstractField<?>> allComponents;
@@ -97,7 +105,7 @@ public class CommonDialogWindow extends Window implements Serializable {
*/
public CommonDialogWindow(final String caption, final Component content, final String helpLink,
final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener,
final FormLayout formLayout, final I18N i18n) {
final AbstractLayout layout, final I18N i18n) {
checkNotNull(saveButtonClickListener);
checkNotNull(cancelButtonClickListener);
this.caption = caption;
@@ -105,21 +113,45 @@ public class CommonDialogWindow extends Window implements Serializable {
this.helpLink = helpLink;
this.saveButtonClickListener = saveButtonClickListener;
this.cancelButtonClickListener = cancelButtonClickListener;
this.allComponents = getAllComponents(formLayout);
this.orginalValues = new HashMap<>();
this.allComponents = getAllComponents(layout);
this.i18n = i18n;
init();
}
public void setSaveButtonEnabled(final boolean enabled) {
saveButton.setEnabled(enabled);
@Override
public void close() {
super.close();
orginalValues.clear();
removeListeners();
allComponents.clear();
this.saveButton.setEnabled(false);
}
public void setCancelButtonEnabled(final boolean enabled) {
cancelButton.setEnabled(enabled);
private void removeListeners() {
for (final AbstractField<?> field : allComponents) {
removeTextListener(field);
removeValueChangeListener(field);
}
}
public HorizontalLayout getButtonsLayout() {
return buttonsLayout;
private void removeTextListener(final AbstractField<?> field) {
if (!(field instanceof TextChangeNotifier)) {
return;
}
for (final Object listener : field.getListeners(TextChangeEvent.class)) {
if (listener instanceof ChangeListener) {
((TextChangeNotifier) field).removeTextChangeListener((ChangeListener) listener);
}
}
}
private void removeValueChangeListener(final AbstractField<?> field) {
for (final Object listener : field.getListeners(ValueChangeEvent.class)) {
if (listener instanceof ChangeListener) {
field.removeValueChangeListener((ChangeListener) listener);
}
}
}
private final void init() {
@@ -152,39 +184,44 @@ public class CommonDialogWindow extends Window implements Serializable {
addListeners();
}
private final void setOrginaleValues() {
public final void setOrginaleValues() {
for (final AbstractField<?> field : allComponents) {
orginalValues.put(field, field.getValue());
}
saveButton.setEnabled(isSaveButtonEnabledAfterValueChange(null, null));
}
private final void addListeners() {
for (final AbstractField<?> field : allComponents) {
field.addValueChangeListener(event -> saveButton.setEnabled(isSaveButtonEnabled()));
field.addValueChangeListener(new ChangeListener(field));
if (field instanceof TextChangeNotifier) {
((TextChangeNotifier) field)
.addTextChangeListener(event -> saveButton.setEnabled(isSaveButtonEnabled()));
((TextChangeNotifier) field).addTextChangeListener(new ChangeListener(field));
}
}
saveButton.addClickListener(event -> save());
saveButton.addClickListener(event -> close());
cancelButton.addClickListener(event -> close());
}
private void save() {
saveButton.setEnabled(false);
setOrginaleValues();
private boolean isSaveButtonEnabledAfterValueChange(final Component currentChangedComponent,
final Object newValue) {
return isMandatoyFieldNotEmpty(currentChangedComponent, newValue)
&& isValuesChanged(currentChangedComponent, newValue);
}
private boolean isSaveButtonEnabled() {
return isMandatoyFieldNotEmpty() && isValuesChanged();
}
private boolean isValuesChanged() {
private boolean isValuesChanged(final Component currentChangedComponent, final Object newValue) {
for (final AbstractField<?> field : allComponents) {
final Object currentValue = field.getValue();
final Object orginalValue = orginalValues.get(field);
Object orginalValue = orginalValues.get(field);
Object currentValue = field.getValue();
if (field.equals(currentChangedComponent)) {
currentValue = newValue;
}
if (!Objects.equals(currentValue, orginalValue)) {
if (String.class.equals(field.getType())) {
orginalValue = Strings.emptyToNull((String) orginalValue);
currentValue = Strings.emptyToNull((String) orginalValue);
}
if (!Objects.equals(orginalValue, currentValue)) {
return true;
}
@@ -202,14 +239,34 @@ public class CommonDialogWindow extends Window implements Serializable {
return false;
}
private boolean isMandatoyFieldNotEmpty() {
for (final AbstractField<?> field : allComponents) {
// TODO empty string.
if (field.isRequired() && field.getValue() == null) {
private boolean isMandatoyFieldNotEmpty(final Component currentChangedComponent, final Object newValue) {
final List<AbstractField<?>> requiredComponents = allComponents.stream().filter(field -> field.isRequired())
.collect(Collectors.toList());
for (final AbstractField<?> field : requiredComponents) {
Object value = field.getValue();
if (field.equals(currentChangedComponent)) {
value = newValue;
}
if (String.class.equals(field.getType())) {
value = Strings.emptyToNull((String) value);
}
if (Set.class.equals(field.getType())) {
value = emptyToNull((Set<?>) value);
}
if (value == null) {
return false;
}
}
return true;
}
private static Object emptyToNull(final Set<?> c) {
return (c == null || c.isEmpty()) ? null : c;
}
private List<AbstractField<?>> getAllComponents(final AbstractLayout abstractLayout) {
@@ -299,4 +356,30 @@ public class CommonDialogWindow extends Window implements Serializable {
buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT);
}
public AbstractComponent getButtonsLayout() {
return this.buttonsLayout;
}
private class ChangeListener implements ValueChangeListener, TextChangeListener {
private final Field<?> field;
public ChangeListener(final Field<?> field) {
super();
this.field = field;
}
@Override
public void textChange(final TextChangeEvent event) {
saveButton.setEnabled(isSaveButtonEnabledAfterValueChange(field, event.getText()));
}
@Override
public void valueChange(final ValueChangeEvent event) {
saveButton.setEnabled(isSaveButtonEnabledAfterValueChange(field, field.getValue()));
}
}
}

View File

@@ -14,7 +14,6 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.hawkbit.repository.model.BaseEntity;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
import org.eclipse.hawkbit.ui.common.UserDetailsFormatter;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonDecorator;
import org.eclipse.hawkbit.ui.decorators.SPUIComboBoxDecorator;
@@ -33,11 +32,8 @@ import com.vaadin.server.FontAwesome;
import com.vaadin.server.Resource;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
@@ -141,25 +137,6 @@ public final class SPUIComponentProvider {
return SPUILabelDecorator.getDeocratedLabel(name, type);
}
/**
* Get window component.
*
* @param caption
* window caption
* @param id
* window id
* @param type
* type of window
* @return Window
*/
public static CommonDialogWindow getWindow(final String caption, final String id, final String type,
final Component content, final ClickListener saveButtonClickListener,
final ClickListener cancelButtonClickListener, final String helpLink, final FormLayout formLayout,
final I18N i18n) {
return SPUIWindowDecorator.getDeocratedWindow(caption, id, type, content, saveButtonClickListener,
cancelButtonClickListener, helpLink, formLayout, i18n);
}
/**
* Get window component.
*

View File

@@ -13,9 +13,9 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.Window;
/**
@@ -44,13 +44,13 @@ public final class SPUIWindowDecorator {
* window type
* @return Window
*/
public static CommonDialogWindow getDeocratedWindow(final String caption, final String id, final String type,
public static CommonDialogWindow getWindow(final String caption, final String id, final String type,
final Component content, final ClickListener saveButtonClickListener,
final ClickListener cancelButtonClickListener, final String helpLink, final FormLayout formLayout,
final ClickListener cancelButtonClickListener, final String helpLink, final AbstractLayout layout,
final I18N i18n) {
final CommonDialogWindow window = new CommonDialogWindow(caption, content, helpLink, saveButtonClickListener,
cancelButtonClickListener, formLayout, i18n);
cancelButtonClickListener, layout, i18n);
if (null != id) {
window.setId(id);
}

View File

@@ -8,7 +8,6 @@
*/
package org.eclipse.hawkbit.ui.distributions.disttype;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -27,6 +26,7 @@ import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent;
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent.DistributionSetTypeEnum;
import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout;
import org.eclipse.hawkbit.ui.utils.CommonDialogWindowHelper;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
@@ -43,7 +43,6 @@ import com.vaadin.data.util.IndexedContainer;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.ViewScope;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
@@ -91,8 +90,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
private IndexedContainer originalSelectedTableContainer;
private String originalTypeKey;
@Override
protected void createRequiredComponents() {
@@ -102,15 +99,11 @@ 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(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(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, "",
@@ -118,7 +111,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
tagDesc.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_DESC);
tagDesc.setImmediate(true);
tagDesc.setNullRepresentation("");
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagDesc()));
}
@Override
@@ -190,8 +182,9 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
selectedTable.setImmediate(true);
selectedTable.setVisibleColumns(DIST_TYPE_NAME, DIST_TYPE_MANDATORY);
selectedTable.setColumnHeaders(i18n.get("header.dist.twintable.selected"), STAR);
selectedTable.setColumnExpandRatio(DIST_TYPE_NAME, 0.75f);
selectedTable.setColumnExpandRatio(DIST_TYPE_MANDATORY, 0.25f);
selectedTable.setColumnExpandRatio(DIST_TYPE_NAME, 0.75F);
selectedTable.setColumnExpandRatio(DIST_TYPE_MANDATORY, 0.25F);
selectedTable.setRequired(true);
}
private void addTooltTipToSelectedTable() {
@@ -251,11 +244,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
selectedTableContainer.addContainerProperty(DIST_TYPE_MANDATORY, CheckBox.class, null);
}
private void listenerMandatoryCheckboxChanged(final ValueChangeEvent event) {
window.setSaveButtonEnabled(true);
}
private void createOriginalSelectedTableContainer() {
originalSelectedTableContainer = new IndexedContainer();
@@ -268,24 +256,29 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
private void addSMType() {
final Set<Long> selectedIds = (Set<Long>) sourceTable.getValue();
if (selectedIds != null && !selectedIds.isEmpty()) {
for (final Long id : selectedIds) {
addTargetTableData(id);
}
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
if (selectedIds == null) {
return;
}
for (final Long id : selectedIds) {
addTargetTableData(id);
}
// TODO: Add Table to window
// window.updateRequiredFields(selectedTable.getId(),
// hasContentChanged());
}
private void removeSMType() {
@SuppressWarnings("unchecked")
final Set<Long> selectedIds = (Set<Long>) selectedTable.getValue();
if (selectedIds != null && !selectedIds.isEmpty()) {
for (final Long id : selectedIds) {
addSourceTableData(id);
selectedTable.removeItem(id);
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
}
if (selectedIds == null) {
return;
}
for (final Long id : selectedIds) {
addSourceTableData(id);
selectedTable.removeItem(id);
// window.updateRequiredFields(selectedTable.getId(),
// hasContentChanged());
}
}
@@ -294,26 +287,27 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
if (originalSelectedTableContainer == null) {
originalSelectedTableContainer = new IndexedContainer();
}
// is new softwareModule added?
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);
// window.updateEditedFields(selectedTable.getId(),
// Boolean.TRUE);
return Boolean.TRUE;
}
}
// is softwareModule removed and at least one softwareModule is selected
for (final Iterator itemIterator = originalSelectedTableContainer.getItemIds().iterator(); itemIterator
.hasNext();) {
final long itemId = (Long) itemIterator.next();
if (selectedTableContainer.size() > 0 && !selectedTableContainer.containsId(itemId)) {
window.updateEditedFields(selectedTable.getId(), Boolean.TRUE);
// window.updateEditedFields(selectedTable.getId(),
// Boolean.TRUE);
return Boolean.TRUE;
}
}
if (selectedTableContainer.size() > 0) {
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
}
return Boolean.FALSE;
}
@@ -524,7 +518,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
super.optionValueChanged(event);
if (updateTypeStr.equals(event.getProperty().getValue())) {
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
// window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
selectedTable.getContainerDataSource().removeAllItems();
getSourceTableData();
distTypeSelectLayout.setEnabled(false);
@@ -582,15 +576,12 @@ 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());
setOriginalTagDesc(selectedTypeTag.getDescription());
typeKey.setValue(selectedTypeTag.getKey());
setOriginalTypeKey(selectedTypeTag.getKey());
if (distributionSetManagement.countDistributionSetsByType(selectedTypeTag) <= 0) {
distTypeSelectLayout.setEnabled(true);
selectedTable.setEnabled(true);
@@ -621,20 +612,19 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
@SuppressWarnings("unchecked")
private void addTargetTableforUpdate(final SoftwareModuleType swModuleType, final boolean mandatory) {
Item saveTblitem;
if (selectedTableContainer != null) {
saveTblitem = selectedTableContainer.addItem(swModuleType.getId());
sourceTable.removeItem(swModuleType.getId());
saveTblitem.getItemProperty(DIST_TYPE_NAME).setValue(swModuleType.getName());
saveTblitem.getItemProperty(DIST_TYPE_MANDATORY).setValue(new CheckBox("", mandatory));
final CheckBox mandatoryCheckbox = (CheckBox) selectedTableContainer
.getContainerProperty(swModuleType.getId(), DIST_TYPE_MANDATORY).getValue();
mandatoryCheckbox.addValueChangeListener(this::listenerMandatoryCheckboxChanged);
final Item originalItem = originalSelectedTableContainer.addItem(swModuleType.getId());
originalItem.getItemProperty(DIST_TYPE_NAME).setValue(swModuleType.getName());
originalItem.getItemProperty(DIST_TYPE_MANDATORY).setValue(new CheckBox("", mandatory));
if (selectedTableContainer == null) {
return;
}
final Item saveTblitem = selectedTableContainer.addItem(swModuleType.getId());
sourceTable.removeItem(swModuleType.getId());
saveTblitem.getItemProperty(DIST_TYPE_NAME).setValue(swModuleType.getName());
saveTblitem.getItemProperty(DIST_TYPE_MANDATORY).setValue(new CheckBox("", mandatory));
final CheckBox mandatoryCheckbox = (CheckBox) selectedTableContainer
.getContainerProperty(swModuleType.getId(), DIST_TYPE_MANDATORY).getValue();
final Item originalItem = originalSelectedTableContainer.addItem(swModuleType.getId());
originalItem.getItemProperty(DIST_TYPE_NAME).setValue(swModuleType.getName());
originalItem.getItemProperty(DIST_TYPE_MANDATORY).setValue(new CheckBox("", mandatory));
}
@Override
@@ -653,37 +643,17 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
}
@Override
public void createWindow() {
reset();
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields(),
getEditedFields(), i18n);
protected String getWindowCaption() {
return i18n.get("caption.add.type");
}
private Map<String, Boolean> getMandatoryFields() {
final Map<String, Boolean> requiredFields = new HashMap<>();
final Iterator<Component> iterate = getFormLayout().iterator();
while (iterate.hasNext()) {
final Component c = iterate.next();
if (c instanceof AbstractField && ((AbstractField) c).isRequired()) {
requiredFields.put(c.getId(), Boolean.FALSE);
}
}
protected Map<String, Boolean> getMandatoryFields() {
final Map<String, Boolean> requiredFields = CommonDialogWindowHelper.getMandatoryFields(getFormLayout());
// Selected SoftwareModulesType
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) {
@@ -718,14 +688,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;
}
// @Override
// public String getOriginalTypeKey() {
// return originalTypeKey;
// }
//
// @Override
// public void setOriginalTypeKey(final String originalTypeKey) {
// this.originalTypeKey = originalTypeKey;
// }
}

View File

@@ -259,8 +259,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
@Override
protected void onEdit(final ClickEvent event) {
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
distributionAddUpdateWindowLayout.populateValuesOfDistribution(getSelectedBaseEntityId());
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
UI.getCurrent().addWindow(newDistWindow);
newDistWindow.setVisible(Boolean.TRUE);

View File

@@ -8,10 +8,6 @@
*/
package org.eclipse.hawkbit.ui.layouts;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
@@ -24,6 +20,7 @@ import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper;
import org.eclipse.hawkbit.ui.colorpicker.ColorPickerLayout;
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIWindowDecorator;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
@@ -38,11 +35,9 @@ import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.server.Page;
import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.GridLayout;
@@ -103,42 +98,13 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
protected GridLayout mainLayout;
protected VerticalLayout contentLayout;
protected boolean tagPreviewBtnClicked = false;
protected boolean tagPreviewBtnClicked;
private String colorPicked;
protected String tagNameValue;
protected String tagDescValue;
private Color originalSelectedColor;
private String originalTagDesc;
private String originalTagName;
protected void createWindow() {
reset();
setWindow(
SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW,
this, this::save, this::discard, null, getMandatoryFields(), getEditedFields(), i18n));
}
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.getId(), null);
}
}
return requiredFields;
}
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);
return changeMap;
}
protected abstract String getWindowCaption();
/**
* Save new tag / update new tag.
@@ -171,7 +137,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
setSizeUndefined();
createRequiredComponents();
buildLayout();
createWindow();
addListeners();
eventBus.subscribe(this);
}
@@ -193,8 +158,6 @@ 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(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"),
@@ -202,7 +165,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
tagDesc.setId(SPUIDefinitions.NEW_TARGET_TAG_DESC);
tagDesc.setImmediate(true);
tagDesc.setNullRepresentation("");
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTagDesc));
tagNameComboBox = SPUIComponentProvider.getComboBox(null, "", "", null, null, false, "",
i18n.get("label.combobox.tag"));
@@ -245,6 +207,10 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
mainLayout.setSizeFull();
mainLayout.addComponent(contentLayout, 0, 0);
colorPickerLayout.setVisible(false);
mainLayout.addComponent(colorPickerLayout, 1, 0);
mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER);
setCompositionRoot(mainLayout);
tagName.focus();
}
@@ -264,13 +230,10 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
protected void previewButtonClicked() {
if (!tagPreviewBtnClicked) {
setColor();
mainLayout.getComponent(1, 0);
mainLayout.addComponent(colorPickerLayout, 1, 0);
mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER);
} else {
mainLayout.removeComponent(colorPickerLayout);
}
tagPreviewBtnClicked = !tagPreviewBtnClicked;
colorPickerLayout.setVisible(tagPreviewBtnClicked);
}
private void setColor() {
@@ -307,6 +270,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
} else {
resetTagNameField();
}
window.setOrginaleValues();
}
protected void resetTagNameField() {
@@ -314,7 +278,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
tagName.clear();
tagDesc.clear();
restoreComponentStyles();
mainLayout.removeComponent(colorPickerLayout);
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
tagPreviewBtnClicked = false;
@@ -344,7 +307,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
comboLayout.removeComponent(comboLabel);
comboLayout.removeComponent(tagNameComboBox);
}
window.reset();
// close the color picker layout
tagPreviewBtnClicked = false;
// reset the selected color - Set default color
@@ -352,7 +314,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
colorPickerLayout.getSelPreview()
.setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
mainLayout.removeComponent(colorPickerLayout);
window.setOrginaleValues();
}
/**
@@ -367,16 +329,12 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
// hide target name combo
comboLayout.removeComponent(comboLabel);
comboLayout.removeComponent(tagNameComboBox);
mainLayout.removeComponent(colorPickerLayout);
// Default green color
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
tagPreviewBtnClicked = false;
if (window != null) {
window.reset();
}
}
/**
@@ -466,7 +424,9 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
}
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), originalSelectedColor);
// TODO:
// window.checkColorChange(colorPickerLayout.getId(),
// colorPickerLayout.getSelectedColor(), originalSelectedColor);
}
protected void closeWindow() {
@@ -519,13 +479,11 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
public CommonDialogWindow getWindow() {
reset();
window = SPUIWindowDecorator.getWindow(getWindowCaption(), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this,
this::save, this::discard, null, mainLayout, i18n);
return window;
}
public void setWindow(final CommonDialogWindow window) {
this.window = window;
}
/**
* Value change listeners implementations of sliders.
*/
@@ -677,40 +635,8 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
return formLayout;
}
public Color getSelectedColorOriginal() {
return originalSelectedColor;
}
public void setSelectedColorOriginal(final Color selectedColorOriginal) {
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;
}
}

View File

@@ -34,14 +34,13 @@ import com.vaadin.ui.themes.ValoTheme;
* Superclass defining common properties and methods for creating/updating
* types.
*/
public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
public abstract class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
private static final long serialVersionUID = 5732904956185988397L;
protected String createTypeStr;
protected String updateTypeStr;
protected TextField typeKey;
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";
@@ -154,7 +153,6 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
comboLayout.removeComponent(comboLabel);
comboLayout.removeComponent(tagNameComboBox);
}
window.reset();
restoreComponentStyles();
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
getColorPickerLayout().getSelPreview()
@@ -181,8 +179,11 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview);
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelPreview().getColor());
}
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(),
getOriginalSelectedColor());
// TODO:
// window.checkColorChange(colorPickerLayout.getId(),
// colorPickerLayout.getSelectedColor(),
// getOriginalSelectedColor());
}
/**
@@ -236,14 +237,12 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
createDynamicStyleForComponents(tagName, typeKey, tagDesc, ColorPickerConstants.DEFAULT_COLOR);
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
} else {
getColorPickerLayout().setSelectedColor(ColorPickerHelper.rgbToColorConverter(color));
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
createDynamicStyleForComponents(tagName, typeKey, tagDesc, color);
getPreviewButtonColor(color);
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(color));
}
}
@@ -302,12 +301,4 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
// is implemented in the inherited class
}
public String getOriginalTypeKey() {
return originalTypeKey;
}
public void setOriginalTypeKey(final String originalTypeKey) {
this.originalTypeKey = originalTypeKey;
}
}

View File

@@ -9,7 +9,6 @@
package org.eclipse.hawkbit.ui.management.dstable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.annotation.PostConstruct;
@@ -25,6 +24,7 @@ import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
import org.eclipse.hawkbit.ui.common.DistributionSetTypeBeanQuery;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIWindowDecorator;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.event.DragEvent;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
@@ -44,10 +44,8 @@ import org.vaadin.spring.events.EventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.ViewScope;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.TextArea;
@@ -137,18 +135,12 @@ 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(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(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"));
@@ -156,23 +148,17 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
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);
reqMigStepCheckbox.addValueChangeListener(
event -> window.checkMandatoryEditedValueBoolean(event, reqMigStepCheckbox, originalReqMigStep));
}
/**
@@ -374,9 +360,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
originalDistVersion = null;
originalReqMigStep = Boolean.FALSE;
if (window != null) {
window.reset();
}
}
private void populateRequiredComponents() {
@@ -408,44 +391,20 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
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);
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(),
null, getMandatoryFields(), getEditedFields(), i18n);
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
populateRequiredComponents();
resetComponents();
window = SPUIWindowDecorator.getWindow(i18n.get("caption.add.new.dist"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(),
null, formLayout, i18n);
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
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.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.
*/

View File

@@ -77,8 +77,8 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
@Override
protected void onEdit(final ClickEvent event) {
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
distributionAddUpdateWindowLayout.populateValuesOfDistribution(getSelectedBaseEntityId());
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
UI.getCurrent().addWindow(newDistWindow);
newDistWindow.setVisible(Boolean.TRUE);

View File

@@ -151,18 +151,14 @@ 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());
setOriginalTagDesc(selectedDistTag.getDescription());
if (null == selectedDistTag.getColour()) {
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
} else {
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()),
selectedDistTag.getColour());
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()));
}
}
}
@@ -181,4 +177,8 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
permChecker.hasUpdateDistributionPermission());
}
@Override
protected String getWindowCaption() {
return i18n.get("caption.add.tag");
}
}

View File

@@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.management.targettable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -21,6 +20,7 @@ import org.eclipse.hawkbit.repository.model.TargetIdName;
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIWindowDecorator;
import org.eclipse.hawkbit.ui.management.event.DragEvent;
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
@@ -36,8 +36,6 @@ import org.vaadin.spring.events.EventBus;
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.TextArea;
@@ -96,16 +94,10 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
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(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.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",
@@ -113,7 +105,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
descTextArea.setId(SPUIComponentIdProvider.TARGET_ADD_DESC);
descTextArea.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
descTextArea.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTargetDesc));
}
private void buildLayout() {
@@ -192,24 +183,12 @@ 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,
window = SPUIWindowDecorator.getWindow(i18n.get("caption.add.new.target"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(),
event -> discardTargetListner(), null, getMandatoryFields(), getEditedFields(), i18n);
event -> discardTargetListner(), null, formLayout, 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.getId(), Boolean.FALSE);
}
}
return requiredFields;
}
private Map<String, Boolean> getEditedFields() {
final Map<String, Boolean> editedFields = new HashMap<>();
editedFields.put(controllerIDTextField.getId(), Boolean.FALSE);
@@ -234,9 +213,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
originalTargetDesc = null;
originalTargetName = null;
if (window != null) {
window.reset();
}
}
private void closeThisWindow() {

View File

@@ -106,8 +106,12 @@ public class TargetDetails extends AbstractTableDetailsLayout<Target> {
if (getSelectedBaseEntity() == null) {
return;
}
final Window newDistWindow = targetAddUpdateWindowLayout.getWindow();
targetAddUpdateWindowLayout.populateValuesOfTarget(getSelectedBaseEntity().getControllerId());
openWindow();
}
private void openWindow() {
final Window newDistWindow = targetAddUpdateWindowLayout.getWindow();
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
UI.getCurrent().addWindow(newDistWindow);
newDistWindow.setVisible(Boolean.TRUE);

View File

@@ -88,18 +88,14 @@ 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());
setOriginalTagDesc(selectedTargetTag.getDescription());
if (null == selectedTargetTag.getColour()) {
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
} else {
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()),
selectedTargetTag.getColour());
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()));
}
}
}
@@ -152,4 +148,9 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
setOptionGroupDefaultValue(permChecker.hasCreateTargetPermission(), permChecker.hasUpdateTargetPermission());
}
@Override
protected String getWindowCaption() {
return i18n.get("caption.add.tag");
}
}

View File

@@ -10,9 +10,7 @@ package org.eclipse.hawkbit.ui.rollout.rollout;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
@@ -34,6 +32,7 @@ import org.eclipse.hawkbit.ui.UiProperties;
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIWindowDecorator;
import org.eclipse.hawkbit.ui.filtermanagement.TargetFilterBeanQuery;
import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout;
import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout.ActionTypeOption;
@@ -61,7 +60,6 @@ import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Validator;
import com.vaadin.data.validator.IntegerRangeValidator;
import com.vaadin.data.validator.RegexpValidator;
import com.vaadin.event.FieldEvents.TextChangeEvent;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.ViewScope;
@@ -175,24 +173,12 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
public CommonDialogWindow getWindow() {
window = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null,
window = SPUIWindowDecorator.getWindow(i18n.get("caption.configure.rollout"), null,
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard(),
uiProperties.getLinks().getDocumentation().getRolloutView(), getMandatoryFields(), getEditedFields(),
i18n);
uiProperties.getLinks().getDocumentation().getRolloutView(), this, i18n);
return window;
}
private Map<String, Boolean> getMandatoryFields() {
final Map<String, Boolean> requiredFields = new HashMap<>();
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;
}
/**
* Reset the field values.
*/
@@ -212,10 +198,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
actionTypeOptionGroupLayout.selectDefaultOption();
totalTargetsCount = 0L;
rolloutForEdit = null;
if (window != null) {
window.reset();
}
}
private void resetFields() {
@@ -303,15 +285,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
totalTargetsLabel = createTotalTargetsLabel();
targetFilterQuery = createTargetFilterQuery();
actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT);
actionTypeOptionGroupLayout.getActionTypeOptionGroup()
.addValueChangeListener(this::listenerActionGroupValueChanged);
}
private void listenerActionGroupValueChanged(final ValueChangeEvent event) {
if (window != null) {
window.checkMandatoryEditedValue(event, actionTypeOptionGroupLayout.getActionTypeOptionGroup(),
originalActionGroup.toString());
}
}
private Label createGroupSizeLabel() {
@@ -331,16 +304,9 @@ 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");
@@ -397,8 +363,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
totalTargetsLabel.setVisible(false);
}
onGroupNumberChange(event);
window.setRequiredFieldWhenUpdate(event, targetFilterQueryCombo);
window.checkMandatoryEditedValue(event, targetFilterQueryCombo, originalTargetFilterQueryCombo);
}
private String getTotalTargetMessage() {
@@ -604,62 +568,27 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
descriptionField.setId(SPUIComponentIdProvider.ROLLOUT_DESCRIPTION_ID);
descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
descriptionField.setSizeUndefined();
descriptionField.addTextChangeListener(this::listenerDescriptionTextFieldChanged);
return descriptionField;
}
private void listenerDescriptionTextFieldChanged(final TextChangeEvent event) {
if (window != null) {
window.checkMandatoryEditedTextField(event, originalDescription);
}
}
private TextField createErrorThreshold() {
final TextField errorField = getTextfield("prompt.error.threshold");
errorField.addValidator(new ThresholdFieldValidator());
errorField.setId(SPUIComponentIdProvider.ROLLOUT_ERROR_THRESOLD_ID);
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) {
window.checkMandatoryEditedTextField(event, originalErrorThreshold);
}
}
private void listenerErrorThresholdValueChanged(final ValueChangeEvent event, final TextField errorField) {
if (window != null) {
window.setRequiredFieldWhenUpdate(event, errorField);
}
}
private TextField createTriggerThreshold() {
final TextField thresholdField = getTextfield("prompt.tigger.threshold");
thresholdField.setId(SPUIComponentIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
thresholdField.addValidator(new ThresholdFieldValidator());
thresholdField.setSizeUndefined();
thresholdField.setMaxLength(3);
thresholdField.addTextChangeListener(this::listenerTriggerThresholdTextFieldChanged);
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) {
window.checkMandatoryEditedTextField(event, originalTriggerThreshold);
}
}
private TextField createNoOfGroupsField() {
final TextField noOfGroupsField = getTextfield("prompt.number.of.groups");
noOfGroupsField.setId(SPUIComponentIdProvider.ROLLOUT_NO_OF_GROUPS_ID);
@@ -667,16 +596,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
noOfGroupsField.setSizeUndefined();
noOfGroupsField.setMaxLength(3);
noOfGroupsField.addValueChangeListener(this::onGroupNumberChange);
noOfGroupsField.addTextChangeListener(this::listenerNoOfGroupsTextFieldChanged);
return noOfGroupsField;
}
private void listenerNoOfGroupsTextFieldChanged(final TextChangeEvent event) {
if (window != null) {
window.checkMandatoryEditedTextField(event, originalNoOfGroups);
}
}
private void onGroupNumberChange(final ValueChangeEvent event) {
if (noOfGroups.isValid() && !Strings.isNullOrEmpty(noOfGroups.getValue())) {
groupSizeLabel.setValue(getTargetPerGroupMessage(String.valueOf(getGroupSize())));
@@ -684,9 +606,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
} else {
groupSizeLabel.setVisible(false);
}
if (window != null) {
window.setRequiredFieldWhenUpdate(event, noOfGroups);
}
}
private ComboBox createDistributionSetCombo() {
@@ -697,16 +616,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
dsSet.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
dsSet.setId(SPUIComponentIdProvider.ROLLOUT_DS_ID);
dsSet.setSizeUndefined();
dsSet.addValueChangeListener(this::listenerDistributionSetChanged);
return dsSet;
}
private void listenerDistributionSetChanged(final ValueChangeEvent event) {
if (window != null) {
window.checkMandatoryEditedValue(event, distributionSet, originalDistributionSet);
}
}
private void populateDistributionSet() {
final Container container = createDsComboContainer();
distributionSet.setContainerDataSource(container);
@@ -724,23 +636,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
final TextField rolloutNameField = getTextfield("textfield.name");
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) {
window.checkMandatoryEditedTextField(event, originalRolloutName);
}
}
private void listenerRolloutNameValueChanged(final ValueChangeEvent event, final TextField rolloutNameField) {
if (window != null) {
window.setRequiredFieldWhenUpdate(event, rolloutNameField);
}
}
private String getRolloutName() {
return HawkbitCommonUtil.trimAndNullIfEmpty(rolloutName.getValue());
}
@@ -870,19 +768,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
}
}
private Map<String, Boolean> getEditedFields() {
final Map<String, Boolean> changeMap = new HashMap<>();
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;
}
private void disableRequiredFieldsOnEdit() {
distributionSet.setEnabled(false);
errorThreshold.setEnabled(false);

View File

@@ -431,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.getWindow();
addTargetWindow.setCaption(i18n.get("caption.update.rollout"));
UI.getCurrent().addWindow(addTargetWindow);
addTargetWindow.setVisible(Boolean.TRUE);

View File

@@ -0,0 +1,32 @@
package org.eclipse.hawkbit.ui.utils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.Component;
import com.vaadin.ui.FormLayout;
public class CommonDialogWindowHelper {
/**
* Run through a FormLayout and collect all required Component's IDs in a
* Map
*
* @param formLayout
* Form to be analysed
* @return Map with all required component's IDs
*/
public static Map<String, Boolean> getMandatoryFields(final FormLayout formLayout) {
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.getId(), Boolean.FALSE);
}
}
return requiredFields;
}
}