Implementing commonDialogWindow
Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com>
This commit is contained in:
@@ -14,11 +14,11 @@ import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery;
|
||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider;
|
||||
@@ -30,12 +30,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.TextArea;
|
||||
@@ -52,7 +51,7 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -5217675246477211483L;
|
||||
|
||||
@@ -79,15 +78,15 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
|
||||
private TextField vendorTextField;
|
||||
|
||||
private Button saveSoftware;
|
||||
|
||||
private Button closeWindow;
|
||||
// private Button saveSoftware;
|
||||
//
|
||||
// private Button closeWindow;
|
||||
|
||||
private ComboBox typeComboBox;
|
||||
|
||||
private TextArea descTextArea;
|
||||
|
||||
private Window window;
|
||||
private CommonDialogWindow window;
|
||||
|
||||
private String oldDescriptionValue;
|
||||
|
||||
@@ -103,7 +102,7 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
* @return reference of {@link com.vaadin.ui.Window} to add new software
|
||||
* module.
|
||||
*/
|
||||
public Window createAddSoftwareModuleWindow() {
|
||||
public CommonDialogWindow createAddSoftwareModuleWindow() {
|
||||
editSwModule = Boolean.FALSE;
|
||||
createRequiredComponents();
|
||||
createWindow();
|
||||
@@ -170,22 +169,19 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
populateTypeNameCombo();
|
||||
|
||||
/* save or update button */
|
||||
saveSoftware = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SOFT_MODULE_SAVE, "", "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
saveSoftware.addClickListener(event -> {
|
||||
if (editSwModule) {
|
||||
updateSwModule();
|
||||
} else {
|
||||
/* add new or update software module */
|
||||
addNewBaseSoftware();
|
||||
}
|
||||
});
|
||||
|
||||
/* close button */
|
||||
closeWindow = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SOFT_MODULE_DISCARD, "", "", "", true,
|
||||
FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
/* Just close this window when this button is clicked */
|
||||
closeWindow.addClickListener(event -> closeThisWindow());
|
||||
// saveSoftware =
|
||||
// SPUIComponentProvider.getButton(SPUIComponetIdProvider.SOFT_MODULE_SAVE,
|
||||
// "", "", "", true,
|
||||
// FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
// saveSoftware.addClickListener(event -> save());
|
||||
//
|
||||
// /* close button */
|
||||
// closeWindow =
|
||||
// SPUIComponentProvider.getButton(SPUIComponetIdProvider.SOFT_MODULE_DISCARD,
|
||||
// "", "", "", true,
|
||||
// FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
// /* Just close this window when this button is clicked */
|
||||
// closeWindow.addClickListener(event -> closeThisWindow());
|
||||
|
||||
resetOldValues();
|
||||
}
|
||||
@@ -212,12 +208,14 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
*/
|
||||
private void createWindow() {
|
||||
/* action button layout (save & dicard) */
|
||||
final HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
buttonsLayout.setSizeFull();
|
||||
buttonsLayout.addComponents(saveSoftware, closeWindow);
|
||||
buttonsLayout.setComponentAlignment(saveSoftware, Alignment.BOTTOM_LEFT);
|
||||
buttonsLayout.setComponentAlignment(closeWindow, Alignment.BOTTOM_RIGHT);
|
||||
buttonsLayout.addStyleName("window-style");
|
||||
// final HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
// buttonsLayout.setSizeFull();
|
||||
// buttonsLayout.addComponents(saveSoftware, closeWindow);
|
||||
// buttonsLayout.setComponentAlignment(saveSoftware,
|
||||
// Alignment.BOTTOM_LEFT);
|
||||
// buttonsLayout.setComponentAlignment(closeWindow,
|
||||
// Alignment.BOTTOM_RIGHT);
|
||||
// buttonsLayout.addStyleName("window-style");
|
||||
|
||||
final Label madatoryStarLabel = new Label("*");
|
||||
madatoryStarLabel.setStyleName("v-caption v-required-field-indicator");
|
||||
@@ -242,22 +240,26 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
mainLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT);
|
||||
mainLayout.addComponent(hLayout);
|
||||
mainLayout.setComponentAlignment(hLayout, Alignment.MIDDLE_LEFT);
|
||||
mainLayout.addComponents(nameTextField, versionTextField, vendorTextField, descTextArea, buttonsLayout);
|
||||
// mainLayout.addComponents(nameTextField, versionTextField,
|
||||
// vendorTextField, descTextArea, buttonsLayout);
|
||||
|
||||
// TODO MR WINDOW
|
||||
mainLayout.addComponents(nameTextField, versionTextField, vendorTextField, descTextArea);
|
||||
|
||||
setCompositionRoot(mainLayout);
|
||||
|
||||
/* add main layout to the window */
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
window.setContent(mainLayout);
|
||||
window.setModal(true);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> closeThisWindow());
|
||||
nameTextField.focus();
|
||||
}
|
||||
|
||||
private void addDescriptionTextChangeListener() {
|
||||
descTextArea.addTextChangeListener(event -> {
|
||||
if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) {
|
||||
saveSoftware.setEnabled(false);
|
||||
window.setSaveButtonEnabled(false);
|
||||
} else {
|
||||
saveSoftware.setEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -265,9 +267,9 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
private void addVendorTextChangeListener() {
|
||||
vendorTextField.addTextChangeListener(event -> {
|
||||
if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) {
|
||||
saveSoftware.setEnabled(false);
|
||||
window.setSaveButtonEnabled(false);
|
||||
} else {
|
||||
saveSoftware.setEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -331,7 +333,7 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
typeComboBox.addItem(swModle.getType().getName());
|
||||
}
|
||||
typeComboBox.setValue(swModle.getType().getName());
|
||||
saveSoftware.setEnabled(Boolean.FALSE);
|
||||
window.setSaveButtonEnabled(Boolean.FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -369,4 +371,13 @@ public class SoftwareModuleAddUpdateWindow implements Serializable {
|
||||
}
|
||||
return isValid;
|
||||
}
|
||||
|
||||
private void save() {
|
||||
if (editSwModule) {
|
||||
updateSwModule();
|
||||
} else {
|
||||
/* add new or update software module */
|
||||
addNewBaseSoftware();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent;
|
||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.CoordinatesToColor;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
@@ -41,7 +41,6 @@ import org.vaadin.spring.events.EventBus;
|
||||
import com.google.common.base.Strings;
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.server.Page;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
@@ -60,7 +59,6 @@ import com.vaadin.ui.TextArea;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.Window;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeEvent;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
|
||||
import com.vaadin.ui.components.colorpicker.ColorPickerGradient;
|
||||
@@ -115,8 +113,8 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
private TextField typeName;
|
||||
private TextField typeKey;
|
||||
private TextArea typeDesc;
|
||||
private Button saveTag;
|
||||
private Button discardTag;
|
||||
// private Button saveTag;
|
||||
// private Button discardTag;
|
||||
private Button tagColorPreviewBtn;
|
||||
private OptionGroup createOptiongroup;
|
||||
private OptionGroup assignOptiongroup;
|
||||
@@ -131,7 +129,7 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
private Slider redSlider;
|
||||
private Slider greenSlider;
|
||||
private Slider blueSlider;
|
||||
private Window swTypeWindow;
|
||||
private CommonDialogWindow swTypeWindow;
|
||||
protected boolean tagPreviewBtnClicked = false;
|
||||
private VerticalLayout comboLayout;
|
||||
private VerticalLayout sliders;
|
||||
@@ -151,6 +149,8 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
addListeners();
|
||||
}
|
||||
|
||||
// TODO MR WINDOW
|
||||
|
||||
private void createComponents() {
|
||||
createTypeStr = i18n.get("label.create.type");
|
||||
updateTypeStr = i18n.get("label.update.type");
|
||||
@@ -188,13 +188,18 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
typeNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE);
|
||||
typeNameComboBox.setImmediate(true);
|
||||
|
||||
saveTag = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_SW_TYPE_SAVE, "", "", "", true, FontAwesome.SAVE,
|
||||
SPUIButtonStyleSmallNoBorder.class);
|
||||
saveTag.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
|
||||
discardTag = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_TAG_DISRACD, "", "",
|
||||
"discard-button-style", true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
discardTag.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
// saveTag =
|
||||
// SPUIComponentProvider.getButton(SPUIDefinitions.NEW_SW_TYPE_SAVE, "",
|
||||
// "", "", true, FontAwesome.SAVE,
|
||||
// SPUIButtonStyleSmallNoBorder.class);
|
||||
// saveTag.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
//
|
||||
// discardTag =
|
||||
// SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_TAG_DISRACD,
|
||||
// "", "",
|
||||
// "discard-button-style", true, FontAwesome.TIMES,
|
||||
// SPUIButtonStyleSmallNoBorder.class);
|
||||
// discardTag.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
|
||||
tagColorPreviewBtn = new Button();
|
||||
tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID);
|
||||
@@ -252,17 +257,20 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
colorLabelLayout.addComponents(colorLabel, tagColorPreviewBtn);
|
||||
fieldLayout.addComponent(colorLabelLayout);
|
||||
|
||||
final HorizontalLayout buttonLayout = new HorizontalLayout();
|
||||
buttonLayout.addComponent(saveTag);
|
||||
buttonLayout.addComponent(discardTag);
|
||||
buttonLayout.setComponentAlignment(discardTag, Alignment.BOTTOM_RIGHT);
|
||||
buttonLayout.setComponentAlignment(saveTag, Alignment.BOTTOM_LEFT);
|
||||
buttonLayout.addStyleName("window-style");
|
||||
buttonLayout.setWidth("152px");
|
||||
// final HorizontalLayout buttonLayout = new HorizontalLayout();
|
||||
// buttonLayout.addComponent(saveTag);
|
||||
// buttonLayout.addComponent(discardTag);
|
||||
// buttonLayout.setComponentAlignment(discardTag,
|
||||
// Alignment.BOTTOM_RIGHT);
|
||||
// buttonLayout.setComponentAlignment(saveTag, Alignment.BOTTOM_LEFT);
|
||||
// buttonLayout.addStyleName("window-style");
|
||||
// buttonLayout.setWidth("152px");
|
||||
|
||||
// TODO MR WINDOW
|
||||
|
||||
final VerticalLayout fieldButtonLayout = new VerticalLayout();
|
||||
fieldButtonLayout.addComponent(fieldLayout);
|
||||
fieldButtonLayout.addComponent(buttonLayout);
|
||||
// fieldButtonLayout.addComponent(buttonLayout);
|
||||
|
||||
mainLayout = new HorizontalLayout();
|
||||
mainLayout.addComponent(fieldButtonLayout);
|
||||
@@ -271,8 +279,6 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
}
|
||||
|
||||
private void addListeners() {
|
||||
saveTag.addClickListener(event -> save());
|
||||
discardTag.addClickListener(event -> discard());
|
||||
colorSelect.addColorChangeListener(this);
|
||||
selPreview.addColorChangeListener(this);
|
||||
tagColorPreviewBtn.addClickListener(event -> previewButtonClicked());
|
||||
@@ -281,13 +287,11 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C
|
||||
slidersValueChangeListeners();
|
||||
}
|
||||
|
||||
public Window getWindow() {
|
||||
public CommonDialogWindow getWindow() {
|
||||
reset();
|
||||
swTypeWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
swTypeWindow.setContent(this);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> discard());
|
||||
return swTypeWindow;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package org.eclipse.hawkbit.ui.colorPicker;
|
||||
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
|
||||
public class ColorPickerConstants {
|
||||
|
||||
public static final String DEFAULT_COLOR = "rgb(44,151,32)";
|
||||
public static final Color START_COLOR = new Color(0, 146, 58);
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package org.eclipse.hawkbit.ui.colorPicker;
|
||||
|
||||
import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.ui.Slider.ValueOutOfBoundsException;
|
||||
|
||||
public class ColorPickerHelper {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ColorPickerHelper.class);
|
||||
|
||||
/**
|
||||
* Get color picked value in string.
|
||||
*
|
||||
* @return String of color picked value.
|
||||
*/
|
||||
public static String getColorPickedString(final SpColorPickerPreview preview) {
|
||||
return "rgb(" + preview.getColor().getRed() + "," + preview.getColor().getGreen() + ","
|
||||
+ preview.getColor().getBlue() + ")";
|
||||
}
|
||||
|
||||
/**
|
||||
* Covert RGB code to {@Color}.
|
||||
*
|
||||
* @param value
|
||||
* RGB vale
|
||||
* @return Color
|
||||
*/
|
||||
public static Color rgbToColorConverter(final String value) {
|
||||
if (!value.startsWith("rgb")) {
|
||||
return null;
|
||||
}
|
||||
// RGB color format rgb/rgba(255,255,255,0.1)
|
||||
final String[] colors = value.substring(value.indexOf('(') + 1, value.length() - 1).split(",");
|
||||
final int red = Integer.parseInt(colors[0]);
|
||||
final int green = Integer.parseInt(colors[1]);
|
||||
final int blue = Integer.parseInt(colors[2]);
|
||||
if (colors.length > 3) {
|
||||
final int alpha = (int) (Double.parseDouble(colors[3]) * 255d);
|
||||
return new Color(red, green, blue, alpha);
|
||||
} else {
|
||||
return new Color(red, green, blue);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setRgbSliderValues(final ColorPickerLayout colorPickerLayout) {
|
||||
try {
|
||||
final double redColorValue = colorPickerLayout.getSelectedColor().getRed();
|
||||
colorPickerLayout.getRedSlider().setValue(new Double(redColorValue));
|
||||
final double blueColorValue = colorPickerLayout.getSelectedColor().getBlue();
|
||||
colorPickerLayout.getBlueSlider().setValue(new Double(blueColorValue));
|
||||
final double greenColorValue = colorPickerLayout.getSelectedColor().getGreen();
|
||||
colorPickerLayout.getGreenSlider().setValue(new Double(greenColorValue));
|
||||
} catch (final ValueOutOfBoundsException e) {
|
||||
LOG.error("Unable to set RGB color value to " + colorPickerLayout.getSelectedColor().getRed() + ","
|
||||
+ colorPickerLayout.getSelectedColor().getGreen() + ","
|
||||
+ colorPickerLayout.getSelectedColor().getBlue(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
package org.eclipse.hawkbit.ui.colorPicker;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.hawkbit.ui.common.CoordinatesToColor;
|
||||
import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview;
|
||||
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.ui.AbstractColorPicker.Coordinates2Color;
|
||||
import com.vaadin.ui.Slider;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.components.colorpicker.ColorPickerGradient;
|
||||
import com.vaadin.ui.components.colorpicker.ColorSelector;
|
||||
|
||||
public class ColorPickerLayout extends VerticalLayout {
|
||||
|
||||
private static final long serialVersionUID = -7025970080613796692L;
|
||||
|
||||
/**
|
||||
* Local Instance of ColorPickerPreview.
|
||||
*/
|
||||
private SpColorPickerPreview selPreview;
|
||||
|
||||
private ColorPickerGradient colorSelect;
|
||||
private Set<ColorSelector> selectors;
|
||||
private Color selectedColor;
|
||||
|
||||
/** RGB color converter. */
|
||||
private final Coordinates2Color rgbConverter = new CoordinatesToColor();
|
||||
|
||||
private Slider redSlider;
|
||||
private Slider greenSlider;
|
||||
private Slider blueSlider;
|
||||
|
||||
private final VerticalLayout sliders = new VerticalLayout();
|
||||
|
||||
public ColorPickerLayout() {
|
||||
|
||||
init();
|
||||
|
||||
setStyleName("rgb-vertical-layout");
|
||||
addComponent(selPreview);
|
||||
addComponent(colorSelect);
|
||||
}
|
||||
|
||||
public void init() {
|
||||
|
||||
selectors = new HashSet<>();
|
||||
selectedColor = getDefaultColor();
|
||||
selPreview = new SpColorPickerPreview(selectedColor);
|
||||
|
||||
colorSelect = new ColorPickerGradient("rgb-gradient", rgbConverter);
|
||||
colorSelect.setColor(selectedColor);
|
||||
colorSelect.setWidth("220px");
|
||||
|
||||
redSlider = createRGBSlider("", "red");
|
||||
greenSlider = createRGBSlider("", "green");
|
||||
blueSlider = createRGBSlider("", "blue");
|
||||
|
||||
sliders.addComponents(redSlider, greenSlider, blueSlider);
|
||||
selectors.add(colorSelect);
|
||||
}
|
||||
|
||||
public Slider createRGBSlider(final String caption, final String styleName) {
|
||||
final Slider slider = new Slider(caption, 0, 255);
|
||||
slider.setImmediate(true);
|
||||
slider.setWidth("150px");
|
||||
slider.addStyleName(styleName);
|
||||
return slider;
|
||||
}
|
||||
|
||||
public SpColorPickerPreview getSelPreview() {
|
||||
return selPreview;
|
||||
}
|
||||
|
||||
public void setSelPreview(final SpColorPickerPreview selPreview) {
|
||||
this.selPreview = selPreview;
|
||||
}
|
||||
|
||||
public ColorPickerGradient getColorSelect() {
|
||||
return colorSelect;
|
||||
}
|
||||
|
||||
public void setColorSelect(final ColorPickerGradient colorSelect) {
|
||||
this.colorSelect = colorSelect;
|
||||
}
|
||||
|
||||
public Set<ColorSelector> getSelectors() {
|
||||
return selectors;
|
||||
}
|
||||
|
||||
public Color getSelectedColor() {
|
||||
return selectedColor;
|
||||
}
|
||||
|
||||
public void setSelectedColor(final Color selectedColor) {
|
||||
this.selectedColor = selectedColor;
|
||||
}
|
||||
|
||||
public Coordinates2Color getRgbConverter() {
|
||||
return rgbConverter;
|
||||
}
|
||||
|
||||
public Color getDefaultColor() {
|
||||
return new Color(44, 151, 32);
|
||||
}
|
||||
|
||||
public Slider getRedSlider() {
|
||||
return redSlider;
|
||||
}
|
||||
|
||||
public void setRedSlider(final Slider redSlider) {
|
||||
this.redSlider = redSlider;
|
||||
}
|
||||
|
||||
public Slider getGreenSlider() {
|
||||
return greenSlider;
|
||||
}
|
||||
|
||||
public void setGreenSlider(final Slider greenSlider) {
|
||||
this.greenSlider = greenSlider;
|
||||
}
|
||||
|
||||
public Slider getBlueSlider() {
|
||||
return blueSlider;
|
||||
}
|
||||
|
||||
public void setBlueSlider(final Slider blueSlider) {
|
||||
this.blueSlider = blueSlider;
|
||||
}
|
||||
|
||||
public VerticalLayout getSliders() {
|
||||
return sliders;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,105 +2,126 @@ package org.eclipse.hawkbit.ui.common;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleBorderWithIcon;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.ui.AbstractOrderedLayout;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Button.ClickListener;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Link;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.Window;
|
||||
|
||||
public class CommonDialog extends Window {
|
||||
@Service
|
||||
public class CommonDialogWindow extends Window {
|
||||
|
||||
private static final long serialVersionUID = -1321949234316858703L;
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(CommonDialog.class);
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CommonDialogWindow.class);
|
||||
|
||||
private final VerticalLayout mainLayout = new VerticalLayout();
|
||||
|
||||
private FormLayout formLayout = new FormLayout();
|
||||
private String caption;
|
||||
|
||||
private Component content;
|
||||
|
||||
private String helpLink;
|
||||
|
||||
private Button saveButton;
|
||||
|
||||
private Button cancelButton;
|
||||
|
||||
public CommonDialog() {
|
||||
public CommonDialogWindow() {
|
||||
|
||||
mainLayout.addComponent(formLayout);
|
||||
mainLayout.addComponent(createActionButtonsLayout());
|
||||
setContent(mainLayout);
|
||||
|
||||
setResizable(false);
|
||||
center();
|
||||
init(null, null);
|
||||
}
|
||||
|
||||
public CommonDialog(final String title, final FormLayout form, final String helpLink) {
|
||||
public CommonDialogWindow(final String caption, final Component content, final String helpLink,
|
||||
final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener) {
|
||||
|
||||
if (formLayout != null) {
|
||||
formLayout = form;
|
||||
this.caption = caption;
|
||||
this.content = content;
|
||||
this.helpLink = helpLink;
|
||||
|
||||
if (null == content) {
|
||||
// TODO
|
||||
// throw Exception
|
||||
}
|
||||
init(saveButtonClickListener, cancelButtonClickListener);
|
||||
}
|
||||
|
||||
public void init(final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener) {
|
||||
|
||||
if (content instanceof AbstractOrderedLayout) {
|
||||
((AbstractOrderedLayout) content).setSpacing(true);
|
||||
((AbstractOrderedLayout) content).setMargin(true);
|
||||
}
|
||||
formLayout.setSpacing(true);
|
||||
formLayout.setMargin(true);
|
||||
|
||||
if (StringUtils.isNotEmpty(helpLink)) {
|
||||
mainLayout.addComponent(createLinkToHelp(helpLink));
|
||||
}
|
||||
mainLayout.addComponent(formLayout);
|
||||
mainLayout.addComponent(createActionButtonsLayout());
|
||||
if (null != content) {
|
||||
mainLayout.addComponent(content);
|
||||
}
|
||||
final HorizontalLayout buttonLayout = createActionButtonsLayout(saveButtonClickListener,
|
||||
cancelButtonClickListener);
|
||||
mainLayout.addComponent(buttonLayout);
|
||||
mainLayout.setComponentAlignment(buttonLayout, Alignment.MIDDLE_CENTER);
|
||||
|
||||
setCaption(title);
|
||||
setSizeUndefined();
|
||||
setCaption(caption);
|
||||
setContent(mainLayout);
|
||||
setResizable(false);
|
||||
center();
|
||||
setModal(true);
|
||||
}
|
||||
|
||||
private HorizontalLayout createActionButtonsLayout() {
|
||||
private HorizontalLayout createActionButtonsLayout(final ClickListener saveButtonClickListener,
|
||||
final ClickListener cancelButtonClickListener) {
|
||||
|
||||
final HorizontalLayout hlayout = new HorizontalLayout();
|
||||
hlayout.setSpacing(true);
|
||||
|
||||
saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_SAVE, "", "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
saveButton.setCaption("save");
|
||||
// saveButton.setDescription(i18n.get("configuration.savebutton.tooltip"));
|
||||
saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_SAVE, "save", "", "",
|
||||
true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class);
|
||||
if (null != saveButtonClickListener) {
|
||||
saveButton.addClickListener(saveButtonClickListener);
|
||||
} else {
|
||||
LOG.warn("No ClickListener for saveButton specified");
|
||||
}
|
||||
hlayout.addComponent(saveButton);
|
||||
hlayout.setComponentAlignment(saveButton, Alignment.MIDDLE_LEFT);
|
||||
|
||||
cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_CANCEL, "", "", "",
|
||||
true, FontAwesome.UNDO, SPUIButtonStyleSmallNoBorder.class);
|
||||
cancelButton.setCaption("cancel");
|
||||
// cancelButton.setDescription(i18n.get("configuration.cancellbutton.tooltip"));
|
||||
cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_CANCEL, "cancel", "",
|
||||
"", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class);
|
||||
if (null != cancelButtonClickListener) {
|
||||
cancelButton.addClickListener(cancelButtonClickListener);
|
||||
} else {
|
||||
LOG.warn("No ClickListener for cancelButton specified");
|
||||
}
|
||||
hlayout.addComponent(cancelButton);
|
||||
hlayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_RIGHT);
|
||||
|
||||
return hlayout;
|
||||
}
|
||||
|
||||
public void setSaveButtonClickListener(final ClickListener clickListener) {
|
||||
saveButton.addClickListener(clickListener);
|
||||
public void setSaveButtonEnabled(final boolean enabled) {
|
||||
saveButton.setEnabled(enabled);
|
||||
}
|
||||
|
||||
public void setCancelButtonClickListener(final ClickListener clickListener) {
|
||||
cancelButton.addClickListener(clickListener);
|
||||
public void setCancelButtonEnabled(final boolean enabled) {
|
||||
cancelButton.setEnabled(enabled);
|
||||
}
|
||||
|
||||
private Link createLinkToHelp(final String link) {
|
||||
return SPUIComponentProvider.getHelpLink(link);
|
||||
}
|
||||
|
||||
public FormLayout getFormLayout() {
|
||||
return formLayout;
|
||||
}
|
||||
|
||||
public void setFormLayout(final FormLayout formLayout) {
|
||||
this.formLayout = formLayout;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import java.util.Map;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.hawkbit.repository.model.BaseEntity;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.UserDetailsFormatter;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonDecorator;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIComboBoxDecorator;
|
||||
@@ -32,8 +33,10 @@ import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.server.Resource;
|
||||
import com.vaadin.shared.ui.label.ContentMode;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Button.ClickListener;
|
||||
import com.vaadin.ui.CheckBox;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.Link;
|
||||
@@ -137,6 +140,24 @@ public final class SPUIComponentProvider {
|
||||
return SPUILabelDecorator.getDeocratedLabel(name, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get window component.
|
||||
*
|
||||
* @param caption
|
||||
* window caption
|
||||
* @param id
|
||||
* window id
|
||||
* @param type
|
||||
* type of window
|
||||
* @return Window
|
||||
*/
|
||||
public static CommonDialogWindow getWindow(final String caption, final String id, final String type,
|
||||
final Component content, final ClickListener saveButtonClickListener,
|
||||
final ClickListener cancelButtonClickListener) {
|
||||
return SPUIWindowDecorator.getDeocratedWindow(caption, id, type, content, saveButtonClickListener,
|
||||
cancelButtonClickListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get window component.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.decorators;
|
||||
|
||||
import com.vaadin.server.Resource;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
public class SPUIButtonStyleBorderWithIcon implements SPUIButtonDecorator {
|
||||
|
||||
/**
|
||||
* Style for button: Primary.
|
||||
*/
|
||||
|
||||
@Override
|
||||
public Button decorate(final Button button, final String style, final boolean setStyle, final Resource icon) {
|
||||
|
||||
// Set Style
|
||||
if (null != style) {
|
||||
if (setStyle) {
|
||||
button.setStyleName(style);
|
||||
} else {
|
||||
button.addStyleName(style);
|
||||
}
|
||||
}
|
||||
button.addStyleName(ValoTheme.LABEL_SMALL);
|
||||
button.setSizeFull();
|
||||
|
||||
// Set icon
|
||||
if (null != icon) {
|
||||
button.setIcon(icon);
|
||||
}
|
||||
return button;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,9 +8,12 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.decorators;
|
||||
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||
|
||||
import com.vaadin.ui.Button.ClickListener;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.Window;
|
||||
|
||||
/**
|
||||
@@ -28,6 +31,38 @@ public final class SPUIWindowDecorator {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Decorates window based on type.
|
||||
*
|
||||
* @param caption
|
||||
* window caption
|
||||
* @param id
|
||||
* window id
|
||||
* @param type
|
||||
* window type
|
||||
* @return Window
|
||||
*/
|
||||
public static CommonDialogWindow getDeocratedWindow(final String caption, final String id, final String type,
|
||||
final Component content, final ClickListener saveButtonClickListener,
|
||||
final ClickListener CancelButtonClickListener) {
|
||||
// TODO helpLink
|
||||
final CommonDialogWindow window = new CommonDialogWindow(caption, content, null, saveButtonClickListener,
|
||||
CancelButtonClickListener);
|
||||
if (null != id) {
|
||||
window.setId(id);
|
||||
}
|
||||
if (SPUIDefinitions.CONFIRMATION_WINDOW.equals(type)) {
|
||||
window.setDraggable(false);
|
||||
window.setClosable(true);
|
||||
window.addStyleName(SPUIStyleDefinitions.CONFIRMATION_WINDOW_CAPTION);
|
||||
|
||||
} else if (SPUIDefinitions.CREATE_UPDATE_WINDOW.equals(type)) {
|
||||
window.setDraggable(true);
|
||||
window.setClosable(true);
|
||||
}
|
||||
return window;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decorates window based on type.
|
||||
*
|
||||
|
||||
@@ -9,41 +9,35 @@
|
||||
package org.eclipse.hawkbit.ui.distributions.disttype;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.DistributionSetRepository;
|
||||
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||
import org.eclipse.hawkbit.repository.SpPermissionChecker;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
||||
import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.common.CoordinatesToColor;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper;
|
||||
import org.eclipse.hawkbit.ui.common.DistributionSetTypeBeanQuery;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent;
|
||||
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent.DistributionSetTypeEnum;
|
||||
import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview;
|
||||
import org.eclipse.hawkbit.ui.management.tag.CreateUpdateTagLayout;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
|
||||
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.vaadin.data.Item;
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
@@ -53,29 +47,21 @@ import com.vaadin.server.Page;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.AbstractColorPicker.Coordinates2Color;
|
||||
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.CheckBox;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.OptionGroup;
|
||||
import com.vaadin.ui.Slider;
|
||||
import com.vaadin.ui.Slider.ValueOutOfBoundsException;
|
||||
import com.vaadin.ui.Table;
|
||||
import com.vaadin.ui.TextArea;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.Window;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeEvent;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
|
||||
import com.vaadin.ui.components.colorpicker.ColorPickerGradient;
|
||||
import com.vaadin.ui.components.colorpicker.ColorPickerPreview;
|
||||
import com.vaadin.ui.components.colorpicker.ColorSelector;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
@@ -84,7 +70,7 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class CreateUpdateDistSetTypeLayout extends CustomComponent implements ColorChangeListener, ColorSelector {
|
||||
public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout implements ColorChangeListener, ColorSelector {
|
||||
|
||||
private static final long serialVersionUID = -5169398523815877767L;
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateDistSetTypeLayout.class);
|
||||
@@ -95,19 +81,6 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
private static final String DIST_TYPE_DESCRIPTION = "description";
|
||||
private static final String DIST_TYPE_MANDATORY = "mandatory";
|
||||
private static final String STAR = " * ";
|
||||
protected static final String DEFAULT_COLOR = "rgb(44,151,32)";
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@Autowired
|
||||
private transient EventBus.SessionEventBus eventBus;
|
||||
|
||||
@Autowired
|
||||
private SpPermissionChecker permChecker;
|
||||
|
||||
@Autowired
|
||||
private transient UINotification uiNotification;
|
||||
|
||||
@Autowired
|
||||
private transient SoftwareManagement softwareManagement;
|
||||
@@ -121,59 +94,24 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
@Autowired
|
||||
private transient UiProperties uiProperties;
|
||||
|
||||
/**
|
||||
* Instance of ColorPickerPreview.
|
||||
*/
|
||||
private SpColorPickerPreview selPreview;
|
||||
|
||||
private String createDistTypeStr;
|
||||
private String updateDistTypeStr;
|
||||
private Label createDistType;
|
||||
private Label updateDistType;
|
||||
private Label comboLabel;
|
||||
private Label madatoryLabel;
|
||||
private Label colorLabel;
|
||||
private TextField typeName;
|
||||
private TextField typeKey;
|
||||
private TextArea typeDesc;
|
||||
private Button saveDistSetType;
|
||||
private Button discardDistSetType;
|
||||
private Button tagColorPreviewBtn;
|
||||
private OptionGroup createOptiongroup;
|
||||
private ComboBox typeNameComboBox;
|
||||
|
||||
private Color selectedColor;
|
||||
private ColorPickerGradient colorSelect;
|
||||
private Slider redSlider;
|
||||
private Slider greenSlider;
|
||||
private Slider blueSlider;
|
||||
private Window distTypeWindow;
|
||||
private VerticalLayout comboLayout;
|
||||
private VerticalLayout sliders;
|
||||
private VerticalLayout colorPickerLayout;
|
||||
private VerticalLayout sliderLayout;
|
||||
private HorizontalLayout colorLayout;
|
||||
private HorizontalLayout distTypeSelectLayout;
|
||||
private Set<ColorSelector> selectors;
|
||||
private Table sourceTable;
|
||||
private Table selectedTable;
|
||||
|
||||
private IndexedContainer selectedTablecontainer;
|
||||
private IndexedContainer sourceTablecontainer;
|
||||
|
||||
/** RGB color converter. */
|
||||
private final Coordinates2Color rgbConverter = new CoordinatesToColor();
|
||||
|
||||
/**
|
||||
* Initialize the dist type tag details layout.
|
||||
*/
|
||||
public void init() {
|
||||
createComponents();
|
||||
buildLayout();
|
||||
addListeners();
|
||||
}
|
||||
|
||||
private void createComponents() {
|
||||
@Override
|
||||
protected void createRequiredComponents() {
|
||||
createDistTypeStr = i18n.get("label.create.type");
|
||||
updateDistTypeStr = i18n.get("label.update.type");
|
||||
createDistType = SPUIComponentProvider.getLabel(createDistTypeStr, null);
|
||||
@@ -181,113 +119,59 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null);
|
||||
madatoryLabel = getMandatoryLabel();
|
||||
|
||||
typeName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "",
|
||||
tagName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_NAME, true, "",
|
||||
i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
typeName.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_NAME);
|
||||
tagName.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_NAME);
|
||||
|
||||
typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_KEY, true, "", i18n.get("textfield.key"),
|
||||
true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
typeKey.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_KEY);
|
||||
|
||||
typeDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_DESC, false, "",
|
||||
i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
|
||||
typeDesc.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_DESC);
|
||||
typeDesc.setImmediate(true);
|
||||
typeDesc.setNullRepresentation("");
|
||||
tagDesc.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_DESC);
|
||||
tagDesc.setImmediate(true);
|
||||
tagDesc.setNullRepresentation("");
|
||||
|
||||
typeNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, null, false,
|
||||
tagNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, null, false,
|
||||
"", i18n.get("label.combobox.type"));
|
||||
typeNameComboBox.setId(SPUIDefinitions.NEW_DISTRIBUTION_SET_TYPE_NAME_COMBO);
|
||||
typeNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE);
|
||||
typeNameComboBox.setImmediate(true);
|
||||
typeNameComboBox.setPageLength(SPUIDefinitions.DIST_TYPE_SIZE);
|
||||
tagNameComboBox.setId(SPUIDefinitions.NEW_DISTRIBUTION_SET_TYPE_NAME_COMBO);
|
||||
tagNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE);
|
||||
tagNameComboBox.setImmediate(true);
|
||||
tagNameComboBox.setPageLength(SPUIDefinitions.DIST_TYPE_SIZE);
|
||||
|
||||
colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null);
|
||||
colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE);
|
||||
|
||||
tagColorPreviewBtn = new Button();
|
||||
tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
tagColorPreviewBtn.setStyleName("tag-color-preview");
|
||||
|
||||
saveDistSetType = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_DIST_SET_TYPE_SAVE, "", "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
saveDistSetType.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
|
||||
discardDistSetType = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_DIST_SET_TYPE_COLSE, "", "",
|
||||
"discard-button-style", true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
discardDistSetType.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
|
||||
selectors = new HashSet<>();
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview = new SpColorPickerPreview(selectedColor);
|
||||
|
||||
colorSelect = new ColorPickerGradient("rgb-gradient", rgbConverter);
|
||||
colorSelect.setColor(selectedColor);
|
||||
colorSelect.setWidth("220px");
|
||||
|
||||
redSlider = createRGBSlider("", "red");
|
||||
greenSlider = createRGBSlider("", "green");
|
||||
blueSlider = createRGBSlider("", "blue");
|
||||
setRgbSliderValues(selectedColor);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
ColorPickerHelper.setRgbSliderValues(getColorPickerLayout());
|
||||
|
||||
createUpdateOptionGroup();
|
||||
|
||||
}
|
||||
|
||||
private void buildLayout() {
|
||||
colorPickerLayout = new VerticalLayout();
|
||||
colorPickerLayout.setSpacing(true);
|
||||
colorPickerLayout.addStyleName("color-picker-layout");
|
||||
colorPickerLayout.addStyleName("color-picker-layout-ds-type");
|
||||
@Override
|
||||
protected void buildLayout() {
|
||||
|
||||
super.buildLayout();
|
||||
getFormLayout().addComponent(typeKey, 4);
|
||||
|
||||
distTypeSelectLayout = createTwinColumnLayout();
|
||||
|
||||
sliders = new VerticalLayout();
|
||||
sliders.addComponents(redSlider, greenSlider, blueSlider);
|
||||
|
||||
selectors.add(colorSelect);
|
||||
|
||||
comboLayout = new VerticalLayout();
|
||||
final VerticalLayout fieldLayout = new VerticalLayout();
|
||||
fieldLayout.setSpacing(true);
|
||||
fieldLayout.setMargin(false);
|
||||
fieldLayout.addComponent(createOptiongroup);
|
||||
fieldLayout.addComponent(madatoryLabel);
|
||||
fieldLayout.addComponent(comboLayout);
|
||||
fieldLayout.addComponent(typeName);
|
||||
fieldLayout.addComponent(typeKey);
|
||||
fieldLayout.addComponent(typeDesc);
|
||||
|
||||
final VerticalLayout colorPreviewGradientLayout = new VerticalLayout();
|
||||
colorPreviewGradientLayout.addComponent(selPreview);
|
||||
colorPreviewGradientLayout.addComponent(colorSelect);
|
||||
colorPreviewGradientLayout.setComponentAlignment(selPreview, Alignment.MIDDLE_CENTER);
|
||||
colorPreviewGradientLayout.setComponentAlignment(selPreview, Alignment.MIDDLE_CENTER);
|
||||
|
||||
colorPickerLayout.addComponent(colorPreviewGradientLayout);
|
||||
colorPickerLayout.setComponentAlignment(colorPreviewGradientLayout, Alignment.MIDDLE_CENTER);
|
||||
|
||||
final HorizontalLayout buttonLayout = new HorizontalLayout();
|
||||
buttonLayout.addComponent(saveDistSetType);
|
||||
buttonLayout.addComponent(discardDistSetType);
|
||||
buttonLayout.setComponentAlignment(discardDistSetType, Alignment.BOTTOM_RIGHT);
|
||||
buttonLayout.setComponentAlignment(saveDistSetType, Alignment.BOTTOM_LEFT);
|
||||
buttonLayout.setImmediate(true);
|
||||
buttonLayout.addStyleName("window-style");
|
||||
buttonLayout.setSizeFull();
|
||||
|
||||
final HorizontalLayout mainLayout = new HorizontalLayout();
|
||||
final VerticalLayout twinTableLayout = new VerticalLayout();
|
||||
twinTableLayout.setSizeFull();
|
||||
twinTableLayout.addComponent(distTypeSelectLayout);
|
||||
|
||||
mainLayout.addComponent(fieldLayout);
|
||||
mainLayout.addComponent(getFormLayout());
|
||||
mainLayout.addComponent(twinTableLayout);
|
||||
|
||||
colorLayout = new HorizontalLayout();
|
||||
@@ -303,9 +187,6 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
mainWindowLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()));
|
||||
mainWindowLayout.addComponent(mainLayout);
|
||||
mainWindowLayout.addComponent(colorLayout);
|
||||
mainWindowLayout.addComponent(buttonLayout);
|
||||
setCompositionRoot(mainWindowLayout);
|
||||
typeName.focus();
|
||||
}
|
||||
|
||||
private HorizontalLayout createTwinColumnLayout() {
|
||||
@@ -505,122 +386,33 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
}
|
||||
}
|
||||
|
||||
public Window getWindow() {
|
||||
reset();
|
||||
distTypeWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
distTypeWindow.setContent(this);
|
||||
return distTypeWindow;
|
||||
|
||||
}
|
||||
|
||||
private Label getMandatoryLabel() {
|
||||
final Label label = new Label(i18n.get("label.mandatory.field"));
|
||||
label.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
return label;
|
||||
}
|
||||
|
||||
private Slider createRGBSlider(final String caption, final String styleName) {
|
||||
final Slider slider = new Slider(caption, 0, 255);
|
||||
slider.setImmediate(true);
|
||||
slider.setWidth("150px");
|
||||
slider.addStyleName(styleName);
|
||||
return slider;
|
||||
}
|
||||
|
||||
private void setRgbSliderValues(final Color color) {
|
||||
try {
|
||||
final double redColorValue = color.getRed();
|
||||
redSlider.setValue(new Double(redColorValue));
|
||||
final double blueColorValue = color.getBlue();
|
||||
blueSlider.setValue(new Double(blueColorValue));
|
||||
final double greenColorValue = color.getGreen();
|
||||
greenSlider.setValue(new Double(greenColorValue));
|
||||
} catch (final ValueOutOfBoundsException e) {
|
||||
LOG.error("Unable to set RGB color value to " + color.getRed() + "," + color.getGreen() + ","
|
||||
+ color.getBlue(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dynamic styles for window.
|
||||
*
|
||||
* @param top
|
||||
* int value
|
||||
* @param marginLeft
|
||||
* int value
|
||||
*/
|
||||
private void getPreviewButtonColor(final String color) {
|
||||
Page.getCurrent().getJavaScript().execute(HawkbitCommonUtil.getPreviewButtonColorScript(color));
|
||||
}
|
||||
|
||||
private void createUpdateOptionGroup() {
|
||||
final List<String> optionValues = new ArrayList<>();
|
||||
if (permChecker.hasCreateDistributionPermission()) {
|
||||
optionValues.add(createDistType.getValue());
|
||||
}
|
||||
if (permChecker.hasUpdateDistributionPermission()) {
|
||||
optionValues.add(updateDistType.getValue());
|
||||
}
|
||||
createOptionGroupByValues(optionValues);
|
||||
}
|
||||
|
||||
private void createOptionGroupByValues(final List<String> typeOptions) {
|
||||
createOptiongroup = new OptionGroup("", typeOptions);
|
||||
createOptiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID);
|
||||
createOptiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL);
|
||||
createOptiongroup.addStyleName("custom-option-group");
|
||||
createOptiongroup.setNullSelectionAllowed(false);
|
||||
createOptiongroup.setCaption(null);
|
||||
if (!typeOptions.isEmpty()) {
|
||||
createOptiongroup.select(typeOptions.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
private void addListeners() {
|
||||
saveDistSetType.addClickListener(event -> save());
|
||||
discardDistSetType.addClickListener(event -> discard());
|
||||
colorSelect.addColorChangeListener(this);
|
||||
selPreview.addColorChangeListener(this);
|
||||
getColorPickerLayout().getColorSelect().addColorChangeListener(this);
|
||||
getColorPickerLayout().getSelPreview().addColorChangeListener(this);
|
||||
tagColorPreviewBtn.addClickListener(event -> previewButtonClicked());
|
||||
createOptiongroup.addValueChangeListener(event -> createOptionValueChanged(event));
|
||||
typeNameComboBox.addValueChangeListener(event -> typeNameChosen(event));
|
||||
optiongroup.addValueChangeListener(event -> createOptionValueChanged(event));
|
||||
tagNameComboBox.addValueChangeListener(event -> typeNameChosen(event));
|
||||
slidersValueChangeListeners();
|
||||
}
|
||||
|
||||
private void save() {
|
||||
if (mandatoryValuesPresent()) {
|
||||
final DistributionSetType existingDistTypeByKey = distributionSetManagement
|
||||
.findDistributionSetTypeByKey(typeKey.getValue());
|
||||
final DistributionSetType existingDistTypeByName = distributionSetManagement
|
||||
.findDistributionSetTypeByName(typeName.getValue());
|
||||
if (createOptiongroup.getValue().equals(createDistTypeStr)) {
|
||||
if (!checkIsDuplicateByKey(existingDistTypeByKey) && !checkIsDuplicate(existingDistTypeByName)) {
|
||||
crateNewDistributionSetType();
|
||||
}
|
||||
} else {
|
||||
updateDistributionSetType(existingDistTypeByKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Boolean mandatoryValuesPresent() {
|
||||
if (Strings.isNullOrEmpty(typeName.getValue())) {
|
||||
if (createOptiongroup.getValue().equals(createDistTypeStr)) {
|
||||
|
||||
uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY);
|
||||
}
|
||||
if (createOptiongroup.getValue().equals(updateDistTypeStr)) {
|
||||
if (null == typeNameComboBox.getValue()) {
|
||||
uiNotification.displayValidationError(i18n.get("message.error.missing.typename"));
|
||||
} else {
|
||||
uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
// private void save() {
|
||||
// if (mandatoryValuesPresent()) {
|
||||
// final DistributionSetType existingDistTypeByKey =
|
||||
// distributionSetManagement
|
||||
// .findDistributionSetTypeByKey(typeKey.getValue());
|
||||
// final DistributionSetType existingDistTypeByName =
|
||||
// distributionSetManagement
|
||||
// .findDistributionSetTypeByName(tagName.getValue());
|
||||
// if (createOptiongroup.getValue().equals(createDistTypeStr)) {
|
||||
// if (!checkIsDuplicateByKey(existingDistTypeByKey) &&
|
||||
// !checkIsDuplicate(existingDistTypeByName)) {
|
||||
// crateNewDistributionSetType();
|
||||
// }
|
||||
// } else {
|
||||
// updateDistributionSetType(existingDistTypeByKey);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
private Boolean checkIsDuplicate(final DistributionSetType existingDistType) {
|
||||
if (existingDistType != null) {
|
||||
@@ -640,24 +432,15 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
private void closeWindow() {
|
||||
distTypeWindow.close();
|
||||
UI.getCurrent().removeWindow(distTypeWindow);
|
||||
}
|
||||
|
||||
private void discard() {
|
||||
UI.getCurrent().removeWindow(distTypeWindow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new DistSet Type tag.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private void crateNewDistributionSetType() {
|
||||
final String colorPicked = getColorPickedSting();
|
||||
final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeName.getValue());
|
||||
final String colorPicked = ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview());
|
||||
final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String typeKeyValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeKey.getValue());
|
||||
final String typeDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeDesc.getValue());
|
||||
final String typeDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
final List<Long> itemIds = (List<Long>) selectedTable.getItemIds();
|
||||
if (null != typeNameValue && null != typeKeyValue && null != itemIds && !itemIds.isEmpty()) {
|
||||
DistributionSetType newDistType = new DistributionSetType(typeKeyValue, typeNameValue, typeDescValue);
|
||||
@@ -699,9 +482,9 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
@SuppressWarnings("unchecked")
|
||||
private void updateDistributionSetType(final DistributionSetType existingType) {
|
||||
final List<Long> itemIds = (List<Long>) selectedTable.getItemIds();
|
||||
final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeName.getValue());
|
||||
final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String typeKeyValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeKey.getValue());
|
||||
final String typeDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeDesc.getValue());
|
||||
final String typeDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
/* remove all SW Module Types before update SW Module Types */
|
||||
final DistributionSetType updateDistSetType = removeSWModuleTypesFromDistSetType(existingType.getName());
|
||||
|
||||
@@ -726,7 +509,7 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
}
|
||||
}
|
||||
}
|
||||
updateDistSetType.setColour(getColorPickedSting());
|
||||
updateDistSetType.setColour(ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview()));
|
||||
distributionSetManagement.updateDistributionSetType(updateDistSetType);
|
||||
uiNotification
|
||||
.displaySuccess(i18n.get("message.update.success", new Object[] { updateDistSetType.getName() }));
|
||||
@@ -757,104 +540,70 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
return distSetType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get color picked value in string.
|
||||
*
|
||||
* @return String of color picked value.
|
||||
*/
|
||||
private String getColorPickedSting() {
|
||||
return "rgb(" + getSelPreview().getColor().getRed() + "," + getSelPreview().getColor().getGreen() + ","
|
||||
+ getSelPreview().getColor().getBlue() + ")";
|
||||
}
|
||||
|
||||
/**
|
||||
* Color view.
|
||||
*
|
||||
* @return ColorPickerPreview as UI
|
||||
*/
|
||||
public ColorPickerPreview getSelPreview() {
|
||||
return selPreview;
|
||||
}
|
||||
|
||||
/**
|
||||
* Open color picker on click of preview button. Auto select the color based
|
||||
* on target tag if already selected.
|
||||
*/
|
||||
private void previewButtonClicked() {
|
||||
final String selectedOption = (String) createOptiongroup.getValue();
|
||||
if (null != selectedOption && selectedOption.equalsIgnoreCase(updateDistTypeStr)
|
||||
&& null != typeNameComboBox.getValue()) {
|
||||
|
||||
final DistributionSetType existedDistType = distributionSetManagement
|
||||
.findDistributionSetTypeByKey(typeNameComboBox.getValue().toString());
|
||||
if (null != existedDistType) {
|
||||
selectedColor = existedDistType.getColour() != null ? rgbToColorConverter(existedDistType.getColour())
|
||||
: rgbToColorConverter(DEFAULT_COLOR);
|
||||
} else {
|
||||
selectedColor = rgbToColorConverter(DEFAULT_COLOR);
|
||||
}
|
||||
|
||||
}
|
||||
selPreview.setColor(selectedColor);
|
||||
sliderLayout.addComponent(sliders);
|
||||
colorLayout.addComponent(colorPickerLayout);
|
||||
colorLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Covert RGB code to {@Color}.
|
||||
*
|
||||
* @param value
|
||||
* RGB vale
|
||||
* @return Color
|
||||
*/
|
||||
protected Color rgbToColorConverter(final String value) {
|
||||
if (value.startsWith("rgb")) {
|
||||
final String[] colors = value.substring(value.indexOf('(') + 1, value.length() - 1).split(",");
|
||||
final int red = Integer.parseInt(colors[0]);
|
||||
final int green = Integer.parseInt(colors[1]);
|
||||
final int blue = Integer.parseInt(colors[2]);
|
||||
if (colors.length > 3) {
|
||||
final int alpha = (int) (Double.parseDouble(colors[3]) * 255d);
|
||||
return new Color(red, green, blue, alpha);
|
||||
} else {
|
||||
return new Color(red, green, blue);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// private void previewButtonClicked() {
|
||||
// final String selectedOption = (String) createOptiongroup.getValue();
|
||||
// if (null != selectedOption &&
|
||||
// selectedOption.equalsIgnoreCase(updateDistTypeStr)
|
||||
// && null != typeNameComboBox.getValue()) {
|
||||
//
|
||||
// final DistributionSetType existedDistType = distributionSetManagement
|
||||
// .findDistributionSetTypeByKey(typeNameComboBox.getValue().toString());
|
||||
// if (null != existedDistType) {
|
||||
// getColorPickerLayout().setSelectedColor(existedDistType.getColour() !=
|
||||
// null
|
||||
// ? ColorPickerHelper.rgbToColorConverter(existedDistType.getColour())
|
||||
// :
|
||||
// ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
// } else {
|
||||
// getColorPickerLayout()
|
||||
// .setSelectedColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
// }
|
||||
// }
|
||||
// getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
// sliderLayout.addComponent(sliders);
|
||||
// colorLayout.addComponent(getColorPickerLayout());
|
||||
// colorLayout.setComponentAlignment(getColorPickerLayout(),
|
||||
// Alignment.MIDDLE_CENTER);
|
||||
// }
|
||||
|
||||
/**
|
||||
* Value change listeners implementations of sliders.
|
||||
*/
|
||||
private void slidersValueChangeListeners() {
|
||||
redSlider.addValueChangeListener(new ValueChangeListener() {
|
||||
getColorPickerLayout().getRedSlider().addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = -8336732883300920839L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double red = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color((int) red, selectedColor.getGreen(), selectedColor.getBlue());
|
||||
final Color newColor = new Color((int) red, getColorPickerLayout().getSelectedColor().getGreen(),
|
||||
getColorPickerLayout().getSelectedColor().getBlue());
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
greenSlider.addValueChangeListener(new ValueChangeListener() {
|
||||
getColorPickerLayout().getGreenSlider().addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = 1236358037711775663L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double green = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color(selectedColor.getRed(), (int) green, selectedColor.getBlue());
|
||||
final Color newColor = new Color(getColorPickerLayout().getSelectedColor().getRed(), (int) green,
|
||||
getColorPickerLayout().getSelectedColor().getBlue());
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
blueSlider.addValueChangeListener(new ValueChangeListener() {
|
||||
getColorPickerLayout().getBlueSlider().addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = 8466370744686043947L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double blue = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color(selectedColor.getRed(), selectedColor.getGreen(), (int) blue);
|
||||
final Color newColor = new Color(getColorPickerLayout().getSelectedColor().getRed(),
|
||||
getColorPickerLayout().getSelectedColor().getGreen(), (int) blue);
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
@@ -862,9 +611,9 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
|
||||
private void setColorToComponents(final Color newColor) {
|
||||
setColor(newColor);
|
||||
colorSelect.setColor(newColor);
|
||||
getColorPickerLayout().getColorSelect().setColor(newColor);
|
||||
getPreviewButtonColor(newColor.getCSS());
|
||||
createDynamicStyleForComponents(typeName, typeKey, typeDesc, newColor.getCSS());
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, newColor.getCSS());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -874,13 +623,13 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
* @param tagDesc
|
||||
* @param taregtTagColor
|
||||
*/
|
||||
private void createDynamicStyleForComponents(final TextField typeName, final TextField typeKey,
|
||||
private void createDynamicStyleForComponents(final TextField tagName, final TextField typeKey,
|
||||
final TextArea typeDesc, final String typeTagColor) {
|
||||
typeName.removeStyleName(SPUIDefinitions.TYPE_NAME);
|
||||
tagName.removeStyleName(SPUIDefinitions.TYPE_NAME);
|
||||
typeKey.removeStyleName(SPUIDefinitions.TYPE_KEY);
|
||||
typeDesc.removeStyleName(SPUIDefinitions.TYPE_DESC);
|
||||
getDistributionDynamicStyles(typeTagColor);
|
||||
typeName.addStyleName(TYPE_NAME_DYNAMIC_STYLE);
|
||||
tagName.addStyleName(TYPE_NAME_DYNAMIC_STYLE);
|
||||
typeKey.addStyleName(TYPE_NAME_DYNAMIC_STYLE);
|
||||
typeDesc.addStyleName(TYPE_DESC_DYNAMIC_STYLE);
|
||||
}
|
||||
@@ -926,22 +675,24 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
/**
|
||||
* reset the components.
|
||||
*/
|
||||
private void reset() {
|
||||
typeName.setEnabled(true);
|
||||
typeName.clear();
|
||||
@Override
|
||||
protected void reset() {
|
||||
tagName.setEnabled(true);
|
||||
tagName.clear();
|
||||
typeKey.clear();
|
||||
typeDesc.clear();
|
||||
colorLayout.removeComponent(colorPickerLayout);
|
||||
sliderLayout.removeComponent(sliders);
|
||||
tagDesc.clear();
|
||||
colorLayout.removeComponent(getColorPickerLayout());
|
||||
sliderLayout.removeComponent(getColorPickerLayout().getSliders());
|
||||
restoreComponentStyles();
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(typeNameComboBox);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
selectedTable.removeAllItems();
|
||||
getSourceTableData();
|
||||
createOptiongroup.select(createDistTypeStr);
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview.setColor(selectedColor);
|
||||
optiongroup.select(createDistTypeStr);
|
||||
|
||||
// Default green color
|
||||
getColorPickerLayout().setSelectedColor(getColorPickerLayout().getDefaultColor());
|
||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -952,45 +703,46 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
*/
|
||||
private void createOptionValueChanged(final ValueChangeEvent event) {
|
||||
if ("Update Type".equals(event.getProperty().getValue())) {
|
||||
typeName.clear();
|
||||
typeDesc.clear();
|
||||
tagName.clear();
|
||||
tagDesc.clear();
|
||||
typeKey.clear();
|
||||
selectedTable.getContainerDataSource().removeAllItems();
|
||||
getSourceTableData();
|
||||
|
||||
typeKey.setEnabled(false);
|
||||
typeName.setEnabled(false);
|
||||
tagName.setEnabled(false);
|
||||
distTypeSelectLayout.setEnabled(false);
|
||||
populateTypeNameCombo();
|
||||
populateTagNameCombo();
|
||||
comboLayout.addComponent(comboLabel);
|
||||
comboLayout.addComponent(typeNameComboBox);
|
||||
comboLayout.addComponent(tagNameComboBox);
|
||||
} else {
|
||||
typeKey.setEnabled(true);
|
||||
typeName.setEnabled(true);
|
||||
saveDistSetType.setEnabled(true);
|
||||
tagName.setEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
distTypeSelectLayout.setEnabled(true);
|
||||
typeName.clear();
|
||||
typeDesc.clear();
|
||||
tagName.clear();
|
||||
tagDesc.clear();
|
||||
typeKey.clear();
|
||||
selectedTable.setEnabled(true);
|
||||
selectedTable.getContainerDataSource().removeAllItems();
|
||||
sourceTable.getContainerDataSource().removeAllItems();
|
||||
getSourceTableData();
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(typeNameComboBox);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
}
|
||||
restoreComponentStyles();
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
selPreview.setColor(rgbToColorConverter(DEFAULT_COLOR));
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
getColorPickerLayout().getSelPreview()
|
||||
.setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate DistributionSet Type name combo.
|
||||
*/
|
||||
public void populateTypeNameCombo() {
|
||||
typeNameComboBox.setContainerDataSource(getDistSetTypeLazyQueryContainer());
|
||||
typeNameComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
|
||||
@Override
|
||||
public void populateTagNameCombo() {
|
||||
tagNameComboBox.setContainerDataSource(getDistSetTypeLazyQueryContainer());
|
||||
tagNameComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1016,18 +768,18 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
}
|
||||
|
||||
private void resetTypeFields() {
|
||||
typeName.setEnabled(false);
|
||||
tagName.setEnabled(false);
|
||||
typeKey.setEnabled(false);
|
||||
typeName.clear();
|
||||
tagName.clear();
|
||||
typeKey.clear();
|
||||
typeDesc.clear();
|
||||
tagDesc.clear();
|
||||
restoreComponentStyles();
|
||||
selectedTable.removeAllItems();
|
||||
getSourceTableData();
|
||||
restoreComponentStyles();
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
selPreview.setColor(rgbToColorConverter(DEFAULT_COLOR));
|
||||
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
getColorPickerLayout().getSelPreview()
|
||||
.setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1038,24 +790,24 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
* as the selected tag from combo
|
||||
*/
|
||||
private void setTypeTagCombo(final String distSetTypeSelected) {
|
||||
typeName.setValue(distSetTypeSelected);
|
||||
tagName.setValue(distSetTypeSelected);
|
||||
getSourceTableData();
|
||||
selectedTable.getContainerDataSource().removeAllItems();
|
||||
final DistributionSetType selectedTypeTag = fetchDistributionSetType(distSetTypeSelected);
|
||||
if (null != selectedTypeTag) {
|
||||
typeDesc.setValue(selectedTypeTag.getDescription());
|
||||
tagDesc.setValue(selectedTypeTag.getDescription());
|
||||
typeKey.setValue(selectedTypeTag.getKey());
|
||||
|
||||
if (distributionSetRepository.countByType(selectedTypeTag) <= 0) {
|
||||
distTypeSelectLayout.setEnabled(true);
|
||||
selectedTable.setEnabled(true);
|
||||
saveDistSetType.setEnabled(true);
|
||||
window.setSaveButtonEnabled(true);
|
||||
} else {
|
||||
uiNotification.displayValidationError(
|
||||
selectedTypeTag.getName() + " " + i18n.get("message.error.dist.set.type.update"));
|
||||
distTypeSelectLayout.setEnabled(false);
|
||||
selectedTable.setEnabled(false);
|
||||
saveDistSetType.setEnabled(false);
|
||||
window.setSaveButtonEnabled(false);
|
||||
}
|
||||
for (final SoftwareModuleType swModuleType : selectedTypeTag.getOptionalModuleTypes()) {
|
||||
addTargetTableforUpdate(swModuleType, false);
|
||||
@@ -1066,16 +818,18 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
}
|
||||
|
||||
if (null == selectedTypeTag.getColour()) {
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview.setColor(selectedColor);
|
||||
colorSelect.setColor(selectedColor);
|
||||
createDynamicStyleForComponents(typeName, typeKey, typeDesc, DEFAULT_COLOR);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
getColorPickerLayout()
|
||||
.setSelectedColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, ColorPickerConstants.DEFAULT_COLOR);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
} else {
|
||||
selectedColor = rgbToColorConverter(selectedTypeTag.getColour());
|
||||
selPreview.setColor(selectedColor);
|
||||
colorSelect.setColor(selectedColor);
|
||||
createDynamicStyleForComponents(typeName, typeKey, typeDesc, selectedTypeTag.getColour());
|
||||
getColorPickerLayout()
|
||||
.setSelectedColor(ColorPickerHelper.rgbToColorConverter(selectedTypeTag.getColour()));
|
||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, selectedTypeTag.getColour());
|
||||
getPreviewButtonColor(selectedTypeTag.getColour());
|
||||
}
|
||||
}
|
||||
@@ -1109,14 +863,13 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
if (color == null) {
|
||||
return;
|
||||
}
|
||||
selectedColor = color;
|
||||
selPreview.setColor(selectedColor);
|
||||
final String colorPickedPreview = selPreview.getColor().getCSS();
|
||||
if (typeName.isEnabled() && null != colorSelect) {
|
||||
createDynamicStyleForComponents(typeName, typeKey, typeDesc, colorPickedPreview);
|
||||
colorSelect.setColor(selPreview.getColor());
|
||||
getColorPickerLayout().setSelectedColor(color);
|
||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
final String colorPickedPreview = getColorPickerLayout().getSelPreview().getColor().getCSS();
|
||||
if (tagName.isEnabled() && null != getColorPickerLayout().getColorSelect()) {
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview);
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelPreview().getColor());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1140,14 +893,15 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
@Override
|
||||
public void colorChanged(final ColorChangeEvent event) {
|
||||
setColor(event.getColor());
|
||||
for (final ColorSelector select : selectors) {
|
||||
if (!event.getSource().equals(select) && select.equals(this) && !select.getColor().equals(selectedColor)) {
|
||||
select.setColor(selectedColor);
|
||||
for (final ColorSelector select : getColorPickerLayout().getSelectors()) {
|
||||
if (!event.getSource().equals(select) && select.equals(this)
|
||||
&& !select.getColor().equals(getColorPickerLayout().getSelectedColor())) {
|
||||
select.setColor(getColorPickerLayout().getSelectedColor());
|
||||
}
|
||||
}
|
||||
setRgbSliderValues(selectedColor);
|
||||
ColorPickerHelper.setRgbSliderValues(getColorPickerLayout());
|
||||
getPreviewButtonColor(event.getColor().getCSS());
|
||||
createDynamicStyleForComponents(typeName, typeKey, typeDesc, event.getColor().getCSS());
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, event.getColor().getCSS());
|
||||
|
||||
}
|
||||
|
||||
@@ -1155,13 +909,66 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co
|
||||
* reset the tag name and tag description component border color.
|
||||
*/
|
||||
private void restoreComponentStyles() {
|
||||
typeName.removeStyleName(TYPE_NAME_DYNAMIC_STYLE);
|
||||
typeDesc.removeStyleName(TYPE_DESC_DYNAMIC_STYLE);
|
||||
tagName.removeStyleName(TYPE_NAME_DYNAMIC_STYLE);
|
||||
tagDesc.removeStyleName(TYPE_DESC_DYNAMIC_STYLE);
|
||||
typeKey.removeStyleName(TYPE_NAME_DYNAMIC_STYLE);
|
||||
typeName.addStyleName(SPUIDefinitions.DIST_SET_TYPE_NAME);
|
||||
typeDesc.addStyleName(SPUIDefinitions.DIST_SET_TYPE_DESC);
|
||||
tagName.addStyleName(SPUIDefinitions.DIST_SET_TYPE_NAME);
|
||||
tagDesc.addStyleName(SPUIDefinitions.DIST_SET_TYPE_DESC);
|
||||
typeKey.addStyleName(SPUIDefinitions.DIST_SET_TYPE_KEY);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void save(final ClickEvent event) {
|
||||
if (mandatoryValuesPresent()) {
|
||||
final DistributionSetType existingDistTypeByKey = distributionSetManagement
|
||||
.findDistributionSetTypeByKey(typeKey.getValue());
|
||||
final DistributionSetType existingDistTypeByName = distributionSetManagement
|
||||
.findDistributionSetTypeByName(tagName.getValue());
|
||||
if (optiongroup.getValue().equals(createDistTypeStr)) {
|
||||
if (!checkIsDuplicateByKey(existingDistTypeByKey) && !checkIsDuplicate(existingDistTypeByName)) {
|
||||
crateNewDistributionSetType();
|
||||
}
|
||||
} else {
|
||||
updateDistributionSetType(existingDistTypeByKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setTagDetails(final String tagSelected) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createWindow() {
|
||||
reset();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event));
|
||||
}
|
||||
|
||||
private void createUpdateOptionGroup() {
|
||||
final List<String> optionValues = new ArrayList<>();
|
||||
if (permChecker.hasCreateDistributionPermission()) {
|
||||
optionValues.add(createDistType.getValue());
|
||||
}
|
||||
if (permChecker.hasUpdateDistributionPermission()) {
|
||||
optionValues.add(updateDistType.getValue());
|
||||
}
|
||||
createOptionGroupByValues(optionValues);
|
||||
}
|
||||
|
||||
private void createOptionGroupByValues(final List<String> typeOptions) {
|
||||
optiongroup = new OptionGroup("", typeOptions);
|
||||
optiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID);
|
||||
optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL);
|
||||
optiongroup.addStyleName("custom-option-group");
|
||||
optiongroup.setNullSelectionAllowed(false);
|
||||
optiongroup.setCaption(null);
|
||||
if (!typeOptions.isEmpty()) {
|
||||
optiongroup.select(typeOptions.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,7 +62,6 @@ public class DSTypeFilterHeader extends AbstractFilterHeader {
|
||||
final Window addUpdateWindow = createUpdateDistSetTypeLayout.getWindow();
|
||||
UI.getCurrent().addWindow(addUpdateWindow);
|
||||
addUpdateWindow.setVisible(Boolean.TRUE);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -23,11 +23,11 @@ import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
||||
import org.eclipse.hawkbit.repository.model.TenantMetaData;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.DistributionSetTypeBeanQuery;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
|
||||
import org.eclipse.hawkbit.ui.management.event.DragEvent;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
@@ -49,21 +49,17 @@ import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
import com.vaadin.event.FieldEvents.TextChangeEvent;
|
||||
import com.vaadin.event.FieldEvents.TextChangeListener;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.CheckBox;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.Component;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.TextArea;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.Window;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
@@ -99,8 +95,8 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
@Autowired
|
||||
private transient UiProperties uiProperties;
|
||||
|
||||
private Button saveDistributionBtn;
|
||||
private Button discardDistributionBtn;
|
||||
// private Button saveDistributionBtn;
|
||||
// private Button discardDistributionBtn;
|
||||
private TextField distNameTextField;
|
||||
private TextField distVersionTextField;
|
||||
private Label madatoryLabel;
|
||||
@@ -109,7 +105,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
private ComboBox distsetTypeNameComboBox;
|
||||
private boolean editDistribution = Boolean.FALSE;
|
||||
private Long editDistId;
|
||||
private Window addDistributionWindow;
|
||||
private CommonDialogWindow addDistributionWindow;
|
||||
private String originalDistName;
|
||||
private String originalDistVersion;
|
||||
private String originalDistDescription;
|
||||
@@ -133,13 +129,16 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
|
||||
private void buildLayout() {
|
||||
/* action button layout ( save & discard ) */
|
||||
final HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
buttonsLayout.setSizeFull();
|
||||
buttonsLayout.setStyleName("dist-buttons-horz-layout");
|
||||
buttonsLayout.addComponents(saveDistributionBtn, discardDistributionBtn);
|
||||
buttonsLayout.setComponentAlignment(saveDistributionBtn, Alignment.BOTTOM_LEFT);
|
||||
buttonsLayout.setComponentAlignment(discardDistributionBtn, Alignment.BOTTOM_RIGHT);
|
||||
buttonsLayout.addStyleName("window-style");
|
||||
// final HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
// buttonsLayout.setSizeFull();
|
||||
// buttonsLayout.setStyleName("dist-buttons-horz-layout");
|
||||
// buttonsLayout.addComponents(saveDistributionBtn,
|
||||
// discardDistributionBtn);
|
||||
// buttonsLayout.setComponentAlignment(saveDistributionBtn,
|
||||
// Alignment.BOTTOM_LEFT);
|
||||
// buttonsLayout.setComponentAlignment(discardDistributionBtn,
|
||||
// Alignment.BOTTOM_RIGHT);
|
||||
// buttonsLayout.addStyleName("window-style");
|
||||
|
||||
/*
|
||||
* The main layout of the window contains mandatory info, textboxes
|
||||
@@ -151,7 +150,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
addComponents(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()), madatoryLabel,
|
||||
distsetTypeNameComboBox, distNameTextField, distVersionTextField, descTextArea, reqMigStepCheckbox);
|
||||
|
||||
addComponent(buttonsLayout);
|
||||
// addComponent(buttonsLayout);
|
||||
setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT);
|
||||
distNameTextField.focus();
|
||||
|
||||
@@ -193,15 +192,20 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
reqMigStepCheckbox.addStyleName(ValoTheme.CHECKBOX_SMALL);
|
||||
reqMigStepCheckbox.setId(SPUIComponetIdProvider.DIST_ADD_MIGRATION_CHECK);
|
||||
|
||||
/* save or update button */
|
||||
saveDistributionBtn = SPUIComponentProvider.getButton(SPUIComponetIdProvider.DIST_ADD_SAVE, "", "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
saveDistributionBtn.addClickListener(event -> saveDistribution());
|
||||
|
||||
/* close button */
|
||||
discardDistributionBtn = SPUIComponentProvider.getButton(SPUIComponetIdProvider.DIST_ADD_DISCARD, "", "", "",
|
||||
true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
discardDistributionBtn.addClickListener(event -> discardDistribution());
|
||||
// /* save or update button */
|
||||
// saveDistributionBtn =
|
||||
// SPUIComponentProvider.getButton(SPUIComponetIdProvider.DIST_ADD_SAVE,
|
||||
// "", "", "", true,
|
||||
// FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
// saveDistributionBtn.addClickListener(event -> saveDistribution());
|
||||
//
|
||||
// /* close button */
|
||||
// discardDistributionBtn =
|
||||
// SPUIComponentProvider.getButton(SPUIComponetIdProvider.DIST_ADD_DISCARD,
|
||||
// "", "", "",
|
||||
// true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
// discardDistributionBtn.addClickListener(event ->
|
||||
// discardDistribution());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -224,7 +228,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
}
|
||||
|
||||
private void enableSaveButton() {
|
||||
saveDistributionBtn.setEnabled(true);
|
||||
addDistributionWindow.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
private DistributionSetType getDefaultDistributionSetType() {
|
||||
@@ -234,7 +238,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
}
|
||||
|
||||
private void disableSaveButton() {
|
||||
saveDistributionBtn.setEnabled(false);
|
||||
addDistributionWindow.setSaveButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void saveDistribution() {
|
||||
@@ -422,7 +426,9 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
distsetTypeNameComboBox.removeStyleName(SPUIStyleDefinitions.SP_COMBOFIELD_ERROR);
|
||||
descTextArea.clear();
|
||||
reqMigStepCheckbox.clear();
|
||||
saveDistributionBtn.setEnabled(true);
|
||||
if (addDistributionWindow != null) {
|
||||
addDistributionWindow.setSaveButtonEnabled(true);
|
||||
}
|
||||
removeListeners();
|
||||
changedComponents.clear();
|
||||
}
|
||||
@@ -504,7 +510,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
public void populateValuesOfDistribution(final Long editDistId) {
|
||||
this.editDistId = editDistId;
|
||||
editDistribution = Boolean.TRUE;
|
||||
saveDistributionBtn.setEnabled(false);
|
||||
addDistributionWindow.setSaveButtonEnabled(false);
|
||||
final DistributionSet distSet = distributionSetManagement.findDistributionSetByIdWithDetails(editDistId);
|
||||
if (distSet != null) {
|
||||
distNameTextField.setValue(distSet.getName());
|
||||
@@ -526,13 +532,13 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout {
|
||||
}
|
||||
}
|
||||
|
||||
public Window getWindow() {
|
||||
public CommonDialogWindow getWindow() {
|
||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
||||
populateRequiredComponents();
|
||||
resetComponents();
|
||||
addDistributionWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
addDistributionWindow.setContent(this);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(),
|
||||
event -> discardDistribution());
|
||||
return addDistributionWindow;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,33 +8,26 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.management.dstag;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import static org.apache.commons.lang3.StringUtils.isNotEmpty;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent;
|
||||
import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent;
|
||||
import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetTag;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper;
|
||||
import org.eclipse.hawkbit.ui.management.tag.CreateUpdateTagLayout;
|
||||
import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.spring.events.EventScope;
|
||||
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.VaadinSessionScope;
|
||||
import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.OptionGroup;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.Window;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -43,247 +36,12 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
@SpringComponent
|
||||
@VaadinSessionScope
|
||||
public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayout {
|
||||
|
||||
private static final long serialVersionUID = 444276149954167545L;
|
||||
|
||||
@Autowired
|
||||
private transient UINotification uiNotification;
|
||||
|
||||
private static final String MISSING_TAG_NAME = "message.error.missing.tagname";
|
||||
private static final String TARGET_TAG_NAME_DYNAMIC_STYLE = "new-target-tag-name";
|
||||
private static final String MSG_TEXTFIELD_NAME = "textfield.name";
|
||||
|
||||
private Window distTagWindow;
|
||||
|
||||
public Window getWindow() {
|
||||
reset();
|
||||
distTagWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
distTagWindow.setContent(this);
|
||||
return distTagWindow;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void populateTagNameCombo() {
|
||||
tagNameComboBox.removeAllItems();
|
||||
final List<DistributionSetTag> distTagNameList = tagManagement.findAllDistributionSetTags();
|
||||
distTagNameList.forEach(value -> tagNameComboBox.addItem(value.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update DistributionTag.
|
||||
*/
|
||||
@Override
|
||||
public void save(final ClickEvent event) {
|
||||
if (mandatoryValuesPresent()) {
|
||||
final DistributionSetTag existingDistTag = tagManagement.findDistributionSetTag(tagName.getValue());
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
if (!checkIsDuplicate(existingDistTag)) {
|
||||
crateNewTag();
|
||||
}
|
||||
} else {
|
||||
|
||||
updateTag(existingDistTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new tag.
|
||||
*/
|
||||
private void crateNewTag() {
|
||||
|
||||
final String colorPicked = getColorPickedSting();
|
||||
final String tagNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String tagDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
|
||||
if (null != tagNameValue) {
|
||||
DistributionSetTag newDistTag = new DistributionSetTag(tagNameValue);
|
||||
if (null != tagDescValue) {
|
||||
newDistTag.setDescription(tagDescValue);
|
||||
}
|
||||
newDistTag.setColour(new Color(0, 146, 58).getCSS());
|
||||
if (colorPicked != null) {
|
||||
newDistTag.setColour(colorPicked);
|
||||
}
|
||||
newDistTag = tagManagement.createDistributionSetTag(newDistTag);
|
||||
uiNotification.displaySuccess(i18n.get("message.save.success", new Object[] { newDistTag.getName() }));
|
||||
resetDistTagValues();
|
||||
|
||||
} else {
|
||||
uiNotification.displayValidationError(i18n.get(MISSING_TAG_NAME));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* update tag.
|
||||
*/
|
||||
private void updateTag(final DistributionSetTag distObj) {
|
||||
final String nameUpdateValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String descUpdateValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
|
||||
if (null != nameUpdateValue) {
|
||||
distObj.setName(nameUpdateValue);
|
||||
distObj.setDescription(null != descUpdateValue ? descUpdateValue : null);
|
||||
// update target tag with color selected
|
||||
distObj.setColour(getColorPickedSting());
|
||||
tagManagement.updateDistributionSetTag(distObj);
|
||||
uiNotification.displaySuccess(i18n.get("message.update.success", new Object[] { distObj.getName() }));
|
||||
closeWindow();
|
||||
} else {
|
||||
uiNotification.displayValidationError(i18n.get("message.tag.update.mandatory"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void closeWindow() {
|
||||
distTagWindow.close();
|
||||
UI.getCurrent().removeWindow(distTagWindow);
|
||||
}
|
||||
|
||||
/**
|
||||
* RESET.
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
@Override
|
||||
public void discard(final ClickEvent event) {
|
||||
distTagWindow.setVisible(false);
|
||||
UI.getCurrent().removeWindow(distTagWindow);
|
||||
resetDistTagValues();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get color picked value in string.
|
||||
*
|
||||
* @return String of color picked value.
|
||||
*/
|
||||
private String getColorPickedSting() {
|
||||
return "rgb(" + getSelPreview().getColor().getRed() + "," + getSelPreview().getColor().getGreen() + ","
|
||||
+ getSelPreview().getColor().getBlue() + ")";
|
||||
}
|
||||
|
||||
/**
|
||||
* Color view.
|
||||
*
|
||||
* @return ColorPickerPreview as UI
|
||||
*/
|
||||
public SpColorPickerPreview getSelPreview() {
|
||||
return selPreview;
|
||||
}
|
||||
|
||||
/**
|
||||
* RESET.
|
||||
*/
|
||||
private void resetDistTagValues() {
|
||||
tagName.removeStyleName(TARGET_TAG_NAME_DYNAMIC_STYLE);
|
||||
tagName.addStyleName(SPUIDefinitions.NEW_TARGET_TAG_NAME);
|
||||
tagName.setValue("");
|
||||
tagName.setInputPrompt(i18n.get(MSG_TEXTFIELD_NAME));
|
||||
setColor(new Color(0, 146, 58));
|
||||
distTagWindow.setVisible(false);
|
||||
tagPreviewBtnClicked = false;
|
||||
UI.getCurrent().removeWindow(distTagWindow);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see hawkbit.server.ui.management.CreateUpdateTagLayout#createOptionGroup
|
||||
* ()
|
||||
*/
|
||||
@Override
|
||||
protected void createOptionGroup() {
|
||||
final List<String> optionValues = new ArrayList<>();
|
||||
if (permChecker.hasCreateDistributionPermission()) {
|
||||
optionValues.add(createTag.getValue());
|
||||
}
|
||||
if (permChecker.hasUpdateDistributionPermission()) {
|
||||
optionValues.add(updateTag.getValue());
|
||||
}
|
||||
|
||||
createOptionGroup(optionValues);
|
||||
}
|
||||
|
||||
private void createOptionGroup(final List<String> tagOptions) {
|
||||
optiongroup = new OptionGroup("", tagOptions);
|
||||
optiongroup.setCaption(null);
|
||||
optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL);
|
||||
optiongroup.addStyleName("custom-option-group");
|
||||
optiongroup.setNullSelectionAllowed(false);
|
||||
if (!tagOptions.isEmpty()) {
|
||||
optiongroup.select(tagOptions.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Boolean mandatoryValuesPresent() {
|
||||
if (Strings.isNullOrEmpty(tagName.getValue())) {
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
if (optiongroup.getValue().equals(updateTagNw)) {
|
||||
if (null == tagNameComboBox.getValue()) {
|
||||
uiNotification.displayValidationError(i18n.get("message.error.missing.tagname"));
|
||||
} else {
|
||||
uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Select tag & set tag name & tag desc values corresponding to selected
|
||||
* tag.
|
||||
*
|
||||
* @param targetTagSelected
|
||||
* as the selected tag from combo
|
||||
*/
|
||||
@Override
|
||||
public void setTagDetails(final String distTagSelected) {
|
||||
tagName.setValue(distTagSelected);
|
||||
final DistributionSetTag selectedDistTag = tagManagement.findDistributionSetTag(distTagSelected);
|
||||
if (null != selectedDistTag) {
|
||||
tagDesc.setValue(selectedDistTag.getDescription());
|
||||
if (null == selectedDistTag.getColour()) {
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview.setColor(selectedColor);
|
||||
colorSelect.setColor(selectedColor);
|
||||
createDynamicStyleForComponents(tagName, tagDesc, DEFAULT_COLOR);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
} else {
|
||||
selectedColor = rgbToColorConverter(selectedDistTag.getColour());
|
||||
selPreview.setColor(selectedColor);
|
||||
colorSelect.setColor(selectedColor);
|
||||
createDynamicStyleForComponents(tagName, tagDesc, selectedDistTag.getColour());
|
||||
getPreviewButtonColor(selectedDistTag.getColour());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checking Tag already existed or not.
|
||||
*
|
||||
* @param existingDistTag
|
||||
* @return
|
||||
*/
|
||||
|
||||
private Boolean checkIsDuplicate(final DistributionSetTag existingDistTag) {
|
||||
if (existingDistTag != null) {
|
||||
uiNotification.displayValidationError(
|
||||
i18n.get("message.tag.duplicate.check", new Object[] { existingDistTag.getName() }));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
@@ -305,4 +63,104 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void populateTagNameCombo() {
|
||||
tagNameComboBox.removeAllItems();
|
||||
final List<DistributionSetTag> distTagNameList = tagManagement.findAllDistributionSetTags();
|
||||
distTagNameList.forEach(value -> tagNameComboBox.addItem(value.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update DistributionTag.
|
||||
*/
|
||||
@Override
|
||||
public void save(final ClickEvent event) {
|
||||
if (mandatoryValuesPresent()) {
|
||||
final DistributionSetTag existingDistTag = tagManagement.findDistributionSetTag(tagName.getValue());
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
if (!checkIsDuplicate(existingDistTag)) {
|
||||
crateNewTag();
|
||||
}
|
||||
} else {
|
||||
|
||||
updateExistingTag(existingDistTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new tag.
|
||||
*/
|
||||
protected void crateNewTag() {
|
||||
super.createNewTag();
|
||||
if (isNotEmpty(getTagNameValue())) {
|
||||
DistributionSetTag newDistTag = new DistributionSetTag(getTagNameValue());
|
||||
if (isNotEmpty(getTagDescValue())) {
|
||||
newDistTag.setDescription(getTagDescValue());
|
||||
}
|
||||
newDistTag.setColour(ColorPickerConstants.START_COLOR.getCSS());
|
||||
if (isNotEmpty(getColorPicked())) {
|
||||
newDistTag.setColour(getColorPicked());
|
||||
}
|
||||
newDistTag = tagManagement.createDistributionSetTag(newDistTag);
|
||||
displaySuccess(newDistTag.getName());
|
||||
resetDistTagValues();
|
||||
} else {
|
||||
displayValidationError(i18n.get(SPUILabelDefinitions.MISSING_TAG_NAME));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* RESET.
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
@Override
|
||||
public void discard(final ClickEvent event) {
|
||||
super.discard(event);
|
||||
resetDistTagValues();
|
||||
}
|
||||
|
||||
/**
|
||||
* RESET.
|
||||
*/
|
||||
private void resetDistTagValues() {
|
||||
tagName.removeStyleName(TARGET_TAG_NAME_DYNAMIC_STYLE);
|
||||
tagName.addStyleName(SPUIDefinitions.NEW_TARGET_TAG_NAME);
|
||||
tagName.setValue("");
|
||||
tagName.setInputPrompt(i18n.get(MSG_TEXTFIELD_NAME));
|
||||
setColor(ColorPickerConstants.START_COLOR);
|
||||
getWindow().setVisible(false);
|
||||
tagPreviewBtnClicked = false;
|
||||
UI.getCurrent().removeWindow(getWindow());
|
||||
}
|
||||
|
||||
/**
|
||||
* Select tag & set tag name & tag desc values corresponding to selected
|
||||
* tag.
|
||||
*
|
||||
* @param distTagSelected
|
||||
* as the selected tag from combo
|
||||
*/
|
||||
@Override
|
||||
public void setTagDetails(final String distTagSelected) {
|
||||
tagName.setValue(distTagSelected);
|
||||
final DistributionSetTag selectedDistTag = tagManagement.findDistributionSetTag(distTagSelected);
|
||||
if (null != selectedDistTag) {
|
||||
tagDesc.setValue(selectedDistTag.getDescription());
|
||||
if (null == selectedDistTag.getColour()) {
|
||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||
} else {
|
||||
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedDistTag.getColour()),
|
||||
selectedDistTag.getColour());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createRequiredComponents() {
|
||||
super.createRequiredComponents();
|
||||
createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,52 +8,53 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.management.tag;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
import org.eclipse.hawkbit.repository.SpPermissionChecker;
|
||||
import org.eclipse.hawkbit.repository.TagManagement;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetTag;
|
||||
import org.eclipse.hawkbit.repository.model.Tag;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.common.CoordinatesToColor;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerLayout;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.vaadin.data.Property.ValueChangeEvent;
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.server.Page;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.ui.AbstractColorPicker.Coordinates2Color;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.OptionGroup;
|
||||
import com.vaadin.ui.Slider;
|
||||
import com.vaadin.ui.Slider.ValueOutOfBoundsException;
|
||||
import com.vaadin.ui.TextArea;
|
||||
import com.vaadin.ui.TextField;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeEvent;
|
||||
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
|
||||
import com.vaadin.ui.components.colorpicker.ColorPickerGradient;
|
||||
import com.vaadin.ui.components.colorpicker.ColorSelector;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
@@ -63,14 +64,16 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
public abstract class CreateUpdateTagLayout extends CustomComponent implements ColorChangeListener, ColorSelector {
|
||||
private static final long serialVersionUID = 4229177824620576456L;
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateTagLayout.class);
|
||||
protected static final String DEFAULT_COLOR = "rgb(44,151,32)";
|
||||
private static final String TAG_NAME_DYNAMIC_STYLE = "new-tag-name";
|
||||
private static final String TAG_DESC_DYNAMIC_STYLE = "new-tag-desc";
|
||||
private static final String TAG_DYNAMIC_STYLE = "tag-color-preview";
|
||||
protected static final String MESSAGE_ERROR_MISSING_TAGNAME = "message.error.missing.tagname";
|
||||
|
||||
protected String createTagNw;
|
||||
protected String updateTagNw;
|
||||
|
||||
protected CommonDialogWindow window;
|
||||
|
||||
@Autowired
|
||||
private transient UiProperties uiProperties;
|
||||
|
||||
@@ -85,43 +88,38 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
|
||||
@Autowired
|
||||
protected SpPermissionChecker permChecker;
|
||||
/**
|
||||
* Local Instance of ColorPickerPreview.
|
||||
*/
|
||||
protected SpColorPickerPreview selPreview;
|
||||
|
||||
protected Label createTag;
|
||||
protected Label updateTag;
|
||||
@Autowired
|
||||
protected transient UINotification uiNotification;
|
||||
|
||||
private final FormLayout formLayout = new FormLayout();
|
||||
|
||||
private Label comboLabel;
|
||||
private Label colorLabel;
|
||||
private Label madatoryLabel;
|
||||
protected Label colorLabel;
|
||||
protected Label madatoryLabel;
|
||||
protected TextField tagName;
|
||||
protected TextArea tagDesc;
|
||||
private Button saveTag;
|
||||
private Button discardTag;
|
||||
private Button tagColorPreviewBtn;
|
||||
protected OptionGroup optiongroup;
|
||||
protected Button tagColorPreviewBtn;
|
||||
protected OptionGroup optiongroup = new OptionGroup();
|
||||
protected ComboBox tagNameComboBox;
|
||||
|
||||
protected ColorPickerGradient colorSelect;
|
||||
private Set<ColorSelector> selectors;
|
||||
protected Color selectedColor;
|
||||
|
||||
private Slider redSlider;
|
||||
private Slider greenSlider;
|
||||
private Slider blueSlider;
|
||||
|
||||
private VerticalLayout comboLayout;
|
||||
private VerticalLayout sliders;
|
||||
private VerticalLayout colorPickerLayout;
|
||||
private HorizontalLayout mainLayout;
|
||||
private VerticalLayout fieldLayout;
|
||||
|
||||
/** RGB color converter. */
|
||||
private final Coordinates2Color rgbConverter = new CoordinatesToColor();
|
||||
protected final VerticalLayout comboLayout = new VerticalLayout();
|
||||
private final ColorPickerLayout colorPickerLayout = new ColorPickerLayout();
|
||||
private final HorizontalLayout mainLayout = new HorizontalLayout();
|
||||
final VerticalLayout contentLayout = new VerticalLayout();
|
||||
|
||||
protected boolean tagPreviewBtnClicked = false;
|
||||
|
||||
private String colorPicked;
|
||||
private String tagNameValue;
|
||||
private String tagDescValue;
|
||||
|
||||
protected void createWindow() {
|
||||
reset();
|
||||
setWindow(SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Save new tag / update new tag.
|
||||
*
|
||||
@@ -134,12 +132,9 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
protected abstract void discard(final Button.ClickEvent event);
|
||||
|
||||
/**
|
||||
* create option group with Create tag/Update tag based on permissions.
|
||||
*/
|
||||
protected abstract void createOptionGroup();
|
||||
protected void discard(final Button.ClickEvent event) {
|
||||
UI.getCurrent().removeWindow(window);
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate target name combo.
|
||||
@@ -152,9 +147,11 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
* Init the layout.
|
||||
*/
|
||||
public void init() {
|
||||
|
||||
createRequiredComponents();
|
||||
addListeners();
|
||||
buildLayout();
|
||||
createWindow();
|
||||
addListeners();
|
||||
eventBus.subscribe(this);
|
||||
}
|
||||
|
||||
@@ -163,11 +160,9 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
eventBus.unsubscribe(this);
|
||||
}
|
||||
|
||||
private void createRequiredComponents() {
|
||||
protected void createRequiredComponents() {
|
||||
createTagNw = i18n.get("label.create.tag");
|
||||
updateTagNw = i18n.get("label.update.tag");
|
||||
createTag = SPUIComponentProvider.getLabel(createTagNw, null);
|
||||
updateTag = SPUIComponentProvider.getLabel(i18n.get("label.update.tag"), null);
|
||||
comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag"), null);
|
||||
madatoryLabel = getMandatoryLabel();
|
||||
colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag.color"), null);
|
||||
@@ -178,103 +173,57 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
tagName.setId(SPUIDefinitions.NEW_TARGET_TAG_NAME);
|
||||
|
||||
tagDesc = SPUIComponentProvider.getTextArea(null, "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_DESC,
|
||||
false, "", i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "",
|
||||
ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_DESC, false, "", i18n.get("textfield.description"),
|
||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
|
||||
tagDesc.setId(SPUIDefinitions.NEW_TARGET_TAG_DESC);
|
||||
tagDesc.setImmediate(true);
|
||||
tagDesc.setNullRepresentation("");
|
||||
|
||||
tagNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.tag"), "", "", null, null, false,
|
||||
"", i18n.get("label.combobox.tag"));
|
||||
tagNameComboBox = SPUIComponentProvider.getComboBox(null, "", "", null, null, false, "",
|
||||
i18n.get("label.combobox.tag"));
|
||||
tagNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE);
|
||||
tagNameComboBox.setImmediate(true);
|
||||
|
||||
saveTag = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_TAG_SAVE, "", "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
saveTag.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
|
||||
discardTag = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_TAG_DISRACD, "", "",
|
||||
"discard-button-style", true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
discardTag.addStyleName(ValoTheme.BUTTON_BORDERLESS);
|
||||
|
||||
tagColorPreviewBtn = new Button();
|
||||
tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE);
|
||||
|
||||
selectors = new HashSet<>();
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview = new SpColorPickerPreview(selectedColor);
|
||||
|
||||
colorSelect = new ColorPickerGradient("rgb-gradient", rgbConverter);
|
||||
colorSelect.setColor(selectedColor);
|
||||
colorSelect.setWidth("220px");
|
||||
|
||||
redSlider = createRGBSlider("", "red");
|
||||
greenSlider = createRGBSlider("", "green");
|
||||
blueSlider = createRGBSlider("", "blue");
|
||||
setRgbSliderValues(selectedColor);
|
||||
|
||||
createOptionGroup();
|
||||
|
||||
ColorPickerHelper.setRgbSliderValues(colorPickerLayout);
|
||||
}
|
||||
|
||||
private void buildLayout() {
|
||||
comboLayout = new VerticalLayout();
|
||||
|
||||
sliders = new VerticalLayout();
|
||||
sliders.addComponents(redSlider, greenSlider, blueSlider);
|
||||
|
||||
selectors.add(colorSelect);
|
||||
|
||||
colorPickerLayout = new VerticalLayout();
|
||||
colorPickerLayout.setStyleName("rgb-vertical-layout");
|
||||
colorPickerLayout.addComponent(selPreview);
|
||||
colorPickerLayout.addComponent(colorSelect);
|
||||
|
||||
fieldLayout = new VerticalLayout();
|
||||
fieldLayout.setSpacing(false);
|
||||
fieldLayout.setMargin(false);
|
||||
fieldLayout.setWidth("100%");
|
||||
fieldLayout.setHeight(null);
|
||||
fieldLayout.addComponent(optiongroup);
|
||||
fieldLayout.addComponent(comboLayout);
|
||||
fieldLayout.addComponent(madatoryLabel);
|
||||
fieldLayout.addComponent(tagName);
|
||||
fieldLayout.addComponent(tagDesc);
|
||||
protected void buildLayout() {
|
||||
|
||||
final HorizontalLayout colorLabelLayout = new HorizontalLayout();
|
||||
colorLabelLayout.setMargin(false);
|
||||
colorLabelLayout.addComponents(colorLabel, tagColorPreviewBtn);
|
||||
fieldLayout.addComponent(colorLabelLayout);
|
||||
|
||||
final HorizontalLayout buttonLayout = new HorizontalLayout();
|
||||
buttonLayout.addComponent(saveTag);
|
||||
buttonLayout.addComponent(discardTag);
|
||||
buttonLayout.setComponentAlignment(discardTag, Alignment.BOTTOM_RIGHT);
|
||||
buttonLayout.setComponentAlignment(saveTag, Alignment.BOTTOM_LEFT);
|
||||
buttonLayout.addStyleName("window-style");
|
||||
buttonLayout.setWidth("152px");
|
||||
formLayout.addComponent(optiongroup);
|
||||
formLayout.addComponent(comboLayout);
|
||||
formLayout.addComponent(madatoryLabel);
|
||||
formLayout.addComponent(tagName);
|
||||
formLayout.addComponent(tagDesc);
|
||||
formLayout.addStyleName("form-lastrow");
|
||||
formLayout.setSizeFull();
|
||||
|
||||
final VerticalLayout fieldButtonLayout = new VerticalLayout();
|
||||
fieldButtonLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()));
|
||||
fieldButtonLayout.addComponent(fieldLayout);
|
||||
fieldButtonLayout.addComponent(buttonLayout);
|
||||
fieldButtonLayout.setComponentAlignment(buttonLayout, Alignment.BOTTOM_CENTER);
|
||||
contentLayout.addComponent(formLayout);
|
||||
contentLayout.addComponent(colorLabelLayout);
|
||||
contentLayout.setComponentAlignment(formLayout, Alignment.MIDDLE_CENTER);
|
||||
contentLayout.setComponentAlignment(colorLabelLayout, Alignment.MIDDLE_LEFT);
|
||||
contentLayout.setSizeFull();
|
||||
|
||||
mainLayout = new HorizontalLayout();
|
||||
mainLayout.setSizeFull();
|
||||
mainLayout.addComponent(fieldButtonLayout);
|
||||
mainLayout.addComponent(contentLayout);
|
||||
|
||||
setCompositionRoot(mainLayout);
|
||||
tagName.focus();
|
||||
}
|
||||
|
||||
private void addListeners() {
|
||||
saveTag.addClickListener(event -> save(event));
|
||||
discardTag.addClickListener(event -> discard(event));
|
||||
colorSelect.addColorChangeListener(this);
|
||||
selPreview.addColorChangeListener(this);
|
||||
colorPickerLayout.getColorSelect().addColorChangeListener(this);
|
||||
colorPickerLayout.getSelPreview().addColorChangeListener(this);
|
||||
tagColorPreviewBtn.addClickListener(event -> previewButtonClicked());
|
||||
optiongroup.addValueChangeListener(event -> optionValueChanged(event));
|
||||
tagNameComboBox.addValueChangeListener(event -> tagNameChosen(event));
|
||||
@@ -285,11 +234,11 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
* Open color picker on click of preview button. Auto select the color based
|
||||
* on target tag if already selected.
|
||||
*/
|
||||
private void previewButtonClicked() {
|
||||
protected void previewButtonClicked() {
|
||||
if (!tagPreviewBtnClicked) {
|
||||
setColor();
|
||||
selPreview.setColor(selectedColor);
|
||||
fieldLayout.addComponent(sliders);
|
||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||
contentLayout.addComponent(colorPickerLayout.getSliders());
|
||||
mainLayout.addComponent(colorPickerLayout);
|
||||
mainLayout.setComponentAlignment(colorPickerLayout, Alignment.BOTTOM_CENTER);
|
||||
}
|
||||
@@ -303,7 +252,8 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
}
|
||||
|
||||
if (tagNameComboBox.getValue() == null) {
|
||||
selectedColor = rgbToColorConverter(DEFAULT_COLOR);
|
||||
colorPickerLayout
|
||||
.setSelectedColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -312,40 +262,18 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
if (targetTagSelected == null) {
|
||||
final DistributionSetTag distTag = tagManagement
|
||||
.findDistributionSetTag(tagNameComboBox.getValue().toString());
|
||||
selectedColor = distTag.getColour() != null ? rgbToColorConverter(distTag.getColour())
|
||||
: rgbToColorConverter(DEFAULT_COLOR);
|
||||
colorPickerLayout.setSelectedColor(
|
||||
distTag.getColour() != null ? ColorPickerHelper.rgbToColorConverter(distTag.getColour())
|
||||
: ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
} else {
|
||||
selectedColor = targetTagSelected.getColour() != null ? rgbToColorConverter(targetTagSelected.getColour())
|
||||
: rgbToColorConverter(DEFAULT_COLOR);
|
||||
colorPickerLayout.setSelectedColor(targetTagSelected.getColour() != null
|
||||
? ColorPickerHelper.rgbToColorConverter(targetTagSelected.getColour())
|
||||
: ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Covert RGB code to {@Color}.
|
||||
*
|
||||
* @param value
|
||||
* RGB vale
|
||||
* @return Color
|
||||
*/
|
||||
protected Color rgbToColorConverter(final String value) {
|
||||
if (!value.startsWith("rgb")) {
|
||||
return null;
|
||||
}
|
||||
// RGB color format rgb/rgba(255,255,255,0.1)
|
||||
final String[] colors = value.substring(value.indexOf('(') + 1, value.length() - 1).split(",");
|
||||
final int red = Integer.parseInt(colors[0]);
|
||||
final int green = Integer.parseInt(colors[1]);
|
||||
final int blue = Integer.parseInt(colors[2]);
|
||||
if (colors.length > 3) {
|
||||
final int alpha = (int) (Double.parseDouble(colors[3]) * 255d);
|
||||
return new Color(red, green, blue, alpha);
|
||||
} else {
|
||||
return new Color(red, green, blue);
|
||||
}
|
||||
}
|
||||
|
||||
private Label getMandatoryLabel() {
|
||||
protected Label getMandatoryLabel() {
|
||||
final Label label = new Label(i18n.get("label.mandatory.field"));
|
||||
label.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
return label;
|
||||
@@ -366,12 +294,11 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
|
||||
tagDesc.clear();
|
||||
restoreComponentStyles();
|
||||
fieldLayout.removeComponent(sliders);
|
||||
// fieldLayout.removeComponent(colorPickerLayout.getSliders());
|
||||
mainLayout.removeComponent(colorPickerLayout);
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview.setColor(selectedColor);
|
||||
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||
tagPreviewBtnClicked = false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -381,6 +308,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
* ValueChangeEvent
|
||||
*/
|
||||
private void optionValueChanged(final ValueChangeEvent event) {
|
||||
|
||||
if ("Update Tag".equals(event.getProperty().getValue())) {
|
||||
tagName.clear();
|
||||
tagDesc.clear();
|
||||
@@ -399,14 +327,14 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
}
|
||||
// close the color picker layout
|
||||
tagPreviewBtnClicked = false;
|
||||
// reset the selected color - Set defualt color
|
||||
// reset the selected color - Set default color
|
||||
restoreComponentStyles();
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
selPreview.setColor(rgbToColorConverter(DEFAULT_COLOR));
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
colorPickerLayout.getSelPreview()
|
||||
.setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR));
|
||||
// remove the sliders and color picker layout
|
||||
fieldLayout.removeComponent(sliders);
|
||||
// fieldLayout.removeComponent(colorPickerLayout.getSliders());
|
||||
mainLayout.removeComponent(colorPickerLayout);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -421,14 +349,14 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
// hide target name combo
|
||||
comboLayout.removeComponent(comboLabel);
|
||||
comboLayout.removeComponent(tagNameComboBox);
|
||||
fieldLayout.removeComponent(sliders);
|
||||
contentLayout.removeComponent(colorPickerLayout.getSliders());
|
||||
mainLayout.removeComponent(colorPickerLayout);
|
||||
|
||||
optiongroup.select(createTagNw);
|
||||
|
||||
// Default green color
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview.setColor(selectedColor);
|
||||
colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor());
|
||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||
tagPreviewBtnClicked = false;
|
||||
}
|
||||
|
||||
@@ -439,12 +367,13 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
@Override
|
||||
public void colorChanged(final ColorChangeEvent event) {
|
||||
setColor(event.getColor());
|
||||
for (final ColorSelector select : selectors) {
|
||||
if (!event.getSource().equals(select) && select.equals(this) && !select.getColor().equals(selectedColor)) {
|
||||
select.setColor(selectedColor);
|
||||
for (final ColorSelector select : colorPickerLayout.getSelectors()) {
|
||||
if (!event.getSource().equals(select) && select.equals(this)
|
||||
&& !select.getColor().equals(colorPickerLayout.getSelectedColor())) {
|
||||
select.setColor(colorPickerLayout.getSelectedColor());
|
||||
}
|
||||
}
|
||||
setRgbSliderValues(selectedColor);
|
||||
ColorPickerHelper.setRgbSliderValues(colorPickerLayout);
|
||||
getPreviewButtonColor(event.getColor().getCSS());
|
||||
createDynamicStyleForComponents(tagName, tagDesc, event.getColor().getCSS());
|
||||
}
|
||||
@@ -461,28 +390,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
Page.getCurrent().getJavaScript().execute(HawkbitCommonUtil.getPreviewButtonColorScript(color));
|
||||
}
|
||||
|
||||
private Slider createRGBSlider(final String caption, final String styleName) {
|
||||
final Slider slider = new Slider(caption, 0, 255);
|
||||
slider.setImmediate(true);
|
||||
slider.setWidth("150px");
|
||||
slider.addStyleName(styleName);
|
||||
return slider;
|
||||
}
|
||||
|
||||
private void setRgbSliderValues(final Color color) {
|
||||
try {
|
||||
final double redColorValue = color.getRed();
|
||||
redSlider.setValue(new Double(redColorValue));
|
||||
final double blueColorValue = color.getBlue();
|
||||
blueSlider.setValue(new Double(blueColorValue));
|
||||
final double greenColorValue = color.getGreen();
|
||||
greenSlider.setValue(new Double(greenColorValue));
|
||||
} catch (final ValueOutOfBoundsException e) {
|
||||
LOG.error("Unable to set RGB color value to " + color.getRed() + "," + color.getGreen() + ","
|
||||
+ color.getBlue(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set tag name and desc field border color based on chosen color.
|
||||
*
|
||||
@@ -507,7 +414,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
tagDesc.removeStyleName(TAG_DESC_DYNAMIC_STYLE);
|
||||
tagName.addStyleName(SPUIDefinitions.TAG_NAME);
|
||||
tagDesc.addStyleName(SPUIDefinitions.TAG_DESC);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -531,56 +438,44 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
if (color == null) {
|
||||
return;
|
||||
}
|
||||
selectedColor = color;
|
||||
selPreview.setColor(selectedColor);
|
||||
final String colorPickedPreview = selPreview.getColor().getCSS();
|
||||
if (tagName.isEnabled() && null != colorSelect) {
|
||||
colorPickerLayout.setSelectedColor(color);
|
||||
colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor());
|
||||
final String colorPickedPreview = colorPickerLayout.getSelPreview().getColor().getCSS();
|
||||
if (tagName.isEnabled() && null != colorPickerLayout.getColorSelect()) {
|
||||
createDynamicStyleForComponents(tagName, tagDesc, colorPickedPreview);
|
||||
colorSelect.setColor(selPreview.getColor());
|
||||
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
|
||||
}
|
||||
}
|
||||
|
||||
protected void closeWindow() {
|
||||
window.close();
|
||||
UI.getCurrent().removeWindow(window);
|
||||
}
|
||||
|
||||
/**
|
||||
* Value change listeners implementations of sliders.
|
||||
* create option group with Create tag/Update tag based on permissions.
|
||||
*/
|
||||
private void slidersValueChangeListeners() {
|
||||
redSlider.addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = -8336732888800920839L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double red = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color((int) red, selectedColor.getGreen(), selectedColor.getBlue());
|
||||
setColorToComponents(newColor);
|
||||
protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePersmission) {
|
||||
final List<String> optionValues = new ArrayList<>();
|
||||
if (hasCreatePermission) {
|
||||
optionValues.add(createTagNw);
|
||||
}
|
||||
});
|
||||
greenSlider.addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = 1236358037766775663L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double green = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color(selectedColor.getRed(), (int) green, selectedColor.getBlue());
|
||||
setColorToComponents(newColor);
|
||||
if (hasUpdatePersmission) {
|
||||
optionValues.add(updateTagNw);
|
||||
}
|
||||
});
|
||||
blueSlider.addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = 8466370763686043947L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double blue = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color(selectedColor.getRed(), selectedColor.getGreen(), (int) blue);
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
createOptionGroup(optionValues);
|
||||
}
|
||||
|
||||
private void setColorToComponents(final Color newColor) {
|
||||
setColor(newColor);
|
||||
colorSelect.setColor(newColor);
|
||||
getPreviewButtonColor(newColor.getCSS());
|
||||
createDynamicStyleForComponents(tagName, tagDesc, newColor.getCSS());
|
||||
protected void createOptionGroup(final List<String> tagOptions) {
|
||||
optiongroup = new OptionGroup("", tagOptions);
|
||||
optiongroup.setCaption("Select Action");
|
||||
optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL);
|
||||
optiongroup.addStyleName("custom-option-group");
|
||||
|
||||
optiongroup.setNullSelectionAllowed(false);
|
||||
if (!tagOptions.isEmpty()) {
|
||||
optiongroup.select(tagOptions.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -591,4 +486,168 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C
|
||||
public void removeColorChangeListener(final ColorChangeListener listener) {
|
||||
}
|
||||
|
||||
public ColorPickerLayout getColorPickerLayout() {
|
||||
return colorPickerLayout;
|
||||
}
|
||||
|
||||
public CommonDialogWindow getWindow() {
|
||||
reset();
|
||||
return window;
|
||||
}
|
||||
|
||||
public void setWindow(final CommonDialogWindow window) {
|
||||
this.window = window;
|
||||
}
|
||||
|
||||
/**
|
||||
* Value change listeners implementations of sliders.
|
||||
*/
|
||||
private void slidersValueChangeListeners() {
|
||||
colorPickerLayout.getRedSlider().addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = -8336732888800920839L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double red = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color((int) red, colorPickerLayout.getSelectedColor().getGreen(),
|
||||
colorPickerLayout.getSelectedColor().getBlue());
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
colorPickerLayout.getGreenSlider().addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = 1236358037766775663L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double green = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color(colorPickerLayout.getSelectedColor().getRed(), (int) green,
|
||||
colorPickerLayout.getSelectedColor().getBlue());
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
colorPickerLayout.getBlueSlider().addValueChangeListener(new ValueChangeListener() {
|
||||
private static final long serialVersionUID = 8466370763686043947L;
|
||||
|
||||
@Override
|
||||
public void valueChange(final ValueChangeEvent event) {
|
||||
final double blue = (Double) event.getProperty().getValue();
|
||||
final Color newColor = new Color(colorPickerLayout.getSelectedColor().getRed(),
|
||||
colorPickerLayout.getSelectedColor().getGreen(), (int) blue);
|
||||
setColorToComponents(newColor);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setColorToComponents(final Color newColor) {
|
||||
setColor(newColor);
|
||||
colorPickerLayout.getColorSelect().setColor(newColor);
|
||||
getPreviewButtonColor(newColor.getCSS());
|
||||
createDynamicStyleForComponents(tagName, tagDesc, newColor.getCSS());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new tag.
|
||||
*/
|
||||
protected void createNewTag() {
|
||||
colorPicked = ColorPickerHelper.getColorPickedString(colorPickerLayout.getSelPreview());
|
||||
tagNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
tagDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* update tag.
|
||||
*/
|
||||
protected void updateExistingTag(final Tag targetObj) {
|
||||
final String nameUpdateValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String descUpdateValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
|
||||
if (null != nameUpdateValue) {
|
||||
targetObj.setName(nameUpdateValue);
|
||||
targetObj.setDescription(null != descUpdateValue ? descUpdateValue : null);
|
||||
targetObj.setColour(ColorPickerHelper.getColorPickedString(colorPickerLayout.getSelPreview()));
|
||||
if (targetObj instanceof TargetTag) {
|
||||
tagManagement.updateTargetTag((TargetTag) targetObj);
|
||||
} else if (targetObj instanceof DistributionSetTag) {
|
||||
tagManagement.updateDistributionSetTag((DistributionSetTag) targetObj);
|
||||
}
|
||||
uiNotification.displaySuccess(i18n.get("message.update.success", new Object[] { targetObj.getName() }));
|
||||
closeWindow();
|
||||
} else {
|
||||
uiNotification.displayValidationError(i18n.get("message.tag.update.mandatory"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void displaySuccess(final String tagName) {
|
||||
uiNotification.displaySuccess(i18n.get("message.save.success", new Object[] { tagName }));
|
||||
}
|
||||
|
||||
protected void displayValidationError(final String errorMessage) {
|
||||
uiNotification.displayValidationError(errorMessage);
|
||||
}
|
||||
|
||||
protected void setTagColor(final Color selectedColor, final String previewColor) {
|
||||
getColorPickerLayout().setSelectedColor(selectedColor);
|
||||
getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor());
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor());
|
||||
createDynamicStyleForComponents(tagName, tagDesc, previewColor);
|
||||
getPreviewButtonColor(previewColor);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected Boolean mandatoryValuesPresent() {
|
||||
if (Strings.isNullOrEmpty(tagName.getValue())) {
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
if (optiongroup.getValue().equals(updateTagNw)) {
|
||||
if (null == tagNameComboBox.getValue()) {
|
||||
displayValidationError(i18n.get(MESSAGE_ERROR_MISSING_TAGNAME));
|
||||
} else {
|
||||
displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
protected Boolean checkIsDuplicate(final Tag existingTag) {
|
||||
if (existingTag != null) {
|
||||
displayValidationError(i18n.get("message.tag.duplicate.check", new Object[] { existingTag.getName() }));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
public String getColorPicked() {
|
||||
return colorPicked;
|
||||
}
|
||||
|
||||
public void setColorPicked(final String colorPicked) {
|
||||
this.colorPicked = colorPicked;
|
||||
}
|
||||
|
||||
public String getTagNameValue() {
|
||||
return tagNameValue;
|
||||
}
|
||||
|
||||
public void setTagNameValue(final String tagNameValue) {
|
||||
this.tagNameValue = tagNameValue;
|
||||
}
|
||||
|
||||
public String getTagDescValue() {
|
||||
return tagDescValue;
|
||||
}
|
||||
|
||||
public void setTagDescValue(final String tagDescValue) {
|
||||
this.tagDescValue = tagDescValue;
|
||||
}
|
||||
|
||||
public FormLayout getFormLayout() {
|
||||
return formLayout;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.eclipse.hawkbit.repository.TargetManagement;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
@@ -37,9 +38,11 @@ import com.vaadin.event.FieldEvents.TextChangeListener;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.VaadinSessionScope;
|
||||
import com.vaadin.ui.AbstractOrderedLayout;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.TextArea;
|
||||
@@ -79,12 +82,12 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
private TextField nameTextField;
|
||||
private TextArea descTextArea;
|
||||
private Label madatoryLabel;
|
||||
private Button saveTarget;
|
||||
private Button discardTarget;
|
||||
// private Button saveTarget;
|
||||
// private Button discardTarget;
|
||||
private boolean editTarget = Boolean.FALSE;
|
||||
private String controllerId;
|
||||
private VerticalLayout mainLayout;
|
||||
private Window addTargetWindow;
|
||||
private CommonDialogWindow addTargetWindow;
|
||||
|
||||
private String oldTargetName;
|
||||
private String oldTargetDesc;
|
||||
@@ -100,7 +103,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
/* register all listeners related to the Window */
|
||||
addListeners();
|
||||
setCompositionRoot(mainLayout);
|
||||
|
||||
}
|
||||
|
||||
private void createRequiredComponents() {
|
||||
@@ -124,25 +126,26 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
madatoryLabel = new Label(i18n.get("label.mandatory.field"));
|
||||
madatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR + " " + ValoTheme.LABEL_SMALL);
|
||||
|
||||
/* save or update button */
|
||||
saveTarget = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_SAVE, "", "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
saveTarget.addClickListener(event -> saveTargetListner());
|
||||
// /* save or update button */
|
||||
// saveTarget = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_SAVE, "", "", "", true,
|
||||
// FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class);
|
||||
// saveTarget.addClickListener(event -> saveTargetListner());
|
||||
|
||||
/* close button */
|
||||
discardTarget = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_DISCARD, "", "", "", true,
|
||||
FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
discardTarget.addClickListener(event -> discardTargetListner());
|
||||
// /* close button */
|
||||
// discardTarget = SPUIComponentProvider.getButton(SPUIDefinitions.NEW_TARGET_DISCARD, "", "", "", true,
|
||||
// FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class);
|
||||
// discardTarget.addClickListener(event -> discardTargetListner());
|
||||
}
|
||||
|
||||
private void buildLayout() {
|
||||
/* action button layout (save & dicard) */
|
||||
final HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
buttonsLayout.setSizeFull();
|
||||
buttonsLayout.addComponents(saveTarget, discardTarget);
|
||||
buttonsLayout.setComponentAlignment(saveTarget, Alignment.BOTTOM_LEFT);
|
||||
buttonsLayout.setComponentAlignment(discardTarget, Alignment.BOTTOM_RIGHT);
|
||||
buttonsLayout.addStyleName("window-style");
|
||||
// final HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
// buttonsLayout.setSizeFull();
|
||||
// buttonsLayout.addComponents(saveTarget, discardTarget);
|
||||
// buttonsLayout.setComponentAlignment(saveTarget, Alignment.BOTTOM_LEFT);
|
||||
// buttonsLayout.setComponentAlignment(discardTarget, Alignment.BOTTOM_RIGHT);
|
||||
// buttonsLayout.addStyleName("window-style");
|
||||
|
||||
/*
|
||||
* The main layout of the window contains mandatory info, textboxes
|
||||
* (controller Id, name & description) and action buttons layout
|
||||
@@ -151,13 +154,21 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
mainLayout.setSpacing(Boolean.TRUE);
|
||||
mainLayout.addStyleName("lay-color");
|
||||
mainLayout.setSizeUndefined();
|
||||
mainLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()));
|
||||
mainLayout.addComponent(madatoryLabel);
|
||||
mainLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT);
|
||||
// mainLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()));
|
||||
// mainLayout.addComponent(madatoryLabel);
|
||||
// mainLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT);
|
||||
|
||||
FormLayout formLayout = new FormLayout();
|
||||
formLayout.addComponent(madatoryLabel);
|
||||
formLayout.addComponent(controllerIDTextField);
|
||||
formLayout.addComponent(nameTextField);
|
||||
formLayout.addComponent(descTextArea);
|
||||
mainLayout.addComponent(formLayout);
|
||||
|
||||
if (Boolean.TRUE.equals(editTarget)) {
|
||||
madatoryLabel.setVisible(Boolean.FALSE);
|
||||
}
|
||||
mainLayout.addComponents(madatoryLabel, controllerIDTextField, nameTextField, descTextArea, buttonsLayout);
|
||||
// mainLayout.addComponents(madatoryLabel, controllerIDTextField, nameTextField, descTextArea, buttonsLayout);
|
||||
nameTextField.focus();
|
||||
}
|
||||
|
||||
@@ -179,9 +190,9 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
@Override
|
||||
public void textChange(final TextChangeEvent event) {
|
||||
if (event.getText().equals(oldTargetName) && descTextArea.getValue().equals(oldTargetDesc)) {
|
||||
saveTarget.setEnabled(false);
|
||||
addTargetWindow.setSaveButtonEnabled(false);
|
||||
} else {
|
||||
saveTarget.setEnabled(true);
|
||||
addTargetWindow.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -200,9 +211,9 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
@Override
|
||||
public void textChange(final TextChangeEvent event) {
|
||||
if (event.getText().equals(oldTargetDesc) && nameTextField.getValue().equals(oldTargetName)) {
|
||||
saveTarget.setEnabled(false);
|
||||
addTargetWindow.setSaveButtonEnabled(false);
|
||||
} else {
|
||||
saveTarget.setEnabled(true);
|
||||
addTargetWindow.setSaveButtonEnabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -271,8 +282,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
public Window getWindow() {
|
||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
||||
addTargetWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.target"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
addTargetWindow.setContent(this);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(),event -> discardTargetListner());
|
||||
return addTargetWindow;
|
||||
}
|
||||
|
||||
@@ -335,7 +345,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
if (target.getDescription() != null) {
|
||||
descTextArea.setValue(target.getDescription());
|
||||
}
|
||||
saveTarget.setEnabled(Boolean.FALSE);
|
||||
addTargetWindow.setSaveButtonEnabled(Boolean.FALSE);
|
||||
|
||||
oldTargetDesc = descTextArea.getValue();
|
||||
oldTargetName = nameTextField.getValue();
|
||||
|
||||
@@ -19,7 +19,6 @@ import org.eclipse.hawkbit.repository.DeploymentManagement;
|
||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetIdName;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.common.PopupWindowHelp;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.management.dstable.DistributionBeanQuery;
|
||||
@@ -45,6 +44,7 @@ import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.shared.ui.combobox.FilteringMode;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
@@ -280,14 +280,12 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent {
|
||||
|
||||
final HorizontalLayout uploaderLayout = new HorizontalLayout();
|
||||
uploaderLayout.addComponent(bulkUploader);
|
||||
// uploaderLayout.addComponent(linkToSystemConfigHelp);
|
||||
// uploaderLayout.setComponentAlignment(linkToSystemConfigHelp,
|
||||
// Alignment.BOTTOM_RIGHT);
|
||||
// uploaderLayout.setExpandRatio(bulkUploader, 1.0F);
|
||||
uploaderLayout.addComponent(linkToSystemConfigHelp);
|
||||
uploaderLayout.setComponentAlignment(linkToSystemConfigHelp, Alignment.BOTTOM_RIGHT);
|
||||
uploaderLayout.setExpandRatio(bulkUploader, 1.0F);
|
||||
uploaderLayout.setSizeFull();
|
||||
mainLayout.addComponents(captionLayout,
|
||||
new PopupWindowHelp(uiproperties.getLinks().getDocumentation().getDeploymentView()), dsNamecomboBox,
|
||||
descTextArea, tokenVerticalLayout, descTextArea, progressBar, targetsCountLabel, uploaderLayout);
|
||||
mainLayout.addComponents(captionLayout, dsNamecomboBox, descTextArea, tokenVerticalLayout, descTextArea,
|
||||
progressBar, targetsCountLabel, uploaderLayout);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,268 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.management.targettag;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent;
|
||||
import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent;
|
||||
import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.management.tag.CreateUpdateTagLayout;
|
||||
import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.spring.events.EventScope;
|
||||
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.vaadin.shared.ui.colorpicker.Color;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.OptionGroup;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.Window;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class CreateUpdateTargetTagLayout extends CreateUpdateTagLayout {
|
||||
|
||||
private static final long serialVersionUID = 2446682350481560235L;
|
||||
|
||||
@Autowired
|
||||
private transient UINotification uiNotification;
|
||||
|
||||
private Window targetTagWindow;
|
||||
|
||||
@Override
|
||||
protected void createOptionGroup() {
|
||||
final List<String> optionValues = new ArrayList<>();
|
||||
if (permChecker.hasCreateTargetPermission()) {
|
||||
optionValues.add(createTag.getValue());
|
||||
}
|
||||
if (permChecker.hasUpdateTargetPermission()) {
|
||||
optionValues.add(updateTag.getValue());
|
||||
}
|
||||
|
||||
createOptionGroup(optionValues);
|
||||
}
|
||||
|
||||
private void createOptionGroup(final List<String> tagOptions) {
|
||||
optiongroup = new OptionGroup("", tagOptions);
|
||||
optiongroup.setCaption(null);
|
||||
optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL);
|
||||
optiongroup.addStyleName("custom-option-group");
|
||||
|
||||
optiongroup.setNullSelectionAllowed(false);
|
||||
if (!tagOptions.isEmpty()) {
|
||||
optiongroup.select(tagOptions.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
public Window getWindow() {
|
||||
reset();
|
||||
targetTagWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW);
|
||||
targetTagWindow.setContent(this);
|
||||
return targetTagWindow;
|
||||
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
void onEventTargetTagCreated(final TargetTagCreatedBulkEvent event) {
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
void onEventTargetDeletedEvent(final TargetTagDeletedEvent event) {
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
void onEventTargetTagUpdateEvent(final TargetTagUpdateEvent event) {
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate target name combo.
|
||||
*/
|
||||
@Override
|
||||
public void populateTagNameCombo() {
|
||||
tagNameComboBox.removeAllItems();
|
||||
final List<TargetTag> trgTagNameList = tagManagement.findAllTargetTags();
|
||||
trgTagNameList.forEach(value -> tagNameComboBox.addItem(value.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Select tag & set tag name & tag desc values corresponding to selected
|
||||
* tag.
|
||||
*
|
||||
* @param targetTagSelected
|
||||
* as the selected tag from combo
|
||||
*/
|
||||
@Override
|
||||
public void setTagDetails(final String targetTagSelected) {
|
||||
tagName.setValue(targetTagSelected);
|
||||
final TargetTag selectedTargetTag = tagManagement.findTargetTag(targetTagSelected);
|
||||
if (null != selectedTargetTag) {
|
||||
tagDesc.setValue(selectedTargetTag.getDescription());
|
||||
if (null == selectedTargetTag.getColour()) {
|
||||
selectedColor = new Color(44, 151, 32);
|
||||
selPreview.setColor(selectedColor);
|
||||
colorSelect.setColor(selectedColor);
|
||||
createDynamicStyleForComponents(tagName, tagDesc, DEFAULT_COLOR);
|
||||
getPreviewButtonColor(DEFAULT_COLOR);
|
||||
} else {
|
||||
selectedColor = rgbToColorConverter(selectedTargetTag.getColour());
|
||||
selPreview.setColor(selectedColor);
|
||||
colorSelect.setColor(selectedColor);
|
||||
createDynamicStyleForComponents(tagName, tagDesc, selectedTargetTag.getColour());
|
||||
getPreviewButtonColor(selectedTargetTag.getColour());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(final ClickEvent event) {
|
||||
if (mandatoryValuesPresent()) {
|
||||
final TargetTag existingTag = tagManagement.findTargetTag(tagName.getValue());
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
if (!checkIsDuplicate(existingTag)) {
|
||||
createNewTag();
|
||||
}
|
||||
} else {
|
||||
|
||||
updateTag(existingTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Boolean checkIsDuplicate(final TargetTag existingTag) {
|
||||
if (existingTag != null) {
|
||||
uiNotification.displayValidationError(
|
||||
i18n.get("message.tag.duplicate.check", new Object[] { existingTag.getName() }));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
private Boolean mandatoryValuesPresent() {
|
||||
if (Strings.isNullOrEmpty(tagName.getValue())) {
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
if (optiongroup.getValue().equals(updateTagNw)) {
|
||||
if (null == tagNameComboBox.getValue()) {
|
||||
uiNotification.displayValidationError(i18n.get("message.error.missing.tagname"));
|
||||
} else {
|
||||
uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME);
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new tag.
|
||||
*/
|
||||
private void createNewTag() {
|
||||
final String colorPicked = getColorPickedString();
|
||||
final String tagNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String tagDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
if (null != tagNameValue) {
|
||||
TargetTag newTargetTag = new TargetTag(tagNameValue);
|
||||
if (null != tagDescValue) {
|
||||
newTargetTag.setDescription(tagDescValue);
|
||||
}
|
||||
newTargetTag.setColour(new Color(0, 146, 58).getCSS());
|
||||
if (colorPicked != null) {
|
||||
newTargetTag.setColour(colorPicked);
|
||||
}
|
||||
newTargetTag = tagManagement.createTargetTag(newTargetTag);
|
||||
uiNotification.displaySuccess(i18n.get("message.save.success", new Object[] { newTargetTag.getName() }));
|
||||
closeWindow();
|
||||
} else {
|
||||
uiNotification.displayValidationError(i18n.get("message.error.missing.tagname"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* update tag.
|
||||
*/
|
||||
private void updateTag(final TargetTag targetObj) {
|
||||
final String nameUpdateValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue());
|
||||
final String descUpdateValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue());
|
||||
|
||||
if (null != nameUpdateValue) {
|
||||
targetObj.setName(nameUpdateValue);
|
||||
targetObj.setDescription(null != descUpdateValue ? descUpdateValue : null);
|
||||
targetObj.setColour(getColorPickedString());
|
||||
tagManagement.updateTargetTag(targetObj);
|
||||
uiNotification.displaySuccess(i18n.get("message.update.success", new Object[] { targetObj.getName() }));
|
||||
closeWindow();
|
||||
} else {
|
||||
uiNotification.displayValidationError(i18n.get("message.tag.update.mandatory"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void closeWindow() {
|
||||
targetTagWindow.close();
|
||||
UI.getCurrent().removeWindow(targetTagWindow);
|
||||
}
|
||||
|
||||
/**
|
||||
* remove target tab window.
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
@Override
|
||||
public void discard(final ClickEvent event) {
|
||||
UI.getCurrent().removeWindow(targetTagWindow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get color picked value in string.
|
||||
*
|
||||
* @return String of color picked value.
|
||||
*/
|
||||
private String getColorPickedString() {
|
||||
return "rgb(" + getSelPreview().getColor().getRed() + "," + getSelPreview().getColor().getGreen() + ","
|
||||
+ getSelPreview().getColor().getBlue() + ")";
|
||||
}
|
||||
|
||||
/**
|
||||
* Color view.
|
||||
*
|
||||
* @return ColorPickerPreview as UI
|
||||
*/
|
||||
public SpColorPickerPreview getSelPreview() {
|
||||
return selPreview;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.management.targettag;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.isNotEmpty;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent;
|
||||
import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent;
|
||||
import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent;
|
||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants;
|
||||
import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper;
|
||||
import org.eclipse.hawkbit.ui.management.tag.CreateUpdateTagLayout;
|
||||
import org.vaadin.spring.events.EventScope;
|
||||
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
|
||||
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Button.ClickEvent;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class CreateUpdateTargetTagLayoutWindow extends CreateUpdateTagLayout {
|
||||
|
||||
private static final long serialVersionUID = 2446682350481560235L;
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
void onEventTargetTagCreated(final TargetTagCreatedBulkEvent event) {
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
void onEventTargetDeletedEvent(final TargetTagDeletedEvent event) {
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
// Exception squid:S1172 - event not needed
|
||||
@SuppressWarnings({ "squid:S1172" })
|
||||
void onEventTargetTagUpdateEvent(final TargetTagUpdateEvent event) {
|
||||
populateTagNameCombo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate target name combo.
|
||||
*/
|
||||
@Override
|
||||
public void populateTagNameCombo() {
|
||||
tagNameComboBox.removeAllItems();
|
||||
final List<TargetTag> trgTagNameList = tagManagement.findAllTargetTags();
|
||||
trgTagNameList.forEach(value -> tagNameComboBox.addItem(value.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Select tag & set tag name & tag desc values corresponding to selected
|
||||
* tag.
|
||||
*
|
||||
* @param targetTagSelected
|
||||
* as the selected tag from combo
|
||||
*/
|
||||
@Override
|
||||
public void setTagDetails(final String targetTagSelected) {
|
||||
tagName.setValue(targetTagSelected);
|
||||
final TargetTag selectedTargetTag = tagManagement.findTargetTag(targetTagSelected);
|
||||
if (null != selectedTargetTag) {
|
||||
tagDesc.setValue(selectedTargetTag.getDescription());
|
||||
if (null == selectedTargetTag.getColour()) {
|
||||
setTagColor(getColorPickerLayout().getDefaultColor(), ColorPickerConstants.DEFAULT_COLOR);
|
||||
} else {
|
||||
setTagColor(ColorPickerHelper.rgbToColorConverter(selectedTargetTag.getColour()),
|
||||
selectedTargetTag.getColour());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(final ClickEvent event) {
|
||||
if (mandatoryValuesPresent()) {
|
||||
final TargetTag existingTag = tagManagement.findTargetTag(tagName.getValue());
|
||||
if (optiongroup.getValue().equals(createTagNw)) {
|
||||
if (!checkIsDuplicate(existingTag)) {
|
||||
createNewTag();
|
||||
}
|
||||
} else {
|
||||
updateExistingTag(existingTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new tag.
|
||||
*/
|
||||
@Override
|
||||
protected void createNewTag() {
|
||||
super.createNewTag();
|
||||
if (isNotEmpty(getTagNameValue())) {
|
||||
TargetTag newTargetTag = new TargetTag(getTagNameValue());
|
||||
if (isNotEmpty(getTagDescValue())) {
|
||||
newTargetTag.setDescription(getTagDescValue());
|
||||
}
|
||||
newTargetTag.setColour(ColorPickerConstants.START_COLOR.getCSS());
|
||||
if (isNotEmpty(getColorPicked())) {
|
||||
newTargetTag.setColour(getColorPicked());
|
||||
}
|
||||
newTargetTag = tagManagement.createTargetTag(newTargetTag);
|
||||
displaySuccess(newTargetTag.getName());
|
||||
closeWindow();
|
||||
} else {
|
||||
displayValidationError(i18n.get(MESSAGE_ERROR_MISSING_TAGNAME));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createRequiredComponents() {
|
||||
super.createRequiredComponents();
|
||||
createOptionGroup(permChecker.hasCreateTargetPermission(), permChecker.hasUpdateTargetPermission());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -62,7 +62,7 @@ public class MultipleTargetFilter extends Accordion implements SelectedTabChange
|
||||
private CustomTargetTagFilterButtonClick customTargetTagFilterButtonClick;
|
||||
|
||||
@Autowired
|
||||
private CreateUpdateTargetTagLayout createUpdateTargetTagLayout;
|
||||
private CreateUpdateTargetTagLayoutWindow createUpdateTargetTagLayout;
|
||||
|
||||
@Autowired
|
||||
private SpPermissionChecker permChecker;
|
||||
|
||||
@@ -34,7 +34,7 @@ public class TargetTagFilterHeader extends AbstractFilterHeader {
|
||||
private I18N i18n;
|
||||
|
||||
@Autowired
|
||||
private CreateUpdateTargetTagLayout createUpdateTargetTagLayout;
|
||||
private CreateUpdateTargetTagLayoutWindow createUpdateTargetTagLayout;
|
||||
|
||||
@Autowired
|
||||
private ManagementUIState managementUIState;
|
||||
|
||||
@@ -27,7 +27,6 @@ import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupErrorCondit
|
||||
import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupSuccessAction;
|
||||
import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupSuccessCondition;
|
||||
import org.eclipse.hawkbit.ui.UiProperties;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialog;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.filtermanagement.TargetFilterBeanQuery;
|
||||
@@ -61,7 +60,7 @@ import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.ComboBox;
|
||||
import com.vaadin.ui.FormLayout;
|
||||
import com.vaadin.ui.CustomComponent;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.Link;
|
||||
@@ -80,7 +79,7 @@ import com.vaadin.ui.themes.ValoTheme;
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
public class AddUpdateRolloutWindowLayout extends CustomComponent {
|
||||
|
||||
private static final long serialVersionUID = 2999293468801479916L;
|
||||
|
||||
@@ -152,23 +151,12 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
|
||||
private TextArea targetFilterQuery;
|
||||
|
||||
public AddUpdateRolloutWindowLayout() {
|
||||
super();
|
||||
}
|
||||
|
||||
public AddUpdateRolloutWindowLayout(final String title, final FormLayout form, final String helpLink) {
|
||||
super(title, form, helpLink);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create components and layout.
|
||||
*/
|
||||
public void init() {
|
||||
// createRequiredComponents();
|
||||
// buildLayout();
|
||||
setCaption(i18n.get("caption.configure.rollout"));
|
||||
initForm();
|
||||
resetFields();
|
||||
createRequiredComponents();
|
||||
buildLayout();
|
||||
}
|
||||
|
||||
public Window getWindow() {
|
||||
@@ -219,38 +207,26 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
mainLayout.addComponents(madatoryLabel, rolloutName, distributionSet, getTargetFilterLayout(),
|
||||
getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresholdLayout(), description,
|
||||
actionTypeOptionGroupLayout, linkToHelp, getSaveDiscardButtonLayout());
|
||||
|
||||
mainLayout.addComponent(new Label("TEST TEST TEST"));
|
||||
mainLayout.setComponentAlignment(linkToHelp, Alignment.BOTTOM_RIGHT);
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
setCompositionRoot(mainLayout);
|
||||
>>>>>>> refs/heads/master
|
||||
rolloutName.focus();
|
||||
}
|
||||
|
||||
private HorizontalLayout getGroupDetailsLayout() {
|
||||
createGroupSizeLabel();
|
||||
createNoOfGroupsField();
|
||||
final HorizontalLayout groupLayout = new HorizontalLayout();
|
||||
groupLayout.setCaption(i18n.get("prompt.number.of.groups"));
|
||||
groupLayout.setSizeFull();
|
||||
groupLayout.addComponents(noOfGroups, groupSizeLabel);
|
||||
groupLayout.setExpandRatio(noOfGroups, 3.0F);
|
||||
groupLayout.setExpandRatio(groupSizeLabel, 1.0F);
|
||||
groupLayout.setExpandRatio(noOfGroups, 1.0F);
|
||||
groupLayout.setComponentAlignment(groupSizeLabel, Alignment.MIDDLE_LEFT);
|
||||
return groupLayout;
|
||||
}
|
||||
|
||||
private HorizontalLayout getErrorThresholdLayout() {
|
||||
createErrorThreshold();
|
||||
createErrorThresholdOptionGroup();
|
||||
final HorizontalLayout errorThresoldLayout = new HorizontalLayout();
|
||||
errorThresoldLayout.setSizeFull();
|
||||
errorThresoldLayout.addComponents(errorThreshold, errorThresholdOptionGroup);
|
||||
errorThresoldLayout.setExpandRatio(errorThreshold, 3.0F);
|
||||
errorThresoldLayout.setExpandRatio(errorThresholdOptionGroup, 1.0F);
|
||||
errorThresoldLayout.setCaption(i18n.get("prompt.error.threshold"));
|
||||
errorThresoldLayout.setExpandRatio(errorThreshold, 1.0F);
|
||||
return errorThresoldLayout;
|
||||
}
|
||||
|
||||
@@ -266,22 +242,18 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
}
|
||||
|
||||
private HorizontalLayout getTriggerThresoldLayout() {
|
||||
createTriggerThresold();
|
||||
final HorizontalLayout triggerThresholdLayout = new HorizontalLayout();
|
||||
triggerThresholdLayout.setCaption(i18n.get("prompt.tigger.thresold"));
|
||||
triggerThresholdLayout.setSizeFull();
|
||||
final Label percentSymbol = getPercentHintLabel();
|
||||
triggerThresholdLayout.addComponents(triggerThreshold, percentSymbol);
|
||||
triggerThresholdLayout.addComponents(triggerThreshold, getPercentHintLabel());
|
||||
triggerThresholdLayout.setExpandRatio(triggerThreshold, 1.0F);
|
||||
triggerThresholdLayout.setExpandRatio(percentSymbol, 5.0F);
|
||||
|
||||
return triggerThresholdLayout;
|
||||
}
|
||||
|
||||
private Label getPercentHintLabel() {
|
||||
final Label percentSymbol = new Label("%");
|
||||
percentSymbol.addStyleName(ValoTheme.LABEL_TINY + " " + ValoTheme.LABEL_BOLD);
|
||||
percentSymbol.setSizeFull();
|
||||
percentSymbol.setSizeUndefined();
|
||||
return percentSymbol;
|
||||
}
|
||||
|
||||
@@ -295,24 +267,6 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
return buttonsLayout;
|
||||
}
|
||||
|
||||
private void initForm() {
|
||||
|
||||
getFormLayout().addComponent(createRolloutNameField());
|
||||
getFormLayout().addComponent(createDistributionSetCombo());
|
||||
populateDistributionSet();
|
||||
getFormLayout().addComponent(createTargetFilterQueryCombo());
|
||||
populateTargetFilterQuery();
|
||||
getFormLayout().addComponent(getGroupDetailsLayout());
|
||||
getFormLayout().addComponent(getTriggerThresoldLayout());
|
||||
getFormLayout().addComponent(getErrorThresholdLayout());
|
||||
getFormLayout().addComponent(createDescription());
|
||||
getFormLayout().addComponent(actionTypeOptionGroupLayout);
|
||||
actionTypeOptionGroupLayout.selectDefaultOption();
|
||||
|
||||
// getFormLayout().addComponent(createTotalTargetsLabel());
|
||||
// getFormLayout().addComponent(createTargetFilterQuery());
|
||||
}
|
||||
|
||||
private void createRequiredComponents() {
|
||||
madatoryLabel = createMandatoryLabel();
|
||||
rolloutName = createRolloutNameField();
|
||||
@@ -322,12 +276,12 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
targetFilterQueryCombo = createTargetFilterQueryCombo();
|
||||
populateTargetFilterQuery();
|
||||
|
||||
// noOfGroups = createNoOfGroupsField();
|
||||
// groupSizeLabel = createGroupSizeLabel();
|
||||
// triggerThreshold = createTriggerThresold();
|
||||
// errorThreshold = createErrorThresold();
|
||||
// description = createDescription();
|
||||
// errorThresholdOptionGroup = createErrorThresholdOptionGroup();
|
||||
noOfGroups = createNoOfGroupsField();
|
||||
groupSizeLabel = createGroupSizeLabel();
|
||||
triggerThreshold = createTriggerThresold();
|
||||
errorThreshold = createErrorThresold();
|
||||
description = createDescription();
|
||||
errorThresholdOptionGroup = createErrorThresholdOptionGroup();
|
||||
setDefaultSaveStartGroupOption();
|
||||
saveRolloutBtn = createSaveButton();
|
||||
discardRollloutBtn = createDiscardButton();
|
||||
@@ -341,12 +295,13 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
|
||||
}
|
||||
|
||||
private void createGroupSizeLabel() {
|
||||
groupSizeLabel = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE);
|
||||
groupSizeLabel.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message");
|
||||
groupSizeLabel.setImmediate(true);
|
||||
groupSizeLabel.setVisible(false);
|
||||
groupSizeLabel.setSizeUndefined();
|
||||
private Label createGroupSizeLabel() {
|
||||
final Label groupSize = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE);
|
||||
groupSize.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message");
|
||||
groupSize.setImmediate(true);
|
||||
groupSize.setVisible(false);
|
||||
groupSize.setSizeUndefined();
|
||||
return groupSize;
|
||||
}
|
||||
|
||||
private TextArea createTargetFilterQuery() {
|
||||
@@ -370,17 +325,17 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
return targetCountLabel;
|
||||
}
|
||||
|
||||
private void createErrorThresholdOptionGroup() {
|
||||
errorThresholdOptionGroup = new OptionGroup();
|
||||
private OptionGroup createErrorThresholdOptionGroup() {
|
||||
final OptionGroup errorThresoldOptions = new OptionGroup();
|
||||
for (final ERRORTHRESOLDOPTIONS option : ERRORTHRESOLDOPTIONS.values()) {
|
||||
errorThresholdOptionGroup.addItem(option.getValue());
|
||||
errorThresoldOptions.addItem(option.getValue());
|
||||
}
|
||||
errorThresholdOptionGroup.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_OPTION_ID);
|
||||
errorThresholdOptionGroup.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL);
|
||||
errorThresholdOptionGroup.addStyleName(SPUIStyleDefinitions.ROLLOUT_OPTION_GROUP);
|
||||
errorThresholdOptionGroup.setSizeUndefined();
|
||||
errorThresholdOptionGroup.addValueChangeListener(event -> onErrorThresoldOptionChange(event));
|
||||
setDefaultSaveStartGroupOption();
|
||||
errorThresoldOptions.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_OPTION_ID);
|
||||
errorThresoldOptions.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL);
|
||||
errorThresoldOptions.addStyleName(SPUIStyleDefinitions.ROLLOUT_OPTION_GROUP);
|
||||
errorThresoldOptions.setSizeUndefined();
|
||||
errorThresoldOptions.addValueChangeListener(event -> onErrorThresoldOptionChange(event));
|
||||
return errorThresoldOptions;
|
||||
}
|
||||
|
||||
private void onErrorThresoldOptionChange(final ValueChangeEvent event) {
|
||||
@@ -395,15 +350,15 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
}
|
||||
|
||||
private ComboBox createTargetFilterQueryCombo() {
|
||||
targetFilterQueryCombo = SPUIComponentProvider.getComboBox(i18n.get("prompt.target.filter"), "", "", null, null,
|
||||
true, "", i18n.get("prompt.target.filter"));
|
||||
targetFilterQueryCombo.setImmediate(true);
|
||||
targetFilterQueryCombo.setPageLength(7);
|
||||
targetFilterQueryCombo.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
targetFilterQueryCombo.setId(SPUIComponetIdProvider.ROLLOUT_TARGET_FILTER_COMBO_ID);
|
||||
targetFilterQueryCombo.setSizeFull();
|
||||
targetFilterQueryCombo.addValueChangeListener(event -> onTargetFilterChange());
|
||||
return targetFilterQueryCombo;
|
||||
final ComboBox targetFilter = SPUIComponentProvider.getComboBox(null, "", "", null, null, true, "",
|
||||
i18n.get("prompt.target.filter"));
|
||||
targetFilter.setImmediate(true);
|
||||
targetFilter.setPageLength(7);
|
||||
targetFilter.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
targetFilter.setId(SPUIComponetIdProvider.ROLLOUT_TARGET_FILTER_COMBO_ID);
|
||||
targetFilter.setSizeFull();
|
||||
targetFilter.addValueChangeListener(event -> onTargetFilterChange());
|
||||
return targetFilter;
|
||||
}
|
||||
|
||||
private void onTargetFilterChange() {
|
||||
@@ -634,41 +589,47 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
}
|
||||
|
||||
private TextArea createDescription() {
|
||||
description = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style",
|
||||
ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"),
|
||||
final TextArea descriptionField = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"),
|
||||
"text-area-style", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"),
|
||||
SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH);
|
||||
description.setId(SPUIComponetIdProvider.ROLLOUT_DESCRIPTION_ID);
|
||||
description.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||
description.setSizeFull();
|
||||
return description;
|
||||
descriptionField.setId(SPUIComponetIdProvider.ROLLOUT_DESCRIPTION_ID);
|
||||
descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||
descriptionField.setSizeFull();
|
||||
return descriptionField;
|
||||
}
|
||||
|
||||
private void createErrorThreshold() {
|
||||
errorThreshold = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null,
|
||||
i18n.get("prompt.error.threshold"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
errorThreshold.addValidator(new ThresholdFieldValidator());
|
||||
errorThreshold.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_ID);
|
||||
errorThreshold.setMaxLength(7);
|
||||
errorThreshold.setSizeFull();
|
||||
private TextField createErrorThresold() {
|
||||
final TextField errorField = SPUIComponentProvider.getTextField(i18n.get("prompt.error.threshold"), "",
|
||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("prompt.error.threshold"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
errorField.addValidator(new ThresholdFieldValidator());
|
||||
errorField.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_ID);
|
||||
errorField.setMaxLength(7);
|
||||
errorField.setSizeFull();
|
||||
return errorField;
|
||||
}
|
||||
|
||||
private void createTriggerThresold() {
|
||||
triggerThreshold = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null,
|
||||
i18n.get("prompt.tigger.thresold"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
triggerThreshold.setId(SPUIComponetIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
|
||||
triggerThreshold.addValidator(new ThresholdFieldValidator());
|
||||
triggerThreshold.setSizeFull();
|
||||
triggerThreshold.setMaxLength(3);
|
||||
private TextField createTriggerThresold() {
|
||||
final TextField thresholdField = SPUIComponentProvider.getTextField(i18n.get("prompt.tigger.thresold"), "",
|
||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("prompt.tigger.thresold"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
thresholdField.setId(SPUIComponetIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
|
||||
thresholdField.addValidator(new ThresholdFieldValidator());
|
||||
thresholdField.setSizeFull();
|
||||
thresholdField.setMaxLength(3);
|
||||
return thresholdField;
|
||||
}
|
||||
|
||||
private void createNoOfGroupsField() {
|
||||
noOfGroups = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null,
|
||||
i18n.get("prompt.number.of.groups"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
noOfGroups.setId(SPUIComponetIdProvider.ROLLOUT_NO_OF_GROUPS_ID);
|
||||
noOfGroups.addValidator(new GroupNumberValidator());
|
||||
noOfGroups.setSizeFull();
|
||||
noOfGroups.setMaxLength(3);
|
||||
noOfGroups.addValueChangeListener(evevt -> onGroupNumberChange());
|
||||
private TextField createNoOfGroupsField() {
|
||||
final TextField noOfGroupsField = SPUIComponentProvider.getTextField(i18n.get("prompt.number.of.groups"), "",
|
||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("prompt.number.of.groups"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
noOfGroupsField.setId(SPUIComponetIdProvider.ROLLOUT_NO_OF_GROUPS_ID);
|
||||
noOfGroupsField.addValidator(new GroupNumberValidator());
|
||||
noOfGroupsField.setSizeFull();
|
||||
noOfGroupsField.setMaxLength(3);
|
||||
noOfGroupsField.addValueChangeListener(evevt -> onGroupNumberChange());
|
||||
return noOfGroupsField;
|
||||
}
|
||||
|
||||
private void onGroupNumberChange() {
|
||||
@@ -681,14 +642,14 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
}
|
||||
|
||||
private ComboBox createDistributionSetCombo() {
|
||||
distributionSet = SPUIComponentProvider.getComboBox(i18n.get("prompt.distribution.set"), "", "", null, null,
|
||||
true, "", i18n.get("prompt.distribution.set"));
|
||||
distributionSet.setImmediate(true);
|
||||
distributionSet.setPageLength(7);
|
||||
distributionSet.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
distributionSet.setId(SPUIComponetIdProvider.ROLLOUT_DS_ID);
|
||||
distributionSet.setSizeFull();
|
||||
return distributionSet;
|
||||
final ComboBox dsSet = SPUIComponentProvider.getComboBox(i18n.get("prompt.distribution.set"), "", "", null,
|
||||
null, true, "", i18n.get("prompt.distribution.set"));
|
||||
dsSet.setImmediate(true);
|
||||
dsSet.setPageLength(7);
|
||||
dsSet.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME);
|
||||
dsSet.setId(SPUIComponetIdProvider.ROLLOUT_DS_ID);
|
||||
dsSet.setSizeFull();
|
||||
return dsSet;
|
||||
}
|
||||
|
||||
private void populateDistributionSet() {
|
||||
@@ -706,12 +667,12 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog {
|
||||
}
|
||||
|
||||
private TextField createRolloutNameField() {
|
||||
rolloutName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY, true,
|
||||
null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
rolloutName.setId(SPUIComponetIdProvider.ROLLOUT_NAME_FIELD_ID);
|
||||
rolloutName.setSizeFull();
|
||||
|
||||
return rolloutName;
|
||||
final TextField rolloutNameField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "",
|
||||
ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.name"), true,
|
||||
SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH);
|
||||
rolloutNameField.setId(SPUIComponetIdProvider.ROLLOUT_NAME_FIELD_ID);
|
||||
rolloutNameField.setSizeFull();
|
||||
return rolloutNameField;
|
||||
}
|
||||
|
||||
private Label createMandatoryLabel() {
|
||||
|
||||
@@ -96,8 +96,8 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
@Autowired
|
||||
private transient RolloutManagement rolloutManagement;
|
||||
|
||||
@Autowired
|
||||
private AddUpdateRolloutWindowLayout addUpdateRolloutWindow;
|
||||
// @Autowired
|
||||
private final AddUpdateRolloutWindowLayout addUpdateRolloutWindow = new AddUpdateRolloutWindowLayout();
|
||||
|
||||
@Autowired
|
||||
private UINotification uiNotification;
|
||||
@@ -110,7 +110,6 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
|
||||
private transient Map<RolloutStatus, StatusFontIcon> statusIconMap = new EnumMap<>(RolloutStatus.class);
|
||||
|
||||
|
||||
/**
|
||||
* Handles the RolloutEvent to refresh Grid.
|
||||
*
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.eclipse.hawkbit.ui.common.grid.AbstractGridHeader;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.rollout.event.RolloutEvent;
|
||||
import org.eclipse.hawkbit.ui.rollout.state.RolloutUIState;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
@@ -27,6 +28,7 @@ import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.Window;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -47,6 +49,9 @@ public class RolloutListHeader extends AbstractGridHeader {
|
||||
@Autowired
|
||||
private transient EventBus.SessionEventBus eventBus;
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@Autowired
|
||||
private AddUpdateRolloutWindowLayout addUpdateRolloutWindow;
|
||||
|
||||
@@ -54,6 +59,7 @@ public class RolloutListHeader extends AbstractGridHeader {
|
||||
@PostConstruct
|
||||
protected void init() {
|
||||
super.init();
|
||||
addUpdateRolloutWindow.init();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,11 +95,11 @@ public class RolloutListHeader extends AbstractGridHeader {
|
||||
|
||||
@Override
|
||||
protected void addNewItem(final ClickEvent event) {
|
||||
addUpdateRolloutWindow.init();
|
||||
addUpdateRolloutWindow.resetComponents();
|
||||
addUpdateRolloutWindow.init();
|
||||
UI.getCurrent().addWindow(addUpdateRolloutWindow);
|
||||
addUpdateRolloutWindow.setVisible(Boolean.TRUE);
|
||||
final Window addTargetWindow = addUpdateRolloutWindow.getWindow();
|
||||
UI.getCurrent().addWindow(addTargetWindow);
|
||||
addTargetWindow.setVisible(Boolean.TRUE);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -288,4 +288,13 @@
|
||||
font-style:normal;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
.hawkbit [class*="margin-bottom"] > tbody > [class*="lastrow"] > td {
|
||||
padding-bottom: 12px !important;
|
||||
}
|
||||
|
||||
.form-lastrow {
|
||||
padding-bottom: 12px !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
//Color picker layout position adjustment
|
||||
.rgb-vertical-layout {
|
||||
margin-top: 100px !important;
|
||||
padding-bottom: 50px;
|
||||
// margin-top: 100px !important;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
//Discard icon in create/update popup
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
//Create/update popup footer button layout style
|
||||
.window-style {
|
||||
margin-bottom: 4px !important;
|
||||
margin-top: 4px !important;
|
||||
}
|
||||
|
||||
//Table details style
|
||||
|
||||
Reference in New Issue
Block a user