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:
@@ -9,9 +9,6 @@
|
|||||||
package org.eclipse.hawkbit.ui.artifacts.smtable;
|
package org.eclipse.hawkbit.ui.artifacts.smtable;
|
||||||
|
|
||||||
import java.io.Serializable;
|
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.EntityFactory;
|
||||||
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
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.SoftwareModuleTypeBeanQuery;
|
||||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
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.HawkbitCommonUtil;
|
||||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
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.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
import com.vaadin.ui.AbstractField;
|
|
||||||
import com.vaadin.ui.ComboBox;
|
import com.vaadin.ui.ComboBox;
|
||||||
import com.vaadin.ui.Component;
|
|
||||||
import com.vaadin.ui.CustomComponent;
|
import com.vaadin.ui.CustomComponent;
|
||||||
import com.vaadin.ui.FormLayout;
|
import com.vaadin.ui.FormLayout;
|
||||||
import com.vaadin.ui.Label;
|
import com.vaadin.ui.Label;
|
||||||
@@ -82,16 +78,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
|||||||
|
|
||||||
private CommonDialogWindow window;
|
private CommonDialogWindow window;
|
||||||
|
|
||||||
private String originalDescriptionValue;
|
|
||||||
|
|
||||||
private String originalVendorValue;
|
|
||||||
|
|
||||||
private String originalNameValue;
|
|
||||||
|
|
||||||
private String originalVersionValue;
|
|
||||||
|
|
||||||
private String originalComboBoxValue;
|
|
||||||
|
|
||||||
private Boolean editSwModule = Boolean.FALSE;
|
private Boolean editSwModule = Boolean.FALSE;
|
||||||
|
|
||||||
private Long baseSwModuleId;
|
private Long baseSwModuleId;
|
||||||
@@ -126,8 +112,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
|||||||
this.baseSwModuleId = baseSwModuleId;
|
this.baseSwModuleId = baseSwModuleId;
|
||||||
createRequiredComponents();
|
createRequiredComponents();
|
||||||
createWindow();
|
createWindow();
|
||||||
/* populate selected target values to edit. */
|
|
||||||
populateValuesOfSwModule();
|
|
||||||
nameTextField.setEnabled(false);
|
nameTextField.setEnabled(false);
|
||||||
versionTextField.setEnabled(false);
|
versionTextField.setEnabled(false);
|
||||||
typeComboBox.setEnabled(false);
|
typeComboBox.setEnabled(false);
|
||||||
@@ -178,12 +162,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
|||||||
versionTextField.clear();
|
versionTextField.clear();
|
||||||
descTextArea.clear();
|
descTextArea.clear();
|
||||||
typeComboBox.clear();
|
typeComboBox.clear();
|
||||||
|
|
||||||
originalDescriptionValue = null;
|
|
||||||
originalVendorValue = null;
|
|
||||||
originalComboBoxValue = null;
|
|
||||||
originalNameValue = null;
|
|
||||||
originalVersionValue = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createWindow() {
|
private void createWindow() {
|
||||||
@@ -193,11 +171,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
|||||||
final Label madatoryStarLabel = new Label("*");
|
final Label madatoryStarLabel = new Label("*");
|
||||||
madatoryStarLabel.setStyleName("v-caption v-required-field-indicator");
|
madatoryStarLabel.setStyleName("v-caption v-required-field-indicator");
|
||||||
madatoryStarLabel.setWidth(null);
|
madatoryStarLabel.setWidth(null);
|
||||||
|
|
||||||
/*
|
|
||||||
* The main layout of the window contains mandatory info, textboxes
|
|
||||||
* (controller Id, name & description) and action buttons layout
|
|
||||||
*/
|
|
||||||
addStyleName("lay-color");
|
addStyleName("lay-color");
|
||||||
setSizeUndefined();
|
setSizeUndefined();
|
||||||
|
|
||||||
@@ -211,39 +184,14 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
|||||||
|
|
||||||
setCompositionRoot(formLayout);
|
setCompositionRoot(formLayout);
|
||||||
|
|
||||||
/* add main layout to the window */
|
populateValuesOfSwModule();
|
||||||
window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
|
window = SPUIWindowDecorator.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
|
||||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveOrUpdate(), event -> closeThisWindow(), null,
|
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveOrUpdate(), event -> closeThisWindow(), null,
|
||||||
formLayout, i18n);
|
formLayout, i18n);
|
||||||
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||||
typeComboBox.focus();
|
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() {
|
private void addNewBaseSoftware() {
|
||||||
final String name = HawkbitCommonUtil.trimAndNullIfEmpty(nameTextField.getValue());
|
final String name = HawkbitCommonUtil.trimAndNullIfEmpty(nameTextField.getValue());
|
||||||
final String version = HawkbitCommonUtil.trimAndNullIfEmpty(versionTextField.getValue());
|
final String version = HawkbitCommonUtil.trimAndNullIfEmpty(versionTextField.getValue());
|
||||||
@@ -302,9 +250,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
|||||||
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getVendor()));
|
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getVendor()));
|
||||||
descTextArea.setValue(swModle.getDescription() == null ? HawkbitCommonUtil.SP_STRING_EMPTY
|
descTextArea.setValue(swModle.getDescription() == null ? HawkbitCommonUtil.SP_STRING_EMPTY
|
||||||
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getDescription()));
|
: HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getDescription()));
|
||||||
originalDescriptionValue = descTextArea.getValue();
|
|
||||||
originalVendorValue = vendorTextField.getValue();
|
|
||||||
originalComboBoxValue = swModle.getType().getName();
|
|
||||||
if (swModle.getType().isDeleted()) {
|
if (swModle.getType().isDeleted()) {
|
||||||
typeComboBox.addItem(swModle.getType().getName());
|
typeComboBox.addItem(swModle.getType().getName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,7 @@
|
|||||||
package org.eclipse.hawkbit.ui.artifacts.smtype;
|
package org.eclipse.hawkbit.ui.artifacts.smtype;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
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.shared.ui.colorpicker.Color;
|
||||||
import com.vaadin.spring.annotation.SpringComponent;
|
import com.vaadin.spring.annotation.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
import com.vaadin.ui.AbstractField;
|
|
||||||
import com.vaadin.ui.Alignment;
|
import com.vaadin.ui.Alignment;
|
||||||
import com.vaadin.ui.Button.ClickEvent;
|
import com.vaadin.ui.Button.ClickEvent;
|
||||||
import com.vaadin.ui.Component;
|
|
||||||
import com.vaadin.ui.Label;
|
import com.vaadin.ui.Label;
|
||||||
import com.vaadin.ui.OptionGroup;
|
import com.vaadin.ui.OptionGroup;
|
||||||
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
|
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,
|
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_NAME, true, "", i18n.get("textfield.name"), true,
|
||||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
tagName.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_NAME);
|
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"), "",
|
typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "",
|
||||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_KEY, true, "", i18n.get("textfield.key"), true,
|
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_KEY, true, "", i18n.get("textfield.key"), true,
|
||||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
typeKey.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_KEY);
|
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"), "",
|
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, false, "",
|
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, false, "",
|
||||||
@@ -107,7 +98,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
|||||||
tagDesc.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_DESC);
|
tagDesc.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_DESC);
|
||||||
tagDesc.setImmediate(true);
|
tagDesc.setImmediate(true);
|
||||||
tagDesc.setNullRepresentation("");
|
tagDesc.setNullRepresentation("");
|
||||||
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagDesc()));
|
|
||||||
|
|
||||||
singleMultiOptionGroup();
|
singleMultiOptionGroup();
|
||||||
}
|
}
|
||||||
@@ -122,23 +112,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createWindow() {
|
protected String getWindowCaption() {
|
||||||
reset();
|
return i18n.get("caption.add.type");
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -189,14 +164,11 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
|||||||
@Override
|
@Override
|
||||||
protected void setTagDetails(final String targetTagSelected) {
|
protected void setTagDetails(final String targetTagSelected) {
|
||||||
tagName.setValue(targetTagSelected);
|
tagName.setValue(targetTagSelected);
|
||||||
setOriginalTagName(targetTagSelected);
|
|
||||||
final SoftwareModuleType selectedTypeTag = swTypeManagementService
|
final SoftwareModuleType selectedTypeTag = swTypeManagementService
|
||||||
.findSoftwareModuleTypeByName(targetTagSelected);
|
.findSoftwareModuleTypeByName(targetTagSelected);
|
||||||
if (null != selectedTypeTag) {
|
if (null != selectedTypeTag) {
|
||||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||||
setOriginalTagDesc(selectedTypeTag.getDescription());
|
|
||||||
typeKey.setValue(selectedTypeTag.getKey());
|
typeKey.setValue(selectedTypeTag.getKey());
|
||||||
setOriginalTypeKey(selectedTypeTag.getKey());
|
|
||||||
if (selectedTypeTag.getMaxAssignments() == Integer.MAX_VALUE) {
|
if (selectedTypeTag.getMaxAssignments() == Integer.MAX_VALUE) {
|
||||||
assignOptiongroup.setValue(multiAssignStr);
|
assignOptiongroup.setValue(multiAssignStr);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -12,10 +12,13 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
|
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.SPUIComponentIdProvider;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
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.data.Property.ValueChangeListener;
|
||||||
|
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||||
|
import com.vaadin.event.FieldEvents.TextChangeListener;
|
||||||
import com.vaadin.event.FieldEvents.TextChangeNotifier;
|
import com.vaadin.event.FieldEvents.TextChangeNotifier;
|
||||||
import com.vaadin.server.FontAwesome;
|
import com.vaadin.server.FontAwesome;
|
||||||
|
import com.vaadin.ui.AbstractComponent;
|
||||||
import com.vaadin.ui.AbstractField;
|
import com.vaadin.ui.AbstractField;
|
||||||
import com.vaadin.ui.AbstractLayout;
|
import com.vaadin.ui.AbstractLayout;
|
||||||
import com.vaadin.ui.AbstractOrderedLayout;
|
import com.vaadin.ui.AbstractOrderedLayout;
|
||||||
@@ -37,7 +45,7 @@ import com.vaadin.ui.Alignment;
|
|||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
import com.vaadin.ui.Button.ClickListener;
|
import com.vaadin.ui.Button.ClickListener;
|
||||||
import com.vaadin.ui.Component;
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.FormLayout;
|
import com.vaadin.ui.Field;
|
||||||
import com.vaadin.ui.GridLayout;
|
import com.vaadin.ui.GridLayout;
|
||||||
import com.vaadin.ui.HorizontalLayout;
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
import com.vaadin.ui.Label;
|
import com.vaadin.ui.Label;
|
||||||
@@ -47,9 +55,9 @@ import com.vaadin.ui.Window;
|
|||||||
import com.vaadin.ui.themes.ValoTheme;
|
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
|
* Table pop-up-windows including a minimize and close icon in the upper right
|
||||||
* and a save and cancel button at the bottom.
|
* corner and a save and cancel button at the bottom. Is not intended to reuse.
|
||||||
*/
|
*/
|
||||||
public class CommonDialogWindow extends Window implements Serializable {
|
public class CommonDialogWindow extends Window implements Serializable {
|
||||||
|
|
||||||
@@ -75,7 +83,7 @@ public class CommonDialogWindow extends Window implements Serializable {
|
|||||||
|
|
||||||
private final ClickListener cancelButtonClickListener;
|
private final ClickListener cancelButtonClickListener;
|
||||||
|
|
||||||
private Map<Component, Object> orginalValues;
|
private final Map<Component, Object> orginalValues;
|
||||||
|
|
||||||
private final List<AbstractField<?>> allComponents;
|
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,
|
public CommonDialogWindow(final String caption, final Component content, final String helpLink,
|
||||||
final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener,
|
final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener,
|
||||||
final FormLayout formLayout, final I18N i18n) {
|
final AbstractLayout layout, final I18N i18n) {
|
||||||
checkNotNull(saveButtonClickListener);
|
checkNotNull(saveButtonClickListener);
|
||||||
checkNotNull(cancelButtonClickListener);
|
checkNotNull(cancelButtonClickListener);
|
||||||
this.caption = caption;
|
this.caption = caption;
|
||||||
@@ -105,21 +113,45 @@ public class CommonDialogWindow extends Window implements Serializable {
|
|||||||
this.helpLink = helpLink;
|
this.helpLink = helpLink;
|
||||||
this.saveButtonClickListener = saveButtonClickListener;
|
this.saveButtonClickListener = saveButtonClickListener;
|
||||||
this.cancelButtonClickListener = cancelButtonClickListener;
|
this.cancelButtonClickListener = cancelButtonClickListener;
|
||||||
this.allComponents = getAllComponents(formLayout);
|
this.orginalValues = new HashMap<>();
|
||||||
|
this.allComponents = getAllComponents(layout);
|
||||||
this.i18n = i18n;
|
this.i18n = i18n;
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSaveButtonEnabled(final boolean enabled) {
|
@Override
|
||||||
saveButton.setEnabled(enabled);
|
public void close() {
|
||||||
|
super.close();
|
||||||
|
orginalValues.clear();
|
||||||
|
removeListeners();
|
||||||
|
allComponents.clear();
|
||||||
|
this.saveButton.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCancelButtonEnabled(final boolean enabled) {
|
private void removeListeners() {
|
||||||
cancelButton.setEnabled(enabled);
|
for (final AbstractField<?> field : allComponents) {
|
||||||
|
removeTextListener(field);
|
||||||
|
removeValueChangeListener(field);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public HorizontalLayout getButtonsLayout() {
|
private void removeTextListener(final AbstractField<?> field) {
|
||||||
return buttonsLayout;
|
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() {
|
private final void init() {
|
||||||
@@ -152,39 +184,44 @@ public class CommonDialogWindow extends Window implements Serializable {
|
|||||||
addListeners();
|
addListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final void setOrginaleValues() {
|
public final void setOrginaleValues() {
|
||||||
for (final AbstractField<?> field : allComponents) {
|
for (final AbstractField<?> field : allComponents) {
|
||||||
orginalValues.put(field, field.getValue());
|
orginalValues.put(field, field.getValue());
|
||||||
}
|
}
|
||||||
|
saveButton.setEnabled(isSaveButtonEnabledAfterValueChange(null, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private final void addListeners() {
|
private final void addListeners() {
|
||||||
for (final AbstractField<?> field : allComponents) {
|
for (final AbstractField<?> field : allComponents) {
|
||||||
field.addValueChangeListener(event -> saveButton.setEnabled(isSaveButtonEnabled()));
|
field.addValueChangeListener(new ChangeListener(field));
|
||||||
if (field instanceof TextChangeNotifier) {
|
if (field instanceof TextChangeNotifier) {
|
||||||
((TextChangeNotifier) field)
|
((TextChangeNotifier) field).addTextChangeListener(new ChangeListener(field));
|
||||||
.addTextChangeListener(event -> saveButton.setEnabled(isSaveButtonEnabled()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
saveButton.addClickListener(event -> save());
|
saveButton.addClickListener(event -> close());
|
||||||
|
cancelButton.addClickListener(event -> close());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void save() {
|
private boolean isSaveButtonEnabledAfterValueChange(final Component currentChangedComponent,
|
||||||
saveButton.setEnabled(false);
|
final Object newValue) {
|
||||||
setOrginaleValues();
|
return isMandatoyFieldNotEmpty(currentChangedComponent, newValue)
|
||||||
|
&& isValuesChanged(currentChangedComponent, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSaveButtonEnabled() {
|
private boolean isValuesChanged(final Component currentChangedComponent, final Object newValue) {
|
||||||
return isMandatoyFieldNotEmpty() && isValuesChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isValuesChanged() {
|
|
||||||
for (final AbstractField<?> field : allComponents) {
|
for (final AbstractField<?> field : allComponents) {
|
||||||
final Object currentValue = field.getValue();
|
Object orginalValue = orginalValues.get(field);
|
||||||
final 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,14 +239,34 @@ public class CommonDialogWindow extends Window implements Serializable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMandatoyFieldNotEmpty() {
|
private boolean isMandatoyFieldNotEmpty(final Component currentChangedComponent, final Object newValue) {
|
||||||
for (final AbstractField<?> field : allComponents) {
|
final List<AbstractField<?>> requiredComponents = allComponents.stream().filter(field -> field.isRequired())
|
||||||
// TODO empty string.
|
.collect(Collectors.toList());
|
||||||
if (field.isRequired() && field.getValue() == null) {
|
|
||||||
|
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 false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Object emptyToNull(final Set<?> c) {
|
||||||
|
return (c == null || c.isEmpty()) ? null : c;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<AbstractField<?>> getAllComponents(final AbstractLayout abstractLayout) {
|
private List<AbstractField<?>> getAllComponents(final AbstractLayout abstractLayout) {
|
||||||
@@ -299,4 +356,30 @@ public class CommonDialogWindow extends Window implements Serializable {
|
|||||||
buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT);
|
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()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import java.util.Map;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.hawkbit.repository.model.BaseEntity;
|
import org.eclipse.hawkbit.repository.model.BaseEntity;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
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.common.UserDetailsFormatter;
|
||||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonDecorator;
|
import org.eclipse.hawkbit.ui.decorators.SPUIButtonDecorator;
|
||||||
import org.eclipse.hawkbit.ui.decorators.SPUIComboBoxDecorator;
|
import org.eclipse.hawkbit.ui.decorators.SPUIComboBoxDecorator;
|
||||||
@@ -33,11 +32,8 @@ import com.vaadin.server.FontAwesome;
|
|||||||
import com.vaadin.server.Resource;
|
import com.vaadin.server.Resource;
|
||||||
import com.vaadin.shared.ui.label.ContentMode;
|
import com.vaadin.shared.ui.label.ContentMode;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
import com.vaadin.ui.Button.ClickListener;
|
|
||||||
import com.vaadin.ui.CheckBox;
|
import com.vaadin.ui.CheckBox;
|
||||||
import com.vaadin.ui.ComboBox;
|
import com.vaadin.ui.ComboBox;
|
||||||
import com.vaadin.ui.Component;
|
|
||||||
import com.vaadin.ui.FormLayout;
|
|
||||||
import com.vaadin.ui.HorizontalLayout;
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
import com.vaadin.ui.Label;
|
import com.vaadin.ui.Label;
|
||||||
import com.vaadin.ui.Link;
|
import com.vaadin.ui.Link;
|
||||||
@@ -141,25 +137,6 @@ public final class SPUIComponentProvider {
|
|||||||
return SPUILabelDecorator.getDeocratedLabel(name, type);
|
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.
|
* Get window component.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ import org.eclipse.hawkbit.ui.utils.I18N;
|
|||||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||||
|
|
||||||
|
import com.vaadin.ui.AbstractLayout;
|
||||||
import com.vaadin.ui.Button.ClickListener;
|
import com.vaadin.ui.Button.ClickListener;
|
||||||
import com.vaadin.ui.Component;
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.FormLayout;
|
|
||||||
import com.vaadin.ui.Window;
|
import com.vaadin.ui.Window;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,13 +44,13 @@ public final class SPUIWindowDecorator {
|
|||||||
* window type
|
* window type
|
||||||
* @return Window
|
* @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 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 I18N i18n) {
|
||||||
|
|
||||||
final CommonDialogWindow window = new CommonDialogWindow(caption, content, helpLink, saveButtonClickListener,
|
final CommonDialogWindow window = new CommonDialogWindow(caption, content, helpLink, saveButtonClickListener,
|
||||||
cancelButtonClickListener, formLayout, i18n);
|
cancelButtonClickListener, layout, i18n);
|
||||||
if (null != id) {
|
if (null != id) {
|
||||||
window.setId(id);
|
window.setId(id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.ui.distributions.disttype;
|
package org.eclipse.hawkbit.ui.distributions.disttype;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
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;
|
||||||
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent.DistributionSetTypeEnum;
|
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent.DistributionSetTypeEnum;
|
||||||
import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout;
|
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.HawkbitCommonUtil;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
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.server.FontAwesome;
|
||||||
import com.vaadin.spring.annotation.SpringComponent;
|
import com.vaadin.spring.annotation.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
import com.vaadin.ui.AbstractField;
|
|
||||||
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
|
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
|
||||||
import com.vaadin.ui.Alignment;
|
import com.vaadin.ui.Alignment;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
@@ -91,8 +90,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
|
|
||||||
private IndexedContainer originalSelectedTableContainer;
|
private IndexedContainer originalSelectedTableContainer;
|
||||||
|
|
||||||
private String originalTypeKey;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void createRequiredComponents() {
|
protected void createRequiredComponents() {
|
||||||
|
|
||||||
@@ -102,15 +99,11 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_NAME, true, "",
|
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_NAME, true, "",
|
||||||
i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
tagName.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_NAME);
|
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"), "",
|
typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "",
|
||||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_KEY, true, "", i18n.get("textfield.key"),
|
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_KEY, true, "", i18n.get("textfield.key"),
|
||||||
true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
typeKey.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_KEY);
|
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"), "",
|
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_DESC, false, "",
|
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.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_DESC);
|
||||||
tagDesc.setImmediate(true);
|
tagDesc.setImmediate(true);
|
||||||
tagDesc.setNullRepresentation("");
|
tagDesc.setNullRepresentation("");
|
||||||
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, getOriginalTagDesc()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -190,8 +182,9 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
selectedTable.setImmediate(true);
|
selectedTable.setImmediate(true);
|
||||||
selectedTable.setVisibleColumns(DIST_TYPE_NAME, DIST_TYPE_MANDATORY);
|
selectedTable.setVisibleColumns(DIST_TYPE_NAME, DIST_TYPE_MANDATORY);
|
||||||
selectedTable.setColumnHeaders(i18n.get("header.dist.twintable.selected"), STAR);
|
selectedTable.setColumnHeaders(i18n.get("header.dist.twintable.selected"), STAR);
|
||||||
selectedTable.setColumnExpandRatio(DIST_TYPE_NAME, 0.75f);
|
selectedTable.setColumnExpandRatio(DIST_TYPE_NAME, 0.75F);
|
||||||
selectedTable.setColumnExpandRatio(DIST_TYPE_MANDATORY, 0.25f);
|
selectedTable.setColumnExpandRatio(DIST_TYPE_MANDATORY, 0.25F);
|
||||||
|
selectedTable.setRequired(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addTooltTipToSelectedTable() {
|
private void addTooltTipToSelectedTable() {
|
||||||
@@ -251,11 +244,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
selectedTableContainer.addContainerProperty(DIST_TYPE_MANDATORY, CheckBox.class, null);
|
selectedTableContainer.addContainerProperty(DIST_TYPE_MANDATORY, CheckBox.class, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listenerMandatoryCheckboxChanged(final ValueChangeEvent event) {
|
|
||||||
|
|
||||||
window.setSaveButtonEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createOriginalSelectedTableContainer() {
|
private void createOriginalSelectedTableContainer() {
|
||||||
|
|
||||||
originalSelectedTableContainer = new IndexedContainer();
|
originalSelectedTableContainer = new IndexedContainer();
|
||||||
@@ -268,24 +256,29 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
private void addSMType() {
|
private void addSMType() {
|
||||||
|
|
||||||
final Set<Long> selectedIds = (Set<Long>) sourceTable.getValue();
|
final Set<Long> selectedIds = (Set<Long>) sourceTable.getValue();
|
||||||
if (selectedIds != null && !selectedIds.isEmpty()) {
|
if (selectedIds == null) {
|
||||||
for (final Long id : selectedIds) {
|
return;
|
||||||
addTargetTableData(id);
|
|
||||||
}
|
|
||||||
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
|
|
||||||
}
|
}
|
||||||
|
for (final Long id : selectedIds) {
|
||||||
|
addTargetTableData(id);
|
||||||
|
}
|
||||||
|
// TODO: Add Table to window
|
||||||
|
// window.updateRequiredFields(selectedTable.getId(),
|
||||||
|
// hasContentChanged());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeSMType() {
|
private void removeSMType() {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
final Set<Long> selectedIds = (Set<Long>) selectedTable.getValue();
|
final Set<Long> selectedIds = (Set<Long>) selectedTable.getValue();
|
||||||
if (selectedIds != null && !selectedIds.isEmpty()) {
|
if (selectedIds == null) {
|
||||||
for (final Long id : selectedIds) {
|
return;
|
||||||
addSourceTableData(id);
|
}
|
||||||
selectedTable.removeItem(id);
|
for (final Long id : selectedIds) {
|
||||||
window.updateRequiredFields(selectedTable.getId(), hasContentChanged());
|
addSourceTableData(id);
|
||||||
}
|
selectedTable.removeItem(id);
|
||||||
|
// window.updateRequiredFields(selectedTable.getId(),
|
||||||
|
// hasContentChanged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,26 +287,27 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
if (originalSelectedTableContainer == null) {
|
if (originalSelectedTableContainer == null) {
|
||||||
originalSelectedTableContainer = new IndexedContainer();
|
originalSelectedTableContainer = new IndexedContainer();
|
||||||
}
|
}
|
||||||
|
// is new softwareModule added?
|
||||||
for (final Iterator itemIterator = selectedTableContainer.getItemIds().iterator(); itemIterator.hasNext();) {
|
for (final Iterator itemIterator = selectedTableContainer.getItemIds().iterator(); itemIterator.hasNext();) {
|
||||||
final long itemId = (Long) itemIterator.next();
|
final long itemId = (Long) itemIterator.next();
|
||||||
if (!originalSelectedTableContainer.containsId(itemId)) {
|
if (!originalSelectedTableContainer.containsId(itemId)) {
|
||||||
window.updateEditedFields(selectedTable.getId(), Boolean.TRUE);
|
// window.updateEditedFields(selectedTable.getId(),
|
||||||
|
// Boolean.TRUE);
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// is softwareModule removed and at least one softwareModule is selected
|
||||||
for (final Iterator itemIterator = originalSelectedTableContainer.getItemIds().iterator(); itemIterator
|
for (final Iterator itemIterator = originalSelectedTableContainer.getItemIds().iterator(); itemIterator
|
||||||
.hasNext();) {
|
.hasNext();) {
|
||||||
final long itemId = (Long) itemIterator.next();
|
final long itemId = (Long) itemIterator.next();
|
||||||
if (selectedTableContainer.size() > 0 && !selectedTableContainer.containsId(itemId)) {
|
if (selectedTableContainer.size() > 0 && !selectedTableContainer.containsId(itemId)) {
|
||||||
window.updateEditedFields(selectedTable.getId(), Boolean.TRUE);
|
// window.updateEditedFields(selectedTable.getId(),
|
||||||
|
// Boolean.TRUE);
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedTableContainer.size() > 0) {
|
|
||||||
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
|
||||||
}
|
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -524,7 +518,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
super.optionValueChanged(event);
|
super.optionValueChanged(event);
|
||||||
|
|
||||||
if (updateTypeStr.equals(event.getProperty().getValue())) {
|
if (updateTypeStr.equals(event.getProperty().getValue())) {
|
||||||
window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
// window.updateRequiredFields(selectedTable.getId(), Boolean.TRUE);
|
||||||
selectedTable.getContainerDataSource().removeAllItems();
|
selectedTable.getContainerDataSource().removeAllItems();
|
||||||
getSourceTableData();
|
getSourceTableData();
|
||||||
distTypeSelectLayout.setEnabled(false);
|
distTypeSelectLayout.setEnabled(false);
|
||||||
@@ -582,15 +576,12 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
protected void setTagDetails(final String distSetTypeSelected) {
|
protected void setTagDetails(final String distSetTypeSelected) {
|
||||||
|
|
||||||
tagName.setValue(distSetTypeSelected);
|
tagName.setValue(distSetTypeSelected);
|
||||||
setOriginalTagName(distSetTypeSelected);
|
|
||||||
getSourceTableData();
|
getSourceTableData();
|
||||||
selectedTable.getContainerDataSource().removeAllItems();
|
selectedTable.getContainerDataSource().removeAllItems();
|
||||||
final DistributionSetType selectedTypeTag = fetchDistributionSetType(distSetTypeSelected);
|
final DistributionSetType selectedTypeTag = fetchDistributionSetType(distSetTypeSelected);
|
||||||
if (null != selectedTypeTag) {
|
if (null != selectedTypeTag) {
|
||||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||||
setOriginalTagDesc(selectedTypeTag.getDescription());
|
|
||||||
typeKey.setValue(selectedTypeTag.getKey());
|
typeKey.setValue(selectedTypeTag.getKey());
|
||||||
setOriginalTypeKey(selectedTypeTag.getKey());
|
|
||||||
if (distributionSetManagement.countDistributionSetsByType(selectedTypeTag) <= 0) {
|
if (distributionSetManagement.countDistributionSetsByType(selectedTypeTag) <= 0) {
|
||||||
distTypeSelectLayout.setEnabled(true);
|
distTypeSelectLayout.setEnabled(true);
|
||||||
selectedTable.setEnabled(true);
|
selectedTable.setEnabled(true);
|
||||||
@@ -621,20 +612,19 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void addTargetTableforUpdate(final SoftwareModuleType swModuleType, final boolean mandatory) {
|
private void addTargetTableforUpdate(final SoftwareModuleType swModuleType, final boolean mandatory) {
|
||||||
|
|
||||||
Item saveTblitem;
|
if (selectedTableContainer == null) {
|
||||||
if (selectedTableContainer != null) {
|
return;
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
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
|
@Override
|
||||||
@@ -653,37 +643,17 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createWindow() {
|
protected String getWindowCaption() {
|
||||||
reset();
|
return i18n.get("caption.add.type");
|
||||||
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() {
|
protected Map<String, Boolean> getMandatoryFields() {
|
||||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
final Map<String, Boolean> requiredFields = CommonDialogWindowHelper.getMandatoryFields(getFormLayout());
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Selected SoftwareModulesType
|
// Selected SoftwareModulesType
|
||||||
requiredFields.put(selectedTable.getId(), Boolean.FALSE);
|
requiredFields.put(selectedTable.getId(), Boolean.FALSE);
|
||||||
return requiredFields;
|
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
|
@Override
|
||||||
protected void previewButtonClicked() {
|
protected void previewButtonClicked() {
|
||||||
if (!tagPreviewBtnClicked) {
|
if (!tagPreviewBtnClicked) {
|
||||||
@@ -718,14 +688,14 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
|||||||
optiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID);
|
optiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public String getOriginalTypeKey() {
|
// public String getOriginalTypeKey() {
|
||||||
return originalTypeKey;
|
// return originalTypeKey;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void setOriginalTypeKey(final String originalTypeKey) {
|
// public void setOriginalTypeKey(final String originalTypeKey) {
|
||||||
this.originalTypeKey = originalTypeKey;
|
// this.originalTypeKey = originalTypeKey;
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,8 +259,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onEdit(final ClickEvent event) {
|
protected void onEdit(final ClickEvent event) {
|
||||||
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
|
|
||||||
distributionAddUpdateWindowLayout.populateValuesOfDistribution(getSelectedBaseEntityId());
|
distributionAddUpdateWindowLayout.populateValuesOfDistribution(getSelectedBaseEntityId());
|
||||||
|
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
|
||||||
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
|
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
|
||||||
UI.getCurrent().addWindow(newDistWindow);
|
UI.getCurrent().addWindow(newDistWindow);
|
||||||
newDistWindow.setVisible(Boolean.TRUE);
|
newDistWindow.setVisible(Boolean.TRUE);
|
||||||
|
|||||||
@@ -8,10 +8,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.ui.layouts;
|
package org.eclipse.hawkbit.ui.layouts;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.repository.SpPermissionChecker;
|
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.colorpicker.ColorPickerLayout;
|
||||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
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.HawkbitCommonUtil;
|
||||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
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.data.Property.ValueChangeListener;
|
||||||
import com.vaadin.server.Page;
|
import com.vaadin.server.Page;
|
||||||
import com.vaadin.shared.ui.colorpicker.Color;
|
import com.vaadin.shared.ui.colorpicker.Color;
|
||||||
import com.vaadin.ui.AbstractField;
|
|
||||||
import com.vaadin.ui.Alignment;
|
import com.vaadin.ui.Alignment;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
import com.vaadin.ui.ComboBox;
|
import com.vaadin.ui.ComboBox;
|
||||||
import com.vaadin.ui.Component;
|
|
||||||
import com.vaadin.ui.CustomComponent;
|
import com.vaadin.ui.CustomComponent;
|
||||||
import com.vaadin.ui.FormLayout;
|
import com.vaadin.ui.FormLayout;
|
||||||
import com.vaadin.ui.GridLayout;
|
import com.vaadin.ui.GridLayout;
|
||||||
@@ -103,42 +98,13 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
protected GridLayout mainLayout;
|
protected GridLayout mainLayout;
|
||||||
protected VerticalLayout contentLayout;
|
protected VerticalLayout contentLayout;
|
||||||
|
|
||||||
protected boolean tagPreviewBtnClicked = false;
|
protected boolean tagPreviewBtnClicked;
|
||||||
|
|
||||||
private String colorPicked;
|
private String colorPicked;
|
||||||
protected String tagNameValue;
|
protected String tagNameValue;
|
||||||
protected String tagDescValue;
|
protected String tagDescValue;
|
||||||
|
|
||||||
private Color originalSelectedColor;
|
protected abstract String getWindowCaption();
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save new tag / update new tag.
|
* Save new tag / update new tag.
|
||||||
@@ -171,7 +137,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
setSizeUndefined();
|
setSizeUndefined();
|
||||||
createRequiredComponents();
|
createRequiredComponents();
|
||||||
buildLayout();
|
buildLayout();
|
||||||
createWindow();
|
|
||||||
addListeners();
|
addListeners();
|
||||||
eventBus.subscribe(this);
|
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,
|
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_NAME, true, "", i18n.get("textfield.name"), true,
|
||||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
tagName.setId(SPUIDefinitions.NEW_TARGET_TAG_NAME);
|
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"), "",
|
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_DESC, false, "", 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.setId(SPUIDefinitions.NEW_TARGET_TAG_DESC);
|
||||||
tagDesc.setImmediate(true);
|
tagDesc.setImmediate(true);
|
||||||
tagDesc.setNullRepresentation("");
|
tagDesc.setNullRepresentation("");
|
||||||
tagDesc.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTagDesc));
|
|
||||||
|
|
||||||
tagNameComboBox = SPUIComponentProvider.getComboBox(null, "", "", null, null, false, "",
|
tagNameComboBox = SPUIComponentProvider.getComboBox(null, "", "", null, null, false, "",
|
||||||
i18n.get("label.combobox.tag"));
|
i18n.get("label.combobox.tag"));
|
||||||
@@ -245,6 +207,10 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
mainLayout.setSizeFull();
|
mainLayout.setSizeFull();
|
||||||
mainLayout.addComponent(contentLayout, 0, 0);
|
mainLayout.addComponent(contentLayout, 0, 0);
|
||||||
|
|
||||||
|
colorPickerLayout.setVisible(false);
|
||||||
|
mainLayout.addComponent(colorPickerLayout, 1, 0);
|
||||||
|
mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER);
|
||||||
|
|
||||||
setCompositionRoot(mainLayout);
|
setCompositionRoot(mainLayout);
|
||||||
tagName.focus();
|
tagName.focus();
|
||||||
}
|
}
|
||||||
@@ -264,13 +230,10 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
protected void previewButtonClicked() {
|
protected void previewButtonClicked() {
|
||||||
if (!tagPreviewBtnClicked) {
|
if (!tagPreviewBtnClicked) {
|
||||||
setColor();
|
setColor();
|
||||||
mainLayout.getComponent(1, 0);
|
|
||||||
mainLayout.addComponent(colorPickerLayout, 1, 0);
|
|
||||||
mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER);
|
|
||||||
} else {
|
|
||||||
mainLayout.removeComponent(colorPickerLayout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tagPreviewBtnClicked = !tagPreviewBtnClicked;
|
tagPreviewBtnClicked = !tagPreviewBtnClicked;
|
||||||
|
colorPickerLayout.setVisible(tagPreviewBtnClicked);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setColor() {
|
private void setColor() {
|
||||||
@@ -307,6 +270,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
} else {
|
} else {
|
||||||
resetTagNameField();
|
resetTagNameField();
|
||||||
}
|
}
|
||||||
|
window.setOrginaleValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void resetTagNameField() {
|
protected void resetTagNameField() {
|
||||||
@@ -314,7 +278,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
tagName.clear();
|
tagName.clear();
|
||||||
tagDesc.clear();
|
tagDesc.clear();
|
||||||
restoreComponentStyles();
|
restoreComponentStyles();
|
||||||
mainLayout.removeComponent(colorPickerLayout);
|
|
||||||
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
||||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||||
tagPreviewBtnClicked = false;
|
tagPreviewBtnClicked = false;
|
||||||
@@ -344,7 +307,6 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
comboLayout.removeComponent(comboLabel);
|
comboLayout.removeComponent(comboLabel);
|
||||||
comboLayout.removeComponent(tagNameComboBox);
|
comboLayout.removeComponent(tagNameComboBox);
|
||||||
}
|
}
|
||||||
window.reset();
|
|
||||||
// close the color picker layout
|
// close the color picker layout
|
||||||
tagPreviewBtnClicked = false;
|
tagPreviewBtnClicked = false;
|
||||||
// reset the selected color - Set default color
|
// reset the selected color - Set default color
|
||||||
@@ -352,7 +314,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||||
colorPickerLayout.getSelPreview()
|
colorPickerLayout.getSelPreview()
|
||||||
.setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
.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
|
// hide target name combo
|
||||||
comboLayout.removeComponent(comboLabel);
|
comboLayout.removeComponent(comboLabel);
|
||||||
comboLayout.removeComponent(tagNameComboBox);
|
comboLayout.removeComponent(tagNameComboBox);
|
||||||
mainLayout.removeComponent(colorPickerLayout);
|
|
||||||
|
|
||||||
// Default green color
|
// Default green color
|
||||||
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
||||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||||
tagPreviewBtnClicked = false;
|
tagPreviewBtnClicked = false;
|
||||||
|
|
||||||
if (window != null) {
|
|
||||||
window.reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -466,7 +424,9 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
|
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), originalSelectedColor);
|
// TODO:
|
||||||
|
// window.checkColorChange(colorPickerLayout.getId(),
|
||||||
|
// colorPickerLayout.getSelectedColor(), originalSelectedColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void closeWindow() {
|
protected void closeWindow() {
|
||||||
@@ -519,13 +479,11 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
|
|
||||||
public CommonDialogWindow getWindow() {
|
public CommonDialogWindow getWindow() {
|
||||||
reset();
|
reset();
|
||||||
|
window = SPUIWindowDecorator.getWindow(getWindowCaption(), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this,
|
||||||
|
this::save, this::discard, null, mainLayout, i18n);
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWindow(final CommonDialogWindow window) {
|
|
||||||
this.window = window;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value change listeners implementations of sliders.
|
* Value change listeners implementations of sliders.
|
||||||
*/
|
*/
|
||||||
@@ -677,40 +635,8 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
|||||||
return formLayout;
|
return formLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color getSelectedColorOriginal() {
|
|
||||||
return originalSelectedColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSelectedColorOriginal(final Color selectedColorOriginal) {
|
|
||||||
this.originalSelectedColor = selectedColorOriginal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GridLayout getMainLayout() {
|
public GridLayout getMainLayout() {
|
||||||
return mainLayout;
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,14 +34,13 @@ import com.vaadin.ui.themes.ValoTheme;
|
|||||||
* Superclass defining common properties and methods for creating/updating
|
* Superclass defining common properties and methods for creating/updating
|
||||||
* types.
|
* types.
|
||||||
*/
|
*/
|
||||||
public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
public abstract class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5732904956185988397L;
|
private static final long serialVersionUID = 5732904956185988397L;
|
||||||
|
|
||||||
protected String createTypeStr;
|
protected String createTypeStr;
|
||||||
protected String updateTypeStr;
|
protected String updateTypeStr;
|
||||||
protected TextField typeKey;
|
protected TextField typeKey;
|
||||||
protected String originalTypeKey;
|
|
||||||
|
|
||||||
public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name";
|
public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name";
|
||||||
private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc";
|
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(comboLabel);
|
||||||
comboLayout.removeComponent(tagNameComboBox);
|
comboLayout.removeComponent(tagNameComboBox);
|
||||||
}
|
}
|
||||||
window.reset();
|
|
||||||
restoreComponentStyles();
|
restoreComponentStyles();
|
||||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||||
getColorPickerLayout().getSelPreview()
|
getColorPickerLayout().getSelPreview()
|
||||||
@@ -181,8 +179,11 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
|||||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview);
|
createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview);
|
||||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelPreview().getColor());
|
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());
|
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, ColorPickerConstants.DEFAULT_COLOR);
|
createDynamicStyleForComponents(tagName, typeKey, tagDesc, ColorPickerConstants.DEFAULT_COLOR);
|
||||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
|
||||||
} else {
|
} else {
|
||||||
getColorPickerLayout().setSelectedColor(ColorPickerHelper.rgbToColorConverter(color));
|
getColorPickerLayout().setSelectedColor(ColorPickerHelper.rgbToColorConverter(color));
|
||||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, color);
|
createDynamicStyleForComponents(tagName, typeKey, tagDesc, color);
|
||||||
getPreviewButtonColor(color);
|
getPreviewButtonColor(color);
|
||||||
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(color));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,12 +301,4 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
|||||||
// is implemented in the inherited class
|
// is implemented in the inherited class
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getOriginalTypeKey() {
|
|
||||||
return originalTypeKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOriginalTypeKey(final String originalTypeKey) {
|
|
||||||
this.originalTypeKey = originalTypeKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
package org.eclipse.hawkbit.ui.management.dstable;
|
package org.eclipse.hawkbit.ui.management.dstable;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
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.DistributionSetTypeBeanQuery;
|
||||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
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.DistributionTableEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.event.DragEvent;
|
import org.eclipse.hawkbit.ui.management.event.DragEvent;
|
||||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
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.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
import com.vaadin.ui.AbstractField;
|
|
||||||
import com.vaadin.ui.CheckBox;
|
import com.vaadin.ui.CheckBox;
|
||||||
import com.vaadin.ui.ComboBox;
|
import com.vaadin.ui.ComboBox;
|
||||||
import com.vaadin.ui.Component;
|
|
||||||
import com.vaadin.ui.CustomComponent;
|
import com.vaadin.ui.CustomComponent;
|
||||||
import com.vaadin.ui.FormLayout;
|
import com.vaadin.ui.FormLayout;
|
||||||
import com.vaadin.ui.TextArea;
|
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);
|
true, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
distNameTextField.setId(SPUIComponentIdProvider.DIST_ADD_NAME);
|
distNameTextField.setId(SPUIComponentIdProvider.DIST_ADD_NAME);
|
||||||
distNameTextField.setNullRepresentation("");
|
distNameTextField.setNullRepresentation("");
|
||||||
distNameTextField.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalDistName));
|
|
||||||
distNameTextField.addValueChangeListener(event -> window.setRequiredFieldWhenUpdate(event, distNameTextField));
|
|
||||||
|
|
||||||
distVersionTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.version"), "",
|
distVersionTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.version"), "",
|
||||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.version"), true,
|
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.version"), true,
|
||||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
distVersionTextField.setId(SPUIComponentIdProvider.DIST_ADD_VERSION);
|
distVersionTextField.setId(SPUIComponentIdProvider.DIST_ADD_VERSION);
|
||||||
distVersionTextField.setNullRepresentation("");
|
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, "",
|
distsetTypeNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, "",
|
||||||
false, "", i18n.get("label.combobox.type"));
|
false, "", i18n.get("label.combobox.type"));
|
||||||
@@ -156,23 +148,17 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
|||||||
distsetTypeNameComboBox.setNullSelectionAllowed(false);
|
distsetTypeNameComboBox.setNullSelectionAllowed(false);
|
||||||
distsetTypeNameComboBox.setId(SPUIComponentIdProvider.DIST_ADD_DISTSETTYPE);
|
distsetTypeNameComboBox.setId(SPUIComponentIdProvider.DIST_ADD_DISTSETTYPE);
|
||||||
populateDistSetTypeNameCombo();
|
populateDistSetTypeNameCombo();
|
||||||
distsetTypeNameComboBox.addValueChangeListener(
|
|
||||||
event -> window.checkMandatoryEditedValue(event, distsetTypeNameComboBox, originalDistSetType));
|
|
||||||
|
|
||||||
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
||||||
ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"),
|
ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"),
|
||||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||||
descTextArea.setId(SPUIComponentIdProvider.DIST_ADD_DESC);
|
descTextArea.setId(SPUIComponentIdProvider.DIST_ADD_DESC);
|
||||||
descTextArea.setNullRepresentation("");
|
descTextArea.setNullRepresentation("");
|
||||||
descTextArea
|
|
||||||
.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalDistDescription));
|
|
||||||
|
|
||||||
reqMigStepCheckbox = SPUIComponentProvider.getCheckBox(i18n.get("checkbox.dist.required.migration.step"),
|
reqMigStepCheckbox = SPUIComponentProvider.getCheckBox(i18n.get("checkbox.dist.required.migration.step"),
|
||||||
"dist-checkbox-style", null, false, "");
|
"dist-checkbox-style", null, false, "");
|
||||||
reqMigStepCheckbox.addStyleName(ValoTheme.CHECKBOX_SMALL);
|
reqMigStepCheckbox.addStyleName(ValoTheme.CHECKBOX_SMALL);
|
||||||
reqMigStepCheckbox.setId(SPUIComponentIdProvider.DIST_ADD_MIGRATION_CHECK);
|
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;
|
originalDistVersion = null;
|
||||||
originalReqMigStep = Boolean.FALSE;
|
originalReqMigStep = Boolean.FALSE;
|
||||||
|
|
||||||
if (window != null) {
|
|
||||||
window.reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateRequiredComponents() {
|
private void populateRequiredComponents() {
|
||||||
@@ -408,44 +391,20 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
|||||||
originalDistDescription = distSet.getDescription();
|
originalDistDescription = distSet.getDescription();
|
||||||
originalReqMigStep = distSet.isRequiredMigrationStep();
|
originalReqMigStep = distSet.isRequiredMigrationStep();
|
||||||
originalDistSetType = distSet.getType().getName();
|
originalDistSetType = distSet.getType().getName();
|
||||||
window.updateEditedFields(distsetTypeNameComboBox.getId(), Boolean.FALSE);
|
|
||||||
window.updateEditedFields(reqMigStepCheckbox.getId(), Boolean.FALSE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommonDialogWindow getWindow() {
|
public CommonDialogWindow getWindow() {
|
||||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
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();
|
populateRequiredComponents();
|
||||||
resetComponents();
|
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;
|
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.
|
* Populate DistributionSet Type name combo.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -77,8 +77,8 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onEdit(final ClickEvent event) {
|
protected void onEdit(final ClickEvent event) {
|
||||||
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
|
|
||||||
distributionAddUpdateWindowLayout.populateValuesOfDistribution(getSelectedBaseEntityId());
|
distributionAddUpdateWindowLayout.populateValuesOfDistribution(getSelectedBaseEntityId());
|
||||||
|
final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow();
|
||||||
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
|
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
|
||||||
UI.getCurrent().addWindow(newDistWindow);
|
UI.getCurrent().addWindow(newDistWindow);
|
||||||
newDistWindow.setVisible(Boolean.TRUE);
|
newDistWindow.setVisible(Boolean.TRUE);
|
||||||
|
|||||||
@@ -151,18 +151,14 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
|||||||
@Override
|
@Override
|
||||||
public void setTagDetails(final String distTagSelected) {
|
public void setTagDetails(final String distTagSelected) {
|
||||||
tagName.setValue(distTagSelected);
|
tagName.setValue(distTagSelected);
|
||||||
setOriginalTagName(distTagSelected);
|
|
||||||
final DistributionSetTag selectedDistTag = tagManagement.findDistributionSetTag(distTagSelected);
|
final DistributionSetTag selectedDistTag = tagManagement.findDistributionSetTag(distTagSelected);
|
||||||
if (null != selectedDistTag) {
|
if (null != selectedDistTag) {
|
||||||
tagDesc.setValue(selectedDistTag.getDescription());
|
tagDesc.setValue(selectedDistTag.getDescription());
|
||||||
setOriginalTagDesc(selectedDistTag.getDescription());
|
|
||||||
if (null == selectedDistTag.getColour()) {
|
if (null == selectedDistTag.getColour()) {
|
||||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
|
||||||
} else {
|
} else {
|
||||||
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()),
|
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()),
|
||||||
selectedDistTag.getColour());
|
selectedDistTag.getColour());
|
||||||
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -181,4 +177,8 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat
|
|||||||
permChecker.hasUpdateDistributionPermission());
|
permChecker.hasUpdateDistributionPermission());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getWindowCaption() {
|
||||||
|
return i18n.get("caption.add.tag");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.management.targettable;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
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.CommonDialogWindow;
|
||||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
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.DragEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
|
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
|
||||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
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.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.VaadinSessionScope;
|
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.CustomComponent;
|
||||||
import com.vaadin.ui.FormLayout;
|
import com.vaadin.ui.FormLayout;
|
||||||
import com.vaadin.ui.TextArea;
|
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,
|
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("prompt.target.id"), true,
|
||||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
controllerIDTextField.setId(SPUIComponentIdProvider.TARGET_ADD_CONTROLLER_ID);
|
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 */
|
/* Textfield for target name */
|
||||||
nameTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY,
|
nameTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY,
|
||||||
false, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
false, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||||
nameTextField.setId(SPUIComponentIdProvider.TARGET_ADD_NAME);
|
nameTextField.setId(SPUIComponentIdProvider.TARGET_ADD_NAME);
|
||||||
nameTextField.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTargetName));
|
|
||||||
|
|
||||||
/* Textarea for target description */
|
/* Textarea for target description */
|
||||||
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
||||||
@@ -113,7 +105,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
|||||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||||
descTextArea.setId(SPUIComponentIdProvider.TARGET_ADD_DESC);
|
descTextArea.setId(SPUIComponentIdProvider.TARGET_ADD_DESC);
|
||||||
descTextArea.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
descTextArea.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||||
descTextArea.addTextChangeListener(event -> window.checkMandatoryEditedTextField(event, originalTargetDesc));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildLayout() {
|
private void buildLayout() {
|
||||||
@@ -192,24 +183,12 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
|||||||
|
|
||||||
public Window getWindow() {
|
public Window getWindow() {
|
||||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
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(),
|
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(),
|
||||||
event -> discardTargetListner(), null, getMandatoryFields(), getEditedFields(), i18n);
|
event -> discardTargetListner(), null, formLayout, i18n);
|
||||||
return window;
|
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() {
|
private Map<String, Boolean> getEditedFields() {
|
||||||
final Map<String, Boolean> editedFields = new HashMap<>();
|
final Map<String, Boolean> editedFields = new HashMap<>();
|
||||||
editedFields.put(controllerIDTextField.getId(), Boolean.FALSE);
|
editedFields.put(controllerIDTextField.getId(), Boolean.FALSE);
|
||||||
@@ -234,9 +213,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
|||||||
originalTargetDesc = null;
|
originalTargetDesc = null;
|
||||||
originalTargetName = null;
|
originalTargetName = null;
|
||||||
|
|
||||||
if (window != null) {
|
|
||||||
window.reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void closeThisWindow() {
|
private void closeThisWindow() {
|
||||||
|
|||||||
@@ -106,8 +106,12 @@ public class TargetDetails extends AbstractTableDetailsLayout<Target> {
|
|||||||
if (getSelectedBaseEntity() == null) {
|
if (getSelectedBaseEntity() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Window newDistWindow = targetAddUpdateWindowLayout.getWindow();
|
|
||||||
targetAddUpdateWindowLayout.populateValuesOfTarget(getSelectedBaseEntity().getControllerId());
|
targetAddUpdateWindowLayout.populateValuesOfTarget(getSelectedBaseEntity().getControllerId());
|
||||||
|
openWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openWindow() {
|
||||||
|
final Window newDistWindow = targetAddUpdateWindowLayout.getWindow();
|
||||||
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
|
newDistWindow.setCaption(getI18n().get("caption.update.dist"));
|
||||||
UI.getCurrent().addWindow(newDistWindow);
|
UI.getCurrent().addWindow(newDistWindow);
|
||||||
newDistWindow.setVisible(Boolean.TRUE);
|
newDistWindow.setVisible(Boolean.TRUE);
|
||||||
|
|||||||
@@ -88,18 +88,14 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
|
|||||||
@Override
|
@Override
|
||||||
public void setTagDetails(final String targetTagSelected) {
|
public void setTagDetails(final String targetTagSelected) {
|
||||||
tagName.setValue(targetTagSelected);
|
tagName.setValue(targetTagSelected);
|
||||||
setOriginalTagName(targetTagSelected);
|
|
||||||
final TargetTag selectedTargetTag = tagManagement.findTargetTag(targetTagSelected);
|
final TargetTag selectedTargetTag = tagManagement.findTargetTag(targetTagSelected);
|
||||||
if (null != selectedTargetTag) {
|
if (null != selectedTargetTag) {
|
||||||
tagDesc.setValue(selectedTargetTag.getDescription());
|
tagDesc.setValue(selectedTargetTag.getDescription());
|
||||||
setOriginalTagDesc(selectedTargetTag.getDescription());
|
|
||||||
if (null == selectedTargetTag.getColour()) {
|
if (null == selectedTargetTag.getColour()) {
|
||||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||||
setSelectedColorOriginal(getColorPickerLayout().getDefaultColor());
|
|
||||||
} else {
|
} else {
|
||||||
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()),
|
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()),
|
||||||
selectedTargetTag.getColour());
|
selectedTargetTag.getColour());
|
||||||
setSelectedColorOriginal(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -152,4 +148,9 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa
|
|||||||
setOptionGroupDefaultValue(permChecker.hasCreateTargetPermission(), permChecker.hasUpdateTargetPermission());
|
setOptionGroupDefaultValue(permChecker.hasCreateTargetPermission(), permChecker.hasUpdateTargetPermission());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getWindowCaption() {
|
||||||
|
return i18n.get("caption.add.tag");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,9 +10,7 @@ package org.eclipse.hawkbit.ui.rollout.rollout;
|
|||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
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.CommonDialogWindow;
|
||||||
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
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.filtermanagement.TargetFilterBeanQuery;
|
||||||
import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout;
|
import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout;
|
||||||
import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout.ActionTypeOption;
|
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;
|
||||||
import com.vaadin.data.validator.IntegerRangeValidator;
|
import com.vaadin.data.validator.IntegerRangeValidator;
|
||||||
import com.vaadin.data.validator.RegexpValidator;
|
import com.vaadin.data.validator.RegexpValidator;
|
||||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
|
||||||
import com.vaadin.shared.ui.label.ContentMode;
|
import com.vaadin.shared.ui.label.ContentMode;
|
||||||
import com.vaadin.spring.annotation.SpringComponent;
|
import com.vaadin.spring.annotation.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
@@ -175,24 +173,12 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
|
|
||||||
public CommonDialogWindow getWindow() {
|
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(),
|
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard(),
|
||||||
uiProperties.getLinks().getDocumentation().getRolloutView(), getMandatoryFields(), getEditedFields(),
|
uiProperties.getLinks().getDocumentation().getRolloutView(), this, i18n);
|
||||||
i18n);
|
|
||||||
return window;
|
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.
|
* Reset the field values.
|
||||||
*/
|
*/
|
||||||
@@ -212,10 +198,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
actionTypeOptionGroupLayout.selectDefaultOption();
|
actionTypeOptionGroupLayout.selectDefaultOption();
|
||||||
totalTargetsCount = 0L;
|
totalTargetsCount = 0L;
|
||||||
rolloutForEdit = null;
|
rolloutForEdit = null;
|
||||||
|
|
||||||
if (window != null) {
|
|
||||||
window.reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetFields() {
|
private void resetFields() {
|
||||||
@@ -303,15 +285,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
totalTargetsLabel = createTotalTargetsLabel();
|
totalTargetsLabel = createTotalTargetsLabel();
|
||||||
targetFilterQuery = createTargetFilterQuery();
|
targetFilterQuery = createTargetFilterQuery();
|
||||||
actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT);
|
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() {
|
private Label createGroupSizeLabel() {
|
||||||
@@ -331,16 +304,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||||
filterField.setEnabled(false);
|
filterField.setEnabled(false);
|
||||||
filterField.setSizeUndefined();
|
filterField.setSizeUndefined();
|
||||||
filterField.addValueChangeListener(event -> listenerFilterFieldValueChanged(event, filterField));
|
|
||||||
return filterField;
|
return filterField;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listenerFilterFieldValueChanged(final ValueChangeEvent event, final TextArea filterField) {
|
|
||||||
if (window != null) {
|
|
||||||
window.setRequiredFieldWhenUpdate(event, targetFilterQueryCombo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Label createTotalTargetsLabel() {
|
private Label createTotalTargetsLabel() {
|
||||||
final Label targetCountLabel = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE);
|
final Label targetCountLabel = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE);
|
||||||
targetCountLabel.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message");
|
targetCountLabel.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message");
|
||||||
@@ -397,8 +363,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
totalTargetsLabel.setVisible(false);
|
totalTargetsLabel.setVisible(false);
|
||||||
}
|
}
|
||||||
onGroupNumberChange(event);
|
onGroupNumberChange(event);
|
||||||
window.setRequiredFieldWhenUpdate(event, targetFilterQueryCombo);
|
|
||||||
window.checkMandatoryEditedValue(event, targetFilterQueryCombo, originalTargetFilterQueryCombo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getTotalTargetMessage() {
|
private String getTotalTargetMessage() {
|
||||||
@@ -604,62 +568,27 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
descriptionField.setId(SPUIComponentIdProvider.ROLLOUT_DESCRIPTION_ID);
|
descriptionField.setId(SPUIComponentIdProvider.ROLLOUT_DESCRIPTION_ID);
|
||||||
descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||||
descriptionField.setSizeUndefined();
|
descriptionField.setSizeUndefined();
|
||||||
descriptionField.addTextChangeListener(this::listenerDescriptionTextFieldChanged);
|
|
||||||
return descriptionField;
|
return descriptionField;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listenerDescriptionTextFieldChanged(final TextChangeEvent event) {
|
|
||||||
if (window != null) {
|
|
||||||
window.checkMandatoryEditedTextField(event, originalDescription);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private TextField createErrorThreshold() {
|
private TextField createErrorThreshold() {
|
||||||
final TextField errorField = getTextfield("prompt.error.threshold");
|
final TextField errorField = getTextfield("prompt.error.threshold");
|
||||||
errorField.addValidator(new ThresholdFieldValidator());
|
errorField.addValidator(new ThresholdFieldValidator());
|
||||||
errorField.setId(SPUIComponentIdProvider.ROLLOUT_ERROR_THRESOLD_ID);
|
errorField.setId(SPUIComponentIdProvider.ROLLOUT_ERROR_THRESOLD_ID);
|
||||||
errorField.setMaxLength(7);
|
errorField.setMaxLength(7);
|
||||||
errorField.setSizeUndefined();
|
errorField.setSizeUndefined();
|
||||||
errorField.addTextChangeListener(this::listenerErrorThresholdTextFieldChanged);
|
|
||||||
errorField.addValueChangeListener(event -> listenerErrorThresholdValueChanged(event, errorField));
|
|
||||||
return 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() {
|
private TextField createTriggerThreshold() {
|
||||||
final TextField thresholdField = getTextfield("prompt.tigger.threshold");
|
final TextField thresholdField = getTextfield("prompt.tigger.threshold");
|
||||||
thresholdField.setId(SPUIComponentIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
|
thresholdField.setId(SPUIComponentIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
|
||||||
thresholdField.addValidator(new ThresholdFieldValidator());
|
thresholdField.addValidator(new ThresholdFieldValidator());
|
||||||
thresholdField.setSizeUndefined();
|
thresholdField.setSizeUndefined();
|
||||||
thresholdField.setMaxLength(3);
|
thresholdField.setMaxLength(3);
|
||||||
thresholdField.addTextChangeListener(this::listenerTriggerThresholdTextFieldChanged);
|
|
||||||
thresholdField.addValueChangeListener(event -> listenerTriggerTresholdValueChanged(event, thresholdField));
|
|
||||||
return 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() {
|
private TextField createNoOfGroupsField() {
|
||||||
final TextField noOfGroupsField = getTextfield("prompt.number.of.groups");
|
final TextField noOfGroupsField = getTextfield("prompt.number.of.groups");
|
||||||
noOfGroupsField.setId(SPUIComponentIdProvider.ROLLOUT_NO_OF_GROUPS_ID);
|
noOfGroupsField.setId(SPUIComponentIdProvider.ROLLOUT_NO_OF_GROUPS_ID);
|
||||||
@@ -667,16 +596,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
noOfGroupsField.setSizeUndefined();
|
noOfGroupsField.setSizeUndefined();
|
||||||
noOfGroupsField.setMaxLength(3);
|
noOfGroupsField.setMaxLength(3);
|
||||||
noOfGroupsField.addValueChangeListener(this::onGroupNumberChange);
|
noOfGroupsField.addValueChangeListener(this::onGroupNumberChange);
|
||||||
noOfGroupsField.addTextChangeListener(this::listenerNoOfGroupsTextFieldChanged);
|
|
||||||
return noOfGroupsField;
|
return noOfGroupsField;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listenerNoOfGroupsTextFieldChanged(final TextChangeEvent event) {
|
|
||||||
if (window != null) {
|
|
||||||
window.checkMandatoryEditedTextField(event, originalNoOfGroups);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onGroupNumberChange(final ValueChangeEvent event) {
|
private void onGroupNumberChange(final ValueChangeEvent event) {
|
||||||
if (noOfGroups.isValid() && !Strings.isNullOrEmpty(noOfGroups.getValue())) {
|
if (noOfGroups.isValid() && !Strings.isNullOrEmpty(noOfGroups.getValue())) {
|
||||||
groupSizeLabel.setValue(getTargetPerGroupMessage(String.valueOf(getGroupSize())));
|
groupSizeLabel.setValue(getTargetPerGroupMessage(String.valueOf(getGroupSize())));
|
||||||
@@ -684,9 +606,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
} else {
|
} else {
|
||||||
groupSizeLabel.setVisible(false);
|
groupSizeLabel.setVisible(false);
|
||||||
}
|
}
|
||||||
if (window != null) {
|
|
||||||
window.setRequiredFieldWhenUpdate(event, noOfGroups);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ComboBox createDistributionSetCombo() {
|
private ComboBox createDistributionSetCombo() {
|
||||||
@@ -697,16 +616,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
dsSet.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
dsSet.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||||
dsSet.setId(SPUIComponentIdProvider.ROLLOUT_DS_ID);
|
dsSet.setId(SPUIComponentIdProvider.ROLLOUT_DS_ID);
|
||||||
dsSet.setSizeUndefined();
|
dsSet.setSizeUndefined();
|
||||||
dsSet.addValueChangeListener(this::listenerDistributionSetChanged);
|
|
||||||
return dsSet;
|
return dsSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listenerDistributionSetChanged(final ValueChangeEvent event) {
|
|
||||||
if (window != null) {
|
|
||||||
window.checkMandatoryEditedValue(event, distributionSet, originalDistributionSet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void populateDistributionSet() {
|
private void populateDistributionSet() {
|
||||||
final Container container = createDsComboContainer();
|
final Container container = createDsComboContainer();
|
||||||
distributionSet.setContainerDataSource(container);
|
distributionSet.setContainerDataSource(container);
|
||||||
@@ -724,23 +636,9 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
|||||||
final TextField rolloutNameField = getTextfield("textfield.name");
|
final TextField rolloutNameField = getTextfield("textfield.name");
|
||||||
rolloutNameField.setId(SPUIComponentIdProvider.ROLLOUT_NAME_FIELD_ID);
|
rolloutNameField.setId(SPUIComponentIdProvider.ROLLOUT_NAME_FIELD_ID);
|
||||||
rolloutNameField.setSizeUndefined();
|
rolloutNameField.setSizeUndefined();
|
||||||
rolloutNameField.addTextChangeListener(this::listenerRolloutNameTextFieldChanged);
|
|
||||||
rolloutNameField.addValueChangeListener(event -> listenerRolloutNameValueChanged(event, rolloutNameField));
|
|
||||||
return 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() {
|
private String getRolloutName() {
|
||||||
return HawkbitCommonUtil.trimAndNullIfEmpty(rolloutName.getValue());
|
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() {
|
private void disableRequiredFieldsOnEdit() {
|
||||||
distributionSet.setEnabled(false);
|
distributionSet.setEnabled(false);
|
||||||
errorThreshold.setEnabled(false);
|
errorThreshold.setEnabled(false);
|
||||||
|
|||||||
@@ -431,8 +431,8 @@ public class RolloutListGrid extends AbstractGrid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onUpdate(final ContextMenuData contextMenuData) {
|
private void onUpdate(final ContextMenuData contextMenuData) {
|
||||||
final CommonDialogWindow addTargetWindow = addUpdateRolloutWindow.getWindow();
|
|
||||||
addUpdateRolloutWindow.populateData(contextMenuData.getRolloutId());
|
addUpdateRolloutWindow.populateData(contextMenuData.getRolloutId());
|
||||||
|
final CommonDialogWindow addTargetWindow = addUpdateRolloutWindow.getWindow();
|
||||||
addTargetWindow.setCaption(i18n.get("caption.update.rollout"));
|
addTargetWindow.setCaption(i18n.get("caption.update.rollout"));
|
||||||
UI.getCurrent().addWindow(addTargetWindow);
|
UI.getCurrent().addWindow(addTargetWindow);
|
||||||
addTargetWindow.setVisible(Boolean.TRUE);
|
addTargetWindow.setVisible(Boolean.TRUE);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user