Implementing commonDialogWindow

Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com>
This commit is contained in:
Melanie Retter
2016-05-18 15:15:32 +02:00
parent 3ea1278239
commit a10506f94b
26 changed files with 1402 additions and 1479 deletions

View File

@@ -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();
}
}
}

View File

@@ -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;
}
/**

View File

@@ -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);
}

View File

@@ -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);
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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.
*

View File

@@ -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;
}
}

View File

@@ -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.
*

View File

@@ -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));
}
}
}

View File

@@ -62,7 +62,6 @@ public class DSTypeFilterHeader extends AbstractFilterHeader {
final Window addUpdateWindow = createUpdateDistSetTypeLayout.getWindow();
UI.getCurrent().addWindow(addUpdateWindow);
addUpdateWindow.setVisible(Boolean.TRUE);
}
@Override

View File

@@ -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;
}

View File

@@ -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());
}
}

View File

@@ -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;
}
}

View File

@@ -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();

View File

@@ -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);
}
/**

View File

@@ -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;
}
}

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -34,7 +34,7 @@ public class TargetTagFilterHeader extends AbstractFilterHeader {
private I18N i18n;
@Autowired
private CreateUpdateTargetTagLayout createUpdateTargetTagLayout;
private CreateUpdateTargetTagLayoutWindow createUpdateTargetTagLayout;
@Autowired
private ManagementUIState managementUIState;

View File

@@ -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() {

View File

@@ -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.
*

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -133,6 +133,7 @@
//Create/update popup footer button layout style
.window-style {
margin-bottom: 4px !important;
margin-top: 4px !important;
}
//Table details style