From 72a61c9f6cd2b3b6cdc200684d8e429a87db829a Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 15 Apr 2016 13:01:23 +0200 Subject: [PATCH 01/44] Introduce consistent button position in change dialogs Signed-off-by: Melanie Retter --- .../rollout/AddUpdateRolloutWindowLayout.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index e5e86c520..a426c300e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -204,10 +204,9 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { mainLayout.setSpacing(Boolean.TRUE); mainLayout.setSizeUndefined(); - mainLayout.addComponents(madatoryLabel, rolloutName, distributionSet, getTargetFilterLayout(), + mainLayout.addComponents(getMandatoryLabelLinkToHelp(), rolloutName, distributionSet, getTargetFilterLayout(), getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresoldLayout(), description, - actionTypeOptionGroupLayout, linkToHelp, getSaveDiscardButtonLayout()); - mainLayout.setComponentAlignment(linkToHelp, Alignment.BOTTOM_RIGHT); + actionTypeOptionGroupLayout, getSaveDiscardButtonLayout()); setCompositionRoot(mainLayout); } @@ -264,6 +263,16 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return buttonsLayout; } + private HorizontalLayout getMandatoryLabelLinkToHelp() { + final HorizontalLayout mandatoryLabelLinkToHelpLayout = new HorizontalLayout(); + mandatoryLabelLinkToHelpLayout.setSizeFull(); + mandatoryLabelLinkToHelpLayout.addComponents(madatoryLabel, linkToHelp); + mandatoryLabelLinkToHelpLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); + mandatoryLabelLinkToHelpLayout.setComponentAlignment(linkToHelp, Alignment.MIDDLE_RIGHT); + mandatoryLabelLinkToHelpLayout.addStyleName("window-style"); + return mandatoryLabelLinkToHelpLayout; + } + private void createRequiredComponents() { madatoryLabel = createMandatoryLabel(); rolloutName = createRolloutNameField(); @@ -287,11 +296,15 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { totalTargetsLabel = createTotalTargetsLabel(); targetFilterQuery = createTargetFilterQuery(); - linkToHelp = SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); + linkToHelp = createLinkToHelp(); actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT); } + private Link createLinkToHelp() { + return SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); + } + private Label createGroupSizeLabel() { final Label groupSize = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE); groupSize.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message"); From 6404c9ba823f312d135f33bee306de0c63411e0c Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Wed, 11 May 2016 10:24:04 +0200 Subject: [PATCH 02/44] Provide a class for the help icon. The class is added to the layout in every pop-up-window. Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 7 ++ .../CreateUpdateSoftwareTypeLayout.java | 12 +++- .../hawkbit/ui/common/PopupWindowHelp.java | 69 +++++++++++++++++++ .../CreateUpdateDistSetTypeLayout.java | 6 ++ .../DistributionAddUpdateWindowLayout.java | 9 ++- ...eateUpdateDistributionTagLayoutWindow.java | 1 + .../management/tag/CreateUpdateTagLayout.java | 8 ++- .../TargetAddUpdateWindowLayout.java | 8 ++- .../TargetBulkUpdateWindowLayout.java | 14 ++-- .../CreateUpdateTargetTagLayout.java | 1 + .../rollout/AddUpdateRolloutWindowLayout.java | 50 ++++++++------ .../DefaultDistributionSetTypeLayout.java | 4 ++ .../TenantConfigurationDashboardView.java | 13 ++-- 13 files changed, 165 insertions(+), 37 deletions(-) create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index cc08929bb..6a849d8b7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -12,7 +12,9 @@ import java.io.Serializable; 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.PopupWindowHelp; import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -66,6 +68,9 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { @Autowired private transient SoftwareManagement softwareManagement; + @Autowired + private transient UiProperties uiProperties; + private Label madatoryLabel; private TextField nameTextField; @@ -227,8 +232,10 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { * (controller Id, name & description) and action buttons layout */ final VerticalLayout mainLayout = new VerticalLayout(); + mainLayout.setSizeUndefined(); mainLayout.setSpacing(Boolean.TRUE); mainLayout.addStyleName("lay-color"); + mainLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); mainLayout.addComponent(madatoryLabel); mainLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); mainLayout.addComponent(hLayout); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index dc6d1081e..dc0a0911c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -16,9 +16,11 @@ import java.util.Set; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.SpPermissionChecker; 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.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; @@ -96,6 +98,9 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C @Autowired private transient EventBus.SessionEventBus eventBus; + @Autowired + private transient UiProperties uiProperties; + private String createTypeStr; private String updateTypeStr; private String singleAssignStr; @@ -226,10 +231,12 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C colorPickerLayout.addComponent(colorSelect); fieldLayout = new VerticalLayout(); + fieldLayout.setSizeUndefined(); fieldLayout.setSpacing(true); fieldLayout.setMargin(false); - fieldLayout.setWidth("100%"); - fieldLayout.setHeight(null); + // fieldLayout.setWidth("100%"); + // fieldLayout.setHeight(null); + fieldLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); fieldLayout.addComponent(createOptiongroup); fieldLayout.addComponent(comboLayout); fieldLayout.addComponent(madatoryLabel); @@ -450,6 +457,7 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C private void createOptionGroupByValues(final List tagOptions) { createOptiongroup = new OptionGroup("", tagOptions); + createOptiongroup.setCaption(null); createOptiongroup.setStyleName(ValoTheme.OPTIONGROUP_SMALL); createOptiongroup.addStyleName("custom-option-group"); createOptiongroup.setNullSelectionAllowed(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java new file mode 100644 index 000000000..1ee505dec --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java @@ -0,0 +1,69 @@ +/** + * 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.common; + +import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; + +import com.vaadin.ui.Alignment; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Link; + +/** + * + * Helper class that provides the help icon layout in the right upper corner of + * a popup window + * + */ +public class PopupWindowHelp extends HorizontalLayout { + + private static final long serialVersionUID = 5377482512908004826L; + + private Link linkToHelp; + + /** + * Provides a horizontalLayout with a help icon in the right corner. The + * layout is shown by default. + * + * @param link + * link to the help page in the wiki or on github + */ + public PopupWindowHelp(final String link) { + createLinkToHelp(link); + init(); + } + + /** + * Provides a horizontalLayout with a help icon in the right corner. The + * layout is shown by default. The visibility of the layout can be set. If + * visibility is false the layout is not shown and the space is not + * reserved. + * + * @param link + * link to the help page in the wiki or on github + * @param visible + * false == layout is not shown + */ + public PopupWindowHelp(final String link, final boolean visible) { + createLinkToHelp(link); + init(); + setVisible(visible); + } + + public void init() { + setSizeFull(); + addComponent(linkToHelp); + setComponentAlignment(linkToHelp, Alignment.MIDDLE_RIGHT); + addStyleName("window-style"); + } + + private void createLinkToHelp(final String link) { + linkToHelp = SPUIComponentProvider.getHelpLink(link); + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 8d609f628..58b1b5fd2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -19,8 +19,10 @@ 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.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; @@ -116,6 +118,9 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co @Autowired private transient DistributionSetRepository distributionSetRepository; + @Autowired + private transient UiProperties uiProperties; + /** * Instance of ColorPickerPreview. */ @@ -295,6 +300,7 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co colorLayout.addComponent(sliderLayout); final VerticalLayout mainWindowLayout = new VerticalLayout(); + mainWindowLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); mainWindowLayout.addComponent(mainLayout); mainWindowLayout.addComponent(colorLayout); mainWindowLayout.addComponent(buttonLayout); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index 80c1b5700..71a022ad9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -22,7 +22,9 @@ import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; 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.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; @@ -94,6 +96,9 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { @Autowired private transient TenantMetaDataRepository tenantMetaDataRepository; + @Autowired + private transient UiProperties uiProperties; + private Button saveDistributionBtn; private Button discardDistributionBtn; private TextField distNameTextField; @@ -143,8 +148,8 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { setSpacing(Boolean.TRUE); addStyleName("lay-color"); setSizeUndefined(); - addComponents(madatoryLabel, distsetTypeNameComboBox, distNameTextField, distVersionTextField, descTextArea, - reqMigStepCheckbox); + addComponents(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()), madatoryLabel, + distsetTypeNameComboBox, distNameTextField, distVersionTextField, descTextArea, reqMigStepCheckbox); addComponent(buttonsLayout); setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index 210509623..8b3e98e5e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -213,6 +213,7 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo private void createOptionGroup(final List tagOptions) { optiongroup = new OptionGroup("", tagOptions); + optiongroup.setCaption(null); optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL); optiongroup.addStyleName("custom-option-group"); optiongroup.setNullSelectionAllowed(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java index b78db6b4f..0f40528b1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java @@ -17,7 +17,9 @@ 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.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.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; @@ -69,6 +71,9 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected String createTagNw; protected String updateTagNw; + @Autowired + private transient UiProperties uiProperties; + @Autowired protected I18N i18n; @@ -251,15 +256,16 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C buttonLayout.setWidth("152px"); 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); mainLayout = new HorizontalLayout(); + mainLayout.setSizeFull(); mainLayout.addComponent(fieldButtonLayout); setCompositionRoot(mainLayout); - } private void addListeners() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index 973d61857..e87e7371f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -14,6 +14,8 @@ import java.util.Set; 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.PopupWindowHelp; import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; @@ -69,6 +71,9 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { @Autowired private transient UINotification uINotification; + + @Autowired + private transient UiProperties uiProperties; private TextField controllerIDTextField; private TextField nameTextField; @@ -83,7 +88,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { private String oldTargetName; private String oldTargetDesc; - + /** * Initialize the Add Update Window Component for Target. */ @@ -146,6 +151,7 @@ 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); if (Boolean.TRUE.equals(editTarget)) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java index 657cd97af..0dc27b9f5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java @@ -19,6 +19,7 @@ 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; @@ -44,7 +45,6 @@ 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; @@ -279,12 +279,14 @@ 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, dsNamecomboBox, descTextArea, tokenVerticalLayout, descTextArea, - progressBar, targetsCountLabel, uploaderLayout); + mainLayout.addComponents(captionLayout, + new PopupWindowHelp(uiproperties.getLinks().getDocumentation().getDeploymentView()), dsNamecomboBox, + descTextArea, tokenVerticalLayout, descTextArea, progressBar, targetsCountLabel, uploaderLayout); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java index 51ac77f10..1bf7dbad6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java @@ -66,6 +66,7 @@ public class CreateUpdateTargetTagLayout extends CreateUpdateTagLayout { private void createOptionGroup(final List tagOptions) { optiongroup = new OptionGroup("", tagOptions); + optiongroup.setCaption(null); optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL); optiongroup.addStyleName("custom-option-group"); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index a426c300e..f574da244 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -27,6 +27,7 @@ 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.PopupWindowHelp; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.filtermanagement.TargetFilterBeanQuery; @@ -63,7 +64,6 @@ import com.vaadin.ui.ComboBox; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; -import com.vaadin.ui.Link; import com.vaadin.ui.OptionGroup; import com.vaadin.ui.TextArea; import com.vaadin.ui.TextField; @@ -113,8 +113,6 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { @Autowired private transient EventBus.SessionEventBus eventBus; - private Label madatoryLabel; - private TextField rolloutName; private ComboBox distributionSet; @@ -137,7 +135,7 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { private OptionGroup errorThresholdOptionGroup; - private Link linkToHelp; + // private Link linkToHelp; private Window addUpdateRolloutWindow; @@ -204,9 +202,16 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { mainLayout.setSpacing(Boolean.TRUE); mainLayout.setSizeUndefined(); - mainLayout.addComponents(getMandatoryLabelLinkToHelp(), rolloutName, distributionSet, getTargetFilterLayout(), - getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresoldLayout(), description, - actionTypeOptionGroupLayout, getSaveDiscardButtonLayout()); + // mainLayout.addComponents(getMandatoryLabelLinkToHelp(), rolloutName, + // distributionSet, getTargetFilterLayout(), + // getGroupDetailsLayout(), getTriggerThresoldLayout(), + // getErrorThresoldLayout(), description, + // actionTypeOptionGroupLayout, getSaveDiscardButtonLayout()); + + mainLayout.addComponents(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRolloutView()), + createMandatoryLabel(), rolloutName, distributionSet, getTargetFilterLayout(), getGroupDetailsLayout(), + getTriggerThresoldLayout(), getErrorThresoldLayout(), description, actionTypeOptionGroupLayout, + getSaveDiscardButtonLayout()); setCompositionRoot(mainLayout); } @@ -263,18 +268,20 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return buttonsLayout; } - private HorizontalLayout getMandatoryLabelLinkToHelp() { - final HorizontalLayout mandatoryLabelLinkToHelpLayout = new HorizontalLayout(); - mandatoryLabelLinkToHelpLayout.setSizeFull(); - mandatoryLabelLinkToHelpLayout.addComponents(madatoryLabel, linkToHelp); - mandatoryLabelLinkToHelpLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); - mandatoryLabelLinkToHelpLayout.setComponentAlignment(linkToHelp, Alignment.MIDDLE_RIGHT); - mandatoryLabelLinkToHelpLayout.addStyleName("window-style"); - return mandatoryLabelLinkToHelpLayout; - } + // private HorizontalLayout getMandatoryLabelLinkToHelp() { + // final HorizontalLayout mandatoryLabelLinkToHelpLayout = new + // HorizontalLayout(); + // mandatoryLabelLinkToHelpLayout.setSizeFull(); + // mandatoryLabelLinkToHelpLayout.addComponents(madatoryLabel, linkToHelp); + // mandatoryLabelLinkToHelpLayout.setComponentAlignment(madatoryLabel, + // Alignment.MIDDLE_LEFT); + // mandatoryLabelLinkToHelpLayout.setComponentAlignment(linkToHelp, + // Alignment.MIDDLE_RIGHT); + // mandatoryLabelLinkToHelpLayout.addStyleName("window-style"); + // return mandatoryLabelLinkToHelpLayout; + // } private void createRequiredComponents() { - madatoryLabel = createMandatoryLabel(); rolloutName = createRolloutNameField(); distributionSet = createDistributionSetCombo(); populateDistributionSet(); @@ -296,14 +303,15 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { totalTargetsLabel = createTotalTargetsLabel(); targetFilterQuery = createTargetFilterQuery(); - linkToHelp = createLinkToHelp(); + // linkToHelp = createLinkToHelp(); actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT); } - private Link createLinkToHelp() { - return SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); - } + // private Link createLinkToHelp() { + // return + // SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); + // } private Label createGroupSizeLabel() { final Label groupSize = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java index 0162f6ed8..cf769ed00 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java @@ -14,6 +14,7 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SystemManagement; 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.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; @@ -49,6 +50,9 @@ public class DefaultDistributionSetTypeLayout extends BaseConfigurationView impl @Autowired private I18N i18n; + @Autowired + private transient UiProperties uiProperties; + private Long currentDefaultDisSetType; private Long selectedDefaultDisSetType; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java index d021254bc..3fa69dd1f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java @@ -15,6 +15,7 @@ import javax.annotation.PostConstruct; import org.eclipse.hawkbit.ui.HawkbitUI; 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.tenantconfiguration.ConfigurationItem.ConfigurationItemChangeListener; @@ -32,7 +33,6 @@ import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Link; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; @@ -90,6 +90,11 @@ public class TenantConfigurationDashboardView extends CustomComponent implements rootLayout.setMargin(true); rootLayout.setSpacing(true); + final PopupWindowHelp help = new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRolloutView()); + help.setSpacing(true); + rootLayout.addComponent(help); + rootLayout.setComponentAlignment(help, Alignment.BOTTOM_RIGHT); + configurationViews.forEach(view -> rootLayout.addComponent(view)); final HorizontalLayout buttonContent = saveConfigurationButtonsLayout(); @@ -119,9 +124,9 @@ public class TenantConfigurationDashboardView extends CustomComponent implements undoConfigurationBtn.addClickListener(event -> undoConfiguration()); hlayout.addComponent(undoConfigurationBtn); - final Link linkToSystemConfigHelp = SPUIComponentProvider - .getHelpLink(uiProperties.getLinks().getDocumentation().getSystemConfigurationView()); - hlayout.addComponent(linkToSystemConfigHelp); + // final Link linkToSystemConfigHelp = SPUIComponentProvider + // .getHelpLink(uiProperties.getLinks().getDocumentation().getSystemConfigurationView()); + // hlayout.addComponent(linkToSystemConfigHelp); return hlayout; } From 589c60cedfe7d60318345d56b7f32564c7175127 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Wed, 11 May 2016 16:28:16 +0200 Subject: [PATCH 03/44] Create a parent class for all dialogs Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 22 +- .../CreateUpdateSoftwareTypeLayout.java | 19 +- .../upload/UploadConfirmationwindow.java | 16 +- .../hawkbit/ui/common/CommonDialog.java | 101 +++++++++ .../ui/common/grid/AbstractGridHeader.java | 2 +- .../ui/common/table/AbstractTableHeader.java | 7 +- .../ui/components/SPUIComponentProvider.java | 26 ++- .../ui/decorators/SPUIComboBoxDecorator.java | 29 ++- .../ui/decorators/SPUITextAreaDecorator.java | 21 +- .../ui/decorators/SPUITextFieldDecorator.java | 25 ++- .../CreateUpdateDistSetTypeLayout.java | 10 +- .../CreateOrUpdateFilterHeader.java | 9 +- .../filtermanagement/TargetFilterHeader.java | 2 +- .../DistributionAddUpdateWindowLayout.java | 18 +- .../management/tag/CreateUpdateTagLayout.java | 11 +- .../TargetAddUpdateWindowLayout.java | 6 +- .../TargetBulkUpdateWindowLayout.java | 9 +- .../rollout/AddUpdateRolloutWindowLayout.java | 200 ++++++++++-------- .../ui/rollout/rollout/RolloutListGrid.java | 9 +- .../ui/rollout/rollout/RolloutListHeader.java | 11 +- .../DefaultDistributionSetTypeLayout.java | 2 +- ...ficateAuthenticationConfigurationItem.java | 4 +- ...yTokenAuthenticationConfigurationItem.java | 4 +- 23 files changed, 354 insertions(+), 209 deletions(-) create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 6a849d8b7..840a19b8c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -133,22 +133,24 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { private void createRequiredComponents() { /* name textfield */ - nameTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, - i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + nameTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY, + true, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); nameTextField.setId(SPUIComponetIdProvider.SOFT_MODULE_NAME); /* version text field */ - versionTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, - i18n.get("textfield.version"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + versionTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.version"), "", + ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.version"), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); versionTextField.setId(SPUIComponetIdProvider.SOFT_MODULE_VERSION); /* Vendor text field */ - vendorTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, - i18n.get("textfield.vendor"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + vendorTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.vendor"), "", ValoTheme.TEXTFIELD_TINY, + false, null, i18n.get("textfield.vendor"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); vendorTextField.setId(SPUIComponetIdProvider.SOFT_MODULE_VENDOR); - descTextArea = SPUIComponentProvider.getTextArea("text-area-style", ValoTheme.TEXTAREA_TINY, false, null, - i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); + descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style", + ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"), + SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); descTextArea.setId(SPUIComponetIdProvider.ADD_SW_MODULE_DESCRIPTION); addDescriptionTextChangeListener(); addVendorTextChangeListener(); @@ -158,8 +160,8 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { madatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR); madatoryLabel.addStyleName(ValoTheme.LABEL_SMALL); - typeComboBox = SPUIComponentProvider.getComboBox("", "", null, null, false, null, - i18n.get("upload.swmodule.type")); + typeComboBox = SPUIComponentProvider.getComboBox(i18n.get("upload.swmodule.type"), "", "", null, null, false, + null, i18n.get("upload.swmodule.type")); typeComboBox.setId(SPUIComponetIdProvider.SW_MODULE_TYPE); typeComboBox.setStyleName(SPUIDefinitions.COMBO_BOX_SPECIFIC_STYLE + " " + ValoTheme.COMBOBOX_TINY); typeComboBox.setNewItemsAllowed(Boolean.FALSE); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index dc0a0911c..98f8fbdb9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -165,23 +165,26 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null); colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); - typeName = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_NAME, - true, "", i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + typeName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", + ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_NAME, true, "", i18n.get("textfield.name"), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); typeName.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_NAME); - typeKey = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_KEY, - true, "", i18n.get("textfield.key"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "", + ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_KEY, true, "", i18n.get("textfield.key"), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); typeKey.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_KEY); - typeDesc = SPUIComponentProvider.getTextArea("", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, - false, "", i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); + typeDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "", + ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, false, "", + i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); typeDesc.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_DESC); typeDesc.setImmediate(true); typeDesc.setNullRepresentation(""); - typeNameComboBox = SPUIComponentProvider.getComboBox("", "", null, null, false, "", - i18n.get("label.combobox.type")); + typeNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, null, false, + "", i18n.get("label.combobox.type")); typeNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE); typeNameComboBox.setImmediate(true); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java index f009985f9..191f3fb90 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java @@ -245,16 +245,16 @@ public class UploadConfirmationwindow implements Button.ClickListener { deleteIcon.setData(itemId); newItem.getItemProperty(ACTION).setValue(deleteIcon); - final TextField sha1 = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, null, - true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + final TextField sha1 = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null, + null, true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); sha1.setId(swNameVersion + "/" + customFile.getFileName() + "/sha1"); - final TextField md5 = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, null, - true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + final TextField md5 = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null, + null, true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); md5.setId(swNameVersion + "/" + customFile.getFileName() + "/md5"); - final TextField customFileName = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, - null, null, true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + final TextField customFileName = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, + false, null, null, true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); customFileName.setId(swNameVersion + "/" + customFile.getFileName() + "/customFileName"); newItem.getItemProperty(SHA1_CHECKSUM).setValue(sha1); newItem.getItemProperty(MD5_CHECKSUM).setValue(md5); @@ -265,8 +265,8 @@ public class UploadConfirmationwindow implements Button.ClickListener { private void addFileNameLayout(final Item newItem, final String baseSoftwareModuleNameVersion, final String customFileName, final String itemId) { final HorizontalLayout horizontalLayout = new HorizontalLayout(); - final TextField fileNameTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, - null, null, true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + final TextField fileNameTextField = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, + false, null, null, true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); fileNameTextField.setId(baseSoftwareModuleNameVersion + "/" + customFileName + "/customFileName"); fileNameTextField.setData(baseSoftwareModuleNameVersion + "/" + customFileName); fileNameTextField.setValue(customFileName); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java new file mode 100644 index 000000000..ad2c37fcc --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java @@ -0,0 +1,101 @@ +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.utils.SPUIComponetIdProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.vaadin.server.FontAwesome; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.FormLayout; +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 { + + private static final long serialVersionUID = -1321949234316858703L; + + private static final Logger LOGGER = LoggerFactory.getLogger(CommonDialog.class); + + private final VerticalLayout mainLayout = new VerticalLayout(); + + private FormLayout formLayout = new FormLayout(); + + private Button saveButton; + + private Button cancelButton; + + public CommonDialog() { + + mainLayout.addComponent(formLayout); + mainLayout.addComponent(createActionButtonsLayout()); + setContent(mainLayout); + + setResizable(false); + center(); + } + + public CommonDialog(final String title, final FormLayout form, final String helpLink) { + + if (formLayout != null) { + formLayout = form; + } + formLayout.setSpacing(true); + formLayout.setMargin(true); + + if (StringUtils.isNotEmpty(helpLink)) { + mainLayout.addComponent(createLinkToHelp(helpLink)); + } + mainLayout.addComponent(formLayout); + mainLayout.addComponent(createActionButtonsLayout()); + + setCaption(title); + setContent(mainLayout); + setResizable(false); + center(); + } + + private HorizontalLayout createActionButtonsLayout() { + + final HorizontalLayout hlayout = new HorizontalLayout(); + hlayout.setSpacing(true); + + saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_SAVE, "", "", "", true, + FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class); + // saveButton.setDescription(i18n.get("configuration.savebutton.tooltip")); + hlayout.addComponent(saveButton); + + cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_CANCEL, "", "", "", + true, FontAwesome.UNDO, SPUIButtonStyleSmallNoBorder.class); + // cancelButton.setDescription(i18n.get("configuration.cancellbutton.tooltip")); + hlayout.addComponent(cancelButton); + + return hlayout; + } + + public void setSaveButtonClickListener(final ClickListener clickListener) { + saveButton.addClickListener(clickListener); + } + + public void setCancelButtonClickListener(final ClickListener clickListener) { + cancelButton.addClickListener(clickListener); + } + + private Link createLinkToHelp(final String link) { + return SPUIComponentProvider.getHelpLink(link); + } + + public FormLayout getFormLayout() { + return formLayout; + } + + public void setFormLayout(final FormLayout formLayout) { + this.formLayout = formLayout; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java index 282e08152..2d69eea20 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java @@ -102,7 +102,7 @@ public abstract class AbstractGridHeader extends VerticalLayout { } private TextField createSearchField() { - final TextField textField = SPUIComponentProvider.getTextField("filter-box", "text-style filter-box-hide", + final TextField textField = SPUIComponentProvider.getTextField("", "filter-box", "text-style filter-box-hide", false, "", "", false, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); textField.setId(getSearchBoxId()); textField.setWidth(100.0f, Unit.PERCENTAGE); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java index b4709ccd1..b1dfd941c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java @@ -44,7 +44,7 @@ import com.vaadin.ui.VerticalLayout; public abstract class AbstractTableHeader extends VerticalLayout { private static final long serialVersionUID = 4881626370291837175L; - + @Autowired protected I18N i18n; @@ -53,7 +53,6 @@ public abstract class AbstractTableHeader extends VerticalLayout { @Autowired protected transient EventBus.SessionEventBus eventbus; - private Label headerCaption; @@ -83,7 +82,7 @@ public abstract class AbstractTableHeader extends VerticalLayout { restoreState(); eventbus.subscribe(this); } - + @PreDestroy void destroy() { eventbus.unsubscribe(this); @@ -214,7 +213,7 @@ public abstract class AbstractTableHeader extends VerticalLayout { } private TextField createSearchField() { - final TextField textField = SPUIComponentProvider.getTextField("filter-box", "text-style filter-box-hide", + final TextField textField = SPUIComponentProvider.getTextField("", "filter-box", "text-style filter-box-hide", false, "", "", false, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); textField.setId(getSearchBoxId()); textField.setWidth(100.0f, Unit.PERCENTAGE); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java index f5008eb31..404c48bd3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java @@ -152,6 +152,8 @@ public final class SPUIComponentProvider { /** * Get Label UI component. * + * @param caption + * set the caption of the textfield * @param style * set style * @param styleName @@ -160,7 +162,7 @@ public final class SPUIComponentProvider { * to set field as mandatory * @param data * component data - * @param promt + * @param prompt * prompt user for input * @param immediate * set component's immediate mode specified mode @@ -168,9 +170,11 @@ public final class SPUIComponentProvider { * maximum characters allowed * @return TextField text field */ - public static TextField getTextField(final String style, final String styleName, final boolean required, - final String data, final String promt, final boolean immediate, final int maxLengthAllowed) { - return SPUITextFieldDecorator.decorate(style, styleName, required, data, promt, immediate, maxLengthAllowed); + public static TextField getTextField(final String caption, final String style, final String styleName, + final boolean required, final String data, final String prompt, final boolean immediate, + final int maxLengthAllowed) { + return SPUITextFieldDecorator.decorate(caption, style, styleName, required, data, prompt, immediate, + maxLengthAllowed); } /** @@ -190,14 +194,16 @@ public final class SPUIComponentProvider { * maximum characters allowed * @return TextArea text area */ - public static TextArea getTextArea(final String style, final String styleName, final boolean required, - final String data, final String promt, final int maxLength) { - return SPUITextAreaDecorator.decorate(style, styleName, required, data, promt, maxLength); + public static TextArea getTextArea(final String caption, final String style, final String styleName, + final boolean required, final String data, final String promt, final int maxLength) { + return SPUITextAreaDecorator.decorate(caption, style, styleName, required, data, promt, maxLength); } /** * Get Label UI component. * + * @param caption + * caption of the combo box * @param height * combo box height * @param width @@ -214,9 +220,9 @@ public final class SPUIComponentProvider { * input prompt * @return ComboBox */ - public static ComboBox getComboBox(final String height, final String width, final String style, - final String styleName, final boolean required, final String data, final String promt) { - return SPUIComboBoxDecorator.decorate(height, width, style, styleName, required, data, promt); + public static ComboBox getComboBox(final String caption, final String height, final String width, + final String style, final String styleName, final boolean required, final String data, final String promt) { + return SPUIComboBoxDecorator.decorate(caption, height, width, style, styleName, required, data, promt); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIComboBoxDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIComboBoxDecorator.java index 7e7ae836e..291173044 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIComboBoxDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIComboBoxDecorator.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.ui.decorators; +import org.apache.commons.lang3.StringUtils; + import com.vaadin.ui.ComboBox; import com.vaadin.ui.themes.ValoTheme; @@ -29,6 +31,8 @@ public final class SPUIComboBoxDecorator { /** * Decorate. * + * @param caption + * caption of the combobox * @param height * as H * @param width @@ -41,39 +45,42 @@ public final class SPUIComboBoxDecorator { * as T|F * @param data * as data - * @param promt + * @param prompt * as promt * @return ComboBox as comp */ - public static ComboBox decorate(final String height, final String width, final String style, final String styleName, - final boolean required, final String data, final String promt) { + public static ComboBox decorate(final String caption, final String height, final String width, final String style, + final String styleName, final boolean required, final String data, final String prompt) { final ComboBox spUICombo = new ComboBox(); // Default settings spUICombo.setRequired(required); spUICombo.addStyleName(ValoTheme.COMBOBOX_TINY); + if (StringUtils.isNotEmpty(caption)) { + spUICombo.setCaption(caption); + } // Add style - if (null != style) { + if (StringUtils.isNotEmpty(style)) { spUICombo.setStyleName(style); } // Add style Name - if (null != styleName) { + if (StringUtils.isNotEmpty(styleName)) { spUICombo.addStyleName(styleName); } // Add height - if (null != height) { + if (StringUtils.isNotEmpty(height)) { spUICombo.setHeight(height); } // AddWidth - if (null != width) { + if (StringUtils.isNotEmpty(width)) { spUICombo.setWidth(width); } - // Set promt - if (null != promt) { - spUICombo.setInputPrompt(promt); + // Set prompt + if (StringUtils.isNotEmpty(prompt)) { + spUICombo.setInputPrompt(prompt); } // Set Data - if (null != data) { + if (StringUtils.isNotEmpty(data)) { spUICombo.setData(data); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java index d4a3bcc77..14b727c68 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.ui.decorators; +import org.apache.commons.lang3.StringUtils; + import com.vaadin.ui.TextArea; import com.vaadin.ui.themes.ValoTheme; @@ -37,33 +39,36 @@ public final class SPUITextAreaDecorator { * to set field as mandatory * @param data * component data - * @param promt + * @param prompt * as user for input * @param maxLength * maximum characters allowed * @return TextArea as comp */ - public static TextArea decorate(String style, String styleName, boolean required, String data, String promt, - int maxLength) { + public static TextArea decorate(final String caption, final String style, final String styleName, + final boolean required, final String data, final String prompt, final int maxLength) { final TextArea spUITxtArea = new TextArea(); // Default settings spUITxtArea.setRequired(false); spUITxtArea.addStyleName(ValoTheme.COMBOBOX_SMALL); + if (StringUtils.isNotEmpty(caption)) { + spUITxtArea.setCaption(caption); + } if (required) { spUITxtArea.setRequired(true); } // Add style - if (null != style) { + if (StringUtils.isNotEmpty(style)) { spUITxtArea.setStyleName(style); } // Add style Name - if (null != styleName) { + if (StringUtils.isNotEmpty(styleName)) { spUITxtArea.addStyleName(styleName); } - if (null != promt) { - spUITxtArea.setInputPrompt(promt); + if (StringUtils.isNotEmpty(prompt)) { + spUITxtArea.setInputPrompt(prompt); } - if (null != data) { + if (StringUtils.isNotEmpty(data)) { spUITxtArea.setData(data); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextFieldDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextFieldDecorator.java index 72234da75..647b1d5aa 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextFieldDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextFieldDecorator.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.ui.decorators; +import org.apache.commons.lang3.StringUtils; + import com.vaadin.ui.TextField; import com.vaadin.ui.themes.ValoTheme; @@ -27,8 +29,9 @@ public final class SPUITextFieldDecorator { } /** - * Decorate. * + * @param caption + * set the caption of the textfield * @param style * set style * @param styleName @@ -37,7 +40,7 @@ public final class SPUITextFieldDecorator { * to set field as mandatory * @param data * component data - * @param promt + * @param prompt * prompt user for input * @param immediate * as for display @@ -45,9 +48,13 @@ public final class SPUITextFieldDecorator { * maximum characters allowed * @return Text field as decorated */ - public static TextField decorate(String style, String styleName, boolean required, String data, String promt, - boolean immediate, int maxLengthAllowed) { + public static TextField decorate(final String caption, final String style, final String styleName, + final boolean required, final String data, final String prompt, final boolean immediate, + final int maxLengthAllowed) { final TextField spUITxtFld = new TextField(); + if (StringUtils.isNotEmpty(caption)) { + spUITxtFld.setCaption(caption); + } // Default settings spUITxtFld.setRequired(false); spUITxtFld.addStyleName(ValoTheme.TEXTFIELD_SMALL); @@ -58,17 +65,17 @@ public final class SPUITextFieldDecorator { spUITxtFld.setImmediate(true); } // Add style - if (null != style) { + if (StringUtils.isNotEmpty(style)) { spUITxtFld.setStyleName(style); } // Add style Name - if (null != styleName) { + if (StringUtils.isNotEmpty(styleName)) { spUITxtFld.addStyleName(styleName); } - if (null != promt) { - spUITxtFld.setInputPrompt(promt); + if (StringUtils.isNotEmpty(prompt)) { + spUITxtFld.setInputPrompt(prompt); } - if (null != data) { + if (StringUtils.isNotEmpty(data)) { spUITxtFld.setData(data); } if (maxLengthAllowed > 0) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 58b1b5fd2..56e6b6bbe 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -181,17 +181,17 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null); madatoryLabel = getMandatoryLabel(); - typeName = SPUIComponentProvider.getTextField("", + typeName = 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); - typeKey = SPUIComponentProvider.getTextField("", + 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("", + typeDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_DESC, false, "", i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); @@ -199,8 +199,8 @@ public class CreateUpdateDistSetTypeLayout extends CustomComponent implements Co typeDesc.setImmediate(true); typeDesc.setNullRepresentation(""); - typeNameComboBox = SPUIComponentProvider.getComboBox("", "", null, null, false, "", - i18n.get("label.combobox.type")); + typeNameComboBox = 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); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java index 97d2bf031..d1525f154 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java @@ -222,8 +222,9 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button } private TextField createNameTextField() { - final TextField nameField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, - i18n.get("textfield.customfiltername"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + final TextField nameField = SPUIComponentProvider.getTextField(i18n.get("textfield.customfiltername"), "", + ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.customfiltername"), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); nameField.setId(SPUIComponetIdProvider.CUSTOM_FILTER_ADD_NAME); nameField.setPropertyDataSource(nameLabel); nameField.addTextChangeListener(event -> onFiterNameChange(event)); @@ -414,8 +415,8 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button } private TextField createSearchField() { - final TextField textField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, "", "", - true, SPUILabelDefinitions.TARGET_FILTER_QUERY_TEXT_FIELD_LENGTH); + final TextField textField = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, "", + "", true, SPUILabelDefinitions.TARGET_FILTER_QUERY_TEXT_FIELD_LENGTH); textField.setId("custom.query.text.Id"); textField.addStyleName("target-filter-textfield"); textField.setWidth(900.0F, Unit.PIXELS); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterHeader.java index 08592f20c..3ce600ef8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterHeader.java @@ -124,7 +124,7 @@ public class TargetFilterHeader extends VerticalLayout { } private TextField createSearchField() { - final TextField campSearchTextField = SPUIComponentProvider.getTextField("filter-box", + final TextField campSearchTextField = SPUIComponentProvider.getTextField(null, "filter-box", "text-style filter-box-hide", false, "", "", false, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); campSearchTextField.setId("target.filter.search.text.Id"); campSearchTextField.setWidth(500.0f, Unit.PIXELS); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index 71a022ad9..85beb879d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -160,24 +160,26 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { * Create required UI components. */ private void createRequiredComponents() { - distNameTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, - i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + distNameTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY, + true, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); distNameTextField.setId(SPUIComponetIdProvider.DIST_ADD_NAME); distNameTextField.setNullRepresentation(""); - distVersionTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, - i18n.get("textfield.version"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + distVersionTextField = SPUIComponentProvider.getTextField(i18n.get("textfield.version"), "", + ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.version"), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); distVersionTextField.setId(SPUIComponetIdProvider.DIST_ADD_VERSION); distVersionTextField.setNullRepresentation(""); - distsetTypeNameComboBox = SPUIComponentProvider.getComboBox("", "", null, "", false, "", - i18n.get("label.combobox.type")); + distsetTypeNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, "", + false, "", i18n.get("label.combobox.type")); distsetTypeNameComboBox.setImmediate(true); distsetTypeNameComboBox.setNullSelectionAllowed(false); distsetTypeNameComboBox.setId(SPUIComponetIdProvider.DIST_ADD_DISTSETTYPE); - descTextArea = SPUIComponentProvider.getTextArea("text-area-style", ValoTheme.TEXTAREA_TINY, false, null, - i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); + descTextArea = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style", + ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"), + SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); descTextArea.setId(SPUIComponetIdProvider.DIST_ADD_DESC); descTextArea.setNullRepresentation(""); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java index 0f40528b1..289cf6542 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java @@ -173,19 +173,20 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag.color"), null); colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); - tagName = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_NAME, - true, "", i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + tagName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", + ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_NAME, true, "", i18n.get("textfield.name"), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); tagName.setId(SPUIDefinitions.NEW_TARGET_TAG_NAME); - tagDesc = SPUIComponentProvider.getTextArea("", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TAG_DESC, + tagDesc = SPUIComponentProvider.getTextArea(null, "", 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("", "", null, null, false, "", - i18n.get("label.combobox.tag")); + tagNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.tag"), "", "", null, null, false, + "", i18n.get("label.combobox.tag")); tagNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE); tagNameComboBox.setImmediate(true); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index e87e7371f..9275776d0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -105,17 +105,17 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { private void createRequiredComponents() { /* Textfield for controller Id */ - controllerIDTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, + controllerIDTextField = SPUIComponentProvider.getTextField( i18n.get("prompt.target.id"), "", ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("prompt.target.id"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); controllerIDTextField.setId(SPUIComponetIdProvider.TARGET_ADD_CONTROLLER_ID); /* Textfield for target name */ - nameTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, + nameTextField = SPUIComponentProvider.getTextField( i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); nameTextField.setId(SPUIComponetIdProvider.TARGET_ADD_NAME); /* Textarea for target description */ - descTextArea = SPUIComponentProvider.getTextArea("text-area-style", ValoTheme.TEXTFIELD_TINY, false, null, + descTextArea = SPUIComponentProvider.getTextArea( i18n.get("textfield.description"), "text-area-style", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); descTextArea.setId(SPUIComponetIdProvider.TARGET_ADD_DESC); descTextArea.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java index 0dc27b9f5..a098f61c3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java @@ -195,8 +195,9 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { } private TextArea getDescriptionTextArea() { - final TextArea description = SPUIComponentProvider.getTextArea("text-area-style", ValoTheme.TEXTFIELD_TINY, - false, null, i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); + final TextArea description = 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.BULK_UPLOAD_DESC); description.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); description.setWidth("100%"); @@ -205,8 +206,8 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { private ComboBox getDsComboField() { final Container container = createContainer(); - final ComboBox dsComboBox = SPUIComponentProvider.getComboBox("", "", null, null, false, "", - i18n.get("bulkupload.ds.name")); + final ComboBox dsComboBox = SPUIComponentProvider.getComboBox(i18n.get("bulkupload.ds.name"), "", "", null, + null, false, "", i18n.get("bulkupload.ds.name")); dsComboBox.setSizeUndefined(); dsComboBox.addStyleName(SPUIDefinitions.BULK_UPLOD_DS_COMBO_STYLE); dsComboBox.setImmediate(true); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index f574da244..d6503a1cf 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -27,7 +27,7 @@ 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.PopupWindowHelp; +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,9 +61,10 @@ 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.FormLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; +import com.vaadin.ui.Link; import com.vaadin.ui.OptionGroup; import com.vaadin.ui.TextArea; import com.vaadin.ui.TextField; @@ -79,7 +80,7 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent @ViewScope -public class AddUpdateRolloutWindowLayout extends CustomComponent { +public class AddUpdateRolloutWindowLayout extends CommonDialog { private static final long serialVersionUID = 2999293468801479916L; @@ -113,6 +114,8 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { @Autowired private transient EventBus.SessionEventBus eventBus; + private Label madatoryLabel; + private TextField rolloutName; private ComboBox distributionSet; @@ -135,7 +138,7 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { private OptionGroup errorThresholdOptionGroup; - // private Link linkToHelp; + private Link linkToHelp; private Window addUpdateRolloutWindow; @@ -149,12 +152,21 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { 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(); + // createRequiredComponents(); + // buildLayout(); + initForm(); } public Window getWindow() { @@ -202,17 +214,13 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { mainLayout.setSpacing(Boolean.TRUE); mainLayout.setSizeUndefined(); - // mainLayout.addComponents(getMandatoryLabelLinkToHelp(), rolloutName, - // distributionSet, getTargetFilterLayout(), - // getGroupDetailsLayout(), getTriggerThresoldLayout(), - // getErrorThresoldLayout(), description, - // actionTypeOptionGroupLayout, getSaveDiscardButtonLayout()); + mainLayout.addComponents(madatoryLabel, rolloutName, distributionSet, getTargetFilterLayout(), + getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresoldLayout(), description, + actionTypeOptionGroupLayout, linkToHelp, getSaveDiscardButtonLayout()); - mainLayout.addComponents(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRolloutView()), - createMandatoryLabel(), rolloutName, distributionSet, getTargetFilterLayout(), getGroupDetailsLayout(), - getTriggerThresoldLayout(), getErrorThresoldLayout(), description, actionTypeOptionGroupLayout, - getSaveDiscardButtonLayout()); - setCompositionRoot(mainLayout); + mainLayout.addComponent(new Label("TEST TEST TEST")); + mainLayout.setComponentAlignment(linkToHelp, Alignment.BOTTOM_RIGHT); + rolloutName.focus(); } private HorizontalLayout getGroupDetailsLayout() { @@ -225,9 +233,12 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private HorizontalLayout getErrorThresoldLayout() { + createErrorThresold(); + createErrorThresholdOptionGroup(); final HorizontalLayout errorThresoldLayout = new HorizontalLayout(); errorThresoldLayout.setSizeFull(); - errorThresoldLayout.addComponents(errorThreshold, errorThresholdOptionGroup); + errorThresoldLayout.addComponents(SPUIComponentProvider.getLabel(i18n.get("prompt.error.threshold"), null), + errorThreshold, errorThresholdOptionGroup); errorThresoldLayout.setExpandRatio(errorThreshold, 1.0F); return errorThresoldLayout; } @@ -244,10 +255,12 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private HorizontalLayout getTriggerThresoldLayout() { + createTriggerThresold(); final HorizontalLayout triggerThresholdLayout = new HorizontalLayout(); triggerThresholdLayout.setSizeFull(); - triggerThresholdLayout.addComponents(triggerThreshold, getPercentHintLabel()); - triggerThresholdLayout.setExpandRatio(triggerThreshold, 1.0F); + triggerThresholdLayout.addComponents(SPUIComponentProvider.getLabel(i18n.get("prompt.tigger.thresold"), null), + triggerThreshold, getPercentHintLabel()); + triggerThresholdLayout.setExpandRatio(triggerThreshold, 2.0F); return triggerThresholdLayout; } @@ -268,20 +281,28 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return buttonsLayout; } - // private HorizontalLayout getMandatoryLabelLinkToHelp() { - // final HorizontalLayout mandatoryLabelLinkToHelpLayout = new - // HorizontalLayout(); - // mandatoryLabelLinkToHelpLayout.setSizeFull(); - // mandatoryLabelLinkToHelpLayout.addComponents(madatoryLabel, linkToHelp); - // mandatoryLabelLinkToHelpLayout.setComponentAlignment(madatoryLabel, - // Alignment.MIDDLE_LEFT); - // mandatoryLabelLinkToHelpLayout.setComponentAlignment(linkToHelp, - // Alignment.MIDDLE_RIGHT); - // mandatoryLabelLinkToHelpLayout.addStyleName("window-style"); - // return mandatoryLabelLinkToHelpLayout; - // } + private void initForm() { + + getFormLayout().addComponent(createMandatoryLabel()); + getFormLayout().addComponent(createRolloutNameField()); + getFormLayout().addComponent(createDistributionSetCombo()); + populateDistributionSet(); + getFormLayout().addComponent(createTargetFilterQueryCombo()); + populateTargetFilterQuery(); + getFormLayout().addComponent(createNoOfGroupsField()); + getFormLayout().addComponent(createGroupSizeLabel()); + getFormLayout().addComponent(getTriggerThresoldLayout()); + getFormLayout().addComponent(getErrorThresoldLayout()); + getFormLayout().addComponent(createDescription()); + getFormLayout().addComponent(actionTypeOptionGroupLayout); + actionTypeOptionGroupLayout.selectDefaultOption(); + + getFormLayout().addComponent(createTotalTargetsLabel()); + getFormLayout().addComponent(createTargetFilterQuery()); + } private void createRequiredComponents() { + madatoryLabel = createMandatoryLabel(); rolloutName = createRolloutNameField(); distributionSet = createDistributionSetCombo(); populateDistributionSet(); @@ -291,10 +312,10 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { noOfGroups = createNoOfGroupsField(); groupSizeLabel = createGroupSizeLabel(); - triggerThreshold = createTriggerThresold(); - errorThreshold = createErrorThresold(); - description = createDescription(); - errorThresholdOptionGroup = createErrorThresholdOptionGroup(); + // triggerThreshold = createTriggerThresold(); + // errorThreshold = createErrorThresold(); + // description = createDescription(); + // errorThresholdOptionGroup = createErrorThresholdOptionGroup(); setDefaultSaveStartGroupOption(); saveRolloutBtn = createSaveButton(); discardRollloutBtn = createDiscardButton(); @@ -303,16 +324,11 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { totalTargetsLabel = createTotalTargetsLabel(); targetFilterQuery = createTargetFilterQuery(); - // linkToHelp = createLinkToHelp(); + linkToHelp = SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT); } - // private Link createLinkToHelp() { - // return - // SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); - // } - private Label createGroupSizeLabel() { final Label groupSize = SPUIComponentProvider.getLabel("", SPUILabelDefinitions.SP_LABEL_SIMPLE); groupSize.addStyleName(ValoTheme.LABEL_TINY + " " + "rollout-target-count-message"); @@ -323,8 +339,9 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private TextArea createTargetFilterQuery() { - final TextArea filterField = SPUIComponentProvider.getTextArea("text-area-style", ValoTheme.TEXTFIELD_TINY, - false, null, null, SPUILabelDefinitions.TARGET_FILTER_QUERY_TEXT_FIELD_LENGTH); + final TextArea filterField = SPUIComponentProvider.getTextArea(null, "text-area-style", + ValoTheme.TEXTFIELD_TINY, false, null, null, + SPUILabelDefinitions.TARGET_FILTER_QUERY_TEXT_FIELD_LENGTH); filterField.setId(SPUIComponetIdProvider.ROLLOUT_TARGET_FILTER_QUERY_FIELD); filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); filterField.setVisible(false); @@ -342,17 +359,17 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return targetCountLabel; } - private OptionGroup createErrorThresholdOptionGroup() { - final OptionGroup errorThresoldOptions = new OptionGroup(); + private void createErrorThresholdOptionGroup() { + errorThresholdOptionGroup = new OptionGroup(); for (final ERRORTHRESOLDOPTIONS option : ERRORTHRESOLDOPTIONS.values()) { - errorThresoldOptions.addItem(option.getValue()); + errorThresholdOptionGroup.addItem(option.getValue()); } - 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; + 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(); } private void onErrorThresoldOptionChange(final ValueChangeEvent event) { @@ -361,21 +378,21 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { if (event.getProperty().getValue().equals(ERRORTHRESOLDOPTIONS.COUNT.getValue())) { errorThreshold.addValidator(new ErrorThresoldOptionValidator()); } else { - errorThreshold.addValidator(new ThresoldFieldValidator()); + errorThreshold.addValidator(new ThresholdFieldValidator()); } errorThreshold.getValidators(); } private ComboBox createTargetFilterQueryCombo() { - final ComboBox targetFilter = SPUIComponentProvider.getComboBox("", "", 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; + 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; } private void onTargetFilterChange() { @@ -606,37 +623,37 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private TextArea createDescription() { - final TextArea descriptionField = SPUIComponentProvider.getTextArea("text-area-style", ValoTheme.TEXTFIELD_TINY, - false, null, i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); + 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); descriptionField.setId(SPUIComponetIdProvider.ROLLOUT_DESCRIPTION_ID); descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); descriptionField.setSizeFull(); return descriptionField; } - private TextField createErrorThresold() { - final TextField errorField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, + private void createErrorThresold() { + errorThreshold = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("prompt.error.threshold"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); - errorField.addValidator(new ThresoldFieldValidator()); - errorField.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_ID); - errorField.setMaxLength(7); - errorField.setSizeFull(); - return errorField; + errorThreshold.addValidator(new ThresholdFieldValidator()); + errorThreshold.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_ID); + errorThreshold.setMaxLength(7); + errorThreshold.setSizeFull(); } - private TextField createTriggerThresold() { - final TextField thresholdField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, + private void createTriggerThresold() { + triggerThreshold = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("prompt.tigger.thresold"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); - thresholdField.setId(SPUIComponetIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID); - thresholdField.addValidator(new ThresoldFieldValidator()); - thresholdField.setSizeFull(); - thresholdField.setMaxLength(3); - return thresholdField; + triggerThreshold.setId(SPUIComponetIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID); + triggerThreshold.addValidator(new ThresholdFieldValidator()); + triggerThreshold.setSizeUndefined(); + triggerThreshold.setMaxLength(3); } private TextField createNoOfGroupsField() { - final TextField noOfGroupsField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, - i18n.get("prompt.number.of.groups"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + 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(); @@ -655,14 +672,14 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private ComboBox createDistributionSetCombo() { - final ComboBox dsSet = SPUIComponentProvider.getComboBox("", "", 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; + 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; } private void populateDistributionSet() { @@ -680,8 +697,9 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private TextField createRolloutNameField() { - final TextField rolloutNameField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, true, null, - i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + 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; @@ -728,7 +746,7 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return (int) Math.ceil((double) totalTargetsCount / Double.parseDouble(noOfGroups.getValue())); } - class ThresoldFieldValidator implements Validator { + class ThresholdFieldValidator implements Validator { private static final long serialVersionUID = 9049939751976326550L; @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index 9c3e1992b..7c7a5daaf 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -54,7 +54,6 @@ import com.vaadin.server.FontAwesome; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.UI; -import com.vaadin.ui.Window; import com.vaadin.ui.renderers.ClickableRenderer.RendererClickEvent; import com.vaadin.ui.renderers.HtmlRenderer; @@ -77,7 +76,6 @@ public class RolloutListGrid extends AbstractGrid { private static final String START_OPTION = "Start"; - @Autowired private transient RolloutManagement rolloutManagement; @@ -95,7 +93,6 @@ public class RolloutListGrid extends AbstractGrid { private transient Map statusIconMap = new EnumMap<>(RolloutStatus.class); - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final RolloutEvent event) { switch (event) { @@ -393,10 +390,8 @@ public class RolloutListGrid extends AbstractGrid { private void onUpdate(final ContextMenuData contextMenuData) { addUpdateRolloutWindow.populateData(contextMenuData.getRolloutId()); - final Window addTargetWindow = addUpdateRolloutWindow.getWindow(); - addTargetWindow.setCaption(i18n.get("caption.update.rollout")); - UI.getCurrent().addWindow(addTargetWindow); - addTargetWindow.setVisible(Boolean.TRUE); + UI.getCurrent().addWindow(addUpdateRolloutWindow); + addUpdateRolloutWindow.setVisible(Boolean.TRUE); } private void refreshGrid() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java index b3043eb4a..543ef18a3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java @@ -27,7 +27,6 @@ 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; /** * @@ -55,7 +54,6 @@ public class RolloutListHeader extends AbstractGridHeader { @PostConstruct protected void init() { super.init(); - addUpdateRolloutWindow.init(); } @Override @@ -91,11 +89,10 @@ public class RolloutListHeader extends AbstractGridHeader { @Override protected void addNewItem(final ClickEvent event) { - addUpdateRolloutWindow.resetComponents(); - final Window addTargetWindow = addUpdateRolloutWindow.getWindow(); - UI.getCurrent().addWindow(addTargetWindow); - addTargetWindow.setVisible(Boolean.TRUE); - + // addUpdateRolloutWindow.resetComponents(); + addUpdateRolloutWindow.init(); + UI.getCurrent().addWindow(addUpdateRolloutWindow); + addUpdateRolloutWindow.setVisible(Boolean.TRUE); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java index cf769ed00..098456d88 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java @@ -95,7 +95,7 @@ public class DefaultDistributionSetTypeLayout extends BaseConfigurationView impl final Iterable distributionSetTypeCollection = distributionSetManagement .findDistributionSetTypesAll(pageReq); - combobox = SPUIComponentProvider.getComboBox("", "330", null, null, false, "", "label.combobox.tag"); + combobox = SPUIComponentProvider.getComboBox(null, "", "330", null, null, false, "", "label.combobox.tag"); combobox.setId(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_DEFAULTDIS_COMBOBOX); combobox.setNullSelectionAllowed(false); for (final DistributionSetType distributionSetType : distributionSetTypeCollection) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java index 438917072..e49f77b8d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java @@ -70,8 +70,8 @@ public class CertificateAuthenticationConfigurationItem extends AbstractAuthenti caRootAuthorityLabel.setDescription( "The SSL Issuer iRules.X509 hash, to validate against the controller request certifcate."); - caRootAuthorityTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, "", - true, 128); + caRootAuthorityTextField = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null, + "", true, 128); caRootAuthorityTextField.setWidth("500px"); caRootAuthorityTextField.setImmediate(true); caRootAuthorityTextField.addTextChangeListener(event -> caRootAuthorityChanged()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java index 3fa87538c..86d51409a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java @@ -74,8 +74,8 @@ public class GatewaySecurityTokenAuthenticationConfigurationItem extends Abstrac detailLayout = new VerticalLayout(); detailLayout.setImmediate(true); - gatewayTokenNameTextField = SPUIComponentProvider.getTextField("", ValoTheme.TEXTFIELD_TINY, false, null, "", - true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + gatewayTokenNameTextField = SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, false, null, + "", true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); gatewayTokenNameTextField.setImmediate(true); // hide text field until we support multiple gateway tokens for a tenan gatewayTokenNameTextField.setVisible(false); From f4a85c8271630248bbe61e18cd3dc44f27df92a8 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 12 May 2016 11:03:21 +0200 Subject: [PATCH 04/44] Signed-off-by: Melanie Retter --- .../hawkbit/ui/common/CommonDialog.java | 5 + .../rollout/AddUpdateRolloutWindowLayout.java | 105 +++++++++--------- .../ui/rollout/rollout/RolloutListHeader.java | 3 +- .../themes/hawkbit/customstyles/others.scss | 2 +- 4 files changed, 63 insertions(+), 52 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java index ad2c37fcc..83ff7c8e2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialog.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.vaadin.server.FontAwesome; +import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.FormLayout; @@ -67,13 +68,17 @@ public class CommonDialog extends Window { saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_SAVE, "", "", "", true, FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class); + saveButton.setCaption("save"); // saveButton.setDescription(i18n.get("configuration.savebutton.tooltip")); 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")); hlayout.addComponent(cancelButton); + hlayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_RIGHT); return hlayout; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index d6503a1cf..057f8b146 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -166,7 +166,9 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { public void init() { // createRequiredComponents(); // buildLayout(); + setCaption(i18n.get("caption.configure.rollout")); initForm(); + resetFields(); } public Window getWindow() { @@ -215,7 +217,7 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { mainLayout.setSizeUndefined(); mainLayout.addComponents(madatoryLabel, rolloutName, distributionSet, getTargetFilterLayout(), - getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresoldLayout(), description, + getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresholdLayout(), description, actionTypeOptionGroupLayout, linkToHelp, getSaveDiscardButtonLayout()); mainLayout.addComponent(new Label("TEST TEST TEST")); @@ -224,22 +226,27 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { } 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, 1.0F); + groupLayout.setExpandRatio(noOfGroups, 3.0F); + groupLayout.setExpandRatio(groupSizeLabel, 1.0F); groupLayout.setComponentAlignment(groupSizeLabel, Alignment.MIDDLE_LEFT); return groupLayout; } - private HorizontalLayout getErrorThresoldLayout() { - createErrorThresold(); + private HorizontalLayout getErrorThresholdLayout() { + createErrorThreshold(); createErrorThresholdOptionGroup(); final HorizontalLayout errorThresoldLayout = new HorizontalLayout(); errorThresoldLayout.setSizeFull(); - errorThresoldLayout.addComponents(SPUIComponentProvider.getLabel(i18n.get("prompt.error.threshold"), null), - errorThreshold, errorThresholdOptionGroup); - errorThresoldLayout.setExpandRatio(errorThreshold, 1.0F); + errorThresoldLayout.addComponents(errorThreshold, errorThresholdOptionGroup); + errorThresoldLayout.setExpandRatio(errorThreshold, 3.0F); + errorThresoldLayout.setExpandRatio(errorThresholdOptionGroup, 1.0F); + errorThresoldLayout.setCaption(i18n.get("prompt.error.threshold")); return errorThresoldLayout; } @@ -257,17 +264,20 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { private HorizontalLayout getTriggerThresoldLayout() { createTriggerThresold(); final HorizontalLayout triggerThresholdLayout = new HorizontalLayout(); + triggerThresholdLayout.setCaption(i18n.get("prompt.tigger.thresold")); triggerThresholdLayout.setSizeFull(); - triggerThresholdLayout.addComponents(SPUIComponentProvider.getLabel(i18n.get("prompt.tigger.thresold"), null), - triggerThreshold, getPercentHintLabel()); - triggerThresholdLayout.setExpandRatio(triggerThreshold, 2.0F); + final Label percentSymbol = getPercentHintLabel(); + triggerThresholdLayout.addComponents(triggerThreshold, percentSymbol); + 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.setSizeUndefined(); + percentSymbol.setSizeFull(); return percentSymbol; } @@ -283,22 +293,20 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { private void initForm() { - getFormLayout().addComponent(createMandatoryLabel()); getFormLayout().addComponent(createRolloutNameField()); getFormLayout().addComponent(createDistributionSetCombo()); populateDistributionSet(); getFormLayout().addComponent(createTargetFilterQueryCombo()); populateTargetFilterQuery(); - getFormLayout().addComponent(createNoOfGroupsField()); - getFormLayout().addComponent(createGroupSizeLabel()); + getFormLayout().addComponent(getGroupDetailsLayout()); getFormLayout().addComponent(getTriggerThresoldLayout()); - getFormLayout().addComponent(getErrorThresoldLayout()); + getFormLayout().addComponent(getErrorThresholdLayout()); getFormLayout().addComponent(createDescription()); getFormLayout().addComponent(actionTypeOptionGroupLayout); actionTypeOptionGroupLayout.selectDefaultOption(); - getFormLayout().addComponent(createTotalTargetsLabel()); - getFormLayout().addComponent(createTargetFilterQuery()); + // getFormLayout().addComponent(createTotalTargetsLabel()); + // getFormLayout().addComponent(createTargetFilterQuery()); } private void createRequiredComponents() { @@ -310,8 +318,8 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { targetFilterQueryCombo = createTargetFilterQueryCombo(); populateTargetFilterQuery(); - noOfGroups = createNoOfGroupsField(); - groupSizeLabel = createGroupSizeLabel(); + // noOfGroups = createNoOfGroupsField(); + // groupSizeLabel = createGroupSizeLabel(); // triggerThreshold = createTriggerThresold(); // errorThreshold = createErrorThresold(); // description = createDescription(); @@ -329,13 +337,12 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { } - 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 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 TextArea createTargetFilterQuery() { @@ -623,16 +630,16 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { } private TextArea createDescription() { - final TextArea descriptionField = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), - "text-area-style", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"), + description = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "text-area-style", + ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); - descriptionField.setId(SPUIComponetIdProvider.ROLLOUT_DESCRIPTION_ID); - descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); - descriptionField.setSizeFull(); - return descriptionField; + description.setId(SPUIComponetIdProvider.ROLLOUT_DESCRIPTION_ID); + description.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); + description.setSizeFull(); + return description; } - private void createErrorThresold() { + 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()); @@ -646,20 +653,18 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { i18n.get("prompt.tigger.thresold"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); triggerThreshold.setId(SPUIComponetIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID); triggerThreshold.addValidator(new ThresholdFieldValidator()); - triggerThreshold.setSizeUndefined(); + triggerThreshold.setSizeFull(); triggerThreshold.setMaxLength(3); } - 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 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 void onGroupNumberChange() { @@ -697,12 +702,12 @@ public class AddUpdateRolloutWindowLayout extends CommonDialog { } private TextField createRolloutNameField() { - 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; + 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; } private Label createMandatoryLabel() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java index 543ef18a3..dd19c72a8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java @@ -89,7 +89,8 @@ public class RolloutListHeader extends AbstractGridHeader { @Override protected void addNewItem(final ClickEvent event) { - // addUpdateRolloutWindow.resetComponents(); + addUpdateRolloutWindow.init(); + addUpdateRolloutWindow.resetComponents(); addUpdateRolloutWindow.init(); UI.getCurrent().addWindow(addUpdateRolloutWindow); addUpdateRolloutWindow.setVisible(Boolean.TRUE); diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss index 879fb8dd6..2effc5b6a 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss @@ -88,7 +88,7 @@ } .icon-only { - margin-bottom: 6px !important; + // margin-bottom: 6px !important; } //Toggle between pin and status icon From a10506f94b8bdf7cc6e8b5147ef7ac483a6b07fc Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Wed, 18 May 2016 15:15:32 +0200 Subject: [PATCH 05/44] Implementing commonDialogWindow Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 93 +-- .../CreateUpdateSoftwareTypeLayout.java | 58 +- .../ui/colorPicker/ColorPickerConstants.java | 9 + .../ui/colorPicker/ColorPickerHelper.java | 63 ++ .../ui/colorPicker/ColorPickerLayout.java | 137 ++++ .../hawkbit/ui/common/CommonDialogWindow.java | 103 +-- .../ui/components/SPUIComponentProvider.java | 21 + .../SPUIButtonStyleBorderWithIcon.java | 42 ++ .../ui/decorators/SPUIWindowDecorator.java | 35 + .../CreateUpdateDistSetTypeLayout.java | 625 ++++++------------ .../disttype/DSTypeFilterHeader.java | 1 - .../DistributionAddUpdateWindowLayout.java | 76 ++- ...eateUpdateDistributionTagLayoutWindow.java | 352 +++------- .../management/tag/CreateUpdateTagLayout.java | 529 ++++++++------- .../TargetAddUpdateWindowLayout.java | 70 +- .../TargetBulkUpdateWindowLayout.java | 14 +- .../CreateUpdateTargetTagLayout.java | 268 -------- .../CreateUpdateTargetTagLayoutWindow.java | 135 ++++ .../targettag/MultipleTargetFilter.java | 2 +- .../targettag/TargetTagFilterHeader.java | 2 +- .../rollout/AddUpdateRolloutWindowLayout.java | 213 +++--- .../ui/rollout/rollout/RolloutListGrid.java | 5 +- .../ui/rollout/rollout/RolloutListHeader.java | 14 +- .../themes/hawkbit/customstyles/common.scss | 9 + .../hawkbit/customstyles/popup-common.scss | 4 +- .../hawkbit/customstyles/table-content.scss | 1 + 26 files changed, 1402 insertions(+), 1479 deletions(-) create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java delete mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index d6de0c0a3..be9756478 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -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(); + } + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index d6c372ac5..044163e35 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -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; - } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java new file mode 100644 index 000000000..2c333a9f2 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java @@ -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); +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java new file mode 100644 index 000000000..01fd46977 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java @@ -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); + } + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java new file mode 100644 index 000000000..9e294cf9b --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java @@ -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 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 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; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 83ff7c8e2..a3176d663 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -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; - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java index bd955252c..6aa0f9837 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java @@ -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. * diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java new file mode 100644 index 000000000..2f8b88d74 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java @@ -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; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java index 5e5b784c7..539215c7d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java @@ -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. * diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 9dd695ce0..fa8613a56 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -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 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,115 +119,61 @@ 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(); sliderLayout = new VerticalLayout(); final HorizontalLayout chooseColorLayout = 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 optionValues = new ArrayList<>(); - if (permChecker.hasCreateDistributionPermission()) { - optionValues.add(createDistType.getValue()); - } - if (permChecker.hasUpdateDistributionPermission()) { - optionValues.add(updateDistType.getValue()); - } - createOptionGroupByValues(optionValues); - } - - private void createOptionGroupByValues(final List 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 itemIds = (List) 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 itemIds = (List) 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 optionValues = new ArrayList<>(); + if (permChecker.hasCreateDistributionPermission()) { + optionValues.add(createDistType.getValue()); + } + if (permChecker.hasUpdateDistributionPermission()) { + optionValues.add(updateDistType.getValue()); + } + createOptionGroupByValues(optionValues); + } + + private void createOptionGroupByValues(final List 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)); + } } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java index 02c959286..04c6e7579 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java @@ -62,7 +62,6 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { final Window addUpdateWindow = createUpdateDistSetTypeLayout.getWindow(); UI.getCurrent().addWindow(addUpdateWindow); addUpdateWindow.setVisible(Boolean.TRUE); - } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index 195a63b6f..c5a578fb5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -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 @@ -150,12 +149,12 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { setSizeUndefined(); addComponents(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()), madatoryLabel, distsetTypeNameComboBox, distNameTextField, distVersionTextField, descTextArea, reqMigStepCheckbox); - - addComponent(buttonsLayout); + + // addComponent(buttonsLayout); setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); distNameTextField.focus(); - - } + + } /** * Create required UI components. @@ -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; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index 17e17f9bf..ea9a08ef5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -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 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 optionValues = new ArrayList<>(); - if (permChecker.hasCreateDistributionPermission()) { - optionValues.add(createTag.getValue()); - } - if (permChecker.hasUpdateDistributionPermission()) { - optionValues.add(updateTag.getValue()); - } - - createOptionGroup(optionValues); - } - - private void createOptionGroup(final List 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 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()); + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java index 46a24f5e1..0eb6508f0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java @@ -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 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()); } } - /** - * Value change listeners implementations of sliders. - */ - 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); - } - }); - 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); - } - }); - 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); - } - }); + protected void closeWindow() { + window.close(); + UI.getCurrent().removeWindow(window); } - private void setColorToComponents(final Color newColor) { - setColor(newColor); - colorSelect.setColor(newColor); - getPreviewButtonColor(newColor.getCSS()); - createDynamicStyleForComponents(tagName, tagDesc, newColor.getCSS()); + /** + * create option group with Create tag/Update tag based on permissions. + */ + protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePersmission) { + final List optionValues = new ArrayList<>(); + if (hasCreatePermission) { + optionValues.add(createTagNw); + } + if (hasUpdatePersmission) { + optionValues.add(updateTagNw); + } + createOptionGroup(optionValues); + } + + protected void createOptionGroup(final List 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; + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index 67db1181b..1fed8fe22 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -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,14 +211,14 @@ 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); } } }); - } + } /** * Update the Target if modified. @@ -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(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java index a098f61c3..e938f68f3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java @@ -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); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java deleted file mode 100644 index f3e29f5af..000000000 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayout.java +++ /dev/null @@ -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 optionValues = new ArrayList<>(); - if (permChecker.hasCreateTargetPermission()) { - optionValues.add(createTag.getValue()); - } - if (permChecker.hasUpdateTargetPermission()) { - optionValues.add(updateTag.getValue()); - } - - createOptionGroup(optionValues); - } - - private void createOptionGroup(final List 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 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; - } - -} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java new file mode 100644 index 000000000..1c664fe13 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java @@ -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 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()); + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java index c4393e3aa..6e4c73a92 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java @@ -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; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java index 6093843fd..e99677b1c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java @@ -34,7 +34,7 @@ public class TargetTagFilterHeader extends AbstractFilterHeader { private I18N i18n; @Autowired - private CreateUpdateTargetTagLayout createUpdateTargetTagLayout; + private CreateUpdateTargetTagLayoutWindow createUpdateTargetTagLayout; @Autowired private ManagementUIState managementUIState; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 893595f53..90a04ba2a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -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() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index 29be2c8c2..a63dd37e8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -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 statusIconMap = new EnumMap<>(RolloutStatus.class); - /** * Handles the RolloutEvent to refresh Grid. * diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java index dd19c72a8..f4d2a325f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java @@ -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 diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss index beb405c30..ba02cfbda 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss @@ -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; + } + } diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss index 94073eada..7b4bfe0d1 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss @@ -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 diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-content.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-content.scss index 3242b5907..ad5556f08 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-content.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-content.scss @@ -133,6 +133,7 @@ //Create/update popup footer button layout style .window-style { margin-bottom: 4px !important; + margin-top: 4px !important; } //Table details style From 4387c8203bd7bcfae1d6ec472d64bbf7b126fadc Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 19 May 2016 09:57:43 +0200 Subject: [PATCH 06/44] optimize ColorPickerLayout Signed-off-by: Melanie Retter --- .../CreateUpdateSoftwareTypeLayout.java | 417 ++++++------------ .../ui/colorPicker/ColorPickerLayout.java | 24 +- .../CreateUpdateDistSetTypeLayout.java | 64 +-- .../management/tag/CreateUpdateTagLayout.java | 12 +- 4 files changed, 150 insertions(+), 367 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index 044163e35..4fbe61303 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -9,34 +9,29 @@ package org.eclipse.hawkbit.ui.artifacts.smtype; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.eclipse.hawkbit.repository.SoftwareManagement; -import org.eclipse.hawkbit.repository.SpPermissionChecker; 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.colorPicker.ColorPickerConstants; +import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; 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.management.tag.CreateUpdateTagLayout; import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview; 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.addons.lazyquerycontainer.BeanQueryFactory; -import org.vaadin.spring.events.EventBus; import com.google.common.base.Strings; import com.vaadin.data.Property.ValueChangeEvent; @@ -48,20 +43,15 @@ import com.vaadin.spring.annotation.ViewScope; 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.Button.ClickEvent; 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; @@ -71,34 +61,20 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent @ViewScope -public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements ColorChangeListener, ColorSelector { +public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout + implements ColorChangeListener, ColorSelector { private static final long serialVersionUID = -5169398523815919367L; private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateSoftwareTypeLayout.class); - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private I18N i18n; - - /** - * Instance of ColorPickerPreview. - */ - private SpColorPickerPreview selPreview; - - @Autowired - private transient UINotification uiNotification; - @Autowired private transient SoftwareManagement swTypeManagementService; - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private transient UiProperties uiProperties; + private VerticalLayout sliderLayout; + private HorizontalLayout colorLayout; private String createTypeStr; private String updateTypeStr; private String singleAssignStr; @@ -108,49 +84,16 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C private Label singleAssign; private Label multiAssign; private Label comboLabel; - private Label colorLabel; - private Label madatoryLabel; - private TextField typeName; private TextField typeKey; - private TextArea typeDesc; - // private Button saveTag; - // private Button discardTag; - private Button tagColorPreviewBtn; private OptionGroup createOptiongroup; private OptionGroup assignOptiongroup; - private ComboBox typeNameComboBox; - protected static final String DEFAULT_COLOR = "rgb(44,151,32)"; private static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name"; private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc"; private static final String TAG_DYNAMIC_STYLE = "tag-color-preview"; - private Set selectors; - private Color selectedColor; - private ColorPickerGradient colorSelect; - private Slider redSlider; - private Slider greenSlider; - private Slider blueSlider; - private CommonDialogWindow swTypeWindow; - protected boolean tagPreviewBtnClicked = false; - private VerticalLayout comboLayout; - private VerticalLayout sliders; - private VerticalLayout colorPickerLayout; - private HorizontalLayout mainLayout; - private VerticalLayout fieldLayout; /** RGB color converter. */ private final Coordinates2Color rgbConverter = new CoordinatesToColor(); - /** - * Initialize the artifact details layout. - */ - public void init() { - createComponents(); - buildLayout(); - addListeners(); - } - - // TODO MR WINDOW - private void createComponents() { createTypeStr = i18n.get("label.create.type"); updateTypeStr = i18n.get("label.update.type"); @@ -165,133 +108,72 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null); colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); - typeName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", + tagName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_NAME, true, "", i18n.get("textfield.name"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); - typeName.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_NAME); + tagName.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_NAME); typeKey = SPUIComponentProvider.getTextField(i18n.get("textfield.key"), "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_KEY, true, "", i18n.get("textfield.key"), true, SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); typeKey.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_KEY); - typeDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "", + tagDesc = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_DESC, false, "", i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); - typeDesc.setId(SPUIDefinitions.NEW_SOFTWARE_TYPE_DESC); - typeDesc.setImmediate(true); - typeDesc.setNullRepresentation(""); + tagDesc.setId(SPUIDefinitions.NEW_SOFTWARE_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.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); + tagNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE); + tagNameComboBox.setImmediate(true); 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); + ColorPickerHelper.setRgbSliderValues(colorPickerLayout); createUpdateOptionGroup(); singleMultiOptionGroup(); - } - private void buildLayout() { - comboLayout = new VerticalLayout(); + @Override + protected void buildLayout() { - sliders = new VerticalLayout(); - sliders.addComponents(redSlider, greenSlider, blueSlider); + super.buildLayout(); + getFormLayout().addComponent(typeKey, 4); + getFormLayout().addComponent(assignOptiongroup, 5); - selectors.add(colorSelect); + final HorizontalLayout mainLayout = new HorizontalLayout(); - colorPickerLayout = new VerticalLayout(); - colorPickerLayout.setStyleName("rgb-vertical-layout"); - colorPickerLayout.addComponent(selPreview); - colorPickerLayout.addComponent(colorSelect); + mainLayout.addComponent(getFormLayout()); - fieldLayout = new VerticalLayout(); - fieldLayout.setSizeUndefined(); - fieldLayout.setSpacing(true); - fieldLayout.setMargin(false); - // fieldLayout.setWidth("100%"); - // fieldLayout.setHeight(null); - fieldLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); - fieldLayout.addComponent(createOptiongroup); - fieldLayout.addComponent(comboLayout); - fieldLayout.addComponent(madatoryLabel); - fieldLayout.addComponent(typeName); - fieldLayout.addComponent(typeKey); - fieldLayout.addComponent(typeDesc); - fieldLayout.addComponent(assignOptiongroup); + colorLayout = new HorizontalLayout(); + sliderLayout = new VerticalLayout(); + final HorizontalLayout chooseColorLayout = new HorizontalLayout(); + chooseColorLayout.addComponents(colorLabel, tagColorPreviewBtn); + chooseColorLayout.setComponentAlignment(colorLabel, Alignment.TOP_CENTER); + chooseColorLayout.setComponentAlignment(tagColorPreviewBtn, Alignment.TOP_CENTER); + sliderLayout.addComponent(chooseColorLayout); + colorLayout.addComponent(sliderLayout); - final HorizontalLayout colorLabelLayout = new HorizontalLayout(); - 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"); - - // TODO MR WINDOW - - final VerticalLayout fieldButtonLayout = new VerticalLayout(); - fieldButtonLayout.addComponent(fieldLayout); - // fieldButtonLayout.addComponent(buttonLayout); - - mainLayout = new HorizontalLayout(); - mainLayout.addComponent(fieldButtonLayout); - setCompositionRoot(mainLayout); - typeName.focus(); + final VerticalLayout mainWindowLayout = new VerticalLayout(); + mainWindowLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); + mainWindowLayout.addComponent(mainLayout); + mainWindowLayout.addComponent(colorLayout); } - private void addListeners() { - colorSelect.addColorChangeListener(this); - selPreview.addColorChangeListener(this); - tagColorPreviewBtn.addClickListener(event -> previewButtonClicked()); - createOptiongroup.addValueChangeListener(event -> createOptionValueChanged(event)); - typeNameComboBox.addValueChangeListener(event -> typeNameChosen(event)); - slidersValueChangeListeners(); - } - - public CommonDialogWindow getWindow() { + @Override + public void createWindow() { reset(); - swTypeWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> discard()); - return swTypeWindow; + window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null, + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event)); } /** @@ -302,71 +184,51 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C */ private void createOptionValueChanged(final ValueChangeEvent event) { if ("Update Type".equals(event.getProperty().getValue())) { - typeName.clear(); - typeDesc.clear(); + tagName.clear(); + tagDesc.clear(); typeKey.clear(); typeKey.setEnabled(false); - typeName.setEnabled(false); + tagName.setEnabled(false); assignOptiongroup.setEnabled(false); - populateTypeNameCombo(); + populateTagNameCombo(); // show target name combo comboLayout.addComponent(comboLabel); - comboLayout.addComponent(typeNameComboBox); + comboLayout.addComponent(tagNameComboBox); } else { typeKey.setEnabled(true); - typeName.setEnabled(true); - typeName.clear(); - typeDesc.clear(); + tagName.setEnabled(true); + tagName.clear(); + tagDesc.clear(); typeKey.clear(); assignOptiongroup.setEnabled(true); // hide target name combo comboLayout.removeComponent(comboLabel); - comboLayout.removeComponent(typeNameComboBox); + comboLayout.removeComponent(tagNameComboBox); } // close the color picker layout tagPreviewBtnClicked = false; // reset the selected color - Set defualt color restoreComponentStyles(); - getPreviewButtonColor(DEFAULT_COLOR); - selPreview.setColor(rgbToColorConverter(DEFAULT_COLOR)); + getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); + getColorPickerLayout().getSelPreview() + .setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); // remove the sliders and color picker layout - fieldLayout.removeComponent(sliders); - mainLayout.removeComponent(colorPickerLayout); - } - - /** - * Populate Software Module Type name combo. - */ - public void populateTypeNameCombo() { - typeNameComboBox.setContainerDataSource(HawkbitCommonUtil.createLazyQueryContainer( - new BeanQueryFactory(SoftwareModuleTypeBeanQuery.class))); - typeNameComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME); + // TODO MR + // fieldLayout.removeComponent(sliders); + // mainLayout.removeComponent(colorPickerLayout); } /** * reset the components. */ - private void reset() { - typeName.setEnabled(true); - typeName.clear(); + @Override + protected void reset() { + + super.reset(); typeKey.clear(); - typeDesc.clear(); - restoreComponentStyles(); - - // hide target name combo - comboLayout.removeComponent(comboLabel); - comboLayout.removeComponent(typeNameComboBox); - fieldLayout.removeComponent(sliders); - mainLayout.removeComponent(colorPickerLayout); - - createOptiongroup.select(createTypeStr); assignOptiongroup.select(singleAssignStr); - // Default green color - selectedColor = new Color(44, 151, 32); - selPreview.setColor(selectedColor); - tagPreviewBtnClicked = false; } private void typeNameChosen(final ValueChangeEvent event) { @@ -379,21 +241,23 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C } private void resetTagNameField() { - typeName.setEnabled(false); - typeName.clear(); + tagName.setEnabled(false); + tagName.clear(); typeKey.clear(); - typeDesc.clear(); + tagDesc.clear(); restoreComponentStyles(); - fieldLayout.removeComponent(sliders); - mainLayout.removeComponent(colorPickerLayout); + + // fieldLayout.removeComponent(sliders); + // mainLayout.removeComponent(colorPickerLayout); assignOptiongroup.select(singleAssignStr); // Default green color - selectedColor = new Color(44, 151, 32); - selPreview.setColor(selectedColor); - tagPreviewBtnClicked = false; + // TODO extra method + colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor()); + colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor()); + tagPreviewBtnClicked = false; } /** @@ -404,11 +268,11 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C * as the selected tag from combo */ private void setTypeTagCombo(final String targetTagSelected) { - typeName.setValue(targetTagSelected); + tagName.setValue(targetTagSelected); final SoftwareModuleType selectedTypeTag = swTypeManagementService .findSoftwareModuleTypeByName(targetTagSelected); if (null != selectedTypeTag) { - typeDesc.setValue(selectedTypeTag.getDescription()); + tagDesc.setValue(selectedTypeTag.getDescription()); typeKey.setValue(selectedTypeTag.getKey()); if (selectedTypeTag.getMaxAssignments() == Integer.MAX_VALUE) { assignOptiongroup.setValue(multiAssignStr); @@ -416,35 +280,25 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C assignOptiongroup.setValue(singleAssignStr); } + // TODO extra method 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()); } - } } - /** - * 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 optionValues = new ArrayList<>(); if (permChecker.hasCreateDistributionPermission()) { @@ -482,34 +336,6 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C assignOptiongroup.select(tagOptions.get(0)); } - 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); - } - } - /** * Value change listeners implementations of sliders. */ @@ -546,19 +372,20 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C }); } + // TODO extra method 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()); } /** * 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); getPreviewButtonColor(DEFAULT_COLOR); } @@ -566,7 +393,7 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C private void save() { if (mandatoryValuesPresent()) { final SoftwareModuleType existingType = swTypeManagementService - .findSoftwareModuleTypeByName(typeName.getValue()); + .findSoftwareModuleTypeByName(tagName.getValue()); if (createOptiongroup.getValue().equals(createTypeStr)) { if (!checkIsKeyDuplicate(typeKey.getValue()) && !checkIsDuplicate(existingType)) { createNewSWModuleType(); @@ -588,14 +415,15 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C return Boolean.FALSE; } + @Override private Boolean mandatoryValuesPresent() { - if (Strings.isNullOrEmpty(typeName.getValue()) && Strings.isNullOrEmpty(typeKey.getValue())) { + if (Strings.isNullOrEmpty(tagName.getValue()) && Strings.isNullOrEmpty(typeKey.getValue())) { if (createOptiongroup.getValue().equals(createTypeStr)) { uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); } if (createOptiongroup.getValue().equals(updateTypeStr)) { - if (null == typeNameComboBox.getValue()) { - uiNotification.displayValidationError(i18n.get("message.error.missing.typename")); + if (null == tagNameComboBox.getValue()) { + uiNotification.displayValidationError(i18n.get("message.error.missing.tagName")); } else { uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); } @@ -614,24 +442,15 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C return Boolean.FALSE; } - private void closeWindow() { - swTypeWindow.close(); - UI.getCurrent().removeWindow(swTypeWindow); - } - - private void discard() { - UI.getCurrent().removeWindow(swTypeWindow); - } - /** * Create new tag. */ private void createNewSWModuleType() { int assignNumber = 0; final String colorPicked = getColorPickedString(); - 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()); final String assignValue = (String) assignOptiongroup.getValue(); if (null != assignValue && assignValue.equalsIgnoreCase(singleAssignStr)) { assignNumber = 1; @@ -684,8 +503,8 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C */ private void updateSWModuleType(final SoftwareModuleType existingType) { - final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeName.getValue()); - final String typeDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeDesc.getValue()); + final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue()); + final String typeDescValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagDesc.getValue()); if (null != typeNameValue) { existingType.setName(typeNameValue); @@ -708,14 +527,15 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C * Open color picker on click of preview button. Auto select the color based * on target tag if already selected. */ + @Override private void previewButtonClicked() { if (!tagPreviewBtnClicked) { final String selectedOption = (String) createOptiongroup.getValue(); if (null != selectedOption && selectedOption.equalsIgnoreCase(updateTypeStr)) { - if (null != typeNameComboBox.getValue()) { + if (null != tagNameComboBox.getValue()) { final SoftwareModuleType typeSelected = swTypeManagementService - .findSoftwareModuleTypeByName(typeNameComboBox.getValue().toString()); + .findSoftwareModuleTypeByName(tagNameComboBox.getValue().toString()); if (null != typeSelected) { selectedColor = typeSelected.getColour() != null ? rgbToColorConverter(typeSelected.getColour()) : rgbToColorConverter(DEFAULT_COLOR); @@ -776,8 +596,8 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C selectedColor = color; selPreview.setColor(selectedColor); final String colorPickedPreview = selPreview.getColor().getCSS(); - if (typeName.isEnabled() && null != colorSelect) { - createDynamicStyleForComponents(typeName, typeKey, typeDesc, colorPickedPreview); + if (tagName.isEnabled() && null != colorSelect) { + createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview); colorSelect.setColor(selPreview.getColor()); } @@ -798,7 +618,7 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C } setRgbSliderValues(selectedColor); getPreviewButtonColor(event.getColor().getCSS()); - createDynamicStyleForComponents(typeName, typeKey, typeDesc, event.getColor().getCSS()); + createDynamicStyleForComponents(tagName, typeKey, tagDesc, event.getColor().getCSS()); } /** @@ -808,12 +628,12 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C * @param tagDesc * @param taregtTagColor */ - private void createDynamicStyleForComponents(final TextField typeName, final TextField typeKey, - final TextArea typeDesc, final String typeTagColor) { + private void createDynamicStyleForComponents(final TextField tagName, final TextField typeKey, + final TextArea tagDesc, final String typeTagColor) { getTargetDynamicStyles(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); + tagDesc.addStyleName(TYPE_DESC_DYNAMIC_STYLE); } /** @@ -827,4 +647,23 @@ public class CreateUpdateSoftwareTypeLayout extends CustomComponent implements C .execute(HawkbitCommonUtil.changeToNewSelectedPreviewColor(colorPickedPreview)); } + @Override + protected void save(final ClickEvent event) { + // TODO Auto-generated method stub + + } + + @Override + protected void populateTagNameCombo() { + tagNameComboBox.setContainerDataSource(HawkbitCommonUtil.createLazyQueryContainer( + new BeanQueryFactory(SoftwareModuleTypeBeanQuery.class))); + tagNameComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME); + } + + @Override + protected void setTagDetails(final String tagSelected) { + // TODO Auto-generated method stub + + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java index 9e294cf9b..db5c46ffb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java @@ -8,12 +8,12 @@ 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.GridLayout; 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 { +public class ColorPickerLayout extends GridLayout { private static final long serialVersionUID = -7025970080613796692L; @@ -33,15 +33,22 @@ public class ColorPickerLayout extends VerticalLayout { private Slider greenSlider; private Slider blueSlider; - private final VerticalLayout sliders = new VerticalLayout(); - public ColorPickerLayout() { + setColumns(2); + setRows(4); + setCaption("Choose Color"); + init(); setStyleName("rgb-vertical-layout"); - addComponent(selPreview); - addComponent(colorSelect); + + addComponent(redSlider, 0, 1); + addComponent(greenSlider, 0, 2); + addComponent(blueSlider, 0, 3); + + addComponent(selPreview, 1, 0); + addComponent(colorSelect, 1, 1, 1, 3); } public void init() { @@ -58,7 +65,6 @@ public class ColorPickerLayout extends VerticalLayout { greenSlider = createRGBSlider("", "green"); blueSlider = createRGBSlider("", "blue"); - sliders.addComponents(redSlider, greenSlider, blueSlider); selectors.add(colorSelect); } @@ -130,8 +136,4 @@ public class ColorPickerLayout extends VerticalLayout { this.blueSlider = blueSlider; } - public VerticalLayout getSliders() { - return sliders; - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index fa8613a56..54a142ef1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -386,15 +386,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } } - private void addListeners() { - getColorPickerLayout().getColorSelect().addColorChangeListener(this); - getColorPickerLayout().getSelPreview().addColorChangeListener(this); - tagColorPreviewBtn.addClickListener(event -> previewButtonClicked()); - optiongroup.addValueChangeListener(event -> createOptionValueChanged(event)); - tagNameComboBox.addValueChangeListener(event -> typeNameChosen(event)); - slidersValueChangeListeners(); - } - // private void save() { // if (mandatoryValuesPresent()) { // final DistributionSetType existingDistTypeByKey = @@ -677,22 +668,12 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme */ @Override protected void reset() { - tagName.setEnabled(true); - tagName.clear(); + + super.reset(); typeKey.clear(); - tagDesc.clear(); - colorLayout.removeComponent(getColorPickerLayout()); - sliderLayout.removeComponent(getColorPickerLayout().getSliders()); restoreComponentStyles(); - comboLayout.removeComponent(comboLabel); - comboLayout.removeComponent(tagNameComboBox); selectedTable.removeAllItems(); getSourceTableData(); - optiongroup.select(createDistTypeStr); - - // Default green color - getColorPickerLayout().setSelectedColor(getColorPickerLayout().getDefaultColor()); - getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor()); } /** @@ -758,28 +739,13 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme return disttypeContainer; } - private void typeNameChosen(final ValueChangeEvent event) { - final String typeSelected = (String) event.getProperty().getValue(); - if (null != typeSelected) { - setTypeTagCombo(typeSelected); - } else { - resetTypeFields(); - } - } - - private void resetTypeFields() { - tagName.setEnabled(false); + @Override + protected void resetTagNameField() { + super.resetTagNameField(); typeKey.setEnabled(false); - tagName.clear(); typeKey.clear(); - tagDesc.clear(); - restoreComponentStyles(); selectedTable.removeAllItems(); getSourceTableData(); - restoreComponentStyles(); - getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - getColorPickerLayout().getSelPreview() - .setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); } /** @@ -789,7 +755,8 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme * @param targetTagSelected * as the selected tag from combo */ - private void setTypeTagCombo(final String distSetTypeSelected) { + @Override + protected void setTagDetails(final String distSetTypeSelected) { tagName.setValue(distSetTypeSelected); getSourceTableData(); selectedTable.getContainerDataSource().removeAllItems(); @@ -872,17 +839,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } } - /* - * (non-Javadoc) - * - * @see com.vaadin.ui.components.colorpicker.ColorSelector#getColor() - */ - @Override - public Color getColor() { - - return null; - } - /* * (non-Javadoc) * @@ -935,12 +891,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } } - @Override - protected void setTagDetails(final String tagSelected) { - // TODO Auto-generated method stub - - } - @Override public void createWindow() { reset(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java index 0eb6508f0..ba81d9016 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java @@ -18,7 +18,6 @@ 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.colorPicker.ColorPickerConstants; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerLayout; @@ -74,9 +73,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected CommonDialogWindow window; - @Autowired - private transient UiProperties uiProperties; - @Autowired protected I18N i18n; @@ -104,7 +100,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected ComboBox tagNameComboBox; protected final VerticalLayout comboLayout = new VerticalLayout(); - private final ColorPickerLayout colorPickerLayout = new ColorPickerLayout(); + protected final ColorPickerLayout colorPickerLayout = new ColorPickerLayout(); private final HorizontalLayout mainLayout = new HorizontalLayout(); final VerticalLayout contentLayout = new VerticalLayout(); @@ -238,7 +234,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C if (!tagPreviewBtnClicked) { setColor(); colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor()); - contentLayout.addComponent(colorPickerLayout.getSliders()); mainLayout.addComponent(colorPickerLayout); mainLayout.setComponentAlignment(colorPickerLayout, Alignment.BOTTOM_CENTER); } @@ -288,13 +283,11 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C } } - private void resetTagNameField() { + protected void resetTagNameField() { tagName.setEnabled(false); tagName.clear(); - tagDesc.clear(); restoreComponentStyles(); - // fieldLayout.removeComponent(colorPickerLayout.getSliders()); mainLayout.removeComponent(colorPickerLayout); colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor()); colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor()); @@ -349,7 +342,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C // hide target name combo comboLayout.removeComponent(comboLabel); comboLayout.removeComponent(tagNameComboBox); - contentLayout.removeComponent(colorPickerLayout.getSliders()); mainLayout.removeComponent(colorPickerLayout); optiongroup.select(createTagNw); From 61a53d874a3b54905fd01408390d59483af3855d Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 20 May 2016 11:01:09 +0200 Subject: [PATCH 07/44] Optimize Signed-off-by: Melanie Retter --- .../CreateUpdateSoftwareTypeLayout.java | 372 ++--------------- .../hawkbit/ui/common/CommonDialogWindow.java | 6 +- .../CreateUpdateDistSetTypeLayout.java | 387 ++++-------------- .../CreateUpdateTagLayout.java | 78 ++-- ...eateUpdateDistributionTagLayoutWindow.java | 4 +- .../CreateUpdateTargetTagLayoutWindow.java | 4 +- .../hawkbit/customstyles/popup-window.scss | 4 + 7 files changed, 171 insertions(+), 684 deletions(-) rename hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/{management/tag => layouts}/CreateUpdateTagLayout.java (93%) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index 4fbe61303..f8615714c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -18,12 +18,9 @@ import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; -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.management.tag.CreateUpdateTagLayout; -import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview; +import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; @@ -35,22 +32,14 @@ import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import com.google.common.base.Strings; import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.data.Property.ValueChangeListener; -import com.vaadin.server.Page; import com.vaadin.shared.ui.colorpicker.Color; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; -import com.vaadin.ui.AbstractColorPicker.Coordinates2Color; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; -import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.OptionGroup; -import com.vaadin.ui.TextArea; -import com.vaadin.ui.TextField; -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.ColorSelector; import com.vaadin.ui.themes.ValoTheme; @@ -61,7 +50,7 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent @ViewScope -public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout +public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout implements ColorChangeListener, ColorSelector { private static final long serialVersionUID = -5169398523815919367L; @@ -73,34 +62,19 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout @Autowired private transient UiProperties uiProperties; - private VerticalLayout sliderLayout; - private HorizontalLayout colorLayout; - private String createTypeStr; - private String updateTypeStr; private String singleAssignStr; private String multiAssignStr; - private Label createType; - private Label updateType; private Label singleAssign; private Label multiAssign; - private Label comboLabel; - private TextField typeKey; - private OptionGroup createOptiongroup; private OptionGroup assignOptiongroup; - private static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name"; - private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc"; - private static final String TAG_DYNAMIC_STYLE = "tag-color-preview"; - /** RGB color converter. */ - private final Coordinates2Color rgbConverter = new CoordinatesToColor(); + @Override + protected void createRequiredComponents() { - private void createComponents() { createTypeStr = i18n.get("label.create.type"); updateTypeStr = i18n.get("label.update.type"); singleAssignStr = i18n.get("label.singleAssign.type"); multiAssignStr = i18n.get("label.multiAssign.type"); - createType = SPUIComponentProvider.getLabel(createTypeStr, null); - updateType = SPUIComponentProvider.getLabel(updateTypeStr, null); singleAssign = SPUIComponentProvider.getLabel(singleAssignStr, null); multiAssign = SPUIComponentProvider.getLabel(multiAssignStr, null); comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null); @@ -138,9 +112,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout ColorPickerHelper.setRgbSliderValues(colorPickerLayout); - createUpdateOptionGroup(); - singleMultiOptionGroup(); + createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission()); } @Override @@ -148,25 +121,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout super.buildLayout(); getFormLayout().addComponent(typeKey, 4); - getFormLayout().addComponent(assignOptiongroup, 5); - - final HorizontalLayout mainLayout = new HorizontalLayout(); - - mainLayout.addComponent(getFormLayout()); - - colorLayout = new HorizontalLayout(); - sliderLayout = new VerticalLayout(); - final HorizontalLayout chooseColorLayout = new HorizontalLayout(); - chooseColorLayout.addComponents(colorLabel, tagColorPreviewBtn); - chooseColorLayout.setComponentAlignment(colorLabel, Alignment.TOP_CENTER); - chooseColorLayout.setComponentAlignment(tagColorPreviewBtn, Alignment.TOP_CENTER); - sliderLayout.addComponent(chooseColorLayout); - colorLayout.addComponent(sliderLayout); - - final VerticalLayout mainWindowLayout = new VerticalLayout(); - mainWindowLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); - mainWindowLayout.addComponent(mainLayout); - mainWindowLayout.addComponent(colorLayout); + getFormLayout().addComponent(assignOptiongroup); } @Override @@ -182,42 +137,16 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout * @param event * ValueChangeEvent */ - private void createOptionValueChanged(final ValueChangeEvent event) { + @Override + protected void createOptionValueChanged(final ValueChangeEvent event) { + + super.createOptionValueChanged(event); + if ("Update Type".equals(event.getProperty().getValue())) { - tagName.clear(); - tagDesc.clear(); - typeKey.clear(); - typeKey.setEnabled(false); - tagName.setEnabled(false); assignOptiongroup.setEnabled(false); - - populateTagNameCombo(); - // show target name combo - comboLayout.addComponent(comboLabel); - comboLayout.addComponent(tagNameComboBox); } else { - typeKey.setEnabled(true); - tagName.setEnabled(true); - tagName.clear(); - tagDesc.clear(); - typeKey.clear(); assignOptiongroup.setEnabled(true); - // hide target name combo - comboLayout.removeComponent(comboLabel); - comboLayout.removeComponent(tagNameComboBox); } - // close the color picker layout - tagPreviewBtnClicked = false; - // reset the selected color - Set defualt color - restoreComponentStyles(); - getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - getColorPickerLayout().getSelPreview() - .setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); - // remove the sliders and color picker layout - - // TODO MR - // fieldLayout.removeComponent(sliders); - // mainLayout.removeComponent(colorPickerLayout); } /** @@ -227,37 +156,16 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout protected void reset() { super.reset(); - typeKey.clear(); assignOptiongroup.select(singleAssignStr); } - private void typeNameChosen(final ValueChangeEvent event) { - final String tagSelected = (String) event.getProperty().getValue(); - if (null != tagSelected) { - setTypeTagCombo(tagSelected); - } else { - resetTagNameField(); - } - } - - private void resetTagNameField() { - tagName.setEnabled(false); - tagName.clear(); + @Override + protected void resetTagNameField() { + super.resetTagNameField(); typeKey.clear(); tagDesc.clear(); - restoreComponentStyles(); - - // fieldLayout.removeComponent(sliders); - // mainLayout.removeComponent(colorPickerLayout); - assignOptiongroup.select(singleAssignStr); - // Default green color - - // TODO extra method - colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor()); - colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor()); - tagPreviewBtnClicked = false; } /** @@ -267,7 +175,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout * @param targetTagSelected * as the selected tag from combo */ - private void setTypeTagCombo(final String targetTagSelected) { + @Override + protected void setTagDetails(final String targetTagSelected) { tagName.setValue(targetTagSelected); final SoftwareModuleType selectedTypeTag = swTypeManagementService .findSoftwareModuleTypeByName(targetTagSelected); @@ -280,36 +189,10 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout assignOptiongroup.setValue(singleAssignStr); } - // TODO extra method - if (null == selectedTypeTag.getColour()) { - 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 { - 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()); - } + setColorPickerComponentsColor(selectedTypeTag.getColour()); } } - private void createUpdateOptionGroup() { - final List optionValues = new ArrayList<>(); - if (permChecker.hasCreateDistributionPermission()) { - optionValues.add(createType.getValue()); - } - if (permChecker.hasUpdateDistributionPermission()) { - optionValues.add(updateType.getValue()); - } - createOptionGroupByValues(optionValues); - } - private void singleMultiOptionGroup() { final List optionValues = new ArrayList<>(); optionValues.add(singleAssign.getValue()); @@ -317,17 +200,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout assignOptionGroupByValues(optionValues); } - private void createOptionGroupByValues(final List tagOptions) { - createOptiongroup = new OptionGroup("", tagOptions); - createOptiongroup.setCaption(null); - createOptiongroup.setStyleName(ValoTheme.OPTIONGROUP_SMALL); - createOptiongroup.addStyleName("custom-option-group"); - createOptiongroup.setNullSelectionAllowed(false); - if (!tagOptions.isEmpty()) { - createOptiongroup.select(tagOptions.get(0)); - } - } - private void assignOptionGroupByValues(final List tagOptions) { assignOptiongroup = new OptionGroup("", tagOptions); assignOptiongroup.setStyleName(ValoTheme.OPTIONGROUP_SMALL); @@ -336,96 +208,35 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout assignOptiongroup.select(tagOptions.get(0)); } - /** - * Value change listeners implementations of sliders. - */ - 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); - } - }); - 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); - } - }); - 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); - } - }); - } - - // TODO extra method - private void setColorToComponents(final Color newColor) { - setColor(newColor); - getColorPickerLayout().getColorSelect().setColor(newColor); - getPreviewButtonColor(newColor.getCSS()); - createDynamicStyleForComponents(tagName, typeKey, tagDesc, newColor.getCSS()); - } - - /** - * reset the tag name and tag description component border color. - */ - private void restoreComponentStyles() { - tagName.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); - tagDesc.removeStyleName(TYPE_DESC_DYNAMIC_STYLE); - typeKey.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); - getPreviewButtonColor(DEFAULT_COLOR); - } - - private void save() { + @Override + protected void save(final ClickEvent event) { if (mandatoryValuesPresent()) { - final SoftwareModuleType existingType = swTypeManagementService + final SoftwareModuleType existingSMTypeByKey = swTypeManagementService + .findSoftwareModuleTypeByKey(typeKey.getValue()); + final SoftwareModuleType existingSMTypeByName = swTypeManagementService .findSoftwareModuleTypeByName(tagName.getValue()); - if (createOptiongroup.getValue().equals(createTypeStr)) { - if (!checkIsKeyDuplicate(typeKey.getValue()) && !checkIsDuplicate(existingType)) { + if (optiongroup.getValue().equals(createTypeStr)) { + if (!checkIsDuplicateByKey(existingSMTypeByKey) && !checkIsDuplicate(existingSMTypeByName)) { createNewSWModuleType(); } } else { - updateSWModuleType(existingType); + updateSWModuleType(existingSMTypeByName); } } } - private boolean checkIsKeyDuplicate(final String key) { - final SoftwareModuleType existingKeyType = swTypeManagementService.findSoftwareModuleTypeByKey(key); - if (existingKeyType != null) { - uiNotification.displayValidationError( - i18n.get("message.type.key.swmodule.duplicate.check", new Object[] { existingKeyType.getKey() })); - return Boolean.TRUE; - } - return Boolean.FALSE; - } - @Override - private Boolean mandatoryValuesPresent() { - if (Strings.isNullOrEmpty(tagName.getValue()) && Strings.isNullOrEmpty(typeKey.getValue())) { - if (createOptiongroup.getValue().equals(createTypeStr)) { - uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); + protected Boolean mandatoryValuesPresent() { + if (Strings.isNullOrEmpty(tagName.getValue()) || Strings.isNullOrEmpty(typeKey.getValue())) { + if (optiongroup.getValue().equals(createTypeStr)) { + displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); } - if (createOptiongroup.getValue().equals(updateTypeStr)) { + if (optiongroup.getValue().equals(updateTypeStr)) { if (null == tagNameComboBox.getValue()) { - uiNotification.displayValidationError(i18n.get("message.error.missing.tagName")); + displayValidationError(i18n.get("message.error.missing.tagName")); } else { - uiNotification.displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); + displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); } } return Boolean.FALSE; @@ -433,21 +244,12 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout return Boolean.TRUE; } - private Boolean checkIsDuplicate(final SoftwareModuleType existingType) { - if (existingType != null) { - uiNotification.displayValidationError( - i18n.get("message.tag.duplicate.check", new Object[] { existingType.getName() })); - return Boolean.TRUE; - } - return Boolean.FALSE; - } - /** * Create new tag. */ private void createNewSWModuleType() { int assignNumber = 0; - final String colorPicked = getColorPickedString(); + 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(tagDesc.getValue()); @@ -479,25 +281,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout } } - /** - * 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; - } - /** * update tag. */ @@ -510,7 +293,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout existingType.setDescription(null != typeDescValue ? typeDescValue : null); - existingType.setColour(getColorPickedString()); + existingType.setColour(ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview())); swTypeManagementService.updateSoftwareModuleType(existingType); uiNotification.displaySuccess(i18n.get("message.update.success", new Object[] { existingType.getName() })); closeWindow(); @@ -528,28 +311,27 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout * on target tag if already selected. */ @Override - private void previewButtonClicked() { + protected void previewButtonClicked() { if (!tagPreviewBtnClicked) { - final String selectedOption = (String) createOptiongroup.getValue(); + final String selectedOption = (String) optiongroup.getValue(); if (null != selectedOption && selectedOption.equalsIgnoreCase(updateTypeStr)) { if (null != tagNameComboBox.getValue()) { final SoftwareModuleType typeSelected = swTypeManagementService .findSoftwareModuleTypeByName(tagNameComboBox.getValue().toString()); if (null != typeSelected) { - selectedColor = typeSelected.getColour() != null ? rgbToColorConverter(typeSelected.getColour()) - : rgbToColorConverter(DEFAULT_COLOR); - + getColorPickerLayout().setSelectedColor(typeSelected.getColour() != null + ? ColorPickerHelper.rgbToColorConverter(typeSelected.getColour()) + : ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); } - } else { - selectedColor = rgbToColorConverter(DEFAULT_COLOR); + getColorPickerLayout().setSelectedColor( + ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); } } - selPreview.setColor(selectedColor); - fieldLayout.addComponent(sliders); - mainLayout.addComponent(colorPickerLayout); - mainLayout.setComponentAlignment(colorPickerLayout, Alignment.BOTTOM_CENTER); + getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor()); + mainLayout.addComponent(colorPickerLayout, 1, 0); + mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); } tagPreviewBtnClicked = !tagPreviewBtnClicked; } @@ -588,71 +370,11 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout } - @Override - public void setColor(final Color color) { - if (color == null) { - return; - } - selectedColor = color; - selPreview.setColor(selectedColor); - final String colorPickedPreview = selPreview.getColor().getCSS(); - if (tagName.isEnabled() && null != colorSelect) { - createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview); - colorSelect.setColor(selPreview.getColor()); - } - - } - @Override public Color getColor() { return null; } - @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); - } - } - setRgbSliderValues(selectedColor); - getPreviewButtonColor(event.getColor().getCSS()); - createDynamicStyleForComponents(tagName, typeKey, tagDesc, event.getColor().getCSS()); - } - - /** - * Set tag name and desc field border color based on chosen color. - * - * @param tagName - * @param tagDesc - * @param taregtTagColor - */ - private void createDynamicStyleForComponents(final TextField tagName, final TextField typeKey, - final TextArea tagDesc, final String typeTagColor) { - getTargetDynamicStyles(typeTagColor); - tagName.addStyleName(TYPE_NAME_DYNAMIC_STYLE); - typeKey.addStyleName(TYPE_NAME_DYNAMIC_STYLE); - tagDesc.addStyleName(TYPE_DESC_DYNAMIC_STYLE); - } - - /** - * Get target style - Dynamically as per the color picked, cannot be done - * from the static css. - * - * @param colorPickedPreview - */ - private void getTargetDynamicStyles(final String colorPickedPreview) { - Page.getCurrent().getJavaScript() - .execute(HawkbitCommonUtil.changeToNewSelectedPreviewColor(colorPickedPreview)); - } - - @Override - protected void save(final ClickEvent event) { - // TODO Auto-generated method stub - - } - @Override protected void populateTagNameCombo() { tagNameComboBox.setContainerDataSource(HawkbitCommonUtil.createLazyQueryContainer( @@ -660,10 +382,4 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTagLayout tagNameComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME); } - @Override - protected void setTagDetails(final String tagSelected) { - // TODO Auto-generated method stub - - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index a3176d663..c99a5a84b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -75,10 +75,11 @@ public class CommonDialogWindow extends Window { mainLayout.addComponent(buttonLayout); mainLayout.setComponentAlignment(buttonLayout, Alignment.MIDDLE_CENTER); - setSizeUndefined(); + setHeight("60%"); + setWidth("50%"); setCaption(caption); setContent(mainLayout); - setResizable(false); + setResizable(true); center(); setModal(true); } @@ -108,6 +109,7 @@ public class CommonDialogWindow extends Window { } hlayout.addComponent(cancelButton); hlayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_RIGHT); + hlayout.addStyleName("actionButtonsMargin"); return hlayout; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 54a142ef1..dbebc6183 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -8,7 +8,6 @@ */ package org.eclipse.hawkbit.ui.distributions.disttype; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -21,12 +20,11 @@ import org.eclipse.hawkbit.ui.UiProperties; 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.CreateUpdateTagLayout; +import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; @@ -38,13 +36,11 @@ import org.springframework.data.domain.PageRequest; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; +import com.google.common.base.Strings; import com.vaadin.data.Item; import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.data.util.IndexedContainer; import com.vaadin.server.FontAwesome; -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.AbstractSelect.ItemDescriptionGenerator; @@ -54,13 +50,8 @@ import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.CheckBox; import com.vaadin.ui.Component; import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Label; -import com.vaadin.ui.OptionGroup; import com.vaadin.ui.Table; -import com.vaadin.ui.TextArea; -import com.vaadin.ui.TextField; 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.ColorSelector; import com.vaadin.ui.themes.ValoTheme; @@ -70,13 +61,12 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent @ViewScope -public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout implements ColorChangeListener, ColorSelector { +public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout + implements ColorChangeListener, ColorSelector { private static final long serialVersionUID = -5169398523815877767L; private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateDistSetTypeLayout.class); - private static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name"; - private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc"; private static final String DIST_TYPE_NAME = "name"; private static final String DIST_TYPE_DESCRIPTION = "description"; private static final String DIST_TYPE_MANDATORY = "mandatory"; @@ -94,15 +84,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @Autowired private transient UiProperties uiProperties; - private String createDistTypeStr; - private String updateDistTypeStr; - private Label createDistType; - private Label updateDistType; - private Label comboLabel; - private TextField typeKey; - - private VerticalLayout sliderLayout; - private HorizontalLayout colorLayout; private HorizontalLayout distTypeSelectLayout; private Table sourceTable; private Table selectedTable; @@ -112,10 +93,8 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @Override protected void createRequiredComponents() { - createDistTypeStr = i18n.get("label.create.type"); - updateDistTypeStr = i18n.get("label.update.type"); - createDistType = SPUIComponentProvider.getLabel(createDistTypeStr, null); - updateDistType = SPUIComponentProvider.getLabel(updateDistTypeStr, null); + createTypeStr = i18n.get("label.create.type"); + updateTypeStr = i18n.get("label.update.type"); comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null); madatoryLabel = getMandatoryLabel(); @@ -144,18 +123,16 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme tagNameComboBox.setImmediate(true); tagNameComboBox.setPageLength(SPUIDefinitions.DIST_TYPE_SIZE); - colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null); + colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag.color"), null); colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); - tagColorPreviewBtn = new Button(); tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID); getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - tagColorPreviewBtn.setStyleName("tag-color-preview"); + tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE); - getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - ColorPickerHelper.setRgbSliderValues(getColorPickerLayout()); + ColorPickerHelper.setRgbSliderValues(colorPickerLayout); - createUpdateOptionGroup(); + createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission()); } @Override @@ -166,30 +143,15 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme distTypeSelectLayout = createTwinColumnLayout(); - final HorizontalLayout mainLayout = new HorizontalLayout(); final VerticalLayout twinTableLayout = new VerticalLayout(); twinTableLayout.setSizeFull(); twinTableLayout.addComponent(distTypeSelectLayout); - mainLayout.addComponent(getFormLayout()); - mainLayout.addComponent(twinTableLayout); - - colorLayout = new HorizontalLayout(); - sliderLayout = new VerticalLayout(); - final HorizontalLayout chooseColorLayout = new HorizontalLayout(); - chooseColorLayout.addComponents(colorLabel, tagColorPreviewBtn); - chooseColorLayout.setComponentAlignment(colorLabel, Alignment.TOP_CENTER); - chooseColorLayout.setComponentAlignment(tagColorPreviewBtn, Alignment.TOP_CENTER); - sliderLayout.addComponent(chooseColorLayout); - colorLayout.addComponent(sliderLayout); - - final VerticalLayout mainWindowLayout = new VerticalLayout(); - mainWindowLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); - mainWindowLayout.addComponent(mainLayout); - mainWindowLayout.addComponent(colorLayout); + mainLayout.addComponent(twinTableLayout, 2, 0); } private HorizontalLayout createTwinColumnLayout() { + final HorizontalLayout twinColumnLayout = new HorizontalLayout(); twinColumnLayout.setSizeFull(); twinColumnLayout.setWidth("400px"); @@ -220,13 +182,13 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme twinColumnLayout.setExpandRatio(selectedTable, 0.48f); sourceTable.setVisibleColumns(new Object[] { DIST_TYPE_NAME }); return twinColumnLayout; - } /** * */ private void buildSelectedTable() { + selectedTable = new Table(); selectedTable.setId(SPUIDefinitions.TWIN_TABLE_SELECTED_ID); selectedTable.setSelectable(true); @@ -249,6 +211,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } private void addTooltTipToSelectedTable() { + selectedTable.setItemDescriptionGenerator(new ItemDescriptionGenerator() { private static final long serialVersionUID = 99432397408575324L; @@ -270,6 +233,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme * */ private void buildSourceTable() { + sourceTable = new Table(); sourceTable.setId(SPUIDefinitions.TWIN_TABLE_SOURCE_ID); sourceTable.setSelectable(true); @@ -294,10 +258,10 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme getSourceTableData(); addTooltip(); sourceTable.select(sourceTable.firstItemId()); - } private void createSelectedTableContainer() { + selectedTablecontainer = new IndexedContainer(); selectedTablecontainer.addContainerProperty(DIST_TYPE_NAME, String.class, ""); selectedTablecontainer.addContainerProperty(DIST_TYPE_DESCRIPTION, String.class, ""); @@ -306,16 +270,17 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @SuppressWarnings("unchecked") private void addSMType() { + final Set selectedIds = (Set) sourceTable.getValue(); if (null != selectedIds && !selectedIds.isEmpty()) { for (final Long id : selectedIds) { addTargetTableData(id); } } - } private void removeSMType() { + @SuppressWarnings("unchecked") final Set selectedIds = (Set) selectedTable.getValue(); if (null != selectedIds && !selectedIds.isEmpty()) { @@ -328,6 +293,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @SuppressWarnings("unchecked") private void getSourceTableData() { + sourceTablecontainer.removeAllItems(); final Iterable moduleTypeBeans = softwareManagement .findSoftwareModuleTypesAll(new PageRequest(0, 1_000)); @@ -340,6 +306,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } private void addTooltip() { + sourceTable.setItemDescriptionGenerator(new ItemDescriptionGenerator() { private static final long serialVersionUID = 1L; @@ -356,12 +323,14 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } private void addTargetTableData(final Long selectedId) { + getSelectedTableItemData(selectedId); sourceTable.removeItem(selectedId); } @SuppressWarnings("unchecked") private void getSelectedTableItemData(final Long id) { + Item saveTblitem; if (null != selectedTablecontainer) { saveTblitem = selectedTablecontainer.addItem(id); @@ -375,6 +344,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @SuppressWarnings("unchecked") private void addSourceTableData(final Long selectedId) { + if (null != sourceTablecontainer) { Item saveTblitem; saveTblitem = sourceTablecontainer.addItem(selectedId); @@ -386,48 +356,12 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } } - // 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) { - uiNotification.displayValidationError( - i18n.get("message.tag.duplicate.check", new Object[] { existingDistType.getName() })); - return Boolean.TRUE; - } - return Boolean.FALSE; - } - - private Boolean checkIsDuplicateByKey(final DistributionSetType existingDistType) { - if (existingDistType != null) { - uiNotification.displayValidationError( - i18n.get("message.type.key.duplicate.check", new Object[] { existingDistType.getKey() })); - return Boolean.TRUE; - } - return Boolean.FALSE; - } - /** * Create new DistSet Type tag. */ @SuppressWarnings("unchecked") private void crateNewDistributionSetType() { + final String colorPicked = ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview()); final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue()); final String typeKeyValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeKey.getValue()); @@ -447,14 +381,12 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } else { newDistType.addOptionalModuleType(swModuleType); } - } if (null != typeDescValue) { newDistType.setDescription(typeDescValue); } newDistType.setColour(colorPicked); - newDistType = distributionSetManagement.createDistributionSetType(newDistType); uiNotification.displaySuccess(i18n.get("message.save.success", new Object[] { newDistType.getName() })); closeWindow(); @@ -472,6 +404,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme */ @SuppressWarnings("unchecked") private void updateDistributionSetType(final DistributionSetType existingType) { + final List itemIds = (List) selectedTable.getItemIds(); final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue()); final String typeKeyValue = HawkbitCommonUtil.trimAndNullIfEmpty(typeKey.getValue()); @@ -515,6 +448,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } private DistributionSetType removeSWModuleTypesFromDistSetType(final String selectedDistSetType) { + final DistributionSetType distSetType = fetchDistributionSetType(selectedDistSetType); if (!distSetType.getMandatoryModuleTypes().isEmpty()) { for (final SoftwareModuleType smType : distSetType.getMandatoryModuleTypes()) { @@ -525,117 +459,10 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme for (final SoftwareModuleType smType : distSetType.getOptionalModuleTypes()) { distSetType.removeModuleType(smType.getId()); } - } - return distSetType; } - /** - * 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) { - // 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() { - 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, getColorPickerLayout().getSelectedColor().getGreen(), - getColorPickerLayout().getSelectedColor().getBlue()); - setColorToComponents(newColor); - } - }); - 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(getColorPickerLayout().getSelectedColor().getRed(), (int) green, - getColorPickerLayout().getSelectedColor().getBlue()); - setColorToComponents(newColor); - } - }); - 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(getColorPickerLayout().getSelectedColor().getRed(), - getColorPickerLayout().getSelectedColor().getGreen(), (int) blue); - setColorToComponents(newColor); - } - }); - } - - private void setColorToComponents(final Color newColor) { - setColor(newColor); - getColorPickerLayout().getColorSelect().setColor(newColor); - getPreviewButtonColor(newColor.getCSS()); - createDynamicStyleForComponents(tagName, typeKey, tagDesc, newColor.getCSS()); - } - - /** - * Set tag name and desc field border color based on chosen color. - * - * @param tagName - * @param tagDesc - * @param taregtTagColor - */ - private void createDynamicStyleForComponents(final TextField tagName, final TextField typeKey, - final TextArea typeDesc, final String typeTagColor) { - tagName.removeStyleName(SPUIDefinitions.TYPE_NAME); - typeKey.removeStyleName(SPUIDefinitions.TYPE_KEY); - typeDesc.removeStyleName(SPUIDefinitions.TYPE_DESC); - getDistributionDynamicStyles(typeTagColor); - tagName.addStyleName(TYPE_NAME_DYNAMIC_STYLE); - typeKey.addStyleName(TYPE_NAME_DYNAMIC_STYLE); - typeDesc.addStyleName(TYPE_DESC_DYNAMIC_STYLE); - } - - /** - * Get target style - Dynamically as per the color picked, cannot be done - * from the static css. - * - * @param colorPickedPreview - */ - private void getDistributionDynamicStyles(final String colorPickedPreview) { - Page.getCurrent().getJavaScript() - .execute(HawkbitCommonUtil.changeToNewSelectedPreviewColor(colorPickedPreview)); - } - /* * (non-Javadoc) * @@ -647,7 +474,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme public void addColorChangeListener(final ColorChangeListener listener) { LOG.info("in side addColorChangeListener() "); - } /* @@ -670,8 +496,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme protected void reset() { super.reset(); - typeKey.clear(); - restoreComponentStyles(); selectedTable.removeAllItems(); getSourceTableData(); } @@ -682,39 +506,22 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme * @param event * ValueChangeEvent */ - private void createOptionValueChanged(final ValueChangeEvent event) { + @Override + protected void createOptionValueChanged(final ValueChangeEvent event) { + + super.createOptionValueChanged(event); + if ("Update Type".equals(event.getProperty().getValue())) { - tagName.clear(); - tagDesc.clear(); - typeKey.clear(); selectedTable.getContainerDataSource().removeAllItems(); getSourceTableData(); - - typeKey.setEnabled(false); - tagName.setEnabled(false); distTypeSelectLayout.setEnabled(false); - populateTagNameCombo(); - comboLayout.addComponent(comboLabel); - comboLayout.addComponent(tagNameComboBox); } else { - typeKey.setEnabled(true); - tagName.setEnabled(true); - window.setSaveButtonEnabled(true); distTypeSelectLayout.setEnabled(true); - tagName.clear(); - tagDesc.clear(); - typeKey.clear(); selectedTable.setEnabled(true); selectedTable.getContainerDataSource().removeAllItems(); sourceTable.getContainerDataSource().removeAllItems(); getSourceTableData(); - comboLayout.removeComponent(comboLabel); - comboLayout.removeComponent(tagNameComboBox); } - restoreComponentStyles(); - getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - getColorPickerLayout().getSelPreview() - .setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); } /** @@ -722,6 +529,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme */ @Override public void populateTagNameCombo() { + tagNameComboBox.setContainerDataSource(getDistSetTypeLazyQueryContainer()); tagNameComboBox.setItemCaptionPropertyId(SPUILabelDefinitions.VAR_NAME); } @@ -732,6 +540,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme * @return */ private LazyQueryContainer getDistSetTypeLazyQueryContainer() { + final LazyQueryContainer disttypeContainer = HawkbitCommonUtil.createLazyQueryContainer( new BeanQueryFactory(DistributionSetTypeBeanQuery.class)); disttypeContainer.addContainerProperty(SPUILabelDefinitions.VAR_NAME, String.class, "", true, true); @@ -741,6 +550,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @Override protected void resetTagNameField() { + super.resetTagNameField(); typeKey.setEnabled(false); typeKey.clear(); @@ -757,6 +567,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme */ @Override protected void setTagDetails(final String distSetTypeSelected) { + tagName.setValue(distSetTypeSelected); getSourceTableData(); selectedTable.getContainerDataSource().removeAllItems(); @@ -783,22 +594,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme for (final SoftwareModuleType swModuleType : selectedTypeTag.getMandatoryModuleTypes()) { addTargetTableforUpdate(swModuleType, true); } - - if (null == selectedTypeTag.getColour()) { - 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 { - 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()); - } + setColorPickerComponentsColor(selectedTypeTag.getColour()); } } @@ -809,6 +605,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme @SuppressWarnings("unchecked") private void addTargetTableforUpdate(final SoftwareModuleType swModuleType, final boolean mandatory) { + Item saveTblitem; if (null != selectedTablecontainer) { saveTblitem = selectedTablecontainer.addItem(swModuleType.getId()); @@ -818,70 +615,26 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme } } - /* - * (non-Javadoc) - * - * @see - * com.vaadin.ui.components.colorpicker.ColorSelector#setColor(com.vaadin. - * shared.ui.colorpicker .Color) - */ - @Override - public void setColor(final Color color) { - if (color == null) { - return; - } - 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()); - } - } - - /* - * (non-Javadoc) - * - * @see - * com.vaadin.ui.components.colorpicker.ColorChangeListener#colorChanged(com - * .vaadin.ui.components .colorpicker.ColorChangeEvent) - */ - @Override - public void colorChanged(final ColorChangeEvent event) { - setColor(event.getColor()); - for (final ColorSelector select : getColorPickerLayout().getSelectors()) { - if (!event.getSource().equals(select) && select.equals(this) - && !select.getColor().equals(getColorPickerLayout().getSelectedColor())) { - select.setColor(getColorPickerLayout().getSelectedColor()); - } - } - ColorPickerHelper.setRgbSliderValues(getColorPickerLayout()); - getPreviewButtonColor(event.getColor().getCSS()); - createDynamicStyleForComponents(tagName, typeKey, tagDesc, event.getColor().getCSS()); - - } - /** * reset the tag name and tag description component border color. */ - private void restoreComponentStyles() { - tagName.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); - tagDesc.removeStyleName(TYPE_DESC_DYNAMIC_STYLE); + @Override + protected void restoreComponentStyles() { + + super.restoreComponentStyles(); typeKey.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); - tagName.addStyleName(SPUIDefinitions.DIST_SET_TYPE_NAME); - tagDesc.addStyleName(SPUIDefinitions.DIST_SET_TYPE_DESC); typeKey.addStyleName(SPUIDefinitions.DIST_SET_TYPE_KEY); - 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 (optiongroup.getValue().equals(createTypeStr)) { if (!checkIsDuplicateByKey(existingDistTypeByKey) && !checkIsDuplicate(existingDistTypeByName)) { crateNewDistributionSetType(); } @@ -898,27 +651,47 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTagLayout impleme SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event)); } - private void createUpdateOptionGroup() { - final List optionValues = new ArrayList<>(); - if (permChecker.hasCreateDistributionPermission()) { - optionValues.add(createDistType.getValue()); + @Override + protected Boolean mandatoryValuesPresent() { + if (Strings.isNullOrEmpty(tagName.getValue()) || Strings.isNullOrEmpty(typeKey.getValue())) { + if (optiongroup.getValue().equals(createTypeStr)) { + displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); + } + if (optiongroup.getValue().equals(updateTypeStr)) { + if (null == tagNameComboBox.getValue()) { + displayValidationError(i18n.get("message.error.missing.tagName")); + } else { + displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); + } + } + return Boolean.FALSE; } - if (permChecker.hasUpdateDistributionPermission()) { - optionValues.add(updateDistType.getValue()); - } - createOptionGroupByValues(optionValues); + return Boolean.TRUE; } - private void createOptionGroupByValues(final List 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)); + @Override + protected void previewButtonClicked() { + if (!tagPreviewBtnClicked) { + final String selectedOption = (String) optiongroup.getValue(); + if (null != selectedOption && selectedOption.equalsIgnoreCase(updateTypeStr) + && null != tagNameComboBox.getValue()) { + + final DistributionSetType existedDistType = distributionSetManagement + .findDistributionSetTypeByKey(tagNameComboBox.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()); + mainLayout.addComponent(colorPickerLayout, 1, 0); + mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); } + tagPreviewBtnClicked = !tagPreviewBtnClicked; } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java similarity index 93% rename from hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java rename to hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java index ba81d9016..6162eb321 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/tag/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java @@ -6,10 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.eclipse.hawkbit.ui.management.tag; - -import java.util.ArrayList; -import java.util.List; +package org.eclipse.hawkbit.ui.layouts; import javax.annotation.PreDestroy; @@ -45,6 +42,7 @@ import com.vaadin.ui.Button; import com.vaadin.ui.ComboBox; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.FormLayout; +import com.vaadin.ui.GridLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.OptionGroup; @@ -65,14 +63,9 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateTagLayout.class); 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 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 protected I18N i18n; @@ -90,7 +83,11 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C private final FormLayout formLayout = new FormLayout(); - private Label comboLabel; + protected String createTagStr; + protected String updateTagStr; + protected Label comboLabel; + protected CommonDialogWindow window; + protected Label colorLabel; protected Label madatoryLabel; protected TextField tagName; @@ -101,8 +98,8 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected final VerticalLayout comboLayout = new VerticalLayout(); protected final ColorPickerLayout colorPickerLayout = new ColorPickerLayout(); - private final HorizontalLayout mainLayout = new HorizontalLayout(); - final VerticalLayout contentLayout = new VerticalLayout(); + protected final GridLayout mainLayout = new GridLayout(4, 4); + protected final VerticalLayout contentLayout = new VerticalLayout(); protected boolean tagPreviewBtnClicked = false; @@ -157,8 +154,9 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C } protected void createRequiredComponents() { - createTagNw = i18n.get("label.create.tag"); - updateTagNw = i18n.get("label.update.tag"); + + createTagStr = i18n.get("label.create.tag"); + updateTagStr = i18n.get("label.update.tag"); comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag"), null); madatoryLabel = getMandatoryLabel(); colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.tag.color"), null); @@ -208,10 +206,10 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C contentLayout.addComponent(colorLabelLayout); contentLayout.setComponentAlignment(formLayout, Alignment.MIDDLE_CENTER); contentLayout.setComponentAlignment(colorLabelLayout, Alignment.MIDDLE_LEFT); - contentLayout.setSizeFull(); + contentLayout.setSizeUndefined(); mainLayout.setSizeFull(); - mainLayout.addComponent(contentLayout); + mainLayout.addComponent(contentLayout, 0, 0); setCompositionRoot(mainLayout); tagName.focus(); @@ -233,16 +231,15 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected void previewButtonClicked() { if (!tagPreviewBtnClicked) { setColor(); - colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor()); - mainLayout.addComponent(colorPickerLayout); - mainLayout.setComponentAlignment(colorPickerLayout, Alignment.BOTTOM_CENTER); + mainLayout.addComponent(colorPickerLayout, 1, 0); + mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); } tagPreviewBtnClicked = !tagPreviewBtnClicked; } private void setColor() { final String selectedOption = (String) optiongroup.getValue(); - if (selectedOption == null || !selectedOption.equalsIgnoreCase(updateTagNw)) { + if (selectedOption == null || !selectedOption.equalsIgnoreCase(updateTagStr)) { return; } @@ -265,7 +262,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C ? ColorPickerHelper.rgbToColorConverter(targetTagSelected.getColour()) : ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); } - } protected Label getMandatoryLabel() { @@ -344,7 +340,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C comboLayout.removeComponent(tagNameComboBox); mainLayout.removeComponent(colorPickerLayout); - optiongroup.select(createTagNw); + optiongroup.select(createTagStr); // Default green color colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor()); @@ -401,7 +397,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C /** * reset the tag name and tag description component border color. */ - private void restoreComponentStyles() { + protected void restoreComponentStyles() { tagName.removeStyleName(TAG_NAME_DYNAMIC_STYLE); tagDesc.removeStyleName(TAG_DESC_DYNAMIC_STYLE); tagName.addStyleName(SPUIDefinitions.TAG_NAME); @@ -447,26 +443,22 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C /** * create option group with Create tag/Update tag based on permissions. */ - protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePersmission) { - final List optionValues = new ArrayList<>(); - if (hasCreatePermission) { - optionValues.add(createTagNw); - } - if (hasUpdatePersmission) { - optionValues.add(updateTagNw); - } - createOptionGroup(optionValues); - } + protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePermission) { - protected void createOptionGroup(final List tagOptions) { - optiongroup = new OptionGroup("", tagOptions); - optiongroup.setCaption("Select Action"); + optiongroup = new OptionGroup("Select Action"); optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL); optiongroup.addStyleName("custom-option-group"); - optiongroup.setNullSelectionAllowed(false); - if (!tagOptions.isEmpty()) { - optiongroup.select(tagOptions.get(0)); + + if (hasCreatePermission) { + optiongroup.addItem(createTagStr); + optiongroup.select(createTagStr); + } + if (hasUpdatePermission) { + optiongroup.addItem(updateTagStr); + if (!hasCreatePermission) { + optiongroup.select(updateTagStr); + } } } @@ -530,7 +522,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C }); } - private void setColorToComponents(final Color newColor) { + protected void setColorToComponents(final Color newColor) { setColor(newColor); colorPickerLayout.getColorSelect().setColor(newColor); getPreviewButtonColor(newColor.getCSS()); @@ -591,10 +583,10 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C */ protected Boolean mandatoryValuesPresent() { if (Strings.isNullOrEmpty(tagName.getValue())) { - if (optiongroup.getValue().equals(createTagNw)) { + if (optiongroup.getValue().equals(createTagStr)) { displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); } - if (optiongroup.getValue().equals(updateTagNw)) { + if (optiongroup.getValue().equals(updateTagStr)) { if (null == tagNameComboBox.getValue()) { displayValidationError(i18n.get(MESSAGE_ERROR_MISSING_TAGNAME)); } else { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index ea9a08ef5..44d9bc6bb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent; import org.eclipse.hawkbit.repository.model.DistributionSetTag; 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.layouts.CreateUpdateTagLayout; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.vaadin.spring.events.EventScope; @@ -77,7 +77,7 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo public void save(final ClickEvent event) { if (mandatoryValuesPresent()) { final DistributionSetTag existingDistTag = tagManagement.findDistributionSetTag(tagName.getValue()); - if (optiongroup.getValue().equals(createTagNw)) { + if (optiongroup.getValue().equals(createTagStr)) { if (!checkIsDuplicate(existingDistTag)) { crateNewTag(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java index 1c664fe13..4bffe172f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java @@ -18,7 +18,7 @@ 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.eclipse.hawkbit.ui.layouts.CreateUpdateTagLayout; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -93,7 +93,7 @@ public class CreateUpdateTargetTagLayoutWindow extends CreateUpdateTagLayout { public void save(final ClickEvent event) { if (mandatoryValuesPresent()) { final TargetTag existingTag = tagManagement.findTargetTag(tagName.getValue()); - if (optiongroup.getValue().equals(createTagNw)) { + if (optiongroup.getValue().equals(createTagStr)) { if (!checkIsDuplicate(existingTag)) { createNewTag(); } diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss index db9f8e31a..e71504a3c 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss @@ -161,4 +161,8 @@ .v-slot-bulk-upload-label{ line-height:0; } + + .actionButtonsMargin { + margin-top: 10px; + } } From 5213d7ce210f6c9378140307cd6f5db0fcfc3733 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 20 May 2016 11:01:54 +0200 Subject: [PATCH 08/44] New Parent class CreateUpdateTypeLayout for modal dialogs Create/Update type Signed-off-by: Melanie Retter --- .../ui/layouts/CreateUpdateTypeLayout.java | 285 ++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java new file mode 100644 index 000000000..c5d1c0387 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -0,0 +1,285 @@ +package org.eclipse.hawkbit.ui.layouts; + +import org.eclipse.hawkbit.repository.model.DistributionSetType; +import org.eclipse.hawkbit.repository.model.NamedEntity; +import org.eclipse.hawkbit.repository.model.SoftwareModuleType; +import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants; +import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; +import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; +import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; + +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.server.Page; +import com.vaadin.shared.ui.colorpicker.Color; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.OptionGroup; +import com.vaadin.ui.TextArea; +import com.vaadin.ui.TextField; +import com.vaadin.ui.components.colorpicker.ColorChangeEvent; +import com.vaadin.ui.components.colorpicker.ColorSelector; +import com.vaadin.ui.themes.ValoTheme; + +public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { + + private static final long serialVersionUID = 5732904956185988397L; + + protected String createTypeStr; + protected String updateTypeStr; + protected TextField typeKey; + + public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name"; + private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc"; + + /** + * Value change listeners implementations of sliders. + */ + protected void slidersValueChangeListeners() { + 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, getColorPickerLayout().getSelectedColor().getGreen(), + getColorPickerLayout().getSelectedColor().getBlue()); + setColorToComponents(newColor); + } + }); + 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(getColorPickerLayout().getSelectedColor().getRed(), (int) green, + getColorPickerLayout().getSelectedColor().getBlue()); + setColorToComponents(newColor); + } + }); + 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(getColorPickerLayout().getSelectedColor().getRed(), + getColorPickerLayout().getSelectedColor().getGreen(), (int) blue); + setColorToComponents(newColor); + } + }); + } + + @Override + protected void setColorToComponents(final Color newColor) { + + super.setColorToComponents(newColor); + createDynamicStyleForComponents(tagName, typeKey, tagDesc, newColor.getCSS()); + } + + /** + * Set tag name and desc field border color based on chosen color. + * + * @param tagName + * @param tagDesc + * @param taregtTagColor + */ + protected void createDynamicStyleForComponents(final TextField tagName, final TextField typeKey, + final TextArea typeDesc, final String typeTagColor) { + + tagName.removeStyleName(SPUIDefinitions.TYPE_NAME); + typeKey.removeStyleName(SPUIDefinitions.TYPE_KEY); + typeDesc.removeStyleName(SPUIDefinitions.TYPE_DESC); + getDynamicStyles(typeTagColor); + tagName.addStyleName(TYPE_NAME_DYNAMIC_STYLE); + typeKey.addStyleName(TYPE_NAME_DYNAMIC_STYLE); + typeDesc.addStyleName(TYPE_DESC_DYNAMIC_STYLE); + } + + /** + * Get target style - Dynamically as per the color picked, cannot be done + * from the static css. + * + * @param colorPickedPreview + */ + private void getDynamicStyles(final String colorPickedPreview) { + + Page.getCurrent().getJavaScript() + .execute(HawkbitCommonUtil.changeToNewSelectedPreviewColor(colorPickedPreview)); + } + + /** + * reset the components. + */ + @Override + protected void reset() { + + super.reset(); + typeKey.clear(); + restoreComponentStyles(); + } + + /** + * Listener for option group - Create tag/Update. + * + * @param event + * ValueChangeEvent + */ + protected void createOptionValueChanged(final ValueChangeEvent event) { + + if ("Update Type".equals(event.getProperty().getValue())) { + tagName.clear(); + tagDesc.clear(); + typeKey.clear(); + typeKey.setEnabled(false); + tagName.setEnabled(false); + populateTagNameCombo(); + comboLayout.addComponent(comboLabel); + comboLayout.addComponent(tagNameComboBox); + } else { + typeKey.setEnabled(true); + tagName.setEnabled(true); + window.setSaveButtonEnabled(true); + tagName.clear(); + tagDesc.clear(); + typeKey.clear(); + comboLayout.removeComponent(comboLabel); + comboLayout.removeComponent(tagNameComboBox); + } + restoreComponentStyles(); + getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); + getColorPickerLayout().getSelPreview() + .setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); + } + + /* + * (non-Javadoc) + * + * @see + * com.vaadin.ui.components.colorpicker.ColorSelector#setColor(com.vaadin. + * shared.ui.colorpicker .Color) + */ + @Override + public void setColor(final Color color) { + + if (color == null) { + return; + } + 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()); + } + } + + /** + * reset the tag name and tag description component border color. + */ + @Override + protected void restoreComponentStyles() { + super.restoreComponentStyles(); + typeKey.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); + } + + /** + * create option group with Create tag/Update tag based on permissions. + */ + @Override + protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePermission) { + + optiongroup = new OptionGroup("Select Action"); + optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL); + optiongroup.addStyleName("custom-option-group"); + optiongroup.setNullSelectionAllowed(false); + + if (hasCreatePermission) { + optiongroup.addItem(createTypeStr); + optiongroup.select(createTypeStr); + } + if (hasUpdatePermission) { + optiongroup.addItem(updateTypeStr); + if (!hasCreatePermission) { + optiongroup.select(updateTypeStr); + } + } + } + + protected void setColorPickerComponentsColor(final String color) { + + if (null == 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 { + getColorPickerLayout().setSelectedColor(ColorPickerHelper.rgbToColorConverter(color)); + getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor()); + getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelectedColor()); + createDynamicStyleForComponents(tagName, typeKey, tagDesc, color); + getPreviewButtonColor(color); + } + } + + @Override + public void colorChanged(final ColorChangeEvent event) { + setColor(event.getColor()); + for (final ColorSelector select : getColorPickerLayout().getSelectors()) { + if (!event.getSource().equals(select) && select.equals(this) + && !select.getColor().equals(getColorPickerLayout().getSelectedColor())) { + select.setColor(getColorPickerLayout().getSelectedColor()); + } + } + ColorPickerHelper.setRgbSliderValues(getColorPickerLayout()); + getPreviewButtonColor(event.getColor().getCSS()); + createDynamicStyleForComponents(tagName, typeKey, tagDesc, event.getColor().getCSS()); + } + + protected Boolean checkIsDuplicate(final NamedEntity existingType) { + + if (existingType != null) { + uiNotification.displayValidationError( + i18n.get("message.tag.duplicate.check", new Object[] { existingType.getName() })); + return Boolean.TRUE; + } + return Boolean.FALSE; + } + + protected Boolean checkIsDuplicateByKey(final NamedEntity existingType) { + + if (existingType != null) { + if (existingType instanceof DistributionSetType) { + uiNotification.displayValidationError(i18n.get("message.type.key.duplicate.check", + new Object[] { ((DistributionSetType) existingType).getKey() })); + return Boolean.TRUE; + } else if (existingType instanceof SoftwareModuleType) { + uiNotification.displayValidationError(i18n.get("message.type.key.swmodule.duplicate.check", + new Object[] { ((SoftwareModuleType) existingType).getKey() })); + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } + + @Override + protected void save(final ClickEvent event) { + // TODO Auto-generated method stub + + } + + @Override + protected void populateTagNameCombo() { + // TODO Auto-generated method stub + + } + + @Override + protected void setTagDetails(final String tagSelected) { + // TODO Auto-generated method stub + + } + +} From 96baddeaeee78549bcc655f9d583f7eaebaec1a2 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Tue, 24 May 2016 17:21:51 +0200 Subject: [PATCH 09/44] optimize commonDialogWindow. Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 66 ++---- .../CreateUpdateSoftwareTypeLayout.java | 47 +---- .../ui/colorPicker/ColorPickerHelper.java | 3 + .../ui/colorPicker/ColorPickerLayout.java | 1 - .../hawkbit/ui/common/CommonDialogWindow.java | 6 - .../ui/decorators/SPUITextAreaDecorator.java | 2 +- .../CreateUpdateDistSetTypeLayout.java | 48 +---- .../ui/layouts/CreateUpdateTagLayout.java | 20 +- .../ui/layouts/CreateUpdateTypeLayout.java | 78 ++++---- .../DistributionAddUpdateWindowLayout.java | 49 ++--- ...eateUpdateDistributionTagLayoutWindow.java | 9 +- .../footer/ActionTypeOptionGroupLayout.java | 5 +- .../rollout/AddUpdateRolloutWindowLayout.java | 188 +++++++----------- .../hawkbit/customstyles/popup-window.scss | 2 +- .../src/main/resources/messages.properties | 2 +- .../src/main/resources/messages_de.properties | 2 +- .../src/main/resources/messages_en.properties | 2 +- 17 files changed, 181 insertions(+), 349 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index be9756478..7cf95e4b2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -15,7 +15,6 @@ 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; @@ -32,10 +31,9 @@ import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; -import com.vaadin.ui.Alignment; import com.vaadin.ui.ComboBox; import com.vaadin.ui.CustomComponent; -import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.FormLayout; import com.vaadin.ui.Label; import com.vaadin.ui.TextArea; import com.vaadin.ui.TextField; @@ -70,7 +68,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se @Autowired private transient UiProperties uiProperties; - private Label madatoryLabel; + private Label mandatoryLabel; private TextField nameTextField; @@ -78,10 +76,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se private TextField vendorTextField; - // private Button saveSoftware; - // - // private Button closeWindow; - private ComboBox typeComboBox; private TextArea descTextArea; @@ -103,6 +97,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se * module. */ public CommonDialogWindow createAddSoftwareModuleWindow() { + editSwModule = Boolean.FALSE; createRequiredComponents(); createWindow(); @@ -118,6 +113,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se * module. */ public Window createUpdateSoftwareModuleWindow(final Long baseSwModuleId) { + editSwModule = Boolean.TRUE; this.baseSwModuleId = baseSwModuleId; createRequiredComponents(); @@ -155,9 +151,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se addVendorTextChangeListener(); /* Label for mandatory symbol */ - madatoryLabel = new Label(i18n.get("label.mandatory.field")); - madatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR); - madatoryLabel.addStyleName(ValoTheme.LABEL_SMALL); + mandatoryLabel = new Label(i18n.get("label.mandatory.field")); + mandatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR); + mandatoryLabel.addStyleName(ValoTheme.LABEL_SMALL); typeComboBox = SPUIComponentProvider.getComboBox(i18n.get("upload.swmodule.type"), "", "", null, null, false, null, i18n.get("upload.swmodule.type")); @@ -168,21 +164,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se populateTypeNameCombo(); - /* save or update button */ - // 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(); } @@ -207,25 +188,10 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se * @return */ 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 Label madatoryStarLabel = new Label("*"); madatoryStarLabel.setStyleName("v-caption v-required-field-indicator"); madatoryStarLabel.setWidth(null); - final HorizontalLayout hLayout = new HorizontalLayout(); - hLayout.setSizeFull(); - hLayout.addComponents(typeComboBox, madatoryStarLabel); - hLayout.setComponentAlignment(typeComboBox, Alignment.TOP_LEFT); - hLayout.setComponentAlignment(madatoryStarLabel, Alignment.TOP_RIGHT); - hLayout.setExpandRatio(typeComboBox, 0.8f); /* * The main layout of the window contains mandatory info, textboxes @@ -235,22 +201,22 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se mainLayout.setSizeUndefined(); mainLayout.setSpacing(Boolean.TRUE); mainLayout.addStyleName("lay-color"); - mainLayout.addComponent(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot())); - mainLayout.addComponent(madatoryLabel); - mainLayout.setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); - mainLayout.addComponent(hLayout); - mainLayout.setComponentAlignment(hLayout, Alignment.MIDDLE_LEFT); - // mainLayout.addComponents(nameTextField, versionTextField, - // vendorTextField, descTextArea, buttonsLayout); - // TODO MR WINDOW - mainLayout.addComponents(nameTextField, versionTextField, vendorTextField, descTextArea); + final FormLayout formLayout = new FormLayout(); + formLayout.addComponent(typeComboBox); + formLayout.addComponent(mandatoryLabel); + formLayout.addComponent(nameTextField); + formLayout.addComponent(versionTextField); + formLayout.addComponent(vendorTextField); + formLayout.addComponent(descTextArea); + mainLayout.addComponents(formLayout); setCompositionRoot(mainLayout); /* add main layout to the window */ window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> closeThisWindow()); + window.removeStyleName("actionButtonsMargin"); nameTextField.focus(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index f8615714c..8d34993c9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -13,7 +13,6 @@ import java.util.List; import org.eclipse.hawkbit.repository.SoftwareManagement; 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.colorPicker.ColorPickerConstants; @@ -22,7 +21,6 @@ import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.slf4j.Logger; @@ -30,13 +28,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; -import com.google.common.base.Strings; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.shared.ui.colorpicker.Color; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Alignment; -import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; import com.vaadin.ui.OptionGroup; @@ -59,9 +55,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout @Autowired private transient SoftwareManagement swTypeManagementService; - @Autowired - private transient UiProperties uiProperties; - private String singleAssignStr; private String multiAssignStr; private Label singleAssign; @@ -71,16 +64,12 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout @Override protected void createRequiredComponents() { - createTypeStr = i18n.get("label.create.type"); - updateTypeStr = i18n.get("label.update.type"); + super.createRequiredComponents(); + singleAssignStr = i18n.get("label.singleAssign.type"); multiAssignStr = i18n.get("label.multiAssign.type"); singleAssign = SPUIComponentProvider.getLabel(singleAssignStr, null); multiAssign = SPUIComponentProvider.getLabel(multiAssignStr, null); - comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null); - madatoryLabel = getMandatoryLabel(); - colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null); - colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); tagName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.TYPE_NAME, true, "", i18n.get("textfield.name"), true, @@ -100,26 +89,14 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout tagDesc.setImmediate(true); tagDesc.setNullRepresentation(""); - tagNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, null, false, - "", i18n.get("label.combobox.type")); - tagNameComboBox.addStyleName(SPUIDefinitions.FILTER_TYPE_COMBO_STYLE); - tagNameComboBox.setImmediate(true); - - tagColorPreviewBtn = new Button(); - tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID); - getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE); - - ColorPickerHelper.setRgbSliderValues(colorPickerLayout); - singleMultiOptionGroup(); - createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission()); } @Override protected void buildLayout() { super.buildLayout(); + ColorPickerHelper.setRgbSliderValues(colorPickerLayout); getFormLayout().addComponent(typeKey, 4); getFormLayout().addComponent(assignOptiongroup); } @@ -226,24 +203,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout } } - @Override - protected Boolean mandatoryValuesPresent() { - if (Strings.isNullOrEmpty(tagName.getValue()) || Strings.isNullOrEmpty(typeKey.getValue())) { - if (optiongroup.getValue().equals(createTypeStr)) { - displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); - } - if (optiongroup.getValue().equals(updateTypeStr)) { - if (null == tagNameComboBox.getValue()) { - displayValidationError(i18n.get("message.error.missing.tagName")); - } else { - displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); - } - } - return Boolean.FALSE; - } - return Boolean.TRUE; - } - /** * Create new tag. */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java index 01fd46977..90b39e5ca 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java @@ -17,6 +17,7 @@ public class ColorPickerHelper { * @return String of color picked value. */ public static String getColorPickedString(final SpColorPickerPreview preview) { + return "rgb(" + preview.getColor().getRed() + "," + preview.getColor().getGreen() + "," + preview.getColor().getBlue() + ")"; } @@ -29,6 +30,7 @@ public class ColorPickerHelper { * @return Color */ public static Color rgbToColorConverter(final String value) { + if (!value.startsWith("rgb")) { return null; } @@ -46,6 +48,7 @@ public class ColorPickerHelper { } public static void setRgbSliderValues(final ColorPickerLayout colorPickerLayout) { + try { final double redColorValue = colorPickerLayout.getSelectedColor().getRed(); colorPickerLayout.getRedSlider().setValue(new Double(redColorValue)); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java index db5c46ffb..51c09055a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java @@ -37,7 +37,6 @@ public class ColorPickerLayout extends GridLayout { setColumns(2); setRows(4); - setCaption("Choose Color"); init(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index c99a5a84b..58ce52e7e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -50,10 +50,6 @@ public class CommonDialogWindow extends Window { this.content = content; this.helpLink = helpLink; - if (null == content) { - // TODO - // throw Exception - } init(saveButtonClickListener, cancelButtonClickListener); } @@ -75,8 +71,6 @@ public class CommonDialogWindow extends Window { mainLayout.addComponent(buttonLayout); mainLayout.setComponentAlignment(buttonLayout, Alignment.MIDDLE_CENTER); - setHeight("60%"); - setWidth("50%"); setCaption(caption); setContent(mainLayout); setResizable(true); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java index 14b727c68..f7a368428 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITextAreaDecorator.java @@ -50,7 +50,7 @@ public final class SPUITextAreaDecorator { final TextArea spUITxtArea = new TextArea(); // Default settings spUITxtArea.setRequired(false); - spUITxtArea.addStyleName(ValoTheme.COMBOBOX_SMALL); + spUITxtArea.addStyleName(ValoTheme.TEXTAREA_SMALL); if (StringUtils.isNotEmpty(caption)) { spUITxtArea.setCaption(caption); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index dbebc6183..ebb30bb18 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -26,7 +26,6 @@ import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent.DistributionSetTypeEnum; import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.slf4j.Logger; @@ -36,7 +35,6 @@ import org.springframework.data.domain.PageRequest; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; -import com.google.common.base.Strings; import com.vaadin.data.Item; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.util.IndexedContainer; @@ -81,9 +79,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout @Autowired private transient DistributionSetRepository distributionSetRepository; - @Autowired - private transient UiProperties uiProperties; - private HorizontalLayout distTypeSelectLayout; private Table sourceTable; private Table selectedTable; @@ -93,10 +88,8 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout @Override protected void createRequiredComponents() { - createTypeStr = i18n.get("label.create.type"); - updateTypeStr = i18n.get("label.update.type"); - comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null); - madatoryLabel = getMandatoryLabel(); + + super.createRequiredComponents(); tagName = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", ValoTheme.TEXTFIELD_TINY + " " + SPUIDefinitions.DIST_SET_TYPE_NAME, true, "", @@ -115,30 +108,13 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout tagDesc.setId(SPUIDefinitions.NEW_DISTRIBUTION_TYPE_DESC); tagDesc.setImmediate(true); tagDesc.setNullRepresentation(""); - - tagNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, null, false, - "", i18n.get("label.combobox.type")); - 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.tag.color"), null); - colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); - tagColorPreviewBtn = new Button(); - tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID); - getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); - tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE); - - ColorPickerHelper.setRgbSliderValues(colorPickerLayout); - - createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission()); } @Override protected void buildLayout() { super.buildLayout(); + ColorPickerHelper.setRgbSliderValues(colorPickerLayout); getFormLayout().addComponent(typeKey, 4); distTypeSelectLayout = createTwinColumnLayout(); @@ -651,24 +627,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event)); } - @Override - protected Boolean mandatoryValuesPresent() { - if (Strings.isNullOrEmpty(tagName.getValue()) || Strings.isNullOrEmpty(typeKey.getValue())) { - if (optiongroup.getValue().equals(createTypeStr)) { - displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); - } - if (optiongroup.getValue().equals(updateTypeStr)) { - if (null == tagNameComboBox.getValue()) { - displayValidationError(i18n.get("message.error.missing.tagName")); - } else { - displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); - } - } - return Boolean.FALSE; - } - return Boolean.TRUE; - } - @Override protected void previewButtonClicked() { if (!tagPreviewBtnClicked) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java index 6162eb321..740a0917f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java @@ -93,13 +93,13 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected TextField tagName; protected TextArea tagDesc; protected Button tagColorPreviewBtn; - protected OptionGroup optiongroup = new OptionGroup(); + protected OptionGroup optiongroup; protected ComboBox tagNameComboBox; - protected final VerticalLayout comboLayout = new VerticalLayout(); - protected final ColorPickerLayout colorPickerLayout = new ColorPickerLayout(); - protected final GridLayout mainLayout = new GridLayout(4, 4); - protected final VerticalLayout contentLayout = new VerticalLayout(); + protected VerticalLayout comboLayout; + protected ColorPickerLayout colorPickerLayout; + protected GridLayout mainLayout; + protected VerticalLayout contentLayout; protected boolean tagPreviewBtnClicked = false; @@ -141,6 +141,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C */ public void init() { + setSizeUndefined(); createRequiredComponents(); buildLayout(); createWindow(); @@ -184,12 +185,17 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID); getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE); - - ColorPickerHelper.setRgbSliderValues(colorPickerLayout); } protected void buildLayout() { + mainLayout = new GridLayout(3, 2); + mainLayout.setSpacing(true); + comboLayout = new VerticalLayout(); + colorPickerLayout = new ColorPickerLayout(); + ColorPickerHelper.setRgbSliderValues(colorPickerLayout); + contentLayout = new VerticalLayout(); + final HorizontalLayout colorLabelLayout = new HorizontalLayout(); colorLabelLayout.setMargin(false); colorLabelLayout.addComponents(colorLabel, tagColorPreviewBtn); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java index c5d1c0387..f007b64ce 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -5,13 +5,17 @@ import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; +import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; +import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; +import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; +import com.google.common.base.Strings; import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.server.Page; import com.vaadin.shared.ui.colorpicker.Color; +import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.OptionGroup; import com.vaadin.ui.TextArea; @@ -31,43 +35,29 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name"; private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc"; - /** - * Value change listeners implementations of sliders. - */ - protected void slidersValueChangeListeners() { - getColorPickerLayout().getRedSlider().addValueChangeListener(new ValueChangeListener() { - private static final long serialVersionUID = -8336732883300920839L; + @Override + protected void createRequiredComponents() { - @Override - public void valueChange(final ValueChangeEvent event) { - final double red = (Double) event.getProperty().getValue(); - final Color newColor = new Color((int) red, getColorPickerLayout().getSelectedColor().getGreen(), - getColorPickerLayout().getSelectedColor().getBlue()); - setColorToComponents(newColor); - } - }); - getColorPickerLayout().getGreenSlider().addValueChangeListener(new ValueChangeListener() { - private static final long serialVersionUID = 1236358037711775663L; + createTypeStr = i18n.get("label.create.type"); + updateTypeStr = i18n.get("label.update.type"); + comboLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type"), null); + madatoryLabel = getMandatoryLabel(); + colorLabel = SPUIComponentProvider.getLabel(i18n.get("label.choose.type.color"), null); + colorLabel.addStyleName(SPUIDefinitions.COLOR_LABEL_STYLE); - @Override - public void valueChange(final ValueChangeEvent event) { - final double green = (Double) event.getProperty().getValue(); - final Color newColor = new Color(getColorPickerLayout().getSelectedColor().getRed(), (int) green, - getColorPickerLayout().getSelectedColor().getBlue()); - setColorToComponents(newColor); - } - }); - getColorPickerLayout().getBlueSlider().addValueChangeListener(new ValueChangeListener() { - private static final long serialVersionUID = 8466370744686043947L; + tagNameComboBox = SPUIComponentProvider.getComboBox(i18n.get("label.combobox.type"), "", "", null, null, false, + "", i18n.get("label.combobox.type")); + 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); - @Override - public void valueChange(final ValueChangeEvent event) { - final double blue = (Double) event.getProperty().getValue(); - final Color newColor = new Color(getColorPickerLayout().getSelectedColor().getRed(), - getColorPickerLayout().getSelectedColor().getGreen(), (int) blue); - setColorToComponents(newColor); - } - }); + tagColorPreviewBtn = new Button(); + tagColorPreviewBtn.setId(SPUIComponetIdProvider.TAG_COLOR_PREVIEW_ID); + getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); + tagColorPreviewBtn.setStyleName(TAG_DYNAMIC_STYLE); + + createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission()); } @Override @@ -264,6 +254,24 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { return Boolean.FALSE; } + @Override + protected Boolean mandatoryValuesPresent() { + if (Strings.isNullOrEmpty(tagName.getValue()) || Strings.isNullOrEmpty(typeKey.getValue())) { + if (optiongroup.getValue().equals(createTypeStr)) { + displayValidationError(SPUILabelDefinitions.MISSING_TYPE_NAME_KEY); + } + if (optiongroup.getValue().equals(updateTypeStr)) { + if (null == tagNameComboBox.getValue()) { + displayValidationError(i18n.get("message.error.missing.tagName")); + } else { + displayValidationError(SPUILabelDefinitions.MISSING_TAG_NAME); + } + } + return Boolean.FALSE; + } + return Boolean.TRUE; + } + @Override protected void save(final ClickEvent event) { // TODO Auto-generated method stub diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index c5a578fb5..94f56ba07 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -25,7 +25,6 @@ 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.management.event.DistributionTableEvent; @@ -51,10 +50,10 @@ import com.vaadin.event.FieldEvents.TextChangeEvent; import com.vaadin.event.FieldEvents.TextChangeListener; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; -import com.vaadin.ui.Alignment; import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Component; +import com.vaadin.ui.FormLayout; import com.vaadin.ui.Label; import com.vaadin.ui.TextArea; import com.vaadin.ui.TextField; @@ -95,8 +94,6 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { @Autowired private transient UiProperties uiProperties; - // private Button saveDistributionBtn; - // private Button discardDistributionBtn; private TextField distNameTextField; private TextField distVersionTextField; private Label madatoryLabel; @@ -118,6 +115,8 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { private TextChangeListener distVersionTextFieldListener; private ValueChangeListener distsetTypeNameComboBoxListener; + private FormLayout formLayout; + /** * Initialize Distribution Add and Edit Window. */ @@ -128,17 +127,6 @@ 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"); /* * The main layout of the window contains mandatory info, textboxes @@ -147,13 +135,18 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { setSpacing(Boolean.TRUE); addStyleName("lay-color"); setSizeUndefined(); - addComponents(new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRoot()), madatoryLabel, - distsetTypeNameComboBox, distNameTextField, distVersionTextField, descTextArea, reqMigStepCheckbox); - // addComponent(buttonsLayout); - setComponentAlignment(madatoryLabel, Alignment.MIDDLE_LEFT); + formLayout = new FormLayout(); + formLayout.addComponent(madatoryLabel); + formLayout.addComponent(distsetTypeNameComboBox); + formLayout.addComponent(distNameTextField); + formLayout.addComponent(distVersionTextField); + formLayout.addComponent(descTextArea); + formLayout.addComponent(reqMigStepCheckbox); + + addComponents(formLayout); + distNameTextField.focus(); - } /** @@ -192,20 +185,6 @@ 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()); } /** @@ -539,6 +518,8 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { addDistributionWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution()); + addDistributionWindow.removeStyleName("actionButtonsMargin"); + return addDistributionWindow; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index 44d9bc6bb..f3abbd5bb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -25,7 +25,7 @@ import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.VaadinSessionScope; +import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.UI; @@ -34,7 +34,7 @@ import com.vaadin.ui.UI; * */ @SpringComponent -@VaadinSessionScope +@ViewScope public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayout { private static final long serialVersionUID = 444276149954167545L; @@ -79,7 +79,7 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo final DistributionSetTag existingDistTag = tagManagement.findDistributionSetTag(tagName.getValue()); if (optiongroup.getValue().equals(createTagStr)) { if (!checkIsDuplicate(existingDistTag)) { - crateNewTag(); + createNewTag(); } } else { @@ -91,7 +91,8 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo /** * Create new tag. */ - protected void crateNewTag() { + @Override + protected void createNewTag() { super.createNewTag(); if (isNotEmpty(getTagNameValue())) { DistributionSetTag newDistTag = new DistributionSetTag(getTagNameValue()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ActionTypeOptionGroupLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ActionTypeOptionGroupLayout.java index 65d4cdf4a..de0938e7e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ActionTypeOptionGroupLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ActionTypeOptionGroupLayout.java @@ -56,6 +56,7 @@ public class ActionTypeOptionGroupLayout extends HorizontalLayout { createOptionGroup(); addValueChangeListener(); setStyleName("dist-window-actiontype-horz-layout"); + setSizeUndefined(); } private void addValueChangeListener() { @@ -127,8 +128,8 @@ public class ActionTypeOptionGroupLayout extends HorizontalLayout { forcedTimeDateField.setStyleName("dist-window-forcedtime"); final TimeZone tz = SPDateTimeUtil.getBrowserTimeZone(); - forcedTimeDateField.setValue(Date.from(LocalDateTime.now().plusWeeks(2) - .atZone(SPDateTimeUtil.getTimeZoneId(tz)).toInstant())); + forcedTimeDateField.setValue( + Date.from(LocalDateTime.now().plusWeeks(2).atZone(SPDateTimeUtil.getTimeZoneId(tz)).toInstant())); forcedTimeDateField.setImmediate(true); forcedTimeDateField.setTimeZone(tz); forcedTimeDateField.setLocale(i18n.getLocale()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 90a04ba2a..9a2e060db 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -27,8 +27,8 @@ 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.CommonDialogWindow; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; -import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.filtermanagement.TargetFilterBeanQuery; import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout; import org.eclipse.hawkbit.ui.management.footer.ActionTypeOptionGroupLayout.ActionTypeOption; @@ -54,22 +54,17 @@ import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Validator; import com.vaadin.data.validator.IntegerRangeValidator; import com.vaadin.data.validator.RegexpValidator; -import com.vaadin.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.GridLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; -import com.vaadin.ui.Link; import com.vaadin.ui.OptionGroup; 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; /** @@ -79,7 +74,7 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent @ViewScope -public class AddUpdateRolloutWindowLayout extends CustomComponent { +public class AddUpdateRolloutWindowLayout extends GridLayout { private static final long serialVersionUID = 2999293468801479916L; @@ -113,7 +108,7 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { @Autowired private transient EventBus.SessionEventBus eventBus; - private Label madatoryLabel; + private Label mandatoryLabel; private TextField rolloutName; @@ -131,15 +126,9 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { private TextArea description; - private Button saveRolloutBtn; - - private Button discardRollloutBtn; - private OptionGroup errorThresholdOptionGroup; - private Link linkToHelp; - - private Window addUpdateRolloutWindow; + private CommonDialogWindow addUpdateRolloutWindow; private Boolean editRolloutEnabled; @@ -155,14 +144,16 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { * Create components and layout. */ public void init() { + + setSizeFull(); createRequiredComponents(); buildLayout(); } - public Window getWindow() { + public CommonDialogWindow getWindow() { + addUpdateRolloutWindow = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW); - addUpdateRolloutWindow.setContent(this); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard()); return addUpdateRolloutWindow; } @@ -200,39 +191,37 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private void buildLayout() { - final VerticalLayout mainLayout = new VerticalLayout(); - mainLayout.setSpacing(Boolean.TRUE); - mainLayout.setSizeUndefined(); - mainLayout.addComponents(madatoryLabel, rolloutName, distributionSet, getTargetFilterLayout(), - getGroupDetailsLayout(), getTriggerThresoldLayout(), getErrorThresholdLayout(), description, - actionTypeOptionGroupLayout, linkToHelp, getSaveDiscardButtonLayout()); - mainLayout.setComponentAlignment(linkToHelp, Alignment.BOTTOM_RIGHT); - setCompositionRoot(mainLayout); + setSpacing(Boolean.TRUE); + setSizeUndefined(); + setRows(9); + setColumns(3); + + addComponent(mandatoryLabel, 0, 0, 2, 0); + addComponent(getLabel("textfield.name"), 0, 1); + addComponent(rolloutName, 1, 1); + addComponent(getLabel("prompt.distribution.set"), 0, 2); + addComponent(distributionSet, 1, 2); + addComponent(getLabel("prompt.target.filter"), 0, 3); + addComponent(getTargetFilterLayout(), 1, 3); + addComponent(getLabel("prompt.number.of.groups"), 0, 4); + addComponent(getGroupDetailsLayout(), 1, 4); + addComponent(getLabel("prompt.tigger.threshold"), 0, 5); + addComponent(triggerThreshold, 1, 5); + addComponent(getPercentHintLabel(), 2, 5); + addComponent(getLabel("prompt.error.threshold"), 0, 6); + addComponent(errorThreshold, 1, 6); + addComponent(errorThresholdOptionGroup, 2, 6); + addComponent(getLabel("textfield.description"), 0, 7); + addComponent(description, 1, 7, 2, 7); + addComponent(actionTypeOptionGroupLayout, 0, 8, 2, 8); + rolloutName.focus(); } - private HorizontalLayout getGroupDetailsLayout() { - final HorizontalLayout groupLayout = new HorizontalLayout(); - groupLayout.setCaption(i18n.get("prompt.number.of.groups")); - groupLayout.setSizeFull(); - groupLayout.addComponents(noOfGroups, groupSizeLabel); - groupLayout.setExpandRatio(noOfGroups, 1.0F); - groupLayout.setComponentAlignment(groupSizeLabel, Alignment.MIDDLE_LEFT); - return groupLayout; - } - - private HorizontalLayout getErrorThresholdLayout() { - final HorizontalLayout errorThresoldLayout = new HorizontalLayout(); - errorThresoldLayout.setSizeFull(); - errorThresoldLayout.addComponents(errorThreshold, errorThresholdOptionGroup); - errorThresoldLayout.setExpandRatio(errorThreshold, 1.0F); - return errorThresoldLayout; - } - private HorizontalLayout getTargetFilterLayout() { final HorizontalLayout targetFilterLayout = new HorizontalLayout(); - targetFilterLayout.setSizeFull(); + targetFilterLayout.setSizeUndefined(); targetFilterLayout.addComponents(targetFilterQueryCombo, targetFilterQuery, totalTargetsLabel); targetFilterLayout.setExpandRatio(targetFilterQueryCombo, 0.71F); targetFilterLayout.setExpandRatio(targetFilterQuery, 0.70F); @@ -241,13 +230,22 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return targetFilterLayout; } - private HorizontalLayout getTriggerThresoldLayout() { - final HorizontalLayout triggerThresholdLayout = new HorizontalLayout(); - triggerThresholdLayout.setCaption(i18n.get("prompt.tigger.thresold")); - triggerThresholdLayout.setSizeFull(); - triggerThresholdLayout.addComponents(triggerThreshold, getPercentHintLabel()); - triggerThresholdLayout.setExpandRatio(triggerThreshold, 1.0F); - return triggerThresholdLayout; + private HorizontalLayout getGroupDetailsLayout() { + final HorizontalLayout groupLayout = new HorizontalLayout(); + groupLayout.setSizeUndefined(); + groupLayout.addComponents(noOfGroups, groupSizeLabel); + groupLayout.setExpandRatio(noOfGroups, 1.0F); + groupLayout.setComponentAlignment(groupSizeLabel, Alignment.MIDDLE_LEFT); + return groupLayout; + } + + private Label getLabel(final String key) { + return SPUIComponentProvider.getLabel(i18n.get(key), SPUILabelDefinitions.SP_LABEL_SIMPLE); + } + + private TextField getTextfield(final String key) { + return SPUIComponentProvider.getTextField(null, "", ValoTheme.TEXTFIELD_TINY, true, null, i18n.get(key), true, + SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); } private Label getPercentHintLabel() { @@ -257,18 +255,8 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return percentSymbol; } - private HorizontalLayout getSaveDiscardButtonLayout() { - final HorizontalLayout buttonsLayout = new HorizontalLayout(); - buttonsLayout.setSizeFull(); - buttonsLayout.addComponents(saveRolloutBtn, discardRollloutBtn); - buttonsLayout.setComponentAlignment(saveRolloutBtn, Alignment.BOTTOM_LEFT); - buttonsLayout.setComponentAlignment(discardRollloutBtn, Alignment.BOTTOM_RIGHT); - buttonsLayout.addStyleName("window-style"); - return buttonsLayout; - } - private void createRequiredComponents() { - madatoryLabel = createMandatoryLabel(); + mandatoryLabel = createMandatoryLabel(); rolloutName = createRolloutNameField(); distributionSet = createDistributionSetCombo(); populateDistributionSet(); @@ -279,20 +267,14 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { noOfGroups = createNoOfGroupsField(); groupSizeLabel = createGroupSizeLabel(); triggerThreshold = createTriggerThresold(); - errorThreshold = createErrorThresold(); + errorThreshold = createErrorThreshold(); description = createDescription(); errorThresholdOptionGroup = createErrorThresholdOptionGroup(); setDefaultSaveStartGroupOption(); - saveRolloutBtn = createSaveButton(); - discardRollloutBtn = createDiscardButton(); actionTypeOptionGroupLayout.selectDefaultOption(); - totalTargetsLabel = createTotalTargetsLabel(); targetFilterQuery = createTargetFilterQuery(); - - linkToHelp = SPUIComponentProvider.getHelpLink(uiProperties.getLinks().getDocumentation().getRolloutView()); actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT); - } private Label createGroupSizeLabel() { @@ -312,7 +294,7 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); filterField.setVisible(false); filterField.setEnabled(false); - filterField.setSizeFull(); + filterField.setSizeUndefined(); return filterField; } @@ -350,13 +332,13 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private ComboBox createTargetFilterQueryCombo() { - final ComboBox targetFilter = SPUIComponentProvider.getComboBox(null, "", "", null, null, true, "", - i18n.get("prompt.target.filter")); + final ComboBox targetFilter = SPUIComponentProvider.getComboBox(null, "", "", null, ValoTheme.COMBOBOX_SMALL, + 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.setSizeUndefined(); targetFilter.addValueChangeListener(event -> onTargetFilterChange()); return targetFilter; } @@ -393,24 +375,6 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { return new LazyQueryContainer( new LazyQueryDefinition(true, SPUIDefinitions.PAGE_SIZE, SPUILabelDefinitions.VAR_NAME), targetFilterQF); - - } - - private Button createDiscardButton() { - final Button discardRollloutBtn = SPUIComponentProvider.getButton( - SPUIComponetIdProvider.ROLLOUT_CREATE_UPDATE_DISCARD_ID, "", "", "", true, FontAwesome.TIMES, - SPUIButtonStyleSmallNoBorder.class); - discardRollloutBtn.addClickListener(event -> onDiscard()); - return discardRollloutBtn; - } - - private Button createSaveButton() { - final Button saveRolloutBtn = SPUIComponentProvider.getButton( - SPUIComponetIdProvider.ROLLOUT_CREATE_UPDATE_SAVE_ID, "", "", "", true, FontAwesome.SAVE, - SPUIButtonStyleSmallNoBorder.class); - saveRolloutBtn.addClickListener(event -> onRolloutSave()); - saveRolloutBtn.setImmediate(true); - return saveRolloutBtn; } private void onDiscard() { @@ -589,44 +553,38 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private TextArea createDescription() { - final TextArea descriptionField = SPUIComponentProvider.getTextArea(i18n.get("textfield.description"), - "text-area-style", ValoTheme.TEXTFIELD_TINY, false, null, i18n.get("textfield.description"), + final TextArea descriptionField = SPUIComponentProvider.getTextArea(null, "text-area-style", + ValoTheme.TEXTAREA_TINY, false, null, i18n.get("textfield.description"), SPUILabelDefinitions.TEXT_AREA_MAX_LENGTH); descriptionField.setId(SPUIComponetIdProvider.ROLLOUT_DESCRIPTION_ID); descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); - descriptionField.setSizeFull(); + descriptionField.setSizeUndefined(); return descriptionField; } - 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); + private TextField createErrorThreshold() { + final TextField errorField = getTextfield("prompt.error.threshold"); errorField.addValidator(new ThresholdFieldValidator()); errorField.setId(SPUIComponetIdProvider.ROLLOUT_ERROR_THRESOLD_ID); errorField.setMaxLength(7); - errorField.setSizeFull(); + errorField.setSizeUndefined(); return errorField; } 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); + final TextField thresholdField = getTextfield("prompt.tigger.threshold"); thresholdField.setId(SPUIComponetIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID); thresholdField.addValidator(new ThresholdFieldValidator()); - thresholdField.setSizeFull(); + thresholdField.setSizeUndefined(); thresholdField.setMaxLength(3); return thresholdField; } 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); + final TextField noOfGroupsField = getTextfield("prompt.number.of.groups"); noOfGroupsField.setId(SPUIComponetIdProvider.ROLLOUT_NO_OF_GROUPS_ID); noOfGroupsField.addValidator(new GroupNumberValidator()); - noOfGroupsField.setSizeFull(); + noOfGroupsField.setSizeUndefined(); noOfGroupsField.setMaxLength(3); noOfGroupsField.addValueChangeListener(evevt -> onGroupNumberChange()); return noOfGroupsField; @@ -642,13 +600,13 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private ComboBox createDistributionSetCombo() { - final ComboBox dsSet = SPUIComponentProvider.getComboBox(i18n.get("prompt.distribution.set"), "", "", null, - null, true, "", i18n.get("prompt.distribution.set")); + final ComboBox dsSet = SPUIComponentProvider.getComboBox(null, "", "", null, ValoTheme.COMBOBOX_SMALL, 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(); + dsSet.setSizeUndefined(); return dsSet; } @@ -667,11 +625,9 @@ public class AddUpdateRolloutWindowLayout extends CustomComponent { } private TextField createRolloutNameField() { - final TextField rolloutNameField = SPUIComponentProvider.getTextField(i18n.get("textfield.name"), "", - ValoTheme.TEXTFIELD_TINY, true, null, i18n.get("textfield.name"), true, - SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); + final TextField rolloutNameField = getTextfield("textfield.name"); rolloutNameField.setId(SPUIComponetIdProvider.ROLLOUT_NAME_FIELD_ID); - rolloutNameField.setSizeFull(); + rolloutNameField.setSizeUndefined(); return rolloutNameField; } diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss index e71504a3c..0a00f463c 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-window.scss @@ -163,6 +163,6 @@ } .actionButtonsMargin { - margin-top: 10px; + margin-top: 30px; } } diff --git a/hawkbit-ui/src/main/resources/messages.properties b/hawkbit-ui/src/main/resources/messages.properties index 25dabd354..e84a612c6 100644 --- a/hawkbit-ui/src/main/resources/messages.properties +++ b/hawkbit-ui/src/main/resources/messages.properties @@ -462,7 +462,7 @@ rollout.group.label.target.truncated = {0} targets has been truncated in the lis prompt.number.of.groups = Number of groups -prompt.tigger.thresold = Trigger threshold +prompt.tigger.threshold = Trigger threshold prompt.error.threshold = Error threshold prompt.distribution.set = Distribution set caption.configure.rollout = Configure rollout diff --git a/hawkbit-ui/src/main/resources/messages_de.properties b/hawkbit-ui/src/main/resources/messages_de.properties index 39661e3c9..b772d898a 100644 --- a/hawkbit-ui/src/main/resources/messages_de.properties +++ b/hawkbit-ui/src/main/resources/messages_de.properties @@ -452,7 +452,7 @@ menu.title = Software Provisioning #Rollout management prompt.number.of.groups = Number of groups -prompt.tigger.thresold = Trigger threshold +prompt.tigger.threshold = Trigger threshold prompt.error.threshold = Error threshold prompt.distribution.set = Distribution set caption.configure.rollout = Configure rollout diff --git a/hawkbit-ui/src/main/resources/messages_en.properties b/hawkbit-ui/src/main/resources/messages_en.properties index 23df35ad2..e87b10d4b 100644 --- a/hawkbit-ui/src/main/resources/messages_en.properties +++ b/hawkbit-ui/src/main/resources/messages_en.properties @@ -443,7 +443,7 @@ menu.title = Software Provisioning #Rollout management prompt.number.of.groups = Number of groups -prompt.tigger.thresold = Trigger threshold +prompt.tigger.threshold = Trigger threshold prompt.error.threshold = Error threshold prompt.distribution.set = Distribution set caption.configure.rollout = Configure rollout From 6c7f0482b482529b2ac94e3ff1b915ad10dd6a84 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Wed, 25 May 2016 13:28:58 +0200 Subject: [PATCH 10/44] Insert helpLink next to the action buttons on the right side Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 2 +- .../CreateUpdateSoftwareTypeLayout.java | 2 +- .../hawkbit/ui/common/CommonDialogWindow.java | 43 +++++++----- .../hawkbit/ui/common/PopupWindowHelp.java | 69 ------------------- .../ui/components/SPUIComponentProvider.java | 4 +- .../ui/decorators/SPUIWindowDecorator.java | 4 +- .../CreateUpdateDistSetTypeLayout.java | 3 +- .../ui/layouts/CreateUpdateTagLayout.java | 2 +- .../DistributionAddUpdateWindowLayout.java | 6 +- .../TargetAddUpdateWindowLayout.java | 37 +--------- .../rollout/AddUpdateRolloutWindowLayout.java | 5 +- 11 files changed, 42 insertions(+), 135 deletions(-) delete mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 7cf95e4b2..70bbd68c8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -215,7 +215,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se /* add main layout to the window */ window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> closeThisWindow()); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> closeThisWindow(), null); window.removeStyleName("actionButtonsMargin"); nameTextField.focus(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index 8d34993c9..c122688d8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -105,7 +105,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout public void createWindow() { reset(); window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event)); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event), null); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 58ce52e7e..e15fe2ea4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -38,6 +38,8 @@ public class CommonDialogWindow extends Window { private Button cancelButton; + private HorizontalLayout buttonsLayout; + public CommonDialogWindow() { init(null, null); @@ -60,16 +62,13 @@ public class CommonDialogWindow extends Window { ((AbstractOrderedLayout) content).setMargin(true); } - if (StringUtils.isNotEmpty(helpLink)) { - mainLayout.addComponent(createLinkToHelp(helpLink)); - } if (null != content) { mainLayout.addComponent(content); } final HorizontalLayout buttonLayout = createActionButtonsLayout(saveButtonClickListener, cancelButtonClickListener); mainLayout.addComponent(buttonLayout); - mainLayout.setComponentAlignment(buttonLayout, Alignment.MIDDLE_CENTER); + mainLayout.setComponentAlignment(buttonLayout, Alignment.TOP_CENTER); setCaption(caption); setContent(mainLayout); @@ -81,31 +80,47 @@ public class CommonDialogWindow extends Window { private HorizontalLayout createActionButtonsLayout(final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener) { - final HorizontalLayout hlayout = new HorizontalLayout(); - hlayout.setSpacing(true); + buttonsLayout = new HorizontalLayout(); + buttonsLayout.setSizeFull(); + buttonsLayout.setSpacing(true); saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_SAVE, "save", "", "", true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); + saveButton.setSizeUndefined(); if (null != saveButtonClickListener) { saveButton.addClickListener(saveButtonClickListener); } else { LOG.warn("No ClickListener for saveButton specified"); } - hlayout.addComponent(saveButton); - hlayout.setComponentAlignment(saveButton, Alignment.MIDDLE_LEFT); + buttonsLayout.addComponent(saveButton); + buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); + buttonsLayout.setExpandRatio(saveButton, 1.0F); cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_CANCEL, "cancel", "", "", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); + cancelButton.setSizeUndefined(); if (null != cancelButtonClickListener) { cancelButton.addClickListener(cancelButtonClickListener); } else { LOG.warn("No ClickListener for cancelButton specified"); } - hlayout.addComponent(cancelButton); - hlayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_RIGHT); - hlayout.addStyleName("actionButtonsMargin"); + buttonsLayout.addComponent(cancelButton); + buttonsLayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_LEFT); + buttonsLayout.setExpandRatio(cancelButton, 1.0F); + buttonsLayout.addStyleName("actionButtonsMargin"); - return hlayout; + addHelpLink(); + + return buttonsLayout; + } + + private void addHelpLink() { + + if (StringUtils.isNotEmpty(helpLink)) { + final Link helpLinkComponent = SPUIComponentProvider.getHelpLink(helpLink); + buttonsLayout.addComponent(helpLinkComponent); + buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT); + } } public void setSaveButtonEnabled(final boolean enabled) { @@ -116,8 +131,4 @@ public class CommonDialogWindow extends Window { cancelButton.setEnabled(enabled); } - private Link createLinkToHelp(final String link) { - return SPUIComponentProvider.getHelpLink(link); - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java deleted file mode 100644 index 1ee505dec..000000000 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/PopupWindowHelp.java +++ /dev/null @@ -1,69 +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.common; - -import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; - -import com.vaadin.ui.Alignment; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Link; - -/** - * - * Helper class that provides the help icon layout in the right upper corner of - * a popup window - * - */ -public class PopupWindowHelp extends HorizontalLayout { - - private static final long serialVersionUID = 5377482512908004826L; - - private Link linkToHelp; - - /** - * Provides a horizontalLayout with a help icon in the right corner. The - * layout is shown by default. - * - * @param link - * link to the help page in the wiki or on github - */ - public PopupWindowHelp(final String link) { - createLinkToHelp(link); - init(); - } - - /** - * Provides a horizontalLayout with a help icon in the right corner. The - * layout is shown by default. The visibility of the layout can be set. If - * visibility is false the layout is not shown and the space is not - * reserved. - * - * @param link - * link to the help page in the wiki or on github - * @param visible - * false == layout is not shown - */ - public PopupWindowHelp(final String link, final boolean visible) { - createLinkToHelp(link); - init(); - setVisible(visible); - } - - public void init() { - setSizeFull(); - addComponent(linkToHelp); - setComponentAlignment(linkToHelp, Alignment.MIDDLE_RIGHT); - addStyleName("window-style"); - } - - private void createLinkToHelp(final String link) { - linkToHelp = SPUIComponentProvider.getHelpLink(link); - } - -} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java index 6aa0f9837..170ea8dcc 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java @@ -153,9 +153,9 @@ public final class SPUIComponentProvider { */ public static CommonDialogWindow getWindow(final String caption, final String id, final String type, final Component content, final ClickListener saveButtonClickListener, - final ClickListener cancelButtonClickListener) { + final ClickListener cancelButtonClickListener, final String helpLink) { return SPUIWindowDecorator.getDeocratedWindow(caption, id, type, content, saveButtonClickListener, - cancelButtonClickListener); + cancelButtonClickListener, helpLink); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java index 539215c7d..f5af72abd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java @@ -44,9 +44,9 @@ public final class SPUIWindowDecorator { */ public static CommonDialogWindow getDeocratedWindow(final String caption, final String id, final String type, final Component content, final ClickListener saveButtonClickListener, - final ClickListener CancelButtonClickListener) { + final ClickListener CancelButtonClickListener, final String helpLink) { // TODO helpLink - final CommonDialogWindow window = new CommonDialogWindow(caption, content, null, saveButtonClickListener, + final CommonDialogWindow window = new CommonDialogWindow(caption, content, helpLink, saveButtonClickListener, CancelButtonClickListener); if (null != id) { window.setId(id); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index ebb30bb18..addf4736f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -16,7 +16,6 @@ import org.eclipse.hawkbit.repository.DistributionSetRepository; import org.eclipse.hawkbit.repository.SoftwareManagement; 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.colorPicker.ColorPickerConstants; import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; import org.eclipse.hawkbit.ui.common.DistributionSetTypeBeanQuery; @@ -624,7 +623,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout public void createWindow() { reset(); window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event)); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event), null); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java index 740a0917f..cebce7105 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java @@ -110,7 +110,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected void createWindow() { reset(); setWindow(SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event))); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event), null)); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index 94f56ba07..122411376 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -133,6 +133,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { * (controller Id, name & description) and action buttons layout */ setSpacing(Boolean.TRUE); + setMargin(Boolean.FALSE); addStyleName("lay-color"); setSizeUndefined(); @@ -184,7 +185,6 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { "dist-checkbox-style", null, false, ""); reqMigStepCheckbox.addStyleName(ValoTheme.CHECKBOX_SMALL); reqMigStepCheckbox.setId(SPUIComponetIdProvider.DIST_ADD_MIGRATION_CHECK); - } /** @@ -516,8 +516,8 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { populateRequiredComponents(); resetComponents(); addDistributionWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), - event -> discardDistribution()); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(), + null); addDistributionWindow.removeStyleName("actionButtonsMargin"); return addDistributionWindow; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index 1fed8fe22..87c9abfc9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -14,12 +14,9 @@ import java.util.Set; 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; -import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; @@ -35,15 +32,10 @@ import org.vaadin.spring.events.EventBus; 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.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; import com.vaadin.ui.TextField; @@ -75,15 +67,10 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { @Autowired private transient UINotification uINotification; - @Autowired - private transient UiProperties uiProperties; - private TextField controllerIDTextField; private TextField nameTextField; private TextArea descTextArea; private Label madatoryLabel; -// private Button saveTarget; -// private Button discardTarget; private boolean editTarget = Boolean.FALSE; private String controllerId; private VerticalLayout mainLayout; @@ -125,26 +112,9 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { /* Label for mandatory symbol */ 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()); - -// /* 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"); /* * The main layout of the window contains mandatory info, textboxes @@ -154,9 +124,6 @@ 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); FormLayout formLayout = new FormLayout(); formLayout.addComponent(madatoryLabel); @@ -168,7 +135,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { if (Boolean.TRUE.equals(editTarget)) { madatoryLabel.setVisible(Boolean.FALSE); } -// mainLayout.addComponents(madatoryLabel, controllerIDTextField, nameTextField, descTextArea, buttonsLayout); nameTextField.focus(); } @@ -197,7 +163,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { } }); - } private void addTargetDescChangeListner() { @@ -282,7 +247,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, this, event -> saveTargetListner(),event -> discardTargetListner()); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(),event -> discardTargetListner(), null); return addTargetWindow; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 9a2e060db..fc5965756 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -145,7 +145,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { */ public void init() { - setSizeFull(); + setSizeUndefined(); createRequiredComponents(); buildLayout(); } @@ -153,7 +153,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { public CommonDialogWindow getWindow() { addUpdateRolloutWindow = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard()); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard(), + uiProperties.getLinks().getDocumentation().getRolloutView()); return addUpdateRolloutWindow; } From 3abfe388a433eaa89d5fc9b08a337340d02faedc Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Wed, 25 May 2016 18:55:43 +0200 Subject: [PATCH 11/44] optimize CommonDialogWindow Signed-off-by: Melanie Retter --- .../ui/decorators/SPUIWindowDecorator.java | 6 ++-- .../CreateUpdateDistSetTypeLayout.java | 4 +-- .../ui/layouts/CreateUpdateTagLayout.java | 2 -- .../TargetAddUpdateWindowLayout.java | 2 +- .../rollout/AddUpdateRolloutWindowLayout.java | 28 +++---------------- .../TenantConfigurationDashboardView.java | 6 ---- 6 files changed, 10 insertions(+), 38 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java index f5af72abd..9f436fd65 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIWindowDecorator.java @@ -44,10 +44,10 @@ public final class SPUIWindowDecorator { */ public static CommonDialogWindow getDeocratedWindow(final String caption, final String id, final String type, final Component content, final ClickListener saveButtonClickListener, - final ClickListener CancelButtonClickListener, final String helpLink) { - // TODO helpLink + final ClickListener cancelButtonClickListener, final String helpLink) { + final CommonDialogWindow window = new CommonDialogWindow(caption, content, helpLink, saveButtonClickListener, - CancelButtonClickListener); + cancelButtonClickListener); if (null != id) { window.setId(id); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index addf4736f..ceb3f979c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -335,7 +335,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout * Create new DistSet Type tag. */ @SuppressWarnings("unchecked") - private void crateNewDistributionSetType() { + private void createNewDistributionSetType() { final String colorPicked = ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview()); final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue()); @@ -611,7 +611,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout .findDistributionSetTypeByName(tagName.getValue()); if (optiongroup.getValue().equals(createTypeStr)) { if (!checkIsDuplicateByKey(existingDistTypeByKey) && !checkIsDuplicate(existingDistTypeByName)) { - crateNewDistributionSetType(); + createNewDistributionSetType(); } } else { updateDistributionSetType(existingDistTypeByKey); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java index cebce7105..60d76ee14 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java @@ -327,8 +327,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C getPreviewButtonColor(ColorPickerConstants.DEFAULT_COLOR); colorPickerLayout.getSelPreview() .setColor(ColorPickerHelper.rgbToColorConverter(ColorPickerConstants.DEFAULT_COLOR)); - // remove the sliders and color picker layout - // fieldLayout.removeComponent(colorPickerLayout.getSliders()); mainLayout.removeComponent(colorPickerLayout); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index 87c9abfc9..101bfa8a9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -247,7 +247,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, this, event -> saveTargetListner(),event -> discardTargetListner(), null); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(), event -> discardTargetListner(), null); return addTargetWindow; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index fc5965756..9920fab74 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -56,10 +56,8 @@ import com.vaadin.data.validator.IntegerRangeValidator; import com.vaadin.data.validator.RegexpValidator; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; -import com.vaadin.ui.Alignment; import com.vaadin.ui.ComboBox; import com.vaadin.ui.GridLayout; -import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.OptionGroup; import com.vaadin.ui.TextArea; @@ -204,9 +202,11 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { addComponent(getLabel("prompt.distribution.set"), 0, 2); addComponent(distributionSet, 1, 2); addComponent(getLabel("prompt.target.filter"), 0, 3); - addComponent(getTargetFilterLayout(), 1, 3); + addComponent(targetFilterQueryCombo, 1, 3); + addComponent(totalTargetsLabel, 2, 3); addComponent(getLabel("prompt.number.of.groups"), 0, 4); - addComponent(getGroupDetailsLayout(), 1, 4); + addComponent(noOfGroups, 1, 4); + addComponent(groupSizeLabel, 2, 4); addComponent(getLabel("prompt.tigger.threshold"), 0, 5); addComponent(triggerThreshold, 1, 5); addComponent(getPercentHintLabel(), 2, 5); @@ -220,26 +220,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { rolloutName.focus(); } - private HorizontalLayout getTargetFilterLayout() { - final HorizontalLayout targetFilterLayout = new HorizontalLayout(); - targetFilterLayout.setSizeUndefined(); - targetFilterLayout.addComponents(targetFilterQueryCombo, targetFilterQuery, totalTargetsLabel); - targetFilterLayout.setExpandRatio(targetFilterQueryCombo, 0.71F); - targetFilterLayout.setExpandRatio(targetFilterQuery, 0.70F); - targetFilterLayout.setExpandRatio(totalTargetsLabel, 0.29F); - targetFilterLayout.setComponentAlignment(totalTargetsLabel, Alignment.MIDDLE_LEFT); - return targetFilterLayout; - } - - private HorizontalLayout getGroupDetailsLayout() { - final HorizontalLayout groupLayout = new HorizontalLayout(); - groupLayout.setSizeUndefined(); - groupLayout.addComponents(noOfGroups, groupSizeLabel); - groupLayout.setExpandRatio(noOfGroups, 1.0F); - groupLayout.setComponentAlignment(groupSizeLabel, Alignment.MIDDLE_LEFT); - return groupLayout; - } - private Label getLabel(final String key) { return SPUIComponentProvider.getLabel(i18n.get(key), SPUILabelDefinitions.SP_LABEL_SIMPLE); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java index 3fa69dd1f..a6f1b8c32 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java @@ -15,7 +15,6 @@ import javax.annotation.PostConstruct; import org.eclipse.hawkbit.ui.HawkbitUI; 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.tenantconfiguration.ConfigurationItem.ConfigurationItemChangeListener; @@ -90,11 +89,6 @@ public class TenantConfigurationDashboardView extends CustomComponent implements rootLayout.setMargin(true); rootLayout.setSpacing(true); - final PopupWindowHelp help = new PopupWindowHelp(uiProperties.getLinks().getDocumentation().getRolloutView()); - help.setSpacing(true); - rootLayout.addComponent(help); - rootLayout.setComponentAlignment(help, Alignment.BOTTOM_RIGHT); - configurationViews.forEach(view -> rootLayout.addComponent(view)); final HorizontalLayout buttonContent = saveConfigurationButtonsLayout(); From 6fd24416aebd20b273d775e51889d40ae0ba83d6 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 30 May 2016 12:37:39 +0200 Subject: [PATCH 12/44] substitute VerticalLayout for FormLayout Signed-off-by: Melanie Retter --- .../TargetAddUpdateWindowLayout.java | 43 ++++++------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index 101bfa8a9..af0e055a7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -40,7 +40,6 @@ 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; @@ -73,8 +72,8 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { private Label madatoryLabel; private boolean editTarget = Boolean.FALSE; private String controllerId; - private VerticalLayout mainLayout; - private CommonDialogWindow addTargetWindow; + private FormLayout formLayout; + private CommonDialogWindow window; private String oldTargetName; private String oldTargetDesc; @@ -89,7 +88,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { buildLayout(); /* register all listeners related to the Window */ addListeners(); - setCompositionRoot(mainLayout); + setCompositionRoot(formLayout); } private void createRequiredComponents() { @@ -120,17 +119,12 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { * The main layout of the window contains mandatory info, textboxes * (controller Id, name & description) and action buttons layout */ - mainLayout = new VerticalLayout(); - mainLayout.setSpacing(Boolean.TRUE); - mainLayout.addStyleName("lay-color"); - mainLayout.setSizeUndefined(); - FormLayout formLayout = new 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); @@ -142,7 +136,6 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { addTargetNameChangeListner(); addTargetDescChangeListner(); - } private void addTargetNameChangeListner() { @@ -156,9 +149,9 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { @Override public void textChange(final TextChangeEvent event) { if (event.getText().equals(oldTargetName) && descTextArea.getValue().equals(oldTargetDesc)) { - addTargetWindow.setSaveButtonEnabled(false); + window.setSaveButtonEnabled(false); } else { - addTargetWindow.setSaveButtonEnabled(true); + window.setSaveButtonEnabled(true); } } @@ -176,9 +169,9 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { @Override public void textChange(final TextChangeEvent event) { if (event.getText().equals(oldTargetDesc) && nameTextField.getValue().equals(oldTargetName)) { - addTargetWindow.setSaveButtonEnabled(false); + window.setSaveButtonEnabled(false); } else { - addTargetWindow.setSaveButtonEnabled(true); + window.setSaveButtonEnabled(true); } } @@ -246,9 +239,9 @@ 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, + window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.target"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(), event -> discardTargetListner(), null); - return addTargetWindow; + return window; } /** @@ -267,8 +260,8 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { private void closeThisWindow() { editTarget = Boolean.FALSE; - addTargetWindow.close(); - UI.getCurrent().removeWindow(addTargetWindow); + window.close(); + UI.getCurrent().removeWindow(window); } private void setTargetValues(final Target target, final String name, final String description) { @@ -310,19 +303,11 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { if (target.getDescription() != null) { descTextArea.setValue(target.getDescription()); } - addTargetWindow.setSaveButtonEnabled(Boolean.FALSE); + window.setSaveButtonEnabled(Boolean.FALSE); oldTargetDesc = descTextArea.getValue(); oldTargetName = nameTextField.getValue(); - addTargetWindow.addStyleName("target-update-window"); - } - - public VerticalLayout getMainLayout() { - return mainLayout; - } - - public void setMainLayout(final VerticalLayout mainLayout) { - this.mainLayout = mainLayout; + window.addStyleName("target-update-window"); } } From d3f7b9de9c5bb4bcbb66d2f0bdef5bd3d8de4318 Mon Sep 17 00:00:00 2001 From: venu1278 Date: Mon, 30 May 2016 17:57:40 +0530 Subject: [PATCH 13/44] Displaying Metadata details of DistributionSet & SoftwareModule Signed-off-by: venu1278 --- .../smtable/SoftwareModuleDetails.java | 12 +- .../AbstractTableDetailsLayout.java | 27 +++- .../DistributionSetMetadatadetailslayout.java | 148 +++++++++++++++++ .../SoftwareModuleMetadatadetailslayout.java | 151 ++++++++++++++++++ .../dstable/DistributionSetDetails.java | 34 +++- .../smtable/SwModuleDetails.java | 12 +- .../dstable/DistributionDetails.java | 22 +++ .../ui/utils/SPUIComponetIdProvider.java | 10 ++ .../src/main/resources/messages.properties | 2 + .../src/main/resources/messages_de.properties | 2 + .../src/main/resources/messages_en.properties | 2 + 11 files changed, 412 insertions(+), 10 deletions(-) create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java index 9d535f7f5..f76c0692c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java @@ -12,6 +12,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; +import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleMetadatadetailslayout; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; @@ -44,7 +45,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta @Autowired private ArtifactUploadState artifactUploadState; - + @Override protected String getEditButtonId() { return SPUIComponetIdProvider.UPLOAD_SW_MODULE_EDIT_BUTTON; @@ -55,8 +56,9 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null); detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); + detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); } - + @Override protected void onEdit(final ClickEvent event) { final Window addSoftwareModule = softwareModuleAddUpdateWindow @@ -81,6 +83,8 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta updateSoftwareModuleDetailsLayout(HawkbitCommonUtil.SP_STRING_EMPTY, HawkbitCommonUtil.SP_STRING_EMPTY, maxAssign); } + + populateMetadataDetails(); } private void updateSoftwareModuleDetailsLayout(final String type, final String vendor, final String maxAssign) { @@ -141,4 +145,8 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta protected String getDetailsHeaderCaptionId() { return SPUIComponetIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } + + private void populateMetadataDetails(){ + swmMetadataTable.populateSMMetadata(getSelectedBaseEntity()); + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java index 33fcf5af9..d7d9f131f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java @@ -72,8 +72,12 @@ public abstract class AbstractTableDetailsLayout extends private VerticalLayout logLayout; private VerticalLayout attributesLayout; - - /** + + private VerticalLayout metadataLayout; + + protected SoftwareModuleMetadatadetailslayout swmMetadataTable; + + /** * Initialize components. */ @PostConstruct @@ -145,8 +149,10 @@ public abstract class AbstractTableDetailsLayout extends detailsTab.setHeight(90, Unit.PERCENTAGE); detailsTab.addStyleName(SPUIStyleDefinitions.DETAILS_LAYOUT_STYLE); detailsTab.setId(getTabSheetId()); + swmMetadataTable = new SoftwareModuleMetadatadetailslayout(); + swmMetadataTable.init(getI18n(), getPermissionChecker()); addTabs(detailsTab); - } + } private void buildLayout() { final HorizontalLayout nameEditLayout = new HorizontalLayout(); @@ -209,8 +215,9 @@ public abstract class AbstractTableDetailsLayout extends populateLog(); populateDescription(); populateDetailsWidget(); + } - + protected void populateLog() { logLayout.removeAllComponents(); @@ -281,7 +288,15 @@ public abstract class AbstractTableDetailsLayout extends descriptionLayout = getTabLayout(); return descriptionLayout; } - + + protected VerticalLayout createMetadataLayout() { + metadataLayout = getTabLayout(); + metadataLayout.setSizeFull(); + metadataLayout.addComponent(swmMetadataTable); + return metadataLayout; + } + + /** * Default caption of header to be displayed when no data row selected in * table. @@ -317,7 +332,7 @@ public abstract class AbstractTableDetailsLayout extends public VerticalLayout getDetailsLayout() { return detailsLayout; } - + private void populateDescription() { if (selectedBaseEntity != null) { updateDescriptionLayout(i18n.get("label.description"), selectedBaseEntity.getDescription()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java new file mode 100644 index 000000000..f96349180 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java @@ -0,0 +1,148 @@ +package org.eclipse.hawkbit.ui.common.detailslayout; + +import java.util.ArrayList; +import java.util.List; +import org.eclipse.hawkbit.repository.SpPermissionChecker; + +import org.eclipse.hawkbit.repository.model.DistributionSet; +import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; +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.SPUIStyleDefinitions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.vaadin.spring.events.EventBus.SessionEventBus; + +import com.vaadin.data.Item; +import com.vaadin.data.util.IndexedContainer; +import com.vaadin.ui.Button; +import com.vaadin.ui.Label; +import com.vaadin.ui.Table; +import com.vaadin.ui.themes.ValoTheme; + +public class DistributionSetMetadatadetailslayout extends Table{ + + private static final long serialVersionUID = 2913758299611837718L; + + private static final Logger LOG = LoggerFactory.getLogger(DistributionSetMetadatadetailslayout.class); + + private static final String METADATA_KEY = "Key"; + + private static final String VIEW ="view"; + + private SpPermissionChecker permissionChecker; + + private I18N i18n; + + /** + * Initialize software module table- to be displayed in details layout. + * + * @param i18n + * I18N + * @param isUnassignSoftModAllowed + * boolean flag to check for unassign functionality allowed for + * the view. + * @param distributionSetManagement + * DistributionSetManagement + * @param permissionChecker + * SpPermissionChecker + * @param eventBus + * SessionEventBus + * @param manageDistUIState + * ManageDistUIState + */ + public void init(final I18N i18n, final SpPermissionChecker permissionChecker) { + this.i18n = i18n; + this.permissionChecker = permissionChecker; + createDSMetadataTable(); + addCustomGeneratedColumns(); + } + + private void createDSMetadataTable() { + addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); + addStyleName(ValoTheme.TABLE_NO_STRIPES); + setSelectable(false); + setImmediate(true); + setContainerDataSource(getSwModuleContainer()); + setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); + addDSMetadataTableHeader(); + setSizeFull(); // check if this style is required + addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE); + } + + private IndexedContainer getSwModuleContainer() { + final IndexedContainer container = new IndexedContainer(); + container.addContainerProperty(METADATA_KEY, String.class, ""); + setColumnExpandRatio(METADATA_KEY, 0.7f); + setColumnAlignment(METADATA_KEY, Align.LEFT); + + if (permissionChecker.hasUpdateDistributionPermission()) { + container.addContainerProperty(VIEW, Label.class, ""); + setColumnExpandRatio(VIEW, 0.2F); + setColumnAlignment(VIEW, Align.RIGHT); + } + return container; + } + + private void addDSMetadataTableHeader() { + setColumnHeader(METADATA_KEY, i18n.get("label.dist.details.key")); + } + + /** + * Populate software module table. + * + * @param distributionSet + */ + public void populateDSMetadata(final DistributionSet distributionSet) { + removeAllItems(); + List dsMetadtaList = new ArrayList<>(); + for(int i=1;i<=5;i++){ + DistributionSetMetadata dsMetadata = new DistributionSetMetadata(); + dsMetadata.setKey("ReleaseNote AAA" +i); + dsMetadata.setValue("ReleaseNote AAA sample data"+i); + dsMetadtaList.add(dsMetadata); + } + if (null != distributionSet) { + /* final List dsMetadataList = distributionSet.getMetadata();*/ + final List dsMetadataList = dsMetadtaList; + if (null != dsMetadataList && !dsMetadataList.isEmpty()) { + dsMetadataList.forEach(dsMetadata -> setDSMetadataProperties(dsMetadata)); + } + } + + } + + private void setDSMetadataProperties(final DistributionSetMetadata dsMetadata){ + final Item item = getContainerDataSource().addItem(dsMetadata.getKey()); + item.getItemProperty(METADATA_KEY).setValue(dsMetadata.getKey()); + if (permissionChecker.hasUpdateDistributionPermission()) { + item.getItemProperty(VIEW).setValue(HawkbitCommonUtil.getFormatedLabel("View")); + } + + } + + protected void addCustomGeneratedColumns() { + addGeneratedColumn(VIEW, + (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); + } + + private Button customMetadataDetailButton(final String itemId) { + final Item row1 = getItem(itemId); + final String metadataKey = (String) row1.getItemProperty(METADATA_KEY).getValue(); + + final Button viewIcon = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), VIEW, + "View DistributionSet Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); + viewIcon.setData(metadataKey); + viewIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); + //viewIcon.addClickListener(event -> onClickOfDetailButton(event)); + return viewIcon; + } + + private static String getDetailLinkId(final String name) { + return new StringBuilder(SPUIComponetIdProvider.DS_METADATA_DETAIL_LINK).append('.').append(name) + .toString(); + } +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java new file mode 100644 index 000000000..90d0f6763 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java @@ -0,0 +1,151 @@ +package org.eclipse.hawkbit.ui.common.detailslayout; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.hawkbit.repository.SpPermissionChecker; +import org.eclipse.hawkbit.repository.model.DistributionSet; +import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; +import org.eclipse.hawkbit.repository.model.SoftwareModule; +import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; +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.SPUIStyleDefinitions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.vaadin.data.Item; +import com.vaadin.data.util.IndexedContainer; +import com.vaadin.ui.Button; +import com.vaadin.ui.Label; +import com.vaadin.ui.Table; +import com.vaadin.ui.Table.Align; +import com.vaadin.ui.Table.ColumnHeaderMode; +import com.vaadin.ui.themes.ValoTheme; + +public class SoftwareModuleMetadatadetailslayout extends Table { + + private static final long serialVersionUID = 2913758299611838818L; + + private static final Logger LOG = LoggerFactory.getLogger(SoftwareModuleMetadatadetailslayout.class); + + private static final String METADATA_KEY = "Key"; + + private static final String VIEW ="view"; + + private SpPermissionChecker permissionChecker; + + private I18N i18n; + + /** + * Initialize software module table- to be displayed in details layout. + * + * @param i18n + * I18N + * @param isUnassignSoftModAllowed + * boolean flag to check for unassign functionality allowed for + * the view. + * @param distributionSetManagement + * DistributionSetManagement + * @param permissionChecker + * SpPermissionChecker + * @param eventBus + * SessionEventBus + * @param manageDistUIState + * ManageDistUIState + */ + public void init(final I18N i18n, final SpPermissionChecker permissionChecker) { + this.i18n = i18n; + this.permissionChecker = permissionChecker; + createSWMMetadataTable(); + addCustomGeneratedColumns(); + } + + private void createSWMMetadataTable() { + addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); + addStyleName(ValoTheme.TABLE_NO_STRIPES); + setSelectable(false); + setImmediate(true); + setContainerDataSource(getSwModuleMetadataContainer()); + setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); + addSMMetadataTableHeader(); + setSizeFull(); // check if this style is required + addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE); + } + + private IndexedContainer getSwModuleMetadataContainer() { + final IndexedContainer container = new IndexedContainer(); + container.addContainerProperty(METADATA_KEY, String.class, ""); + setColumnExpandRatio(METADATA_KEY, 0.7f); + setColumnAlignment(METADATA_KEY, Align.LEFT); + + if (permissionChecker.hasUpdateDistributionPermission()) { + container.addContainerProperty(VIEW, Label.class, ""); + setColumnExpandRatio(VIEW, 0.2F); + setColumnAlignment(VIEW, Align.RIGHT); + } + return container; + } + + private void addSMMetadataTableHeader() { + setColumnHeader(METADATA_KEY, i18n.get("label.dist.details.key")); + } + + /** + * Populate software module table. + * + * @param distributionSet + */ + public void populateSMMetadata(final SoftwareModule swModule) { + removeAllItems(); + List swMetadtaList = new ArrayList<>(); + for(int i=1;i<=5;i++){ + SoftwareModuleMetadata swMetadata = new SoftwareModuleMetadata(); + swMetadata.setKey("ReleaseNote BBB" +i); + swMetadata.setValue("ReleaseNote BBB sample data"+i); + swMetadtaList.add(swMetadata); + } + if (null != swModule) { + /*final List swMetadataList = swModule.getMetadata();*/ + final List swMetadataList = swMetadtaList; + if (null != swMetadataList && !swMetadataList.isEmpty()) { + swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata)); + } + } + + } + + private void setSWMetadataProperties(final SoftwareModuleMetadata swMetadata){ + final Item item = getContainerDataSource().addItem(swMetadata.getKey()); + item.getItemProperty(METADATA_KEY).setValue(swMetadata.getKey()); + if (permissionChecker.hasUpdateDistributionPermission()) { + item.getItemProperty(VIEW).setValue(HawkbitCommonUtil.getFormatedLabel("View")); + } + + } + + protected void addCustomGeneratedColumns() { + addGeneratedColumn(VIEW, + (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); + } + + private Button customMetadataDetailButton(final String itemId) { + final Item row1 = getItem(itemId); + final String metadataKey = (String) row1.getItemProperty(METADATA_KEY).getValue(); + + final Button viewIcon = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), VIEW, + "View Software Module Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); + viewIcon.setData(metadataKey); + viewIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); + //viewIcon.addClickListener(event -> onClickOfDetailButton(event)); + return viewIcon; + } + + private static String getDetailLinkId(final String name) { + return new StringBuilder(SPUIComponetIdProvider.SW_METADATA_DETAIL_LINK).append('.').append(name) + .toString(); + } +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java index a1d1ffcfe..df6a1a2d1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java @@ -8,8 +8,10 @@ */ package org.eclipse.hawkbit.ui.distributions.dstable; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -17,11 +19,13 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; +import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; +import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -38,13 +42,18 @@ import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.data.Item; +import com.vaadin.data.util.IndexedContainer; import com.vaadin.server.FontAwesome; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Table.Align; +import com.vaadin.ui.themes.ValoTheme; +import com.vaadin.ui.Component; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; +import com.vaadin.ui.Table; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; @@ -64,6 +73,10 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet private static final String SOFT_MODULE = "softwareModule"; private static final String UNASSIGN_SOFT_MODULE = "unassignSoftModule"; + + private static final String DS_METADA_KEY = "Key"; + + private static final String VIEW ="view"; @Autowired private ManageDistUIState manageDistUIState; @@ -81,8 +94,12 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet private transient DistributionSetManagement distributionSetManagement; private SoftwareModuleDetailsTable softwareModuleTable; + + private DistributionSetMetadatadetailslayout dsMetadataTable; private VerticalLayout tagsLayout; + + private VerticalLayout metadataLayout; Map assignedSWModule = new HashMap<>(); @@ -94,6 +111,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(), manageDistUIState); + dsMetadataTable = new DistributionSetMetadatadetailslayout(); + dsMetadataTable.init(getI18n(), getPermissionChecker()); super.init(); } @@ -107,6 +126,14 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet populateDetails(); populateModule(); populateTags(); + populateMetadataDetails(); + } + + protected VerticalLayout createMetadataLayout() { + metadataLayout = getTabLayout(); + metadataLayout.setSizeFull(); + metadataLayout.addComponent(dsMetadataTable); + return metadataLayout; } private void populateModule() { @@ -238,7 +265,11 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet updateDistributionSetDetailsLayout(null, null); } } - + + private void populateMetadataDetails(){ + dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); + } + private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) { final VerticalLayout detailsTabLayout = getDetailsLayout(); detailsTabLayout.removeAllComponents(); @@ -294,6 +325,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null); detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); + detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java index 8774c9e08..512ef2190 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java @@ -12,6 +12,8 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; +import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; +import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleMetadatadetailslayout; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; @@ -44,7 +46,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay @Autowired private ManageDistUIState manageDistUIState; - + @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final SoftwareModuleEvent softwareModuleEvent) { onBaseEntityEvent(softwareModuleEvent); @@ -69,8 +71,11 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null); detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); + detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); } + + @Override protected String getDefaultCaption() { return getI18n().get("upload.swModuleTable.header"); @@ -139,11 +144,16 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay @Override protected void populateDetailsWidget() { populateDetails(); + populateMetadataDetails(); } @Override protected String getDetailsHeaderCaptionId() { return SPUIComponetIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } + + private void populateMetadataDetails(){ + swmMetadataTable.populateSMMetadata(getSelectedBaseEntity()); + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java index 81151b076..fd5a67998 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.management.dstable; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; +import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -48,11 +49,19 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail private DistributionTagToken distributionTagToken; private SoftwareModuleDetailsTable softwareModuleTable; + + private VerticalLayout metadataLayout; + + private DistributionSetMetadatadetailslayout dsMetadataTable; @Override protected void init() { softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null); + + dsMetadataTable = new DistributionSetMetadatadetailslayout(); + dsMetadataTable.init(getI18n(), getPermissionChecker()); + super.init(); } @@ -73,6 +82,14 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null); detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); + detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); + } + + protected VerticalLayout createMetadataLayout() { + metadataLayout = getTabLayout(); + metadataLayout.setSizeFull(); + metadataLayout.addComponent(dsMetadataTable); + return metadataLayout; } @Override @@ -109,11 +126,16 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail protected String getTabSheetId() { return SPUIComponetIdProvider.DISTRIBUTION_DETAILS_TABSHEET; } + + private void populateMetadataDetails(){ + dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); + } @Override protected void populateDetailsWidget() { softwareModuleTable.populateModule(getSelectedBaseEntity()); populateDetails(getSelectedBaseEntity()); + populateMetadataDetails(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java index fa1b6759d..c25926445 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java @@ -681,6 +681,16 @@ public final class SPUIComponetIdProvider { * custom filter - update button id. */ public static final String CUSTOM_FILTER_DETAIL_LINK = "custom.filter.detail.link"; + + /** + * DistributionSet - Metadata button id. + */ + public static final String DS_METADATA_DETAIL_LINK = "distributionset.metadata.detail.link"; + + /** + * Software Module - Metadata button id. + */ + public static final String SW_METADATA_DETAIL_LINK = "softwaremodule.metadata.detail.link"; /** * custom filter - save button id. diff --git a/hawkbit-ui/src/main/resources/messages.properties b/hawkbit-ui/src/main/resources/messages.properties index 4fdbe7d02..7165a18a6 100644 --- a/hawkbit-ui/src/main/resources/messages.properties +++ b/hawkbit-ui/src/main/resources/messages.properties @@ -69,6 +69,7 @@ caption.bulk.upload.targets = Bulk Upload caption.softwares.distdetail.tab = Modules caption.tags.tab = Tags caption.logs.tab = Logs +caption.metadata.tab = Metadata caption.attributes.tab = Attributes caption.types.tab = Types caption.save.window = Action Details @@ -90,6 +91,7 @@ caption.force.action.confirmbox = Confirm Force Active Action caption.filter.delete.confirmbox = Confirm Filter Delete Action # Labels prefix with - label +label.dist.details.key = Key label.dist.details.type = Type : label.dist.details.name = Name : label.dist.details.version = Version : diff --git a/hawkbit-ui/src/main/resources/messages_de.properties b/hawkbit-ui/src/main/resources/messages_de.properties index 3a75ba61f..ba4be0f5b 100644 --- a/hawkbit-ui/src/main/resources/messages_de.properties +++ b/hawkbit-ui/src/main/resources/messages_de.properties @@ -67,6 +67,7 @@ caption.bulk.upload.targets = Bulk Upload caption.softwares.distdetail.tab = Modules caption.tags.tab = Tags caption.logs.tab = Logs +caption.metadata.tab = Metadata caption.attributes.tab = Attributes caption.types.tab = Types caption.save.window = Action Details @@ -89,6 +90,7 @@ caption.filter.custom = Custom Filter caption.filter.delete.confirmbox = Confirm Filter Delete Action # Labels prefix with - label +label.dist.details.key = Key label.dist.details.type = Type : label.dist.details.name = Name : label.dist.details.version = Version : diff --git a/hawkbit-ui/src/main/resources/messages_en.properties b/hawkbit-ui/src/main/resources/messages_en.properties index d87ac238b..07b9fd799 100644 --- a/hawkbit-ui/src/main/resources/messages_en.properties +++ b/hawkbit-ui/src/main/resources/messages_en.properties @@ -69,6 +69,7 @@ caption.bulk.upload.targets = Bulk Upload caption.softwares.distdetail.tab = Modules caption.tags.tab = Tags caption.logs.tab = Logs +caption.metadata.tab = Metadata caption.attributes.tab = Attributes caption.types.tab = Types caption.save.window = Action Details @@ -89,6 +90,7 @@ caption.force.action.confirmbox = Confirm Force Active Action caption.filter.delete.confirmbox = Confirm Filter Delete Action # Labels prefix with - label +label.dist.details.key = Key label.dist.details.type = Type : label.dist.details.name = Name : label.dist.details.version = Version : From 0b1782e94680bc0a246e2fe534321d4c54136402 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 30 May 2016 17:50:03 +0200 Subject: [PATCH 14/44] add default value for optionGroup; optimize UI Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 11 +++----- .../CreateUpdateSoftwareTypeLayout.java | 8 +++++- .../hawkbit/ui/common/CommonDialogWindow.java | 4 +++ .../CreateUpdateDistSetTypeLayout.java | 2 +- .../smtype/DistSMTypeFilterHeader.java | 7 +++-- .../ui/layouts/CreateUpdateTagLayout.java | 25 +++++++++++------- .../ui/layouts/CreateUpdateTypeLayout.java | 26 +++++++++++++++---- .../DistributionAddUpdateWindowLayout.java | 10 +++---- ...eateUpdateDistributionTagLayoutWindow.java | 13 ++++++++++ .../CreateUpdateTargetTagLayoutWindow.java | 13 ++++++++++ .../rollout/AddUpdateRolloutWindowLayout.java | 2 +- 11 files changed, 85 insertions(+), 36 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 70bbd68c8..f766af2d4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -38,7 +38,6 @@ 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; @@ -197,10 +196,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se * The main layout of the window contains mandatory info, textboxes * (controller Id, name & description) and action buttons layout */ - final VerticalLayout mainLayout = new VerticalLayout(); - mainLayout.setSizeUndefined(); - mainLayout.setSpacing(Boolean.TRUE); - mainLayout.addStyleName("lay-color"); + addStyleName("lay-color"); final FormLayout formLayout = new FormLayout(); formLayout.addComponent(typeComboBox); @@ -210,13 +206,12 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se formLayout.addComponent(vendorTextField); formLayout.addComponent(descTextArea); - mainLayout.addComponents(formLayout); - setCompositionRoot(mainLayout); + setCompositionRoot(formLayout); /* add main layout to the window */ window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> closeThisWindow(), null); - window.removeStyleName("actionButtonsMargin"); + window.getButtonsLayout().removeStyleName("actionButtonsMargin"); nameTextField.focus(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index c122688d8..d23329f37 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -61,6 +61,12 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout private Label multiAssign; private OptionGroup assignOptiongroup; + @Override + protected void addListeners() { + super.addListeners(); + optiongroup.addValueChangeListener(event -> createOptionValueChanged(event)); + } + @Override protected void createRequiredComponents() { @@ -119,7 +125,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout super.createOptionValueChanged(event); - if ("Update Type".equals(event.getProperty().getValue())) { + if (updateTypeStr.equals(event.getProperty().getValue())) { assignOptiongroup.setEnabled(false); } else { assignOptiongroup.setEnabled(true); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index e15fe2ea4..b94869521 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -131,4 +131,8 @@ public class CommonDialogWindow extends Window { cancelButton.setEnabled(enabled); } + public HorizontalLayout getButtonsLayout() { + return buttonsLayout; + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index ceb3f979c..266339050 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -486,7 +486,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout super.createOptionValueChanged(event); - if ("Update Type".equals(event.getProperty().getValue())) { + if (updateTypeStr.equals(event.getProperty().getValue())) { selectedTable.getContainerDataSource().removeAllItems(); getSourceTableData(); distTypeSelectLayout.setEnabled(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java index e328b45a4..9f757a7cb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java @@ -66,10 +66,9 @@ public class DistSMTypeFilterHeader extends AbstractFilterHeader { @Override protected void settingsIconClicked(final ClickEvent event) { - final Window addUpdateWindow = createUpdateSWTypeLayout.getWindow(); - UI.getCurrent().addWindow(addUpdateWindow); - addUpdateWindow.setVisible(Boolean.TRUE); - + final Window window = createUpdateSWTypeLayout.getWindow(); + UI.getCurrent().addWindow(window); + window.setVisible(Boolean.TRUE); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java index 60d76ee14..efe629eb7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java @@ -221,11 +221,10 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C tagName.focus(); } - private void addListeners() { + protected void addListeners() { colorPickerLayout.getColorSelect().addColorChangeListener(this); colorPickerLayout.getSelPreview().addColorChangeListener(this); tagColorPreviewBtn.addClickListener(event -> previewButtonClicked()); - optiongroup.addValueChangeListener(event -> optionValueChanged(event)); tagNameComboBox.addValueChangeListener(event -> tagNameChosen(event)); slidersValueChangeListeners(); } @@ -302,9 +301,9 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C * @param event * ValueChangeEvent */ - private void optionValueChanged(final ValueChangeEvent event) { + protected void optionValueChanged(final ValueChangeEvent event) { - if ("Update Tag".equals(event.getProperty().getValue())) { + if (updateTagStr.equals(event.getProperty().getValue())) { tagName.clear(); tagDesc.clear(); tagName.setEnabled(false); @@ -344,8 +343,6 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C comboLayout.removeComponent(tagNameComboBox); mainLayout.removeComponent(colorPickerLayout); - optiongroup.select(createTagStr); - // Default green color colorPickerLayout.setSelectedColor(colorPickerLayout.getDefaultColor()); colorPickerLayout.getSelPreview().setColor(colorPickerLayout.getSelectedColor()); @@ -456,13 +453,21 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C if (hasCreatePermission) { optiongroup.addItem(createTagStr); - optiongroup.select(createTagStr); } if (hasUpdatePermission) { optiongroup.addItem(updateTagStr); - if (!hasCreatePermission) { - optiongroup.select(updateTagStr); - } + } + + setOptionGroupDefaultValue(hasCreatePermission, hasUpdatePermission); + } + + protected void setOptionGroupDefaultValue(final boolean hasCreatePermission, final boolean hasUpdatePermission) { + + if (hasCreatePermission) { + optiongroup.select(createTagStr); + } + if (hasUpdatePermission && !hasCreatePermission) { + optiongroup.select(updateTagStr); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java index f007b64ce..f73718122 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -35,6 +35,12 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name"; private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc"; + @Override + protected void addListeners() { + super.addListeners(); + optiongroup.addValueChangeListener(event -> createOptionValueChanged(event)); + } + @Override protected void createRequiredComponents() { @@ -107,6 +113,8 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { super.reset(); typeKey.clear(); restoreComponentStyles(); + setOptionGroupDefaultValue(permChecker.hasCreateDistributionPermission(), + permChecker.hasUpdateDistributionPermission()); } /** @@ -117,7 +125,7 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { */ protected void createOptionValueChanged(final ValueChangeEvent event) { - if ("Update Type".equals(event.getProperty().getValue())) { + if (updateTypeStr.equals(event.getProperty().getValue())) { tagName.clear(); tagDesc.clear(); typeKey.clear(); @@ -186,13 +194,21 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { if (hasCreatePermission) { optiongroup.addItem(createTypeStr); - optiongroup.select(createTypeStr); } if (hasUpdatePermission) { optiongroup.addItem(updateTypeStr); - if (!hasCreatePermission) { - optiongroup.select(updateTypeStr); - } + } + setOptionGroupDefaultValue(hasCreatePermission, hasUpdatePermission); + } + + @Override + protected void setOptionGroupDefaultValue(final boolean hasCreatePermission, final boolean hasUpdatePermission) { + + if (hasCreatePermission) { + optiongroup.select(createTypeStr); + } + if (hasUpdatePermission && !hasCreatePermission) { + optiongroup.select(updateTypeStr); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index 122411376..2ce9f84f5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -53,12 +53,12 @@ import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Component; +import com.vaadin.ui.CustomComponent; import com.vaadin.ui.FormLayout; import com.vaadin.ui.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.themes.ValoTheme; /** @@ -67,7 +67,7 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent @ViewScope -public class DistributionAddUpdateWindowLayout extends VerticalLayout { +public class DistributionAddUpdateWindowLayout extends CustomComponent { private static final long serialVersionUID = -5602182034230568435L; @@ -132,8 +132,6 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { * The main layout of the window contains mandatory info, textboxes * (controller Id, name & description) and action buttons layout */ - setSpacing(Boolean.TRUE); - setMargin(Boolean.FALSE); addStyleName("lay-color"); setSizeUndefined(); @@ -145,7 +143,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { formLayout.addComponent(descTextArea); formLayout.addComponent(reqMigStepCheckbox); - addComponents(formLayout); + setCompositionRoot(formLayout); distNameTextField.focus(); } @@ -518,7 +516,7 @@ public class DistributionAddUpdateWindowLayout extends VerticalLayout { addDistributionWindow = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(), null); - addDistributionWindow.removeStyleName("actionButtonsMargin"); + addDistributionWindow.getButtonsLayout().removeStyleName("actionButtonsMargin"); return addDistributionWindow; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index f3abbd5bb..1c6372033 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -70,6 +70,12 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo distTagNameList.forEach(value -> tagNameComboBox.addItem(value.getName())); } + @Override + protected void addListeners() { + super.addListeners(); + optiongroup.addValueChangeListener(event -> optionValueChanged(event)); + } + /** * Update DistributionTag. */ @@ -164,4 +170,11 @@ public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayo createOptionGroup(permChecker.hasCreateDistributionPermission(), permChecker.hasUpdateDistributionPermission()); } + @Override + protected void reset() { + + super.reset(); + setOptionGroupDefaultValue(permChecker.hasCreateDistributionPermission(), + permChecker.hasUpdateDistributionPermission()); + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java index 4bffe172f..f3f78377a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java @@ -57,6 +57,12 @@ public class CreateUpdateTargetTagLayoutWindow extends CreateUpdateTagLayout { populateTagNameCombo(); } + @Override + protected void addListeners() { + super.addListeners(); + optiongroup.addValueChangeListener(event -> optionValueChanged(event)); + } + /** * Populate target name combo. */ @@ -132,4 +138,11 @@ public class CreateUpdateTargetTagLayoutWindow extends CreateUpdateTagLayout { createOptionGroup(permChecker.hasCreateTargetPermission(), permChecker.hasUpdateTargetPermission()); } + @Override + protected void reset() { + + super.reset(); + setOptionGroupDefaultValue(permChecker.hasCreateTargetPermission(), permChecker.hasUpdateTargetPermission()); + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 9920fab74..0f5b00f1a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -196,7 +196,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { setRows(9); setColumns(3); - addComponent(mandatoryLabel, 0, 0, 2, 0); + addComponent(mandatoryLabel, 1, 0, 2, 0); addComponent(getLabel("textfield.name"), 0, 1); addComponent(rolloutName, 1, 1); addComponent(getLabel("prompt.distribution.set"), 0, 2); From b4e1839b3dd662cf25697da74c7537e9684a24f3 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 30 May 2016 18:08:52 +0200 Subject: [PATCH 15/44] add license text Signed-off-by: Melanie Retter --- .../org/eclipse/hawkbit/ui/common/CommonDialogWindow.java | 8 ++++++++ .../hawkbit/ui/layouts/CreateUpdateTypeLayout.java | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index b94869521..a8bad0a08 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -1,3 +1,11 @@ +/** + * 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.common; import org.apache.commons.lang3.StringUtils; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java index f73718122..ad2758a5f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -1,3 +1,11 @@ +/** + * 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.layouts; import org.eclipse.hawkbit.repository.model.DistributionSetType; From 2dfda701b53cc7c6efca6bfd649e6d2d0a49ae8c Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 30 May 2016 18:08:52 +0200 Subject: [PATCH 16/44] add license text Signed-off-by: Melanie Retter --- .../ui/colorPicker/ColorPickerConstants.java | 8 +++ .../ui/colorPicker/ColorPickerHelper.java | 8 +++ .../ui/colorPicker/ColorPickerLayout.java | 8 +++ .../hawkbit/ui/common/CommonDialogWindow.java | 8 +++ .../DistributionSetMetadatadetailslayout.java | 64 +++++++++++-------- .../SoftwareModuleMetadatadetailslayout.java | 61 ++++++++++-------- .../ui/layouts/CreateUpdateTypeLayout.java | 8 +++ 7 files changed, 109 insertions(+), 56 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java index 2c333a9f2..ddb4eb70c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java @@ -1,3 +1,11 @@ +/** + * 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.colorPicker; import com.vaadin.shared.ui.colorpicker.Color; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java index 90b39e5ca..815bb97b2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java @@ -1,3 +1,11 @@ +/** + * 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.colorPicker; import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java index 51c09055a..dba5ac8df 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java @@ -1,3 +1,11 @@ +/** + * 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.colorPicker; import java.util.HashSet; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index b94869521..a8bad0a08 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -1,3 +1,11 @@ +/** + * 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.common; import org.apache.commons.lang3.StringUtils; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java index f96349180..9f01c975f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java @@ -1,9 +1,17 @@ +/** + * 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.common.detailslayout; import java.util.ArrayList; import java.util.List; -import org.eclipse.hawkbit.repository.SpPermissionChecker; +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -14,7 +22,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.vaadin.spring.events.EventBus.SessionEventBus; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; @@ -23,21 +30,21 @@ import com.vaadin.ui.Label; import com.vaadin.ui.Table; import com.vaadin.ui.themes.ValoTheme; -public class DistributionSetMetadatadetailslayout extends Table{ - +public class DistributionSetMetadatadetailslayout extends Table { + private static final long serialVersionUID = 2913758299611837718L; private static final Logger LOG = LoggerFactory.getLogger(DistributionSetMetadatadetailslayout.class); private static final String METADATA_KEY = "Key"; - - private static final String VIEW ="view"; + + private static final String VIEW = "view"; private SpPermissionChecker permissionChecker; private I18N i18n; - /** + /** * Initialize software module table- to be displayed in details layout. * * @param i18n @@ -78,7 +85,7 @@ public class DistributionSetMetadatadetailslayout extends Table{ container.addContainerProperty(METADATA_KEY, String.class, ""); setColumnExpandRatio(METADATA_KEY, 0.7f); setColumnAlignment(METADATA_KEY, Align.LEFT); - + if (permissionChecker.hasUpdateDistributionPermission()) { container.addContainerProperty(VIEW, Label.class, ""); setColumnExpandRatio(VIEW, 0.2F); @@ -98,35 +105,37 @@ public class DistributionSetMetadatadetailslayout extends Table{ */ public void populateDSMetadata(final DistributionSet distributionSet) { removeAllItems(); - List dsMetadtaList = new ArrayList<>(); - for(int i=1;i<=5;i++){ - DistributionSetMetadata dsMetadata = new DistributionSetMetadata(); - dsMetadata.setKey("ReleaseNote AAA" +i); - dsMetadata.setValue("ReleaseNote AAA sample data"+i); + final List dsMetadtaList = new ArrayList<>(); + for (int i = 1; i <= 5; i++) { + final DistributionSetMetadata dsMetadata = new DistributionSetMetadata(); + dsMetadata.setKey("ReleaseNote AAA" + i); + dsMetadata.setValue("ReleaseNote AAA sample data" + i); dsMetadtaList.add(dsMetadata); - } - if (null != distributionSet) { - /* final List dsMetadataList = distributionSet.getMetadata();*/ + } + if (null != distributionSet) { + /* + * final List dsMetadataList = + * distributionSet.getMetadata(); + */ final List dsMetadataList = dsMetadtaList; if (null != dsMetadataList && !dsMetadataList.isEmpty()) { dsMetadataList.forEach(dsMetadata -> setDSMetadataProperties(dsMetadata)); } - } + } } - - private void setDSMetadataProperties(final DistributionSetMetadata dsMetadata){ + + private void setDSMetadataProperties(final DistributionSetMetadata dsMetadata) { final Item item = getContainerDataSource().addItem(dsMetadata.getKey()); item.getItemProperty(METADATA_KEY).setValue(dsMetadata.getKey()); if (permissionChecker.hasUpdateDistributionPermission()) { item.getItemProperty(VIEW).setValue(HawkbitCommonUtil.getFormatedLabel("View")); } - + } - - protected void addCustomGeneratedColumns() { - addGeneratedColumn(VIEW, - (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); + + protected void addCustomGeneratedColumns() { + addGeneratedColumn(VIEW, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); } private Button customMetadataDetailButton(final String itemId) { @@ -137,12 +146,11 @@ public class DistributionSetMetadatadetailslayout extends Table{ "View DistributionSet Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); viewIcon.setData(metadataKey); viewIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); - //viewIcon.addClickListener(event -> onClickOfDetailButton(event)); + // viewIcon.addClickListener(event -> onClickOfDetailButton(event)); return viewIcon; } - + private static String getDetailLinkId(final String name) { - return new StringBuilder(SPUIComponetIdProvider.DS_METADATA_DETAIL_LINK).append('.').append(name) - .toString(); + return new StringBuilder(SPUIComponetIdProvider.DS_METADATA_DETAIL_LINK).append('.').append(name).toString(); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java index 90d0f6763..83e1df6cd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java @@ -1,11 +1,17 @@ +/** + * 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.common.detailslayout; import java.util.ArrayList; import java.util.List; import org.eclipse.hawkbit.repository.SpPermissionChecker; -import org.eclipse.hawkbit.repository.model.DistributionSet; -import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -22,8 +28,6 @@ import com.vaadin.data.util.IndexedContainer; import com.vaadin.ui.Button; import com.vaadin.ui.Label; import com.vaadin.ui.Table; -import com.vaadin.ui.Table.Align; -import com.vaadin.ui.Table.ColumnHeaderMode; import com.vaadin.ui.themes.ValoTheme; public class SoftwareModuleMetadatadetailslayout extends Table { @@ -33,14 +37,14 @@ public class SoftwareModuleMetadatadetailslayout extends Table { private static final Logger LOG = LoggerFactory.getLogger(SoftwareModuleMetadatadetailslayout.class); private static final String METADATA_KEY = "Key"; - - private static final String VIEW ="view"; + + private static final String VIEW = "view"; private SpPermissionChecker permissionChecker; private I18N i18n; - /** + /** * Initialize software module table- to be displayed in details layout. * * @param i18n @@ -81,7 +85,7 @@ public class SoftwareModuleMetadatadetailslayout extends Table { container.addContainerProperty(METADATA_KEY, String.class, ""); setColumnExpandRatio(METADATA_KEY, 0.7f); setColumnAlignment(METADATA_KEY, Align.LEFT); - + if (permissionChecker.hasUpdateDistributionPermission()) { container.addContainerProperty(VIEW, Label.class, ""); setColumnExpandRatio(VIEW, 0.2F); @@ -101,35 +105,37 @@ public class SoftwareModuleMetadatadetailslayout extends Table { */ public void populateSMMetadata(final SoftwareModule swModule) { removeAllItems(); - List swMetadtaList = new ArrayList<>(); - for(int i=1;i<=5;i++){ - SoftwareModuleMetadata swMetadata = new SoftwareModuleMetadata(); - swMetadata.setKey("ReleaseNote BBB" +i); - swMetadata.setValue("ReleaseNote BBB sample data"+i); + final List swMetadtaList = new ArrayList<>(); + for (int i = 1; i <= 5; i++) { + final SoftwareModuleMetadata swMetadata = new SoftwareModuleMetadata(); + swMetadata.setKey("ReleaseNote BBB" + i); + swMetadata.setValue("ReleaseNote BBB sample data" + i); swMetadtaList.add(swMetadata); - } - if (null != swModule) { - /*final List swMetadataList = swModule.getMetadata();*/ + } + if (null != swModule) { + /* + * final List swMetadataList = + * swModule.getMetadata(); + */ final List swMetadataList = swMetadtaList; if (null != swMetadataList && !swMetadataList.isEmpty()) { swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata)); } - } + } } - - private void setSWMetadataProperties(final SoftwareModuleMetadata swMetadata){ + + private void setSWMetadataProperties(final SoftwareModuleMetadata swMetadata) { final Item item = getContainerDataSource().addItem(swMetadata.getKey()); item.getItemProperty(METADATA_KEY).setValue(swMetadata.getKey()); if (permissionChecker.hasUpdateDistributionPermission()) { item.getItemProperty(VIEW).setValue(HawkbitCommonUtil.getFormatedLabel("View")); } - + } - - protected void addCustomGeneratedColumns() { - addGeneratedColumn(VIEW, - (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); + + protected void addCustomGeneratedColumns() { + addGeneratedColumn(VIEW, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); } private Button customMetadataDetailButton(final String itemId) { @@ -140,12 +146,11 @@ public class SoftwareModuleMetadatadetailslayout extends Table { "View Software Module Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); viewIcon.setData(metadataKey); viewIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); - //viewIcon.addClickListener(event -> onClickOfDetailButton(event)); + // viewIcon.addClickListener(event -> onClickOfDetailButton(event)); return viewIcon; } - + private static String getDetailLinkId(final String name) { - return new StringBuilder(SPUIComponetIdProvider.SW_METADATA_DETAIL_LINK).append('.').append(name) - .toString(); + return new StringBuilder(SPUIComponetIdProvider.SW_METADATA_DETAIL_LINK).append('.').append(name).toString(); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java index f73718122..ad2758a5f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -1,3 +1,11 @@ +/** + * 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.layouts; import org.eclipse.hawkbit.repository.model.DistributionSetType; From cf64d2ffdf3ab5e09d7ca11524fa773c7d924f42 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Tue, 31 May 2016 10:53:07 +0200 Subject: [PATCH 17/44] css style change Signed-off-by: Melanie Retter --- .../resources/VAADIN/themes/hawkbit/customstyles/common.scss | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss index ba02cfbda..ecacdcd67 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss @@ -289,10 +289,6 @@ font-weight:normal; } - .hawkbit [class*="margin-bottom"] > tbody > [class*="lastrow"] > td { - padding-bottom: 12px !important; - } - .form-lastrow { padding-bottom: 12px !important; } From f41e55b92d994effc97c9798204a0a0a5e51a068 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Tue, 31 May 2016 16:29:52 +0200 Subject: [PATCH 18/44] Added IDs for save and cancel button Signed-off-by: Melanie Retter --- .../hawkbit/ui/common/CommonDialogWindow.java | 8 ++++---- .../hawkbit/ui/utils/SPUIComponetIdProvider.java | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index a8bad0a08..8dd6dc18a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -92,8 +92,8 @@ public class CommonDialogWindow extends Window { buttonsLayout.setSizeFull(); buttonsLayout.setSpacing(true); - saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_SAVE, "save", "", "", - true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); + saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SAVE_BUTTON, "save", "", "", true, + FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); saveButton.setSizeUndefined(); if (null != saveButtonClickListener) { saveButton.addClickListener(saveButtonClickListener); @@ -104,8 +104,8 @@ public class CommonDialogWindow extends Window { buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); buttonsLayout.setExpandRatio(saveButton, 1.0F); - cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SYSTEM_CONFIGURATION_CANCEL, "cancel", "", - "", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); + cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.CANCEL_BUTTON, "cancel", "", "", true, + FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); cancelButton.setSizeUndefined(); if (null != cancelButtonClickListener) { cancelButton.addClickListener(cancelButtonClickListener); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java index c25926445..ca1a4fc0e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java @@ -501,6 +501,16 @@ public final class SPUIComponetIdProvider { */ public static final String SYSTEM_CONFIGURATION_SAVE = "system.configuration.save"; + /** + * ID for save button in pop-up-windows instance of commonDialogWindow + */ + public static final String SAVE_BUTTON = "common.dialog.window.save"; + + /** + * ID for cancel button in pop-up-windows instance of commonDialogWindow + */ + public static final String CANCEL_BUTTON = "common.dialog.window.cancel"; + /** * Cancel button is. */ @@ -681,12 +691,12 @@ public final class SPUIComponetIdProvider { * custom filter - update button id. */ public static final String CUSTOM_FILTER_DETAIL_LINK = "custom.filter.detail.link"; - + /** * DistributionSet - Metadata button id. */ public static final String DS_METADATA_DETAIL_LINK = "distributionset.metadata.detail.link"; - + /** * Software Module - Metadata button id. */ From 3b045122247b635c3578fe7327e7cb466f9e98b6 Mon Sep 17 00:00:00 2001 From: Asharani Date: Wed, 1 Jun 2016 10:46:38 +0530 Subject: [PATCH 19/44] Reverting commit on behalf of Venu Signed-off-by: Asharani --- .../smtable/SoftwareModuleDetails.java | 12 ++----- .../AbstractTableDetailsLayout.java | 27 ++++----------- .../dstable/DistributionSetDetails.java | 34 +------------------ .../smtable/SwModuleDetails.java | 12 +------ .../dstable/DistributionDetails.java | 22 ------------ .../ui/utils/SPUIComponetIdProvider.java | 10 ------ .../src/main/resources/messages.properties | 2 -- .../src/main/resources/messages_de.properties | 2 -- .../src/main/resources/messages_en.properties | 2 -- 9 files changed, 10 insertions(+), 113 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java index f76c0692c..9d535f7f5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java @@ -12,7 +12,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; -import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleMetadatadetailslayout; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; @@ -45,7 +44,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta @Autowired private ArtifactUploadState artifactUploadState; - + @Override protected String getEditButtonId() { return SPUIComponetIdProvider.UPLOAD_SW_MODULE_EDIT_BUTTON; @@ -56,9 +55,8 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null); detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); - detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); } - + @Override protected void onEdit(final ClickEvent event) { final Window addSoftwareModule = softwareModuleAddUpdateWindow @@ -83,8 +81,6 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta updateSoftwareModuleDetailsLayout(HawkbitCommonUtil.SP_STRING_EMPTY, HawkbitCommonUtil.SP_STRING_EMPTY, maxAssign); } - - populateMetadataDetails(); } private void updateSoftwareModuleDetailsLayout(final String type, final String vendor, final String maxAssign) { @@ -145,8 +141,4 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta protected String getDetailsHeaderCaptionId() { return SPUIComponetIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } - - private void populateMetadataDetails(){ - swmMetadataTable.populateSMMetadata(getSelectedBaseEntity()); - } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java index d7d9f131f..33fcf5af9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java @@ -72,12 +72,8 @@ public abstract class AbstractTableDetailsLayout extends private VerticalLayout logLayout; private VerticalLayout attributesLayout; - - private VerticalLayout metadataLayout; - - protected SoftwareModuleMetadatadetailslayout swmMetadataTable; - - /** + + /** * Initialize components. */ @PostConstruct @@ -149,10 +145,8 @@ public abstract class AbstractTableDetailsLayout extends detailsTab.setHeight(90, Unit.PERCENTAGE); detailsTab.addStyleName(SPUIStyleDefinitions.DETAILS_LAYOUT_STYLE); detailsTab.setId(getTabSheetId()); - swmMetadataTable = new SoftwareModuleMetadatadetailslayout(); - swmMetadataTable.init(getI18n(), getPermissionChecker()); addTabs(detailsTab); - } + } private void buildLayout() { final HorizontalLayout nameEditLayout = new HorizontalLayout(); @@ -215,9 +209,8 @@ public abstract class AbstractTableDetailsLayout extends populateLog(); populateDescription(); populateDetailsWidget(); - } - + protected void populateLog() { logLayout.removeAllComponents(); @@ -288,15 +281,7 @@ public abstract class AbstractTableDetailsLayout extends descriptionLayout = getTabLayout(); return descriptionLayout; } - - protected VerticalLayout createMetadataLayout() { - metadataLayout = getTabLayout(); - metadataLayout.setSizeFull(); - metadataLayout.addComponent(swmMetadataTable); - return metadataLayout; - } - - + /** * Default caption of header to be displayed when no data row selected in * table. @@ -332,7 +317,7 @@ public abstract class AbstractTableDetailsLayout extends public VerticalLayout getDetailsLayout() { return detailsLayout; } - + private void populateDescription() { if (selectedBaseEntity != null) { updateDescriptionLayout(i18n.get("label.description"), selectedBaseEntity.getDescription()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java index df6a1a2d1..a1d1ffcfe 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java @@ -8,10 +8,8 @@ */ package org.eclipse.hawkbit.ui.distributions.dstable; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -19,13 +17,11 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; -import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -42,18 +38,13 @@ import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.data.Item; -import com.vaadin.data.util.IndexedContainer; import com.vaadin.server.FontAwesome; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; -import com.vaadin.ui.Table.Align; -import com.vaadin.ui.themes.ValoTheme; -import com.vaadin.ui.Component; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; -import com.vaadin.ui.Table; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; @@ -73,10 +64,6 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet private static final String SOFT_MODULE = "softwareModule"; private static final String UNASSIGN_SOFT_MODULE = "unassignSoftModule"; - - private static final String DS_METADA_KEY = "Key"; - - private static final String VIEW ="view"; @Autowired private ManageDistUIState manageDistUIState; @@ -94,12 +81,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet private transient DistributionSetManagement distributionSetManagement; private SoftwareModuleDetailsTable softwareModuleTable; - - private DistributionSetMetadatadetailslayout dsMetadataTable; private VerticalLayout tagsLayout; - - private VerticalLayout metadataLayout; Map assignedSWModule = new HashMap<>(); @@ -111,8 +94,6 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(), manageDistUIState); - dsMetadataTable = new DistributionSetMetadatadetailslayout(); - dsMetadataTable.init(getI18n(), getPermissionChecker()); super.init(); } @@ -126,14 +107,6 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet populateDetails(); populateModule(); populateTags(); - populateMetadataDetails(); - } - - protected VerticalLayout createMetadataLayout() { - metadataLayout = getTabLayout(); - metadataLayout.setSizeFull(); - metadataLayout.addComponent(dsMetadataTable); - return metadataLayout; } private void populateModule() { @@ -265,11 +238,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet updateDistributionSetDetailsLayout(null, null); } } - - private void populateMetadataDetails(){ - dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); - } - + private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) { final VerticalLayout detailsTabLayout = getDetailsLayout(); detailsTabLayout.removeAllComponents(); @@ -325,7 +294,6 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null); detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); - detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java index 512ef2190..8774c9e08 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java @@ -12,8 +12,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; -import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; -import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleMetadatadetailslayout; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; @@ -46,7 +44,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay @Autowired private ManageDistUIState manageDistUIState; - + @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final SoftwareModuleEvent softwareModuleEvent) { onBaseEntityEvent(softwareModuleEvent); @@ -71,11 +69,8 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null); detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); - detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); } - - @Override protected String getDefaultCaption() { return getI18n().get("upload.swModuleTable.header"); @@ -144,16 +139,11 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay @Override protected void populateDetailsWidget() { populateDetails(); - populateMetadataDetails(); } @Override protected String getDetailsHeaderCaptionId() { return SPUIComponetIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } - - private void populateMetadataDetails(){ - swmMetadataTable.populateSMMetadata(getSelectedBaseEntity()); - } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java index fd5a67998..81151b076 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.management.dstable; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout; -import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout; import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -49,19 +48,11 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail private DistributionTagToken distributionTagToken; private SoftwareModuleDetailsTable softwareModuleTable; - - private VerticalLayout metadataLayout; - - private DistributionSetMetadatadetailslayout dsMetadataTable; @Override protected void init() { softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null); - - dsMetadataTable = new DistributionSetMetadatadetailslayout(); - dsMetadataTable.init(getI18n(), getPermissionChecker()); - super.init(); } @@ -82,14 +73,6 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null); detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); - detailsTab.addTab(createMetadataLayout(), getI18n().get("caption.metadata.tab"), null); - } - - protected VerticalLayout createMetadataLayout() { - metadataLayout = getTabLayout(); - metadataLayout.setSizeFull(); - metadataLayout.addComponent(dsMetadataTable); - return metadataLayout; } @Override @@ -126,16 +109,11 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail protected String getTabSheetId() { return SPUIComponetIdProvider.DISTRIBUTION_DETAILS_TABSHEET; } - - private void populateMetadataDetails(){ - dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); - } @Override protected void populateDetailsWidget() { softwareModuleTable.populateModule(getSelectedBaseEntity()); populateDetails(getSelectedBaseEntity()); - populateMetadataDetails(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java index c25926445..fa1b6759d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java @@ -681,16 +681,6 @@ public final class SPUIComponetIdProvider { * custom filter - update button id. */ public static final String CUSTOM_FILTER_DETAIL_LINK = "custom.filter.detail.link"; - - /** - * DistributionSet - Metadata button id. - */ - public static final String DS_METADATA_DETAIL_LINK = "distributionset.metadata.detail.link"; - - /** - * Software Module - Metadata button id. - */ - public static final String SW_METADATA_DETAIL_LINK = "softwaremodule.metadata.detail.link"; /** * custom filter - save button id. diff --git a/hawkbit-ui/src/main/resources/messages.properties b/hawkbit-ui/src/main/resources/messages.properties index 7165a18a6..4fdbe7d02 100644 --- a/hawkbit-ui/src/main/resources/messages.properties +++ b/hawkbit-ui/src/main/resources/messages.properties @@ -69,7 +69,6 @@ caption.bulk.upload.targets = Bulk Upload caption.softwares.distdetail.tab = Modules caption.tags.tab = Tags caption.logs.tab = Logs -caption.metadata.tab = Metadata caption.attributes.tab = Attributes caption.types.tab = Types caption.save.window = Action Details @@ -91,7 +90,6 @@ caption.force.action.confirmbox = Confirm Force Active Action caption.filter.delete.confirmbox = Confirm Filter Delete Action # Labels prefix with - label -label.dist.details.key = Key label.dist.details.type = Type : label.dist.details.name = Name : label.dist.details.version = Version : diff --git a/hawkbit-ui/src/main/resources/messages_de.properties b/hawkbit-ui/src/main/resources/messages_de.properties index ba4be0f5b..3a75ba61f 100644 --- a/hawkbit-ui/src/main/resources/messages_de.properties +++ b/hawkbit-ui/src/main/resources/messages_de.properties @@ -67,7 +67,6 @@ caption.bulk.upload.targets = Bulk Upload caption.softwares.distdetail.tab = Modules caption.tags.tab = Tags caption.logs.tab = Logs -caption.metadata.tab = Metadata caption.attributes.tab = Attributes caption.types.tab = Types caption.save.window = Action Details @@ -90,7 +89,6 @@ caption.filter.custom = Custom Filter caption.filter.delete.confirmbox = Confirm Filter Delete Action # Labels prefix with - label -label.dist.details.key = Key label.dist.details.type = Type : label.dist.details.name = Name : label.dist.details.version = Version : diff --git a/hawkbit-ui/src/main/resources/messages_en.properties b/hawkbit-ui/src/main/resources/messages_en.properties index 07b9fd799..d87ac238b 100644 --- a/hawkbit-ui/src/main/resources/messages_en.properties +++ b/hawkbit-ui/src/main/resources/messages_en.properties @@ -69,7 +69,6 @@ caption.bulk.upload.targets = Bulk Upload caption.softwares.distdetail.tab = Modules caption.tags.tab = Tags caption.logs.tab = Logs -caption.metadata.tab = Metadata caption.attributes.tab = Attributes caption.types.tab = Types caption.save.window = Action Details @@ -90,7 +89,6 @@ caption.force.action.confirmbox = Confirm Force Active Action caption.filter.delete.confirmbox = Confirm Filter Delete Action # Labels prefix with - label -label.dist.details.key = Key label.dist.details.type = Type : label.dist.details.name = Name : label.dist.details.version = Version : From f26d240f3878c0f1816eee16c19d2637cad167f0 Mon Sep 17 00:00:00 2001 From: Asharani Date: Wed, 1 Jun 2016 11:17:50 +0530 Subject: [PATCH 20/44] Reverting commit d3f7b9d - on behalf of venu Signed-off-by: Asharani --- .../DistributionSetMetadatadetailslayout.java | 156 ------------------ .../SoftwareModuleMetadatadetailslayout.java | 156 ------------------ 2 files changed, 312 deletions(-) delete mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java delete mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java deleted file mode 100644 index 9f01c975f..000000000 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java +++ /dev/null @@ -1,156 +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.common.detailslayout; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; -import org.eclipse.hawkbit.repository.model.DistributionSet; -import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; -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.SPUIStyleDefinitions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.vaadin.data.Item; -import com.vaadin.data.util.IndexedContainer; -import com.vaadin.ui.Button; -import com.vaadin.ui.Label; -import com.vaadin.ui.Table; -import com.vaadin.ui.themes.ValoTheme; - -public class DistributionSetMetadatadetailslayout extends Table { - - private static final long serialVersionUID = 2913758299611837718L; - - private static final Logger LOG = LoggerFactory.getLogger(DistributionSetMetadatadetailslayout.class); - - private static final String METADATA_KEY = "Key"; - - private static final String VIEW = "view"; - - private SpPermissionChecker permissionChecker; - - private I18N i18n; - - /** - * Initialize software module table- to be displayed in details layout. - * - * @param i18n - * I18N - * @param isUnassignSoftModAllowed - * boolean flag to check for unassign functionality allowed for - * the view. - * @param distributionSetManagement - * DistributionSetManagement - * @param permissionChecker - * SpPermissionChecker - * @param eventBus - * SessionEventBus - * @param manageDistUIState - * ManageDistUIState - */ - public void init(final I18N i18n, final SpPermissionChecker permissionChecker) { - this.i18n = i18n; - this.permissionChecker = permissionChecker; - createDSMetadataTable(); - addCustomGeneratedColumns(); - } - - private void createDSMetadataTable() { - addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); - addStyleName(ValoTheme.TABLE_NO_STRIPES); - setSelectable(false); - setImmediate(true); - setContainerDataSource(getSwModuleContainer()); - setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); - addDSMetadataTableHeader(); - setSizeFull(); // check if this style is required - addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE); - } - - private IndexedContainer getSwModuleContainer() { - final IndexedContainer container = new IndexedContainer(); - container.addContainerProperty(METADATA_KEY, String.class, ""); - setColumnExpandRatio(METADATA_KEY, 0.7f); - setColumnAlignment(METADATA_KEY, Align.LEFT); - - if (permissionChecker.hasUpdateDistributionPermission()) { - container.addContainerProperty(VIEW, Label.class, ""); - setColumnExpandRatio(VIEW, 0.2F); - setColumnAlignment(VIEW, Align.RIGHT); - } - return container; - } - - private void addDSMetadataTableHeader() { - setColumnHeader(METADATA_KEY, i18n.get("label.dist.details.key")); - } - - /** - * Populate software module table. - * - * @param distributionSet - */ - public void populateDSMetadata(final DistributionSet distributionSet) { - removeAllItems(); - final List dsMetadtaList = new ArrayList<>(); - for (int i = 1; i <= 5; i++) { - final DistributionSetMetadata dsMetadata = new DistributionSetMetadata(); - dsMetadata.setKey("ReleaseNote AAA" + i); - dsMetadata.setValue("ReleaseNote AAA sample data" + i); - dsMetadtaList.add(dsMetadata); - } - if (null != distributionSet) { - /* - * final List dsMetadataList = - * distributionSet.getMetadata(); - */ - final List dsMetadataList = dsMetadtaList; - if (null != dsMetadataList && !dsMetadataList.isEmpty()) { - dsMetadataList.forEach(dsMetadata -> setDSMetadataProperties(dsMetadata)); - } - } - - } - - private void setDSMetadataProperties(final DistributionSetMetadata dsMetadata) { - final Item item = getContainerDataSource().addItem(dsMetadata.getKey()); - item.getItemProperty(METADATA_KEY).setValue(dsMetadata.getKey()); - if (permissionChecker.hasUpdateDistributionPermission()) { - item.getItemProperty(VIEW).setValue(HawkbitCommonUtil.getFormatedLabel("View")); - } - - } - - protected void addCustomGeneratedColumns() { - addGeneratedColumn(VIEW, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); - } - - private Button customMetadataDetailButton(final String itemId) { - final Item row1 = getItem(itemId); - final String metadataKey = (String) row1.getItemProperty(METADATA_KEY).getValue(); - - final Button viewIcon = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), VIEW, - "View DistributionSet Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); - viewIcon.setData(metadataKey); - viewIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); - // viewIcon.addClickListener(event -> onClickOfDetailButton(event)); - return viewIcon; - } - - private static String getDetailLinkId(final String name) { - return new StringBuilder(SPUIComponetIdProvider.DS_METADATA_DETAIL_LINK).append('.').append(name).toString(); - } -} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java deleted file mode 100644 index 83e1df6cd..000000000 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java +++ /dev/null @@ -1,156 +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.common.detailslayout; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; -import org.eclipse.hawkbit.repository.model.SoftwareModule; -import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; -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.SPUIStyleDefinitions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.vaadin.data.Item; -import com.vaadin.data.util.IndexedContainer; -import com.vaadin.ui.Button; -import com.vaadin.ui.Label; -import com.vaadin.ui.Table; -import com.vaadin.ui.themes.ValoTheme; - -public class SoftwareModuleMetadatadetailslayout extends Table { - - private static final long serialVersionUID = 2913758299611838818L; - - private static final Logger LOG = LoggerFactory.getLogger(SoftwareModuleMetadatadetailslayout.class); - - private static final String METADATA_KEY = "Key"; - - private static final String VIEW = "view"; - - private SpPermissionChecker permissionChecker; - - private I18N i18n; - - /** - * Initialize software module table- to be displayed in details layout. - * - * @param i18n - * I18N - * @param isUnassignSoftModAllowed - * boolean flag to check for unassign functionality allowed for - * the view. - * @param distributionSetManagement - * DistributionSetManagement - * @param permissionChecker - * SpPermissionChecker - * @param eventBus - * SessionEventBus - * @param manageDistUIState - * ManageDistUIState - */ - public void init(final I18N i18n, final SpPermissionChecker permissionChecker) { - this.i18n = i18n; - this.permissionChecker = permissionChecker; - createSWMMetadataTable(); - addCustomGeneratedColumns(); - } - - private void createSWMMetadataTable() { - addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); - addStyleName(ValoTheme.TABLE_NO_STRIPES); - setSelectable(false); - setImmediate(true); - setContainerDataSource(getSwModuleMetadataContainer()); - setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); - addSMMetadataTableHeader(); - setSizeFull(); // check if this style is required - addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE); - } - - private IndexedContainer getSwModuleMetadataContainer() { - final IndexedContainer container = new IndexedContainer(); - container.addContainerProperty(METADATA_KEY, String.class, ""); - setColumnExpandRatio(METADATA_KEY, 0.7f); - setColumnAlignment(METADATA_KEY, Align.LEFT); - - if (permissionChecker.hasUpdateDistributionPermission()) { - container.addContainerProperty(VIEW, Label.class, ""); - setColumnExpandRatio(VIEW, 0.2F); - setColumnAlignment(VIEW, Align.RIGHT); - } - return container; - } - - private void addSMMetadataTableHeader() { - setColumnHeader(METADATA_KEY, i18n.get("label.dist.details.key")); - } - - /** - * Populate software module table. - * - * @param distributionSet - */ - public void populateSMMetadata(final SoftwareModule swModule) { - removeAllItems(); - final List swMetadtaList = new ArrayList<>(); - for (int i = 1; i <= 5; i++) { - final SoftwareModuleMetadata swMetadata = new SoftwareModuleMetadata(); - swMetadata.setKey("ReleaseNote BBB" + i); - swMetadata.setValue("ReleaseNote BBB sample data" + i); - swMetadtaList.add(swMetadata); - } - if (null != swModule) { - /* - * final List swMetadataList = - * swModule.getMetadata(); - */ - final List swMetadataList = swMetadtaList; - if (null != swMetadataList && !swMetadataList.isEmpty()) { - swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata)); - } - } - - } - - private void setSWMetadataProperties(final SoftwareModuleMetadata swMetadata) { - final Item item = getContainerDataSource().addItem(swMetadata.getKey()); - item.getItemProperty(METADATA_KEY).setValue(swMetadata.getKey()); - if (permissionChecker.hasUpdateDistributionPermission()) { - item.getItemProperty(VIEW).setValue(HawkbitCommonUtil.getFormatedLabel("View")); - } - - } - - protected void addCustomGeneratedColumns() { - addGeneratedColumn(VIEW, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); - } - - private Button customMetadataDetailButton(final String itemId) { - final Item row1 = getItem(itemId); - final String metadataKey = (String) row1.getItemProperty(METADATA_KEY).getValue(); - - final Button viewIcon = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), VIEW, - "View Software Module Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); - viewIcon.setData(metadataKey); - viewIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); - // viewIcon.addClickListener(event -> onClickOfDetailButton(event)); - return viewIcon; - } - - private static String getDetailLinkId(final String name) { - return new StringBuilder(SPUIComponetIdProvider.SW_METADATA_DETAIL_LINK).append('.').append(name).toString(); - } -} From 5208aa2dea2c5ad0a4674dc02b9efadcf10effe7 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Wed, 1 Jun 2016 10:33:28 +0200 Subject: [PATCH 21/44] change color save/cancel buttons Signed-off-by: Melanie Retter --- .../org/eclipse/hawkbit/ui/common/CommonDialogWindow.java | 7 +++++-- .../VAADIN/themes/hawkbit/customstyles/common.scss | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 8dd6dc18a..4324cf222 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -14,8 +14,8 @@ 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.data.Property.ValueChangeListener; import com.vaadin.server.FontAwesome; import com.vaadin.ui.AbstractOrderedLayout; import com.vaadin.ui.Alignment; @@ -27,7 +27,6 @@ import com.vaadin.ui.Link; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; -@Service public class CommonDialogWindow extends Window { private static final long serialVersionUID = -1321949234316858703L; @@ -48,6 +47,8 @@ public class CommonDialogWindow extends Window { private HorizontalLayout buttonsLayout; + protected ValueChangeListener buttonEnableListener; + public CommonDialogWindow() { init(null, null); @@ -95,6 +96,7 @@ public class CommonDialogWindow extends Window { saveButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.SAVE_BUTTON, "save", "", "", true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); saveButton.setSizeUndefined(); + saveButton.addStyleName("default-color"); if (null != saveButtonClickListener) { saveButton.addClickListener(saveButtonClickListener); } else { @@ -107,6 +109,7 @@ public class CommonDialogWindow extends Window { cancelButton = SPUIComponentProvider.getButton(SPUIComponetIdProvider.CANCEL_BUTTON, "cancel", "", "", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); cancelButton.setSizeUndefined(); + cancelButton.addStyleName("default-color"); if (null != cancelButtonClickListener) { cancelButton.addClickListener(cancelButtonClickListener); } else { diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss index ecacdcd67..802dd5a70 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/common.scss @@ -293,4 +293,8 @@ padding-bottom: 12px !important; } + .v-button-default-color { + color: #551f62; + } + } From 6c725efd70ad7ed9ae045249cabc773799179716 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 09:49:36 +0200 Subject: [PATCH 22/44] Code review, correct font-size of close/minimize button of commonDialogWindow Signed-off-by: Melanie Retter --- .../SoftwareModuleAddUpdateWindow.java | 45 ++++++++++++++----- .../CreateUpdateSoftwareTypeLayout.java | 8 ++-- .../ColorPickerConstants.java | 10 ++++- .../ColorPickerHelper.java | 40 ++++++++++++----- .../ColorPickerLayout.java | 10 +++-- .../hawkbit/ui/common/CommonDialogWindow.java | 16 ++++++- .../SPUIButtonStyleBorderWithIcon.java | 24 +++++++--- .../CreateUpdateDistSetTypeLayout.java | 39 ++++++---------- .../CreateOrUpdateFilterHeader.java | 18 +++----- ...ava => AbstractCreateUpdateTagLayout.java} | 13 +++--- .../ui/layouts/CreateUpdateTypeLayout.java | 22 +++++---- .../DistributionAddUpdateWindowLayout.java | 5 +-- ...eateUpdateDistributionTagLayoutWindow.java | 11 ++--- .../TargetBulkUpdateWindowLayout.java | 4 +- .../CreateUpdateTargetTagLayoutWindow.java | 10 ++--- .../targettag/MultipleTargetFilter.java | 1 + .../rollout/AddUpdateRolloutWindowLayout.java | 29 +++++++++--- .../ui/rollout/rollout/RolloutListGrid.java | 11 ++--- .../ui/rollout/rollout/RolloutListHeader.java | 4 -- .../DefaultDistributionSetTypeLayout.java | 5 +-- .../TenantConfigurationDashboardView.java | 11 +++-- ...ficateAuthenticationConfigurationItem.java | 5 +-- ...yTokenAuthenticationConfigurationItem.java | 1 + .../ui/utils/SPUIComponetIdProvider.java | 4 -- .../themes/hawkbit/customstyles/others.scss | 2 +- .../hawkbit/customstyles/popup-common.scss | 8 +++- 26 files changed, 213 insertions(+), 143 deletions(-) rename hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/{colorPicker => colorpicker}/ColorPickerConstants.java (77%) rename hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/{colorPicker => colorpicker}/ColorPickerHelper.java (66%) rename hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/{colorPicker => colorpicker}/ColorPickerLayout.java (97%) rename hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/{CreateUpdateTagLayout.java => AbstractCreateUpdateTagLayout.java} (98%) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index f766af2d4..33cefae8a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -12,7 +12,6 @@ import java.io.Serializable; 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.SoftwareModuleTypeBeanQuery; @@ -29,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.spring.events.EventBus; +import com.vaadin.event.FieldEvents.TextChangeEvent; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.ComboBox; @@ -64,9 +64,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se @Autowired private transient SoftwareManagement softwareManagement; - @Autowired - private transient UiProperties uiProperties; - private Label mandatoryLabel; private TextField nameTextField; @@ -182,9 +179,8 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se } /** - * Keep UI components on Layout. + * Build the window content and get an instance of customDialogWindow * - * @return */ private void createWindow() { @@ -215,22 +211,28 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se nameTextField.focus(); } + /** + * add a TextChangeListener to the description TextField + */ private void addDescriptionTextChangeListener() { descTextArea.addTextChangeListener(event -> { if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) { - window.setSaveButtonEnabled(false); + window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); } else { - window.setSaveButtonEnabled(true); + window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); } }); } + /** + * add a TextChangeListener to the vendor TextField + */ private void addVendorTextChangeListener() { vendorTextField.addTextChangeListener(event -> { if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) { - window.setSaveButtonEnabled(false); + window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); } else { - window.setSaveButtonEnabled(true); + window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); } }); } @@ -264,6 +266,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se } } + /** + * updates a softwareModule + */ private void updateSwModule() { final String newDesc = HawkbitCommonUtil.trimAndNullIfEmpty(descTextArea.getValue()); final String newVendor = HawkbitCommonUtil.trimAndNullIfEmpty(vendorTextField.getValue()); @@ -280,6 +285,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se closeThisWindow(); } + /** + * fill the data of a softwareModule in the content of the window + */ private void populateValuesOfSwModule() { final SoftwareModule swModle = softwareManagement.findSoftwareModuleById(baseSwModuleId); nameTextField.setValue(swModle.getName()); @@ -333,6 +341,10 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se return isValid; } + /** + * saves or updates a softwareModule depending on the information if it is a + * new softwareModule or an existing one + */ private void save() { if (editSwModule) { updateSwModule(); @@ -341,4 +353,17 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se addNewBaseSoftware(); } } + + /** + * Checks if the description and vendor have changed and set the button + * enabled/disabled + * + * @param event + * TextChangeEvent + * @return Boolean + */ + private boolean hasDescriptionOrVendorChanged(final TextChangeEvent event) { + return !(event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)); + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index d23329f37..70aceb6db 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -11,12 +11,13 @@ package org.eclipse.hawkbit.ui.artifacts.smtype; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.StringUtils; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerConstants; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper; import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout; @@ -279,9 +280,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout protected void previewButtonClicked() { if (!tagPreviewBtnClicked) { final String selectedOption = (String) optiongroup.getValue(); - if (null != selectedOption && selectedOption.equalsIgnoreCase(updateTypeStr)) { + if (StringUtils.isNotEmpty(selectedOption) && selectedOption.equalsIgnoreCase(updateTypeStr)) { if (null != tagNameComboBox.getValue()) { - final SoftwareModuleType typeSelected = swTypeManagementService .findSoftwareModuleTypeByName(tagNameComboBox.getValue().toString()); if (null != typeSelected) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java similarity index 77% rename from hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java rename to hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java index ddb4eb70c..06e280e4e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerConstants.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java @@ -6,12 +6,20 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.eclipse.hawkbit.ui.colorPicker; +package org.eclipse.hawkbit.ui.colorpicker; import com.vaadin.shared.ui.colorpicker.Color; +/** + * Provides color constants for the ColorPickerLayout + * + */ public class ColorPickerConstants { public static final String DEFAULT_COLOR = "rgb(44,151,32)"; public static final Color START_COLOR = new Color(0, 146, 58); + + private ColorPickerConstants() { + + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java similarity index 66% rename from hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java rename to hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java index 815bb97b2..923c58fe3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerHelper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java @@ -6,8 +6,9 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.eclipse.hawkbit.ui.colorPicker; +package org.eclipse.hawkbit.ui.colorpicker; +import org.apache.commons.lang3.StringUtils; import org.eclipse.hawkbit.ui.management.tag.SpColorPickerPreview; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,19 +16,27 @@ import org.slf4j.LoggerFactory; import com.vaadin.shared.ui.colorpicker.Color; import com.vaadin.ui.Slider.ValueOutOfBoundsException; +/** + * Contains helper methods for the ColorPickerLayout to handle the ColorPicker + * + */ public class ColorPickerHelper { private static final Logger LOG = LoggerFactory.getLogger(ColorPickerHelper.class); + private ColorPickerHelper() { + + } + /** - * Get color picked value in string. + * Get color picked value as 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() + ")"; + final Color color = preview.getColor(); + return "rgb(" + color.getRed() + "," + color.getGreen() + "," + color.getBlue() + ")"; } /** @@ -39,9 +48,11 @@ public class ColorPickerHelper { */ public static Color rgbToColorConverter(final String value) { - if (!value.startsWith("rgb")) { - return null; + if (StringUtils.isEmpty(value) || (StringUtils.isNotEmpty(value) && !value.startsWith("rgb"))) { + throw new IllegalArgumentException( + "String to convert is empty or of invalid format - value: '" + value + "'"); } + // 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]); @@ -50,20 +61,27 @@ public class ColorPickerHelper { 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 new Color(red, green, blue); } + /** + * + * Gets the selectedColor in the ColorPickerLayout and sets the slider + * values + * + * @param colorPickerLayout + * colorPickerLayout + */ public static void setRgbSliderValues(final ColorPickerLayout colorPickerLayout) { try { final double redColorValue = colorPickerLayout.getSelectedColor().getRed(); - colorPickerLayout.getRedSlider().setValue(new Double(redColorValue)); + colorPickerLayout.getRedSlider().setValue(Double.valueOf(redColorValue)); final double blueColorValue = colorPickerLayout.getSelectedColor().getBlue(); - colorPickerLayout.getBlueSlider().setValue(new Double(blueColorValue)); + colorPickerLayout.getBlueSlider().setValue(Double.valueOf(blueColorValue)); final double greenColorValue = colorPickerLayout.getSelectedColor().getGreen(); - colorPickerLayout.getGreenSlider().setValue(new Double(greenColorValue)); + colorPickerLayout.getGreenSlider().setValue(Double.valueOf(greenColorValue)); } catch (final ValueOutOfBoundsException e) { LOG.error("Unable to set RGB color value to " + colorPickerLayout.getSelectedColor().getRed() + "," + colorPickerLayout.getSelectedColor().getGreen() + "," diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java similarity index 97% rename from hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java rename to hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java index dba5ac8df..7d2046bd9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorPicker/ColorPickerLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.eclipse.hawkbit.ui.colorPicker; +package org.eclipse.hawkbit.ui.colorpicker; import java.util.HashSet; import java.util.Set; @@ -21,13 +21,15 @@ import com.vaadin.ui.Slider; import com.vaadin.ui.components.colorpicker.ColorPickerGradient; import com.vaadin.ui.components.colorpicker.ColorSelector; +/** + * + * Defines the Layout for the ColorPicker + * + */ public class ColorPickerLayout extends GridLayout { private static final long serialVersionUID = -7025970080613796692L; - /** - * Local Instance of ColorPickerPreview. - */ private SpColorPickerPreview selPreview; private ColorPickerGradient colorSelect; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 8b179ba4a..6b59ebd69 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -9,11 +9,13 @@ package org.eclipse.hawkbit.ui.common; import org.apache.commons.lang3.StringUtils; +import org.eclipse.hawkbit.ui.UiProperties; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; 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.beans.factory.annotation.Autowired; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.server.FontAwesome; @@ -27,6 +29,12 @@ import com.vaadin.ui.Link; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; +/** + * + * Superclass for pop-up-windows including a minimize and close icon in the + * upper right corner and a save and cancel button at the bottom. + * + */ public class CommonDialogWindow extends Window { private static final long serialVersionUID = -1321949234316858703L; @@ -49,6 +57,9 @@ public class CommonDialogWindow extends Window { protected ValueChangeListener buttonEnableListener; + @Autowired + private transient UiProperties uiProperties; + public CommonDialogWindow() { init(null, null); @@ -84,6 +95,7 @@ public class CommonDialogWindow extends Window { setResizable(true); center(); setModal(true); + addStyleName("fontsize"); } private HorizontalLayout createActionButtonsLayout(final ClickListener saveButtonClickListener, @@ -100,7 +112,7 @@ public class CommonDialogWindow extends Window { if (null != saveButtonClickListener) { saveButton.addClickListener(saveButtonClickListener); } else { - LOG.warn("No ClickListener for saveButton specified"); + throw new IllegalArgumentException("no ClickListener for save button specified"); } buttonsLayout.addComponent(saveButton); buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); @@ -113,7 +125,7 @@ public class CommonDialogWindow extends Window { if (null != cancelButtonClickListener) { cancelButton.addClickListener(cancelButtonClickListener); } else { - LOG.warn("No ClickListener for cancelButton specified"); + throw new IllegalArgumentException("no ClickListener for cancel button specified"); } buttonsLayout.addComponent(cancelButton); buttonsLayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_LEFT); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java index 2f8b88d74..be72dd700 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java @@ -14,6 +14,8 @@ import com.vaadin.ui.themes.ValoTheme; public class SPUIButtonStyleBorderWithIcon implements SPUIButtonDecorator { + Button button; + /** * Style for button: Primary. */ @@ -21,7 +23,19 @@ public class SPUIButtonStyleBorderWithIcon implements SPUIButtonDecorator { @Override public Button decorate(final Button button, final String style, final boolean setStyle, final Resource icon) { - // Set Style + this.button = button; + + setButtonStyle(style, setStyle); + setButtonIcon(icon); + + button.addStyleName(ValoTheme.LABEL_SMALL); + button.setSizeFull(); + + return button; + } + + private void setButtonStyle(final String style, final boolean setStyle) { + if (null != style) { if (setStyle) { button.setStyleName(style); @@ -29,14 +43,12 @@ public class SPUIButtonStyleBorderWithIcon implements SPUIButtonDecorator { button.addStyleName(style); } } - button.addStyleName(ValoTheme.LABEL_SMALL); - button.setSizeFull(); + } + + private void setButtonIcon(final Resource icon) { - // Set icon if (null != icon) { button.setIcon(icon); } - return button; } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 266339050..c43110b10 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -16,8 +16,8 @@ import org.eclipse.hawkbit.repository.DistributionSetRepository; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; +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.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; @@ -350,12 +350,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout final CheckBox mandatoryCheckBox = (CheckBox) item.getItemProperty(DIST_TYPE_MANDATORY).getValue(); final Boolean isMandatory = mandatoryCheckBox.getValue(); final SoftwareModuleType swModuleType = softwareManagement.findSoftwareModuleTypeByName(distTypeName); - if (isMandatory) { - newDistType.addMandatoryModuleType(swModuleType); - - } else { - newDistType.addOptionalModuleType(swModuleType); - } + checkMandatoryAndAddMandatoryModuleType(newDistType, isMandatory, swModuleType); } if (null != typeDescValue) { newDistType.setDescription(typeDescValue); @@ -400,12 +395,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout final String distTypeName = (String) item.getItemProperty(DIST_TYPE_NAME).getValue(); final SoftwareModuleType swModuleType = softwareManagement .findSoftwareModuleTypeByName(distTypeName); - if (isMandatory) { - updateDistSetType.addMandatoryModuleType(swModuleType); - - } else { - updateDistSetType.addOptionalModuleType(swModuleType); - } + checkMandatoryAndAddMandatoryModuleType(updateDistSetType, isMandatory, swModuleType); } } updateDistSetType.setColour(ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview())); @@ -422,6 +412,16 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout } + private void checkMandatoryAndAddMandatoryModuleType(final DistributionSetType updateDistSetType, + final Boolean isMandatory, final SoftwareModuleType swModuleType) { + if (isMandatory) { + updateDistSetType.addMandatoryModuleType(swModuleType); + + } else { + updateDistSetType.addOptionalModuleType(swModuleType); + } + } + private DistributionSetType removeSWModuleTypesFromDistSetType(final String selectedDistSetType) { final DistributionSetType distSetType = fetchDistributionSetType(selectedDistSetType); @@ -590,17 +590,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout } } - /** - * reset the tag name and tag description component border color. - */ - @Override - protected void restoreComponentStyles() { - - super.restoreComponentStyles(); - typeKey.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); - typeKey.addStyleName(SPUIDefinitions.DIST_SET_TYPE_KEY); - } - @Override protected void save(final ClickEvent event) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java index cbade914b..a9ea2092d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java @@ -68,7 +68,7 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button private static final long serialVersionUID = 7474232427119031474L; - private static final String breadcrumbCustomFilters = "breadcrumb.target.filter.custom.filters"; + private static final String BREADCRUMB_CUSTOM_FILTERS = "breadcrumb.target.filter.custom.filters"; @Autowired private I18N i18n; @@ -238,8 +238,8 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button final Button createFilterViewLink = SPUIComponentProvider.getButton(null, "", "", null, false, null, SPUIButtonStyleSmallNoBorder.class); createFilterViewLink.setStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link rollout-caption-links"); - createFilterViewLink.setDescription(i18n.get(breadcrumbCustomFilters)); - createFilterViewLink.setCaption(i18n.get(breadcrumbCustomFilters)); + createFilterViewLink.setDescription(i18n.get(BREADCRUMB_CUSTOM_FILTERS)); + createFilterViewLink.setCaption(i18n.get(BREADCRUMB_CUSTOM_FILTERS)); createFilterViewLink.addClickListener(value -> showCustomFiltersView()); return createFilterViewLink; @@ -487,15 +487,11 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button public void buttonClick(final ClickEvent event) { if (SPUIComponetIdProvider.CUSTOM_FILTER_SAVE_ICON.equals(event.getComponent().getId()) && manadatoryFieldsPresent()) { - if (filterManagementUIState.isCreateFilterViewDisplayed()) { - if (!doesAlreadyExists()) { - createTargetFilterQuery(); - } + if (filterManagementUIState.isCreateFilterViewDisplayed() && !doesAlreadyExists()) { + createTargetFilterQuery(); } else { - if (!nameTextField.getValue().equals(oldFilterName)) { - if (!doesAlreadyExists()) { - updateCustomFilter(); - } + if (!nameTextField.getValue().equals(oldFilterName) && !doesAlreadyExists()) { + updateCustomFilter(); } else { updateCustomFilter(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java similarity index 98% rename from hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java rename to hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java index efe629eb7..c92790022 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java @@ -15,9 +15,9 @@ 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.colorPicker.ColorPickerConstants; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerLayout; +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.utils.HawkbitCommonUtil; @@ -27,8 +27,6 @@ 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; @@ -58,9 +56,9 @@ import com.vaadin.ui.themes.ValoTheme; /** * Abstract class for create/update target tag layout. */ -public abstract class CreateUpdateTagLayout extends CustomComponent implements ColorChangeListener, ColorSelector { +public abstract class AbstractCreateUpdateTagLayout extends CustomComponent + implements ColorChangeListener, ColorSelector { private static final long serialVersionUID = 4229177824620576456L; - private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateTagLayout.class); private static final String TAG_NAME_DYNAMIC_STYLE = "new-tag-name"; private static final String TAG_DESC_DYNAMIC_STYLE = "new-tag-desc"; protected static final String TAG_DYNAMIC_STYLE = "tag-color-preview"; @@ -236,6 +234,7 @@ public abstract class CreateUpdateTagLayout extends CustomComponent implements C protected void previewButtonClicked() { if (!tagPreviewBtnClicked) { setColor(); + mainLayout.getComponent(1, 0); mainLayout.addComponent(colorPickerLayout, 1, 0); mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java index ad2758a5f..019b64aaa 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -11,8 +11,8 @@ package org.eclipse.hawkbit.ui.layouts; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerConstants; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerConstants; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; @@ -32,7 +32,13 @@ import com.vaadin.ui.components.colorpicker.ColorChangeEvent; import com.vaadin.ui.components.colorpicker.ColorSelector; import com.vaadin.ui.themes.ValoTheme; -public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { +/** + * + * Superclass defining common properties and methods for creating/updating + * types. + * + */ +public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout { private static final long serialVersionUID = 5732904956185988397L; @@ -187,6 +193,7 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { protected void restoreComponentStyles() { super.restoreComponentStyles(); typeKey.removeStyleName(TYPE_NAME_DYNAMIC_STYLE); + typeKey.addStyleName(SPUIDefinitions.TYPE_KEY); } /** @@ -298,20 +305,17 @@ public class CreateUpdateTypeLayout extends CreateUpdateTagLayout { @Override protected void save(final ClickEvent event) { - // TODO Auto-generated method stub - + // is implemented in the inherited class } @Override protected void populateTagNameCombo() { - // TODO Auto-generated method stub - + // is implemented in the inherited class } @Override protected void setTagDetails(final String tagSelected) { - // TODO Auto-generated method stub - + // is implemented in the inherited class } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index 2ce9f84f5..459893521 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -22,7 +22,6 @@ import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; 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.table.BaseEntityEventType; @@ -91,9 +90,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent { @Autowired private transient TenantMetaDataRepository tenantMetaDataRepository; - @Autowired - private transient UiProperties uiProperties; - private TextField distNameTextField; private TextField distVersionTextField; private Label madatoryLabel; @@ -537,4 +533,5 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent { public void setOriginalDistSetTYpe(final String originalDistSetType) { this.originalDistSetType = originalDistSetType; } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index 1c6372033..c4da4d12e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -16,9 +16,9 @@ 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.colorPicker.ColorPickerConstants; -import org.eclipse.hawkbit.ui.colorPicker.ColorPickerHelper; -import org.eclipse.hawkbit.ui.layouts.CreateUpdateTagLayout; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerConstants; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper; +import org.eclipse.hawkbit.ui.layouts.AbstractCreateUpdateTagLayout; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.vaadin.spring.events.EventScope; @@ -31,11 +31,12 @@ import com.vaadin.ui.UI; /** * - * + * Class for Create/Update Tag Layout of distribution set + * */ @SpringComponent @ViewScope -public class CreateUpdateDistributionTagLayoutWindow extends CreateUpdateTagLayout { +public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdateTagLayout { private static final long serialVersionUID = 444276149954167545L; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java index e938f68f3..231b072fd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java @@ -354,7 +354,9 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { } /** - * @return + * create and return window + * + * @return Window window */ public Window getWindow() { managementUIState.setBulkUploadWindowMinimised(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java index f3f78377a..ae0c19f38 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java @@ -16,9 +16,9 @@ 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.layouts.CreateUpdateTagLayout; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerConstants; +import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper; +import org.eclipse.hawkbit.ui.layouts.AbstractCreateUpdateTagLayout; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -28,11 +28,11 @@ import com.vaadin.ui.Button.ClickEvent; /** * - * + * Class for Create / Update Tag Layout of target */ @SpringComponent @ViewScope -public class CreateUpdateTargetTagLayoutWindow extends CreateUpdateTagLayout { +public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLayout { private static final long serialVersionUID = 2446682350481560235L; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java index 6e4c73a92..c2403e96a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/MultipleTargetFilter.java @@ -170,4 +170,5 @@ public class MultipleTargetFilter extends Accordion implements SelectedTabChange UI.getCurrent().addWindow(addUpdateWindow); addUpdateWindow.setVisible(true); } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 0f5b00f1a..f29c4e9d9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -41,6 +41,8 @@ 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.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; @@ -76,6 +78,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { private static final long serialVersionUID = 2999293468801479916L; + private static final Logger LOG = LoggerFactory.getLogger(AddUpdateRolloutWindowLayout.class); + private static final String MESSAGE_ROLLOUT_FIELD_VALUE_RANGE = "message.rollout.field.value.range"; private static final String MESSAGE_ENTER_NUMBER = "message.enter.number"; @@ -642,11 +646,14 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { new IntegerRangeValidator(i18n.get(MESSAGE_ROLLOUT_FIELD_VALUE_RANGE, 0, groupSize), 0, groupSize) .validate(Integer.valueOf(value.toString())); } - } catch (final InvalidValueException ex) { - throw ex; + } + // suppress the need of preserve original exception, will blow + // up the + // log and not necessary here + catch (@SuppressWarnings("squid:S1166") final InvalidValueException ex) { + LOG.error(ex.getMessage()); } } - } private int getGroupSize() { @@ -662,8 +669,12 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { new RegexpValidator(NUMBER_REGEXP, i18n.get(MESSAGE_ENTER_NUMBER)).validate(value); new IntegerRangeValidator(i18n.get(MESSAGE_ROLLOUT_FIELD_VALUE_RANGE, 0, 100), 0, 100) .validate(Integer.valueOf(value.toString())); - } catch (final InvalidValueException ex) { - throw ex; + } + // suppress the need of preserve original exception, will blow + // up the + // log and not necessary here + catch (@SuppressWarnings("squid:S1166") final InvalidValueException ex) { + LOG.error(ex.getMessage()); } } } @@ -677,8 +688,12 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { new RegexpValidator(NUMBER_REGEXP, i18n.get(MESSAGE_ENTER_NUMBER)).validate(value); new IntegerRangeValidator(i18n.get(MESSAGE_ROLLOUT_FIELD_VALUE_RANGE, 0, 500), 0, 500) .validate(Integer.valueOf(value.toString())); - } catch (final InvalidValueException ex) { - throw ex; + } + // suppress the need of preserve original exception, will blow + // up the + // log and not necessary here + catch (@SuppressWarnings("squid:S1166") final InvalidValueException ex) { + LOG.error(ex.getMessage()); } } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index a63dd37e8..c55800138 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -632,15 +632,13 @@ public class RolloutListGrid extends AbstractGrid { @Override public TotalTargetCountStatus convertToModel(final String value, - final Class targetType, final Locale locale) - throws com.vaadin.data.util.converter.Converter.ConversionException { + final Class targetType, final Locale locale) { return null; } @Override public String convertToPresentation(final TotalTargetCountStatus value, - final Class targetType, final Locale locale) - throws com.vaadin.data.util.converter.Converter.ConversionException { + final Class targetType, final Locale locale) { return DistributionBarHelper.getDistributionBarAsHTMLString(value.getStatusTotalCountMap()); } @@ -664,14 +662,13 @@ public class RolloutListGrid extends AbstractGrid { private static final long serialVersionUID = 6589305227035220369L; @Override - public Long convertToModel(final String value, final Class targetType, final Locale locale) - throws com.vaadin.data.util.converter.Converter.ConversionException { + public Long convertToModel(final String value, final Class targetType, final Locale locale) { return null; } @Override public String convertToPresentation(final Long value, final Class targetType, - final Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { + final Locale locale) { if (value == 0) { return ""; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java index f4d2a325f..b3043eb4a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListHeader.java @@ -15,7 +15,6 @@ 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; @@ -49,9 +48,6 @@ public class RolloutListHeader extends AbstractGridHeader { @Autowired private transient EventBus.SessionEventBus eventBus; - @Autowired - private I18N i18n; - @Autowired private AddUpdateRolloutWindowLayout addUpdateRolloutWindow; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java index 098456d88..aa2a31a7c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java @@ -14,7 +14,6 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SystemManagement; 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.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; @@ -50,9 +49,6 @@ public class DefaultDistributionSetTypeLayout extends BaseConfigurationView impl @Autowired private I18N i18n; - @Autowired - private transient UiProperties uiProperties; - private Long currentDefaultDisSetType; private Long selectedDefaultDisSetType; @@ -158,4 +154,5 @@ public class DefaultDistributionSetTypeLayout extends BaseConfigurationView impl changeIcon.setVisible(false); } } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java index a6f1b8c32..1ef0d1960 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java @@ -32,6 +32,7 @@ import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Link; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; @@ -118,9 +119,9 @@ public class TenantConfigurationDashboardView extends CustomComponent implements undoConfigurationBtn.addClickListener(event -> undoConfiguration()); hlayout.addComponent(undoConfigurationBtn); - // final Link linkToSystemConfigHelp = SPUIComponentProvider - // .getHelpLink(uiProperties.getLinks().getDocumentation().getSystemConfigurationView()); - // hlayout.addComponent(linkToSystemConfigHelp); + final Link linkToSystemConfigHelp = SPUIComponentProvider + .getHelpLink(uiProperties.getLinks().getDocumentation().getSystemConfigurationView()); + hlayout.addComponent(linkToSystemConfigHelp); return hlayout; } @@ -142,9 +143,7 @@ public class TenantConfigurationDashboardView extends CustomComponent implements } private void undoConfiguration() { - configurationViews.forEach(confView -> { - confView.undo(); - }); + configurationViews.forEach(confView -> confView.undo()); // More methods saveConfigurationBtn.setEnabled(false); undoConfigurationBtn.setEnabled(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java index e49f77b8d..872bdef29 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/CertificateAuthenticationConfigurationItem.java @@ -41,10 +41,6 @@ public class CertificateAuthenticationConfigurationItem extends AbstractAuthenti private VerticalLayout detailLayout; private TextField caRootAuthorityTextField; - /** - * @param systemManagement - * the system management to retrie the configuration - */ @Autowired public CertificateAuthenticationConfigurationItem( final TenantConfigurationManagement tenantConfigurationManagement) { @@ -147,4 +143,5 @@ public class CertificateAuthenticationConfigurationItem extends AbstractAuthenti configurationCaRootAuthorityChanged = true; notifyConfigurationChanged(); } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java index 86d51409a..31e910ddc 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/authentication/GatewaySecurityTokenAuthenticationConfigurationItem.java @@ -195,4 +195,5 @@ public class GatewaySecurityTokenAuthenticationConfigurationItem extends Abstrac gatewayTokenNameTextField.setValue(getSecurityTokenName()); gatewayTokenkeyLabel.setValue(getSecurityTokenKey()); } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java index 3992cf042..8766e06cb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponetIdProvider.java @@ -11,10 +11,6 @@ package org.eclipse.hawkbit.ui.utils; /** * Interface to provide the unchanged constants. * - * - * - * - * */ public final class SPUIComponetIdProvider { /** diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss index 3e90b5ed2..d327baa94 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/others.scss @@ -88,7 +88,7 @@ } .icon-only { - // margin-bottom: 6px !important; + margin-bottom: 6px !important; } //Toggle between pin and status icon diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss index 7b4bfe0d1..457fc266d 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/popup-common.scss @@ -11,7 +11,6 @@ //Color picker layout position adjustment .rgb-vertical-layout { - // margin-top: 100px !important; padding-bottom: 12px; } @@ -47,4 +46,11 @@ box-shadow: none !important; height: 75px !important; } + + .v-window-fontsize .v-window-closebox, + .v-window-fontsize .v-window-maximizebox, + .v-window-fontsize .v-window-restorebox { + font-size: 16px; + } + } From 70f18914f76d12eecdc58792430a933364ae5e9a Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 11:17:45 +0200 Subject: [PATCH 23/44] remove empty javadoc lines Signed-off-by: Melanie Retter --- .../ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 33cefae8a..c2cb281d3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -43,8 +43,6 @@ import com.vaadin.ui.themes.ValoTheme; /** * Generates window for Software module add or update. - * - * */ @SpringComponent @ViewScope From 51ab973e6bda7ac17f2499cc75361514ac358869 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 13:41:29 +0200 Subject: [PATCH 24/44] fix sonar rule replace lambda with a method reference Signed-off-by: Melanie Retter --- .../smtable/SoftwareModuleAddUpdateWindow.java | 4 ++-- .../smtype/CreateUpdateSoftwareTypeLayout.java | 4 ++-- .../hawkbit/ui/artifacts/upload/UploadLayout.java | 4 ++-- .../ui/common/filterlayout/AbstractFilterButtons.java | 9 ++++----- .../ui/common/filterlayout/AbstractFilterHeader.java | 6 ++---- .../hawkbit/ui/common/grid/AbstractGridHeader.java | 4 ++-- .../hawkbit/ui/common/table/AbstractTableHeader.java | 4 ++-- .../disttype/CreateUpdateDistSetTypeLayout.java | 2 +- .../filtermanagement/CreateOrUpdateFilterHeader.java | 2 +- .../hawkbit/ui/filtermanagement/TargetFilterTable.java | 4 ++-- .../ui/layouts/AbstractCreateUpdateTagLayout.java | 4 ++-- .../hawkbit/ui/layouts/CreateUpdateTypeLayout.java | 2 +- .../dstag/CreateUpdateDistributionTagLayoutWindow.java | 2 +- .../footer/ManangementConfirmationWindowLayout.java | 3 +-- .../hawkbit/ui/management/targettable/TargetTable.java | 4 ++-- .../targettag/CreateUpdateTargetTagLayoutWindow.java | 2 +- .../rollout/rollout/AddUpdateRolloutWindowLayout.java | 2 +- .../hawkbit/ui/rollout/rollout/RolloutListGrid.java | 8 ++++---- .../ui/rollout/rolloutgroup/RolloutGroupListGrid.java | 9 ++++----- .../RolloutGroupTargetsListGrid.java | 5 ++--- .../TenantConfigurationDashboardView.java | 4 ++-- .../hawkbit/ui/utils/SPUIComponentIdProvider.java | 10 ++++++++++ 22 files changed, 51 insertions(+), 47 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 7817163cc..d9a232ce6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -149,7 +149,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se mandatoryLabel.setStyleName(SPUIStyleDefinitions.SP_TEXTFIELD_ERROR); mandatoryLabel.addStyleName(ValoTheme.LABEL_SMALL); - typeComboBox = SPUIComponentProvider.getComboBox(i18n.get("upload.swmodule.type"), "", "", null, null, false, + typeComboBox = SPUIComponentProvider.getComboBox(i18n.get("upload.swmodule.type"), "", "", null, null, true, null, i18n.get("upload.swmodule.type")); typeComboBox.setId(SPUIComponentIdProvider.SW_MODULE_TYPE); typeComboBox.setStyleName(SPUIDefinitions.COMBO_BOX_SPECIFIC_STYLE + " " + ValoTheme.COMBOBOX_TINY); @@ -193,8 +193,8 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se addStyleName("lay-color"); final FormLayout formLayout = new FormLayout(); - formLayout.addComponent(typeComboBox); formLayout.addComponent(mandatoryLabel); + formLayout.addComponent(typeComboBox); formLayout.addComponent(nameTextField); formLayout.addComponent(versionTextField); formLayout.addComponent(vendorTextField); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index 70aceb6db..ecfde01ad 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -65,7 +65,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout @Override protected void addListeners() { super.addListeners(); - optiongroup.addValueChangeListener(event -> createOptionValueChanged(event)); + optiongroup.addValueChangeListener(this::createOptionValueChanged); } @Override @@ -112,7 +112,7 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout public void createWindow() { reset(); window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event), null); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java index ad406b297..48da08118 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java @@ -268,7 +268,7 @@ public class UploadLayout extends VerticalLayout { SPUIButtonStyleSmall.class); processBtn.setIcon(FontAwesome.BELL); processBtn.addStyleName(SPUIStyleDefinitions.ACTION_BUTTON); - processBtn.addClickListener(event -> displayConfirmWindow(event)); + processBtn.addClickListener(this::displayConfirmWindow); processBtn.setHtmlContentAllowed(true); if (artifactUploadState.getFileSelected().isEmpty()) { processBtn.setEnabled(false); @@ -281,7 +281,7 @@ public class UploadLayout extends VerticalLayout { SPUIButtonStyleSmall.class); discardBtn.setIcon(FontAwesome.TRASH_O); discardBtn.addStyleName(SPUIStyleDefinitions.ACTION_BUTTON); - discardBtn.addClickListener(event -> discardUploadData(event)); + discardBtn.addClickListener(this::discardUploadData); } boolean checkForDuplicate(final String filename) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java index b64578782..09d79572c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java @@ -42,11 +42,11 @@ import com.vaadin.ui.themes.ValoTheme; public abstract class AbstractFilterButtons extends Table { private static final long serialVersionUID = 7783305719009746375L; - + private static final String DEFAULT_GREEN = "rgb(44,151,32)"; protected static final String FILTER_BUTTON_COLUMN = "filterButton"; - + @Autowired protected transient EventBus.SessionEventBus eventBus; @@ -63,7 +63,7 @@ public abstract class AbstractFilterButtons extends Table { createTable(); eventBus.subscribe(this); } - + @PreDestroy void destroy() { eventBus.unsubscribe(this); @@ -125,8 +125,7 @@ public abstract class AbstractFilterButtons extends Table { } else if (id != null && isClickedByDefault(name)) { filterButtonClickBehaviour.setDefaultClickedButton(typeButton); } - final DragAndDropWrapper wrapper = createDragAndDropWrapper(typeButton, name, id); - return wrapper; + return createDragAndDropWrapper(typeButton, name, id); } protected boolean isNoTagSateSelected() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java index ddc2d9889..ae497e41e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java @@ -34,7 +34,6 @@ public abstract class AbstractFilterHeader extends VerticalLayout { private static final long serialVersionUID = -1388340600522323332L; - @Autowired protected SpPermissionChecker permChecker; @@ -64,7 +63,7 @@ public abstract class AbstractFilterHeader extends VerticalLayout { if (hasCreateUpdatePermission() && isAddTagRequired()) { config = SPUIComponentProvider.getButton(getConfigureFilterButtonId(), "", "", "", true, FontAwesome.COG, SPUIButtonStyleSmallNoBorder.class); - config.addClickListener(event -> settingsIconClicked(event)); + config.addClickListener(this::settingsIconClicked); } hideIcon = SPUIComponentProvider.getButton(getHideButtonId(), "", "", "", true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class); @@ -92,8 +91,7 @@ public abstract class AbstractFilterHeader extends VerticalLayout { } private Label createHeaderCaption() { - final Label captionLabel = SPUIComponentProvider.getLabel(getTitle(), SPUILabelDefinitions.SP_WIDGET_CAPTION); - return captionLabel; + return SPUIComponentProvider.getLabel(getTitle(), SPUILabelDefinitions.SP_WIDGET_CAPTION); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java index 2d69eea20..4ba8ec464 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGridHeader.java @@ -123,14 +123,14 @@ public abstract class AbstractGridHeader extends VerticalLayout { private Button createAddButton() { final Button button = SPUIComponentProvider.getButton(getAddIconId(), "", "", null, false, FontAwesome.PLUS, SPUIButtonStyleSmallNoBorder.class); - button.addClickListener(event -> addNewItem(event)); + button.addClickListener(this::addNewItem); return button; } private Button createCloseButton() { final Button button = SPUIComponentProvider.getButton(getCloseButtonId(), "", "", null, false, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class); - button.addClickListener(event -> onClose(event)); + button.addClickListener(this::onClose); return button; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java index 6f05dce8d..ad5fba1ad 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java @@ -235,14 +235,14 @@ public abstract class AbstractTableHeader extends VerticalLayout { private Button createAddIcon() { final Button button = SPUIComponentProvider.getButton(getAddIconId(), "", "", null, false, FontAwesome.PLUS, SPUIButtonStyleSmallNoBorder.class); - button.addClickListener(event -> addNewItem(event)); + button.addClickListener(this::addNewItem); return button; } private Button createBulkUploadIcon() { final Button button = SPUIComponentProvider.getButton(getBulkUploadIconId(), "", "", null, false, FontAwesome.UPLOAD, SPUIButtonStyleSmallNoBorder.class); - button.addClickListener(event -> bulkUpload(event)); + button.addClickListener(this::bulkUpload); return button; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index c43110b10..2492d5e39 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -612,7 +612,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout public void createWindow() { reset(); window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event), null); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java index f46cc60ba..2ed4b305c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java @@ -251,7 +251,7 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button SPUILabelDefinitions.TEXT_FIELD_MAX_LENGTH); nameField.setId(SPUIComponentIdProvider.CUSTOM_FILTER_ADD_NAME); nameField.setPropertyDataSource(nameLabel); - nameField.addTextChangeListener(event -> onFilterNameChange(event)); + nameField.addTextChangeListener(this::onFilterNameChange); return nameField; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java index e6d17e8db..6e83769b5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterTable.java @@ -167,7 +167,7 @@ public class TargetFilterTable extends Table { SPUILabelDefinitions.DELETE_CUSTOM_FILTER, ValoTheme.BUTTON_TINY + " " + "redicon", true, FontAwesome.TRASH_O, SPUIButtonStyleSmallNoBorder.class); deleteIcon.setData(itemId); - deleteIcon.addClickListener(event -> onDelete(event)); + deleteIcon.addClickListener(this::onDelete); return deleteIcon; } @@ -217,7 +217,7 @@ public class TargetFilterTable extends Table { SPUILabelDefinitions.UPDATE_CUSTOM_FILTER, null, false, null, SPUIButtonStyleSmallNoBorder.class); updateIcon.setData(tfName); updateIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link"); - updateIcon.addClickListener(event -> onClickOfDetailButton(event)); + updateIcon.addClickListener(this::onClickOfDetailButton); return updateIcon; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java index e484f95ba..d5195cb83 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java @@ -108,7 +108,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent protected void createWindow() { reset(); setWindow(SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(event), event -> discard(event), null)); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null)); } /** @@ -223,7 +223,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent colorPickerLayout.getColorSelect().addColorChangeListener(this); colorPickerLayout.getSelPreview().addColorChangeListener(this); tagColorPreviewBtn.addClickListener(event -> previewButtonClicked()); - tagNameComboBox.addValueChangeListener(event -> tagNameChosen(event)); + tagNameComboBox.addValueChangeListener(this::tagNameChosen); slidersValueChangeListeners(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java index 7263ae9f7..1987d6053 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/CreateUpdateTypeLayout.java @@ -52,7 +52,7 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout { @Override protected void addListeners() { super.addListeners(); - optiongroup.addValueChangeListener(event -> createOptionValueChanged(event)); + optiongroup.addValueChangeListener(this::createOptionValueChanged); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java index c4da4d12e..8f368b69f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/CreateUpdateDistributionTagLayoutWindow.java @@ -74,7 +74,7 @@ public class CreateUpdateDistributionTagLayoutWindow extends AbstractCreateUpdat @Override protected void addListeners() { super.addListeners(); - optiongroup.addValueChangeListener(event -> optionValueChanged(event)); + optiongroup.addValueChangeListener(this::optionValueChanged); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ManangementConfirmationWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ManangementConfirmationWindowLayout.java index 52cca5794..2553bc131 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ManangementConfirmationWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/ManangementConfirmationWindowLayout.java @@ -481,8 +481,7 @@ public class ManangementConfirmationWindowLayout extends AbstractConfirmationWin /* * On delete of pinned target ,unpin refresh both target table and DS */ - managementUIState.getDistributionTableFilters().getPinnedTargetId() - .ifPresent(targetId -> unPinDeletedTarget(targetId)); + managementUIState.getDistributionTableFilters().getPinnedTargetId().ifPresent(this::unPinDeletedTarget); eventBus.publish(this, SaveActionWindowEvent.DELETED_TARGETS); managementUIState.getDeletedTargetList().clear(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 697166f5a..e1b1e394b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -332,7 +332,7 @@ public class TargetTable extends AbstractTable implements if (!isMaximized()) { columnList.add(new TableColumn(SPUIDefinitions.TARGET_STATUS_POLL_TIME, "", 0.0F)); columnList.add(new TableColumn(SPUIDefinitions.TARGET_STATUS_PIN_TOGGLE_ICON, "", 0.0F)); - } + } return columnList; } @@ -455,7 +455,7 @@ public class TargetTable extends AbstractTable implements pinBtn.setHeightUndefined(); pinBtn.setData(itemId); pinBtn.setId(SPUIComponentIdProvider.TARGET_PIN_ICON + "." + itemId); - pinBtn.addClickListener(event -> addPinClickListener(event)); + pinBtn.addClickListener(this::addPinClickListener); if (isPinned(((TargetIdName) itemId).getControllerId())) { pinBtn.addStyleName(TARGET_PINNED); isTargetPinned = Boolean.TRUE; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java index ae0c19f38..ab95e9bef 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/CreateUpdateTargetTagLayoutWindow.java @@ -60,7 +60,7 @@ public class CreateUpdateTargetTagLayoutWindow extends AbstractCreateUpdateTagLa @Override protected void addListeners() { super.addListeners(); - optiongroup.addValueChangeListener(event -> optionValueChanged(event)); + optiongroup.addValueChangeListener(this::optionValueChanged); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index f98f50128..26a830aee 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -301,7 +301,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { errorThresoldOptions.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL); errorThresoldOptions.addStyleName(SPUIStyleDefinitions.ROLLOUT_OPTION_GROUP); errorThresoldOptions.setSizeUndefined(); - errorThresoldOptions.addValueChangeListener(event -> onErrorThresoldOptionChange(event)); + errorThresoldOptions.addValueChangeListener(this::onErrorThresoldOptionChange); return errorThresoldOptions; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index fd45739ac..49c3b8e76 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -297,7 +297,7 @@ public class RolloutListGrid extends AbstractGrid { @Override protected CellDescriptionGenerator getDescriptionGenerator() { - return cell -> getDescription(cell); + return this::getDescription; } @Override @@ -310,10 +310,10 @@ public class RolloutListGrid extends AbstractGrid { createRolloutStatusToFontMap(); getColumn(SPUILabelDefinitions.VAR_STATUS).setRenderer(new HtmlLabelRenderer(), new RolloutStatusConverter()); - getColumn(SPUILabelDefinitions.ACTION).setRenderer(new HtmlButtonRenderer(event -> onClickOfActionBtn(event))); + getColumn(SPUILabelDefinitions.ACTION).setRenderer(new HtmlButtonRenderer(this::onClickOfActionBtn)); final RolloutRenderer customObjectRenderer = new RolloutRenderer(RolloutRendererData.class); - customObjectRenderer.addClickListener(event -> onClickOfRolloutName(event)); + customObjectRenderer.addClickListener(this::onClickOfRolloutName); getColumn(ROLLOUT_RENDERER_DATA).setRenderer(customObjectRenderer); } @@ -370,7 +370,7 @@ public class RolloutListGrid extends AbstractGrid { private ContextMenu createContextMenu(final Long rolloutId) { final ContextMenu context = new ContextMenu(); - context.addItemClickListener(event -> menuItemClicked(event)); + context.addItemClickListener(this::menuItemClicked); final Item row = getContainerDataSource().getItem(rolloutId); final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS) .getValue(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java index 3706e685a..16a98d4df 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java @@ -238,8 +238,7 @@ public class RolloutGroupListGrid extends AbstractGrid { getColumn(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setRenderer(new HtmlRenderer(), new TotalTargetCountStatusConverter()); if (permissionChecker.hasRolloutTargetsReadPermission()) { - getColumn(ROLLOUT_RENDERER_DATA) - .setRenderer(new RolloutRenderer(event -> onClickOfRolloutGroupName(event))); + getColumn(ROLLOUT_RENDERER_DATA).setRenderer(new RolloutRenderer(this::onClickOfRolloutGroupName)); } } @@ -259,7 +258,7 @@ public class RolloutGroupListGrid extends AbstractGrid { @Override protected CellDescriptionGenerator getDescriptionGenerator() { - return cell -> getDescription(cell); + return this::getDescription; } private void onClickOfRolloutGroupName(final RendererClickEvent event) { @@ -324,14 +323,14 @@ public class RolloutGroupListGrid extends AbstractGrid { @Override public TotalTargetCountStatus convertToModel(final String value, final Class targetType, final Locale locale) - throws com.vaadin.data.util.converter.Converter.ConversionException { + throws com.vaadin.data.util.converter.Converter.ConversionException { return null; } @Override public String convertToPresentation(final TotalTargetCountStatus value, final Class targetType, final Locale locale) - throws com.vaadin.data.util.converter.Converter.ConversionException { + throws com.vaadin.data.util.converter.Converter.ConversionException { return DistributionBarHelper.getDistributionBarAsHTMLString(value.getStatusTotalCountMap()); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java index e176beb7e..07399bdb0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java @@ -50,13 +50,12 @@ import com.vaadin.spring.annotation.ViewScope; public class RolloutGroupTargetsListGrid extends AbstractGrid { private static final long serialVersionUID = -2244756637458984597L; - + @Autowired private transient RolloutUIState rolloutUIState; private transient Map statusIconMap = new EnumMap<>(Status.class); - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final RolloutEvent event) { if (RolloutEvent.SHOW_ROLLOUT_GROUP_TARGETS != event) { @@ -161,7 +160,7 @@ public class RolloutGroupTargetsListGrid extends AbstractGrid { @Override protected CellDescriptionGenerator getDescriptionGenerator() { - return cell -> getDescription(cell); + return this::getDescription; } private void alignColumns() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java index e740fcd1c..2b0e4496b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java @@ -105,8 +105,8 @@ public class TenantConfigurationDashboardView extends CustomComponent implements final HorizontalLayout hlayout = new HorizontalLayout(); hlayout.setSpacing(true); - saveConfigurationBtn = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SYSTEM_CONFIGURATION_SAVE, "", "", - "", true, FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class); + saveConfigurationBtn = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SYSTEM_CONFIGURATION_SAVE, "", + "", "", true, FontAwesome.SAVE, SPUIButtonStyleSmallNoBorder.class); saveConfigurationBtn.setEnabled(false); saveConfigurationBtn.setDescription(i18n.get("configuration.savebutton.tooltip")); saveConfigurationBtn.addClickListener(event -> saveConfiguration()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java index 80d40104a..17c215b0a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java @@ -501,6 +501,16 @@ public final class SPUIComponentIdProvider { */ public static final String SYSTEM_CONFIGURATION_SAVE = "system.configuration.save"; + /** + * ID for save button in pop-up-windows instance of commonDialogWindow + */ + public static final String SAVE_BUTTON = "common.dialog.window.save"; + + /** + * ID for cancel button in pop-up-windows instance of commonDialogWindow + */ + public static final String CANCEL_BUTTON = "common.dialog.window.cancel"; + /** * Cancel button is. */ From 7246203d9c8b4b34513590a143255eedb1bdf85b Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 17:35:50 +0200 Subject: [PATCH 25/44] Correct ID save/cancel button Signed-off-by: Melanie Retter --- .../org/eclipse/hawkbit/ui/common/CommonDialogWindow.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 3f5364946..322829107 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -105,8 +105,8 @@ public class CommonDialogWindow extends Window { buttonsLayout.setSizeFull(); buttonsLayout.setSpacing(true); - saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SYSTEM_CONFIGURATION_SAVE, "save", "", "", - true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); + saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SAVE_BUTTON, "save", "", "", true, + FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); saveButton.setSizeUndefined(); saveButton.addStyleName("default-color"); if (null != saveButtonClickListener) { @@ -118,8 +118,8 @@ public class CommonDialogWindow extends Window { buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); buttonsLayout.setExpandRatio(saveButton, 1.0F); - cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SYSTEM_CONFIGURATION_CANCEL, "cancel", - "", "", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); + cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON, "cancel", "", "", true, + FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); cancelButton.setSizeUndefined(); cancelButton.addStyleName("default-color"); if (null != cancelButtonClickListener) { From 0ece2b28aece58487b9836f9ae8a7790a696a870 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 10:51:02 +0200 Subject: [PATCH 26/44] Correct IDs Signed-off-by: Melanie Retter --- .../hawkbit/ui/utils/SPUIComponentIdProvider.java | 13 +++---------- .../eclipse/hawkbit/ui/utils/SPUIDefinitions.java | 7 ++++--- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java index d5fcaa265..b4e89a191 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java @@ -112,14 +112,6 @@ public final class SPUIComponentIdProvider { * ID-Dist.JVM delete icon. */ public static final String DIST_DELETE_MODULE = "dist.delete.module."; - /** - * ID-Dist.Add.save. - */ - public static final String DIST_ADD_SAVE = "dist.add.save"; - /** - * ID-Dist.Add.discard. - */ - public static final String DIST_ADD_DISCARD = "dist.add.discard"; /** * /** ID-Dist.DELETE. */ @@ -907,7 +899,7 @@ public final class SPUIComponentIdProvider { * Artifact upload status popup - close button id. */ public static final String UPLOAD_STATUS_POPUP_CLOSE_BUTTON_ID = "artifact.upload.close.button.id"; - + /** * Artifact upload status popup - resize button id. */ @@ -917,11 +909,12 @@ public final class SPUIComponentIdProvider { * Artifact upload view - upload status button id. */ public static final String UPLOAD_STATUS_BUTTON = "artficat.upload.status.button.id"; - + /** * Artifact uplaod view - uplod status popup id. */ public static final String UPLOAD_STATUS_POPUP_ID = "artifact.upload.status.popup.id"; + /** * /* Private Constructor. */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java index 75ea912a9..1a6e8c163 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java @@ -271,7 +271,7 @@ public final class SPUIDefinitions { /** * New Target discard icon id. */ - public static final String NEW_TARGET_DISCARD = "target.add.discard"; + // public static final String NEW_TARGET_DISCARD = "target.add.discard"; /** * New Target add icon id. */ @@ -347,11 +347,12 @@ public final class SPUIDefinitions { /** * New Target tag save icon id. */ - public static final String NEW_TARGET_TAG_SAVE = "target.tag.add.save"; + // public static final String NEW_TARGET_TAG_SAVE = "target.tag.add.save"; /** * New Target tag discard icon id. */ - public static final String NEW_TARGET_TAG_DISRACD = "target.tag.add.discard"; + // public static final String NEW_TARGET_TAG_DISRACD = + // "target.tag.add.discard"; /** * New Target tag add icon id. */ From 3e46568d2c60a8f06406d7877f0616ea4dae5cac Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 17:50:31 +0200 Subject: [PATCH 27/44] Change button naming, fix selenium tests Signed-off-by: Melanie Retter --- .../eclipse/hawkbit/ui/common/CommonDialogWindow.java | 4 ++-- .../ui/distributions/disttype/DSTypeFilterHeader.java | 7 ++++--- .../rollout/rollout/AddUpdateRolloutWindowLayout.java | 11 ++++++----- .../hawkbit/ui/rollout/rollout/RolloutListGrid.java | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 322829107..5a7fdccf8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -105,7 +105,7 @@ public class CommonDialogWindow extends Window { buttonsLayout.setSizeFull(); buttonsLayout.setSpacing(true); - saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SAVE_BUTTON, "save", "", "", true, + saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SAVE_BUTTON, "Save", "", "", true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); saveButton.setSizeUndefined(); saveButton.addStyleName("default-color"); @@ -118,7 +118,7 @@ public class CommonDialogWindow extends Window { buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); buttonsLayout.setExpandRatio(saveButton, 1.0F); - cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON, "cancel", "", "", true, + cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON, "Cancel", "", "", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); cancelButton.setSizeUndefined(); cancelButton.addStyleName("default-color"); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java index 04c6e7579..5e19657d2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.distributions.disttype; import javax.annotation.PostConstruct; +import org.eclipse.hawkbit.ui.common.CommonDialogWindow; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; @@ -21,7 +22,6 @@ import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.UI; -import com.vaadin.ui.Window; /** * Distribution Set Type filter buttons header. @@ -38,6 +38,8 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { @Autowired private CreateUpdateDistSetTypeLayout createUpdateDistSetTypeLayout; + private CommonDialogWindow addUpdateWindow; + @Override @PostConstruct public void init() { @@ -59,9 +61,8 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { @Override protected void settingsIconClicked(final ClickEvent event) { - final Window addUpdateWindow = createUpdateDistSetTypeLayout.getWindow(); + addUpdateWindow = createUpdateDistSetTypeLayout.getWindow(); UI.getCurrent().addWindow(addUpdateWindow); - addUpdateWindow.setVisible(Boolean.TRUE); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 26a830aee..30f410e14 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -174,8 +174,10 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { setDefaultSaveStartGroupOption(); totalTargetsLabel.setVisible(false); groupSizeLabel.setVisible(false); - targetFilterQuery.setVisible(false); - targetFilterQueryCombo.setVisible(true); + removeComponent(targetFilterQuery); + if (getComponent(1, 3) == null) { + addComponent(targetFilterQueryCombo, 1, 3); + } actionTypeOptionGroupLayout.selectDefaultOption(); totalTargetsCount = 0L; rolloutForEdit = null; @@ -277,7 +279,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { SPUILabelDefinitions.TARGET_FILTER_QUERY_TEXT_FIELD_LENGTH); filterField.setId(SPUIComponentIdProvider.ROLLOUT_TARGET_FILTER_QUERY_FIELD); filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); - filterField.setVisible(false); filterField.setEnabled(false); filterField.setSizeUndefined(); return filterField; @@ -721,8 +722,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { noOfGroups.setEnabled(false); targetFilterQuery.setValue(rolloutForEdit.getTargetFilterQuery()); - targetFilterQuery.setVisible(true); - targetFilterQueryCombo.setVisible(false); + removeComponent(targetFilterQueryCombo); + addComponent(targetFilterQuery, 1, 3); totalTargetsCount = targetManagement.countTargetByTargetFilterQuery(rolloutForEdit.getTargetFilterQuery()); totalTargetsLabel.setValue(getTotalTargetMessage()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index 49c3b8e76..9ec44b8b4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -96,8 +96,8 @@ public class RolloutListGrid extends AbstractGrid { @Autowired private transient RolloutManagement rolloutManagement; - // @Autowired - private final AddUpdateRolloutWindowLayout addUpdateRolloutWindow = new AddUpdateRolloutWindowLayout(); + @Autowired + private AddUpdateRolloutWindowLayout addUpdateRolloutWindow; @Autowired private UINotification uiNotification; From 461ba38a5f87e340a679b206e9208cf32beb60fb Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 18:08:34 +0200 Subject: [PATCH 28/44] Fix selenium test Signed-off-by: Melanie Retter --- .../disttype/CreateUpdateDistSetTypeLayout.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 2492d5e39..38a358537 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -640,4 +640,11 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout tagPreviewBtnClicked = !tagPreviewBtnClicked; } + @Override + protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePermission) { + + super.createOptionGroup(hasCreatePermission, hasUpdatePermission); + optiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID); + } + } From ddc6580d049c6a7daa7cb44734c636659c1fd007 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 17:35:50 +0200 Subject: [PATCH 29/44] Correct component's IDs Correct ID save/cancel button Signed-off-by: Melanie Retter Correct IDs Signed-off-by: Melanie Retter Change button naming, fix selenium tests Signed-off-by: Melanie Retter Fix selenium test Signed-off-by: Melanie Retter --- .../hawkbit/ui/common/CommonDialogWindow.java | 8 ++++---- .../disttype/CreateUpdateDistSetTypeLayout.java | 7 +++++++ .../distributions/disttype/DSTypeFilterHeader.java | 7 ++++--- .../rollout/AddUpdateRolloutWindowLayout.java | 11 ++++++----- .../hawkbit/ui/rollout/rollout/RolloutListGrid.java | 4 ++-- .../hawkbit/ui/utils/SPUIComponentIdProvider.java | 13 +++---------- .../eclipse/hawkbit/ui/utils/SPUIDefinitions.java | 7 ++++--- 7 files changed, 30 insertions(+), 27 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 3f5364946..5a7fdccf8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -105,8 +105,8 @@ public class CommonDialogWindow extends Window { buttonsLayout.setSizeFull(); buttonsLayout.setSpacing(true); - saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SYSTEM_CONFIGURATION_SAVE, "save", "", "", - true, FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); + saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SAVE_BUTTON, "Save", "", "", true, + FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); saveButton.setSizeUndefined(); saveButton.addStyleName("default-color"); if (null != saveButtonClickListener) { @@ -118,8 +118,8 @@ public class CommonDialogWindow extends Window { buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); buttonsLayout.setExpandRatio(saveButton, 1.0F); - cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SYSTEM_CONFIGURATION_CANCEL, "cancel", - "", "", true, FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); + cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON, "Cancel", "", "", true, + FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); cancelButton.setSizeUndefined(); cancelButton.addStyleName("default-color"); if (null != cancelButtonClickListener) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 2492d5e39..38a358537 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -640,4 +640,11 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout tagPreviewBtnClicked = !tagPreviewBtnClicked; } + @Override + protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePermission) { + + super.createOptionGroup(hasCreatePermission, hasUpdatePermission); + optiongroup.setId(SPUIDefinitions.CREATE_OPTION_GROUP_DISTRIBUTION_SET_TYPE_ID); + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java index 04c6e7579..5e19657d2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.distributions.disttype; import javax.annotation.PostConstruct; +import org.eclipse.hawkbit.ui.common.CommonDialogWindow; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; @@ -21,7 +22,6 @@ import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.UI; -import com.vaadin.ui.Window; /** * Distribution Set Type filter buttons header. @@ -38,6 +38,8 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { @Autowired private CreateUpdateDistSetTypeLayout createUpdateDistSetTypeLayout; + private CommonDialogWindow addUpdateWindow; + @Override @PostConstruct public void init() { @@ -59,9 +61,8 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { @Override protected void settingsIconClicked(final ClickEvent event) { - final Window addUpdateWindow = createUpdateDistSetTypeLayout.getWindow(); + addUpdateWindow = createUpdateDistSetTypeLayout.getWindow(); UI.getCurrent().addWindow(addUpdateWindow); - addUpdateWindow.setVisible(Boolean.TRUE); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 26a830aee..30f410e14 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -174,8 +174,10 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { setDefaultSaveStartGroupOption(); totalTargetsLabel.setVisible(false); groupSizeLabel.setVisible(false); - targetFilterQuery.setVisible(false); - targetFilterQueryCombo.setVisible(true); + removeComponent(targetFilterQuery); + if (getComponent(1, 3) == null) { + addComponent(targetFilterQueryCombo, 1, 3); + } actionTypeOptionGroupLayout.selectDefaultOption(); totalTargetsCount = 0L; rolloutForEdit = null; @@ -277,7 +279,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { SPUILabelDefinitions.TARGET_FILTER_QUERY_TEXT_FIELD_LENGTH); filterField.setId(SPUIComponentIdProvider.ROLLOUT_TARGET_FILTER_QUERY_FIELD); filterField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY); - filterField.setVisible(false); filterField.setEnabled(false); filterField.setSizeUndefined(); return filterField; @@ -721,8 +722,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { noOfGroups.setEnabled(false); targetFilterQuery.setValue(rolloutForEdit.getTargetFilterQuery()); - targetFilterQuery.setVisible(true); - targetFilterQueryCombo.setVisible(false); + removeComponent(targetFilterQueryCombo); + addComponent(targetFilterQuery, 1, 3); totalTargetsCount = targetManagement.countTargetByTargetFilterQuery(rolloutForEdit.getTargetFilterQuery()); totalTargetsLabel.setValue(getTotalTargetMessage()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index 49c3b8e76..9ec44b8b4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -96,8 +96,8 @@ public class RolloutListGrid extends AbstractGrid { @Autowired private transient RolloutManagement rolloutManagement; - // @Autowired - private final AddUpdateRolloutWindowLayout addUpdateRolloutWindow = new AddUpdateRolloutWindowLayout(); + @Autowired + private AddUpdateRolloutWindowLayout addUpdateRolloutWindow; @Autowired private UINotification uiNotification; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java index d5fcaa265..b4e89a191 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIComponentIdProvider.java @@ -112,14 +112,6 @@ public final class SPUIComponentIdProvider { * ID-Dist.JVM delete icon. */ public static final String DIST_DELETE_MODULE = "dist.delete.module."; - /** - * ID-Dist.Add.save. - */ - public static final String DIST_ADD_SAVE = "dist.add.save"; - /** - * ID-Dist.Add.discard. - */ - public static final String DIST_ADD_DISCARD = "dist.add.discard"; /** * /** ID-Dist.DELETE. */ @@ -907,7 +899,7 @@ public final class SPUIComponentIdProvider { * Artifact upload status popup - close button id. */ public static final String UPLOAD_STATUS_POPUP_CLOSE_BUTTON_ID = "artifact.upload.close.button.id"; - + /** * Artifact upload status popup - resize button id. */ @@ -917,11 +909,12 @@ public final class SPUIComponentIdProvider { * Artifact upload view - upload status button id. */ public static final String UPLOAD_STATUS_BUTTON = "artficat.upload.status.button.id"; - + /** * Artifact uplaod view - uplod status popup id. */ public static final String UPLOAD_STATUS_POPUP_ID = "artifact.upload.status.popup.id"; + /** * /* Private Constructor. */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java index 75ea912a9..1a6e8c163 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIDefinitions.java @@ -271,7 +271,7 @@ public final class SPUIDefinitions { /** * New Target discard icon id. */ - public static final String NEW_TARGET_DISCARD = "target.add.discard"; + // public static final String NEW_TARGET_DISCARD = "target.add.discard"; /** * New Target add icon id. */ @@ -347,11 +347,12 @@ public final class SPUIDefinitions { /** * New Target tag save icon id. */ - public static final String NEW_TARGET_TAG_SAVE = "target.tag.add.save"; + // public static final String NEW_TARGET_TAG_SAVE = "target.tag.add.save"; /** * New Target tag discard icon id. */ - public static final String NEW_TARGET_TAG_DISRACD = "target.tag.add.discard"; + // public static final String NEW_TARGET_TAG_DISRACD = + // "target.tag.add.discard"; /** * New Target tag add icon id. */ From d9046bb9cc24e3caa5a3fdb37d48f8ae8dc9707f Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 7 Jun 2016 18:38:39 +0200 Subject: [PATCH 30/44] Upgraded Spring AMQP. Added task scheduler. Improved executor shutdown. Signed-off-by: Kai Zimmermann --- .../simulator/amqp/MessageService.java | 17 ------ ...ableDelegatingSecurityContextExecutor.java | 59 +++++++++++++++++++ .../scheduling/ExecutorAutoConfiguration.java | 36 ++++++++--- pom.xml | 1 + 4 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/MessageService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/MessageService.java index bd48bbe12..8bb1e1292 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/MessageService.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/MessageService.java @@ -82,21 +82,4 @@ public class MessageService { clazz.getTypeName()); return (T) rabbitTemplate.getMessageConverter().fromMessage(message); } - - /** - * Method to verify if lwm2m header is set. - * - * @param message - * the message with the header - * @param header - * the header to verify - */ - public void checkIfLwm2mHeaderEmpty(final Message message, final String header) { - final Object headerObject = message.getMessageProperties().getHeaders().get(header); - if (null == headerObject) { - logAndThrowMessageError(message, "Header of " + header + "empty."); - } - - } - } diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java new file mode 100644 index 000000000..1160e12e0 --- /dev/null +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java @@ -0,0 +1,59 @@ +/** + * 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.autoconfigure.scheduling; + +import java.util.List; +import java.util.concurrent.Executor; +import java.util.concurrent.ThreadPoolExecutor; + +import org.springframework.context.annotation.Bean; +import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; + +/** + * Extension for {@link DelegatingSecurityContextExecutor} to allow proper + * shutdown at {@link Bean} destruction time. + * + */ +public class CloseableDelegatingSecurityContextExecutor extends DelegatingSecurityContextExecutor { + + private final ThreadPoolExecutor executor; + + /** + * Creates a new {@link CloseableDelegatingSecurityContextExecutor} that + * uses the current {@link SecurityContext} from the + * {@link SecurityContextHolder} at the time the task is submitted. + * + * @param delegate + * the {@link Executor} to delegate to. Cannot be null. + */ + public CloseableDelegatingSecurityContextExecutor(final ThreadPoolExecutor delegate) { + super(delegate); + executor = delegate; + } + + /** + * Initiates an orderly shutdown in which previously submitted tasks are + * executed, but no new tasks will be accepted. + */ + public void shutdown() { + executor.shutdown(); + } + + /** + * Initiates an immediate shutdown. + * + * @return a list of the tasks that were awaiting execution + */ + public List shutdownNow() { + return executor.shutdownNow(); + } + +} diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java index 43a096e7d..d5bcdd0f1 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java @@ -21,7 +21,10 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; +import org.springframework.core.task.TaskExecutor; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -39,9 +42,10 @@ public class ExecutorAutoConfiguration { private AsyncConfigurerThreadpoolProperties asyncConfigurerProperties; /** - * @return ExecutorService for general purpose multi threaded operations + * @return ExecutorService for general purpose multi threaded operations. + * Tries an orderly shutdown when destroyed. */ - @Bean + @Bean(destroyMethod = "shutdown") @ConditionalOnMissingBean public Executor asyncExecutor() { final BlockingQueue blockingQueue = new ArrayBlockingQueue<>( @@ -53,20 +57,38 @@ public class ExecutorAutoConfiguration { threadPoolExecutor.setRejectedExecutionHandler((r, executor) -> LOGGER.warn( "Reject runnable for centralExecutorService, reached limit of queue size {}", executor.getQueue().size())); - return new DelegatingSecurityContextExecutor(threadPoolExecutor); + return new CloseableDelegatingSecurityContextExecutor(threadPoolExecutor); } /** - * @return the executor for UI background processes. + * @return the executor for UI background processes. Run immediate shutdown + * when destroyed. */ - @Bean(name = "uiExecutor") + @Bean(name = "uiExecutor", destroyMethod = "shutdownNow") @ConditionalOnMissingBean(name = "uiExecutor") public Executor uiExecutor() { final BlockingQueue blockingQueue = new ArrayBlockingQueue<>(20); final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 20, 10000, TimeUnit.MILLISECONDS, blockingQueue, new ThreadFactoryBuilder().setNameFormat("ui-executor-pool-%d").build()); threadPoolExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - return new DelegatingSecurityContextExecutor(threadPoolExecutor); + return new CloseableDelegatingSecurityContextExecutor(threadPoolExecutor); } + /** + * @return {@link TaskExecutor} for task execution + */ + @Bean + @ConditionalOnMissingBean + public TaskExecutor taskExecutor() { + return new ConcurrentTaskExecutor(asyncExecutor()); + } + + /** + * @return {@link TaskScheduler} for scheduled tasks + */ + @Bean + @ConditionalOnMissingBean + public TaskScheduler taskScheduler() { + return new ThreadPoolTaskScheduler(); + } } diff --git a/pom.xml b/pom.xml index 33ad1f81e..c535ba2d8 100644 --- a/pom.xml +++ b/pom.xml @@ -69,6 +69,7 @@ 2.5.5 5.2.4.Final 1.2.0.RELEASE + 1.6.0.RELEASE Fowler-SR1 3.2.2 From 1392798bf75081ac8bdc8f9f025b8bb7ff30cd84 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Wed, 8 Jun 2016 10:54:29 +0200 Subject: [PATCH 31/44] Fix some small clean code issues Signed-off-by: SirWayne --- .../SoftwareModuleAddUpdateWindow.java | 79 +++++-------- .../CreateUpdateSoftwareTypeLayout.java | 55 +++------ .../hawkbit/ui/common/CommonDialogWindow.java | 109 ++++++++++-------- .../SPUIButtonStyleBorderWithIcon.java | 29 ++--- 4 files changed, 116 insertions(+), 156 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 838af6611..ddf229651 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -208,35 +208,17 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se /* add main layout to the window */ window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null, - SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> save(), event -> closeThisWindow(), null); + SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveOrUpdate(), event -> closeThisWindow(), null); window.getButtonsLayout().removeStyleName("actionButtonsMargin"); nameTextField.focus(); } - /** - * add a TextChangeListener to the description TextField - */ private void addDescriptionTextChangeListener() { - descTextArea.addTextChangeListener(event -> { - if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) { - window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); - } else { - window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); - } - }); + descTextArea.addTextChangeListener(event -> window.setSaveButtonEnabled(hasDescriptionChanged(event))); } - /** - * add a TextChangeListener to the vendor TextField - */ private void addVendorTextChangeListener() { - vendorTextField.addTextChangeListener(event -> { - if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) { - window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); - } else { - window.setSaveButtonEnabled(hasDescriptionOrVendorChanged(event)); - } - }); + vendorTextField.addTextChangeListener(event -> window.setSaveButtonEnabled(hasVendorChanged(event))); } /** @@ -248,23 +230,25 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se final String vendor = HawkbitCommonUtil.trimAndNullIfEmpty(vendorTextField.getValue()); final String description = HawkbitCommonUtil.trimAndNullIfEmpty(descTextArea.getValue()); final String type = typeComboBox.getValue() != null ? typeComboBox.getValue().toString() : null; - if (mandatoryCheck(name, version, type)) { - if (HawkbitCommonUtil.isDuplicate(name, version, type)) { - uiNotifcation.displayValidationError( - i18n.get("message.duplicate.softwaremodule", new Object[] { name, version })); - } else { - final SoftwareModule newBaseSoftwareModule = HawkbitCommonUtil.addNewBaseSoftware(entityFactory, name, - version, vendor, softwareManagement.findSoftwareModuleTypeByName(type), description); - if (newBaseSoftwareModule != null) { - /* display success message */ - uiNotifcation.displaySuccess(i18n.get("message.save.success", new Object[] { - newBaseSoftwareModule.getName() + ":" + newBaseSoftwareModule.getVersion() })); - eventBus.publish(this, - new SoftwareModuleEvent(BaseEntityEventType.NEW_ENTITY, newBaseSoftwareModule)); - } - // close the window - closeThisWindow(); + + if (!mandatoryCheck(name, version, type)) { + return; + } + + if (HawkbitCommonUtil.isDuplicate(name, version, type)) { + uiNotifcation.displayValidationError( + i18n.get("message.duplicate.softwaremodule", new Object[] { name, version })); + } else { + final SoftwareModule newBaseSoftwareModule = HawkbitCommonUtil.addNewBaseSoftware(entityFactory, name, + version, vendor, softwareManagement.findSoftwareModuleTypeByName(type), description); + if (newBaseSoftwareModule != null) { + /* display success message */ + uiNotifcation.displaySuccess(i18n.get("message.save.success", + new Object[] { newBaseSoftwareModule.getName() + ":" + newBaseSoftwareModule.getVersion() })); + eventBus.publish(this, new SoftwareModuleEvent(BaseEntityEventType.NEW_ENTITY, newBaseSoftwareModule)); } + // close the window + closeThisWindow(); } } @@ -343,29 +327,20 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se return isValid; } - /** - * saves or updates a softwareModule depending on the information if it is a - * new softwareModule or an existing one - */ - private void save() { + private void saveOrUpdate() { if (editSwModule) { updateSwModule(); } else { - /* add new or update software module */ addNewBaseSoftware(); } } - /** - * Checks if the description and vendor have changed and set the button - * enabled/disabled - * - * @param event - * TextChangeEvent - * @return Boolean - */ - private boolean hasDescriptionOrVendorChanged(final TextChangeEvent event) { + private boolean hasDescriptionChanged(final TextChangeEvent event) { return !(event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)); } + private boolean hasVendorChanged(final TextChangeEvent event) { + return !(event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)); + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index f02e91d2e..85844b917 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -43,7 +43,7 @@ import com.vaadin.ui.components.colorpicker.ColorSelector; import com.vaadin.ui.themes.ValoTheme; /** - * + * Layout for the create or update software module type. * */ @SpringComponent @@ -198,25 +198,24 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout @Override protected void save(final ClickEvent event) { - if (mandatoryValuesPresent()) { - final SoftwareModuleType existingSMTypeByKey = swTypeManagementService - .findSoftwareModuleTypeByKey(typeKey.getValue()); - final SoftwareModuleType existingSMTypeByName = swTypeManagementService - .findSoftwareModuleTypeByName(tagName.getValue()); - if (optiongroup.getValue().equals(createTypeStr)) { - if (!checkIsDuplicateByKey(existingSMTypeByKey) && !checkIsDuplicate(existingSMTypeByName)) { - createNewSWModuleType(); - } - } else { + if (!mandatoryValuesPresent()) { + return; + } - updateSWModuleType(existingSMTypeByName); + final SoftwareModuleType existingSMTypeByKey = swTypeManagementService + .findSoftwareModuleTypeByKey(typeKey.getValue()); + final SoftwareModuleType existingSMTypeByName = swTypeManagementService + .findSoftwareModuleTypeByName(tagName.getValue()); + if (optiongroup.getValue().equals(createTypeStr)) { + if (!checkIsDuplicateByKey(existingSMTypeByKey) && !checkIsDuplicate(existingSMTypeByName)) { + createNewSWModuleType(); } + } else { + + updateSWModuleType(existingSMTypeByName); } } - /** - * Create new tag. - */ private void createNewSWModuleType() { int assignNumber = 0; final String colorPicked = ColorPickerHelper.getColorPickedString(getColorPickerLayout().getSelPreview()); @@ -253,9 +252,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout } } - /** - * update tag. - */ private void updateSWModuleType(final SoftwareModuleType existingType) { final String typeNameValue = HawkbitCommonUtil.trimAndNullIfEmpty(tagName.getValue()); @@ -307,29 +303,6 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout tagPreviewBtnClicked = !tagPreviewBtnClicked; } - /** - * 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; - } - @Override public void addColorChangeListener(final ColorChangeListener listener) { LOG.debug("inside addColorChangeListener"); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 5a7fdccf8..247ad0c8f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -8,14 +8,12 @@ */ package org.eclipse.hawkbit.ui.common; +import static com.google.common.base.Preconditions.checkNotNull; + import org.apache.commons.lang3.StringUtils; -import org.eclipse.hawkbit.ui.UiProperties; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleBorderWithIcon; import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.server.FontAwesome; @@ -39,15 +37,13 @@ public class CommonDialogWindow extends Window { private static final long serialVersionUID = -1321949234316858703L; - private static final Logger LOG = LoggerFactory.getLogger(CommonDialogWindow.class); - private final VerticalLayout mainLayout = new VerticalLayout(); - private String caption; + private final String caption; - private Component content; + private final Component content; - private String helpLink; + private final String helpLink; private Button saveButton; @@ -57,25 +53,38 @@ public class CommonDialogWindow extends Window { protected ValueChangeListener buttonEnableListener; - @Autowired - private transient UiProperties uiProperties; + private final ClickListener saveButtonClickListener; - public CommonDialogWindow() { - - init(null, null); - } + private final ClickListener cancelButtonClickListener; + /** + * Constructor. + * + * @param caption + * the caption + * @param content + * the content + * @param helpLink + * the helpLinks + * @param saveButtonClickListener + * the saveButtonClickListener + * @param cancelButtonClickListener + * the cancelButtonClickListener + */ public CommonDialogWindow(final String caption, final Component content, final String helpLink, final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener) { - + checkNotNull(saveButtonClickListener); + checkNotNull(cancelButtonClickListener); this.caption = caption; this.content = content; this.helpLink = helpLink; + this.saveButtonClickListener = saveButtonClickListener; + this.cancelButtonClickListener = cancelButtonClickListener; - init(saveButtonClickListener, cancelButtonClickListener); + init(); } - public void init(final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener) { + private final void init() { if (content instanceof AbstractOrderedLayout) { ((AbstractOrderedLayout) content).setSpacing(true); @@ -85,8 +94,7 @@ public class CommonDialogWindow extends Window { if (null != content) { mainLayout.addComponent(content); } - final HorizontalLayout buttonLayout = createActionButtonsLayout(saveButtonClickListener, - cancelButtonClickListener); + final HorizontalLayout buttonLayout = createActionButtonsLayout(); mainLayout.addComponent(buttonLayout); mainLayout.setComponentAlignment(buttonLayout, Alignment.TOP_CENTER); @@ -98,38 +106,15 @@ public class CommonDialogWindow extends Window { addStyleName("fontsize"); } - private HorizontalLayout createActionButtonsLayout(final ClickListener saveButtonClickListener, - final ClickListener cancelButtonClickListener) { + private HorizontalLayout createActionButtonsLayout() { buttonsLayout = new HorizontalLayout(); buttonsLayout.setSizeFull(); buttonsLayout.setSpacing(true); - saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SAVE_BUTTON, "Save", "", "", true, - FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); - saveButton.setSizeUndefined(); - saveButton.addStyleName("default-color"); - if (null != saveButtonClickListener) { - saveButton.addClickListener(saveButtonClickListener); - } else { - throw new IllegalArgumentException("no ClickListener for save button specified"); - } - buttonsLayout.addComponent(saveButton); - buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); - buttonsLayout.setExpandRatio(saveButton, 1.0F); + createSaveButton(); - cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON, "Cancel", "", "", true, - FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); - cancelButton.setSizeUndefined(); - cancelButton.addStyleName("default-color"); - if (null != cancelButtonClickListener) { - cancelButton.addClickListener(cancelButtonClickListener); - } else { - throw new IllegalArgumentException("no ClickListener for cancel button specified"); - } - buttonsLayout.addComponent(cancelButton); - buttonsLayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_LEFT); - buttonsLayout.setExpandRatio(cancelButton, 1.0F); + createCancelButton(); buttonsLayout.addStyleName("actionButtonsMargin"); addHelpLink(); @@ -137,13 +122,37 @@ public class CommonDialogWindow extends Window { return buttonsLayout; } + private void createCancelButton() { + cancelButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON, "Cancel", "", "", true, + FontAwesome.TIMES, SPUIButtonStyleBorderWithIcon.class); + cancelButton.setSizeUndefined(); + cancelButton.addStyleName("default-color"); + cancelButton.addClickListener(cancelButtonClickListener); + + buttonsLayout.addComponent(cancelButton); + buttonsLayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_LEFT); + buttonsLayout.setExpandRatio(cancelButton, 1.0F); + } + + private void createSaveButton() { + saveButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.SAVE_BUTTON, "Save", "", "", true, + FontAwesome.SAVE, SPUIButtonStyleBorderWithIcon.class); + saveButton.setSizeUndefined(); + saveButton.addStyleName("default-color"); + saveButton.addClickListener(saveButtonClickListener); + buttonsLayout.addComponent(saveButton); + buttonsLayout.setComponentAlignment(saveButton, Alignment.MIDDLE_RIGHT); + buttonsLayout.setExpandRatio(saveButton, 1.0F); + } + private void addHelpLink() { - if (StringUtils.isNotEmpty(helpLink)) { - final Link helpLinkComponent = SPUIComponentProvider.getHelpLink(helpLink); - buttonsLayout.addComponent(helpLinkComponent); - buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT); + if (StringUtils.isEmpty(helpLink)) { + return; } + final Link helpLinkComponent = SPUIComponentProvider.getHelpLink(helpLink); + buttonsLayout.addComponent(helpLinkComponent); + buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT); } public void setSaveButtonEnabled(final boolean enabled) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java index be72dd700..17aece6a7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonStyleBorderWithIcon.java @@ -12,13 +12,13 @@ import com.vaadin.server.Resource; import com.vaadin.ui.Button; import com.vaadin.ui.themes.ValoTheme; +/** + * Button with icon decorator. + * + */ public class SPUIButtonStyleBorderWithIcon implements SPUIButtonDecorator { - Button button; - - /** - * Style for button: Primary. - */ + private Button button; @Override public Button decorate(final Button button, final String style, final boolean setStyle, final Resource icon) { @@ -36,19 +36,22 @@ public class SPUIButtonStyleBorderWithIcon implements SPUIButtonDecorator { private void setButtonStyle(final String style, final boolean setStyle) { - if (null != style) { - if (setStyle) { - button.setStyleName(style); - } else { - button.addStyleName(style); - } + if (style == null) { + return; + } + + if (setStyle) { + button.setStyleName(style); + } else { + button.addStyleName(style); } } private void setButtonIcon(final Resource icon) { - if (null != icon) { - button.setIcon(icon); + if (icon == null) { + return; } + button.setIcon(icon); } } From 4f23fb1377c61a81d2d6b8d83f98ce3c9f1d1b2c Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 8 Jun 2016 11:58:59 +0200 Subject: [PATCH 32/44] Created separate bean for poolexecutor. Signed-off-by: Kai Zimmermann --- ...ableDelegatingSecurityContextExecutor.java | 59 ------------------- .../scheduling/ExecutorAutoConfiguration.java | 26 +++++--- 2 files changed, 18 insertions(+), 67 deletions(-) delete mode 100644 hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java deleted file mode 100644 index 1160e12e0..000000000 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/CloseableDelegatingSecurityContextExecutor.java +++ /dev/null @@ -1,59 +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.autoconfigure.scheduling; - -import java.util.List; -import java.util.concurrent.Executor; -import java.util.concurrent.ThreadPoolExecutor; - -import org.springframework.context.annotation.Bean; -import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; - -/** - * Extension for {@link DelegatingSecurityContextExecutor} to allow proper - * shutdown at {@link Bean} destruction time. - * - */ -public class CloseableDelegatingSecurityContextExecutor extends DelegatingSecurityContextExecutor { - - private final ThreadPoolExecutor executor; - - /** - * Creates a new {@link CloseableDelegatingSecurityContextExecutor} that - * uses the current {@link SecurityContext} from the - * {@link SecurityContextHolder} at the time the task is submitted. - * - * @param delegate - * the {@link Executor} to delegate to. Cannot be null. - */ - public CloseableDelegatingSecurityContextExecutor(final ThreadPoolExecutor delegate) { - super(delegate); - executor = delegate; - } - - /** - * Initiates an orderly shutdown in which previously submitted tasks are - * executed, but no new tasks will be accepted. - */ - public void shutdown() { - executor.shutdown(); - } - - /** - * Initiates an immediate shutdown. - * - * @return a list of the tasks that were awaiting execution - */ - public List shutdownNow() { - return executor.shutdownNow(); - } - -} diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java index d5bcdd0f1..4fd55cbaa 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java @@ -25,6 +25,7 @@ import org.springframework.core.task.TaskExecutor; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; import com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -42,12 +43,21 @@ public class ExecutorAutoConfiguration { private AsyncConfigurerThreadpoolProperties asyncConfigurerProperties; /** - * @return ExecutorService for general purpose multi threaded operations. - * Tries an orderly shutdown when destroyed. + * @return ExecutorService with security context availability in thread + * execution.. */ - @Bean(destroyMethod = "shutdown") + @Bean @ConditionalOnMissingBean public Executor asyncExecutor() { + return new DelegatingSecurityContextExecutor(threadPoolExecutor()); + } + + /** + * @return central ThreadPoolExecutor for general purpose multi threaded + * operations. Tries an orderly shutdown when destroyed. + */ + @Bean(destroyMethod = "shutdown") + public ThreadPoolExecutor threadPoolExecutor() { final BlockingQueue blockingQueue = new ArrayBlockingQueue<>( asyncConfigurerProperties.getQueuesize()); final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(asyncConfigurerProperties.getCorethreads(), @@ -57,21 +67,21 @@ public class ExecutorAutoConfiguration { threadPoolExecutor.setRejectedExecutionHandler((r, executor) -> LOGGER.warn( "Reject runnable for centralExecutorService, reached limit of queue size {}", executor.getQueue().size())); - return new CloseableDelegatingSecurityContextExecutor(threadPoolExecutor); + + return threadPoolExecutor; } /** - * @return the executor for UI background processes. Run immediate shutdown - * when destroyed. + * @return the executor for UI background processes. */ - @Bean(name = "uiExecutor", destroyMethod = "shutdownNow") + @Bean(name = "uiExecutor") @ConditionalOnMissingBean(name = "uiExecutor") public Executor uiExecutor() { final BlockingQueue blockingQueue = new ArrayBlockingQueue<>(20); final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 20, 10000, TimeUnit.MILLISECONDS, blockingQueue, new ThreadFactoryBuilder().setNameFormat("ui-executor-pool-%d").build()); threadPoolExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - return new CloseableDelegatingSecurityContextExecutor(threadPoolExecutor); + return new DelegatingSecurityContextExecutor(threadPoolExecutor); } /** From 0beef57df77e37346bf7ad5a79aa30330e27f9b8 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 9 Jun 2016 11:57:44 +0200 Subject: [PATCH 33/44] Added rabbit connection heartbeat for DMF. Signed-off-by: Kai Zimmermann --- .../scheduling/ExecutorAutoConfiguration.java | 17 ++++-- .../hawkbit/amqp/AmqpConfiguration.java | 54 +++++++++++++++++-- .../eclipse/hawkbit/amqp/AmqpProperties.java | 16 ++++++ 3 files changed, 80 insertions(+), 7 deletions(-) diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java index 4fd55cbaa..4f606f1b1 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/ExecutorAutoConfiguration.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.autoconfigure.scheduling; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -22,7 +23,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.task.TaskExecutor; -import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; @@ -94,11 +94,22 @@ public class ExecutorAutoConfiguration { } /** - * @return {@link TaskScheduler} for scheduled tasks + * @return {@link ScheduledExecutorService} based on + * {@link #threadPoolTaskScheduler()}. */ @Bean @ConditionalOnMissingBean - public TaskScheduler taskScheduler() { + public ScheduledExecutorService scheduledExecutorService() { + return threadPoolTaskScheduler().getScheduledExecutor(); + } + + /** + * @return {@link ThreadPoolTaskScheduler} for scheduled operations. + */ + @Bean + @ConditionalOnMissingBean + public ThreadPoolTaskScheduler threadPoolTaskScheduler() { return new ThreadPoolTaskScheduler(); } + } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index 20a11713f..adf56e10f 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -8,21 +8,28 @@ */ package org.eclipse.hawkbit.amqp; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadPoolExecutor; + import org.eclipse.hawkbit.dmf.amqp.api.AmqpSettings; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.FanoutExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; +import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.amqp.RabbitProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; /** * The spring AMQP configuration which is enabled by using the profile @@ -39,7 +46,46 @@ public class AmqpConfiguration { protected AmqpDeadletterProperties amqpDeadletterProperties; @Autowired - private ConnectionFactory connectionFactory; + private ConnectionFactory rabbitConnectionFactory; + + @Configuration + protected static class HawkBitRabbitConnectionFactoryCreator { + @Autowired + @Qualifier("threadPoolExecutor") + private ThreadPoolExecutor threadPoolExecutor; + + @Autowired + private ScheduledExecutorService scheduledExecutorService; + + @Autowired + protected AmqpProperties amqpProperties; + + @Bean + public ConnectionFactory rabbitConnectionFactory(final RabbitProperties config) { + final CachingConnectionFactory factory = new CachingConnectionFactory(); + factory.setRequestedHeartBeat(amqpProperties.getRequestedHeartBeat()); + factory.setExecutor(threadPoolExecutor); + factory.getRabbitConnectionFactory().setHeartbeatExecutor(scheduledExecutorService); + + final String addresses = config.getAddresses(); + factory.setAddresses(addresses); + if (config.getHost() != null) { + factory.setHost(config.getHost()); + factory.setPort(config.getPort()); + } + if (config.getUsername() != null) { + factory.setUsername(config.getUsername()); + } + if (config.getPassword() != null) { + factory.setPassword(config.getPassword()); + } + if (config.getVirtualHost() != null) { + factory.setVirtualHost(config.getVirtualHost()); + } + return factory; + } + + } /** * Create a {@link RabbitAdmin} and ignore declaration exceptions. @@ -49,7 +95,7 @@ public class AmqpConfiguration { */ @Bean public RabbitAdmin rabbitAdmin() { - final RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); + final RabbitAdmin rabbitAdmin = new RabbitAdmin(rabbitConnectionFactory); rabbitAdmin.setIgnoreDeclarationExceptions(true); return rabbitAdmin; } @@ -61,7 +107,7 @@ public class AmqpConfiguration { */ @Bean public RabbitTemplate rabbitTemplate() { - final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); + final RabbitTemplate rabbitTemplate = new RabbitTemplate(rabbitConnectionFactory); rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter()); return rabbitTemplate; } @@ -159,7 +205,7 @@ public class AmqpConfiguration { public SimpleRabbitListenerContainerFactory listenerContainerFactory() { final SimpleRabbitListenerContainerFactory containerFactory = new SimpleRabbitListenerContainerFactory(); containerFactory.setDefaultRequeueRejected(false); - containerFactory.setConnectionFactory(connectionFactory); + containerFactory.setConnectionFactory(rabbitConnectionFactory); containerFactory.setMissingQueuesFatal(amqpProperties.isMissingQueuesFatal()); return containerFactory; } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java index ce6068ce8..5b06c3318 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.amqp; +import java.util.concurrent.TimeUnit; + import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -38,6 +40,11 @@ public class AmqpProperties { */ private boolean missingQueuesFatal = false; + /** + * Requested heartbeat interval from broker in {@link TimeUnit#SECONDS}. + */ + private int requestedHeartBeat = 60; + /** * Is missingQueuesFatal enabled * @@ -102,4 +109,13 @@ public class AmqpProperties { public void setReceiverQueue(final String receiverQueue) { this.receiverQueue = receiverQueue; } + + public int getRequestedHeartBeat() { + return requestedHeartBeat; + } + + public void setRequestedHeartBeat(final int requestedHeartBeat) { + this.requestedHeartBeat = requestedHeartBeat; + } + } From 00013a7f36034648544143149d2f9a6288c2a5c1 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 9 Jun 2016 13:00:47 +0200 Subject: [PATCH 34/44] Added executor config to tests. Signed-off-by: Kai Zimmermann --- .../hawkbit/AmqpTestConfiguration.java | 68 +++++++++++++++++++ .../PropertyBasedArtifactUrlHandlerTest.java | 1 + 2 files changed, 69 insertions(+) diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/AmqpTestConfiguration.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/AmqpTestConfiguration.java index c9be9ffa6..075313a19 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/AmqpTestConfiguration.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/AmqpTestConfiguration.java @@ -8,6 +8,14 @@ */ package org.eclipse.hawkbit; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Executor; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import org.eclipse.hawkbit.amqp.AmqpProperties; import org.eclipse.hawkbit.amqp.AmqpSenderService; import org.eclipse.hawkbit.amqp.DefaultAmqpSenderService; import org.eclipse.hawkbit.repository.jpa.model.helper.SystemSecurityContextHolder; @@ -16,13 +24,22 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.TaskExecutor; +import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.security.concurrent.DelegatingSecurityContextExecutor; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; /** * */ @Configuration +@EnableConfigurationProperties({ AmqpProperties.class }) public class AmqpTestConfiguration { /** * @return the {@link SystemSecurityContext} singleton bean which make it @@ -56,4 +73,55 @@ public class AmqpTestConfiguration { public AmqpSenderService amqpSenderServiceBean(final RabbitTemplate rabbitTemplate) { return new DefaultAmqpSenderService(rabbitTemplate); } + + /** + * @return ExecutorService with security context availability in thread + * execution.. + */ + @Bean + @ConditionalOnMissingBean + public Executor asyncExecutor() { + return new DelegatingSecurityContextExecutor(threadPoolExecutor()); + } + + /** + * @return central ThreadPoolExecutor for general purpose multi threaded + * operations. Tries an orderly shutdown when destroyed. + */ + @Bean(destroyMethod = "shutdown") + public ThreadPoolExecutor threadPoolExecutor() { + final BlockingQueue blockingQueue = new ArrayBlockingQueue<>(10); + final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 10, 1000, TimeUnit.MILLISECONDS, + blockingQueue, new ThreadFactoryBuilder().setNameFormat("central-executor-pool-%d").build()); + + return threadPoolExecutor; + } + + /** + * @return {@link TaskExecutor} for task execution + */ + @Bean + @ConditionalOnMissingBean + public TaskExecutor taskExecutor() { + return new ConcurrentTaskExecutor(asyncExecutor()); + } + + /** + * @return {@link ScheduledExecutorService} based on + * {@link #threadPoolTaskScheduler()}. + */ + @Bean + @ConditionalOnMissingBean + public ScheduledExecutorService scheduledExecutorService() { + return threadPoolTaskScheduler().getScheduledExecutor(); + } + + /** + * @return {@link ThreadPoolTaskScheduler} for scheduled operations. + */ + @Bean + @ConditionalOnMissingBean + public ThreadPoolTaskScheduler threadPoolTaskScheduler() { + return new ThreadPoolTaskScheduler(); + } } diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java index c67d6cf47..4d7912211 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java @@ -33,6 +33,7 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Test to generate the artifact download URL") @SpringApplicationConfiguration(classes = { AmqpTestConfiguration.class, org.eclipse.hawkbit.RepositoryApplicationConfiguration.class }) + public class PropertyBasedArtifactUrlHandlerTest extends AbstractIntegrationTestWithMongoDB { private static final String HTTPS_LOCALHOST = "https://localhost:8080/"; From 8ae8696dfa4b2dc464c34c97d3760a1078c2e20d Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 9 Jun 2016 13:40:24 +0200 Subject: [PATCH 35/44] remove maximize button Signed-off-by: Melanie Retter --- .../java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java index 247ad0c8f..29519f162 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/CommonDialogWindow.java @@ -100,7 +100,7 @@ public class CommonDialogWindow extends Window { setCaption(caption); setContent(mainLayout); - setResizable(true); + setResizable(false); center(); setModal(true); addStyleName("fontsize"); From c7ab3fe06d33a34441d33ee5e82e9568bc7c86fa Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 9 Jun 2016 16:49:03 +0200 Subject: [PATCH 36/44] ColorPicker closes when second click on previewButton Signed-off-by: Melanie Retter --- .../ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java | 2 ++ .../distributions/disttype/CreateUpdateDistSetTypeLayout.java | 2 ++ .../hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java index 85844b917..d6ecd70dd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/CreateUpdateSoftwareTypeLayout.java @@ -299,6 +299,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor()); mainLayout.addComponent(colorPickerLayout, 1, 0); mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); + } else { + mainLayout.removeComponent(colorPickerLayout); } tagPreviewBtnClicked = !tagPreviewBtnClicked; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index a4a9eee35..cf4c09def 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -638,6 +638,8 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout getColorPickerLayout().getSelPreview().setColor(getColorPickerLayout().getSelectedColor()); mainLayout.addComponent(colorPickerLayout, 1, 0); mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); + } else { + mainLayout.removeComponent(colorPickerLayout); } tagPreviewBtnClicked = !tagPreviewBtnClicked; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java index d564accd3..7a083d52f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/layouts/AbstractCreateUpdateTagLayout.java @@ -237,6 +237,8 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent mainLayout.getComponent(1, 0); mainLayout.addComponent(colorPickerLayout, 1, 0); mainLayout.setComponentAlignment(colorPickerLayout, Alignment.MIDDLE_CENTER); + } else { + mainLayout.removeComponent(colorPickerLayout); } tagPreviewBtnClicked = !tagPreviewBtnClicked; } From 8e17400d93028b9edb06391f69c5385ded10c0b4 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 9 Jun 2016 16:54:38 +0200 Subject: [PATCH 37/44] ControllerID is focused when opening the configure target dialog Signed-off-by: Melanie Retter --- .../ui/management/targettable/TargetAddUpdateWindowLayout.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java index 5a26df572..3d1caa6e7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetAddUpdateWindowLayout.java @@ -133,7 +133,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent { if (Boolean.TRUE.equals(editTarget)) { madatoryLabel.setVisible(Boolean.FALSE); } - nameTextField.focus(); + controllerIDTextField.focus(); } private void addListeners() { From cc7cb20b3eac6d025cb7ac3ef007678680cd17f8 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 9 Jun 2016 17:50:45 +0200 Subject: [PATCH 38/44] Upgrade hateoas that removes transitive dependency that failed IP check. Signed-off-by: Kai Zimmermann --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 33ad1f81e..af5151124 100644 --- a/pom.xml +++ b/pom.xml @@ -69,6 +69,7 @@ 2.5.5 5.2.4.Final 1.2.0.RELEASE + 0.18.0.RELEASE Fowler-SR1 3.2.2 From 2b2ba523f5ef4a3dee396e5f55381d095aef8adb Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Fri, 10 Jun 2016 11:00:58 +0200 Subject: [PATCH 39/44] Fixed bug where DS could not be delete as it was assigned to a rollout. Signed-off-by: Kai Zimmermann --- .../jpa/DistributionSetRepository.java | 21 ++++++-- .../jpa/JpaDistributionSetManagement.java | 4 +- .../jpa/DistributionSetManagementTest.java | 48 ++++++++++++++----- 3 files changed, 57 insertions(+), 16 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/DistributionSetRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/DistributionSetRepository.java index 1ab6cbe08..83791a66d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/DistributionSetRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/DistributionSetRepository.java @@ -16,7 +16,9 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetTag; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetType; import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule; +import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.DistributionSet; +import org.eclipse.hawkbit.repository.model.Rollout; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.Tag; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; @@ -82,15 +84,26 @@ public interface DistributionSetRepository List findByModules(JpaSoftwareModule module); /** - * Finds {@link DistributionSet}s based on given ID if they are not assigned - * yet to an {@link UpdateAction}, i.e. unused. + * Finds {@link DistributionSet}s based on given ID that are assigned yet to + * an {@link Action}, i.e. in use. * * @param ids * to search for - * @return + * @return list of {@link DistributionSet#getId()} */ @Query("select ac.distributionSet.id from JpaAction ac where ac.distributionSet.id in :ids") - List findAssignedDistributionSetsById(@Param("ids") Long... ids); + List findAssignedToTargetDistributionSetsById(@Param("ids") Long... ids); + + /** + * Finds {@link DistributionSet}s based on given ID that are assigned yet to + * an {@link Rollout}, i.e. in use. + * + * @param ids + * to search for + * @return list of {@link DistributionSet#getId()} + */ + @Query("select ra.distributionSet.id from JpaRollout ra where ra.distributionSet.id in :ids") + List findAssignedToRolloutDistributionSetsById(@Param("ids") Long... ids); /** * Saves all given {@link DistributionSet}s. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java index e5a38cf51..f3ecbcf1b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java @@ -173,7 +173,9 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { public void deleteDistributionSet(final Long... distributionSetIDs) { final List toHardDelete = new ArrayList<>(); - final List assigned = distributionSetRepository.findAssignedDistributionSetsById(distributionSetIDs); + final List assigned = distributionSetRepository + .findAssignedToTargetDistributionSetsById(distributionSetIDs); + assigned.addAll(distributionSetRepository.findAssignedToRolloutDistributionSetsById(distributionSetIDs)); // soft delete assigned if (!assigned.isEmpty()) { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java index 67d5202a5..104f2260d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java @@ -27,6 +27,7 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetMetadata; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetTag; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetType; +import org.eclipse.hawkbit.repository.jpa.model.JpaRollout; import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule; import org.eclipse.hawkbit.repository.jpa.model.JpaTarget; import org.eclipse.hawkbit.repository.model.Action; @@ -34,12 +35,18 @@ import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.ActionStatus; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetFilter.DistributionSetFilterBuilder; -import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.DistributionSetTag; import org.eclipse.hawkbit.repository.model.DistributionSetType; +import org.eclipse.hawkbit.repository.model.Rollout; +import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupErrorAction; +import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupErrorCondition; +import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupSuccessCondition; +import org.eclipse.hawkbit.repository.model.RolloutGroupConditionBuilder; +import org.eclipse.hawkbit.repository.model.RolloutGroupConditions; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.Target; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.fest.assertions.core.Condition; import org.junit.Test; import org.springframework.data.domain.Page; @@ -777,36 +784,55 @@ public class DistributionSetManagementTest extends AbstractJpaIntegrationTest { } @Test - @Description("Deltes a DS that is no in use. Expected behaviour is a soft delete on the database, i.e. only marked as " - + "deleted, kept eas refernce and unavailable for future use..") + @Description("Deletes a DS that is in use by either target assignment or rollout. Expected behaviour is a soft delete on the database, i.e. only marked as " + + "deleted, kept as refernce but unavailable for future use..") public void deleteAssignedDistributionSet() { DistributionSet ds1 = testdataFactory.createDistributionSet("ds-1"); DistributionSet ds2 = testdataFactory.createDistributionSet("ds-2"); - DistributionSet dsAssigned = testdataFactory.createDistributionSet("ds-3"); + DistributionSet dsToTargetAssigned = testdataFactory.createDistributionSet("ds-3"); + final DistributionSet dsToRolloutAssigned = testdataFactory.createDistributionSet("ds-4"); ds1 = distributionSetManagement.findDistributionSetByNameAndVersion(ds1.getName(), ds1.getVersion()); ds2 = distributionSetManagement.findDistributionSetByNameAndVersion(ds2.getName(), ds2.getVersion()); // create assigned DS - dsAssigned = distributionSetManagement.findDistributionSetByNameAndVersion(dsAssigned.getName(), - dsAssigned.getVersion()); + dsToTargetAssigned = distributionSetManagement.findDistributionSetByNameAndVersion(dsToTargetAssigned.getName(), + dsToTargetAssigned.getVersion()); final Target target = new JpaTarget("4712"); final Target savedTarget = targetManagement.createTarget(target); final List toAssign = new ArrayList<>(); toAssign.add(savedTarget); - deploymentManagement.assignDistributionSet(dsAssigned, toAssign); + deploymentManagement.assignDistributionSet(dsToTargetAssigned, toAssign); - // delete a ds - assertThat(distributionSetRepository.findAll()).hasSize(3); - distributionSetManagement.deleteDistributionSet(dsAssigned.getId()); + // create assigned rollout + createRolloutByVariables("test", "test", 5, "name==*", dsToRolloutAssigned, "50", "5"); + + // delete assigned ds + assertThat(distributionSetRepository.findAll()).hasSize(4); + distributionSetManagement.deleteDistributionSet(dsToTargetAssigned.getId(), dsToRolloutAssigned.getId()); // not assigned so not marked as deleted - assertThat(distributionSetRepository.findAll()).hasSize(3); + assertThat(distributionSetRepository.findAll()).hasSize(4); assertThat(distributionSetManagement .findDistributionSetsByDeletedAndOrCompleted(pageReq, Boolean.FALSE, Boolean.TRUE).getTotalElements()) .isEqualTo(2); } + private Rollout createRolloutByVariables(final String rolloutName, final String rolloutDescription, + final int groupSize, final String filterQuery, final DistributionSet distributionSet, + final String successCondition, final String errorCondition) { + final RolloutGroupConditions conditions = new RolloutGroupConditionBuilder() + .successCondition(RolloutGroupSuccessCondition.THRESHOLD, successCondition) + .errorCondition(RolloutGroupErrorCondition.THRESHOLD, errorCondition) + .errorAction(RolloutGroupErrorAction.PAUSE, null).build(); + final Rollout rolloutToCreate = new JpaRollout(); + rolloutToCreate.setName(rolloutName); + rolloutToCreate.setDescription(rolloutDescription); + rolloutToCreate.setTargetFilterQuery(filterQuery); + rolloutToCreate.setDistributionSet(distributionSet); + return rolloutManagement.createRollout(rolloutToCreate, groupSize, conditions); + } + private Target sendUpdateActionStatusToTarget(final Status status, final Action updActA, final Target t, final String... msgs) { updActA.setStatus(status); From 64f3acfa2b2f666cc890231bc671b3cbac7b04ad Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Fri, 10 Jun 2016 15:45:20 +0200 Subject: [PATCH 40/44] Improved documentation of time value. Signed-off-by: Kai Zimmermann --- .../src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java index 5b06c3318..f9b4cceb6 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpProperties.java @@ -43,7 +43,7 @@ public class AmqpProperties { /** * Requested heartbeat interval from broker in {@link TimeUnit#SECONDS}. */ - private int requestedHeartBeat = 60; + private int requestedHeartBeat = (int) TimeUnit.SECONDS.toSeconds(60); /** * Is missingQueuesFatal enabled From 12ce60f72a2835da02c3306d536c64f0533a6347 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sun, 12 Jun 2016 08:09:28 +0200 Subject: [PATCH 41/44] Rabbit publisherConfirms Signed-off-by: Kai Zimmermann --- .../simulator/amqp/AmqpConfiguration.java | 22 ++++++-- .../src/main/resources/logback.xml | 1 - .../AsyncConfigurerAutoConfiguration.java | 1 - .../hawkbit/amqp/AmqpConfiguration.java | 55 +++++++++++++++---- .../amqp/DefaultAmqpSenderService.java | 16 +++++- 5 files changed, 76 insertions(+), 19 deletions(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java index bf5d723a8..e954cec96 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.simulator.amqp; +import java.time.Duration; import java.util.HashMap; import java.util.Map; @@ -15,6 +16,7 @@ import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.FanoutExchange; import org.springframework.amqp.core.Queue; +import org.springframework.amqp.core.QueueBuilder; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -65,9 +67,12 @@ public class AmqpConfiguration { * @return the queue */ @Bean - public Queue receiverConnectorQueueFromSp() { - return new Queue(amqpProperties.getReceiverConnectorQueueFromSp(), true, false, false, - getDeadLetterExchangeArgs()); + public Queue receiverConnectorQueueFromHawkBit() { + final Map arguments = getDeadLetterExchangeArgs(); + arguments.putAll(getTTLMaxArgs()); + + return QueueBuilder.nonDurable(amqpProperties.getReceiverConnectorQueueFromSp()).withArguments(arguments) + .build(); } /** @@ -89,7 +94,7 @@ public class AmqpConfiguration { */ @Bean public Binding bindReceiverQueueToSpExchange() { - return BindingBuilder.bind(receiverConnectorQueueFromSp()).to(exchangeQueueToConnector()); + return BindingBuilder.bind(receiverConnectorQueueFromHawkBit()).to(exchangeQueueToConnector()); } /** @@ -99,7 +104,7 @@ public class AmqpConfiguration { */ @Bean public Queue deadLetterQueue() { - return new Queue(amqpProperties.getDeadLetterQueue(), true, false, true); + return QueueBuilder.nonDurable(amqpProperties.getDeadLetterQueue()).withArguments(getTTLMaxArgs()).build(); } /** @@ -145,4 +150,11 @@ public class AmqpConfiguration { return args; } + private static Map getTTLMaxArgs() { + final Map args = new HashMap<>(); + args.put("x-message-ttl", Duration.ofDays(1).toMillis()); + args.put("x-max-length", 100_000); + return args; + } + } diff --git a/examples/hawkbit-device-simulator/src/main/resources/logback.xml b/examples/hawkbit-device-simulator/src/main/resources/logback.xml index da64e62d1..469c7bde3 100644 --- a/examples/hawkbit-device-simulator/src/main/resources/logback.xml +++ b/examples/hawkbit-device-simulator/src/main/resources/logback.xml @@ -19,7 +19,6 @@ - diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java index cdbbcba5b..7e2b780b4 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java @@ -23,7 +23,6 @@ import org.springframework.scheduling.annotation.EnableAsync; * * */ - @Configuration @EnableAsync @ConditionalOnMissingBean(AsyncConfigurer.class) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index adf56e10f..541ae414c 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -12,6 +12,8 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadPoolExecutor; import org.eclipse.hawkbit.dmf.amqp.api.AmqpSettings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.FanoutExchange; @@ -30,6 +32,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.retry.backoff.ExponentialBackOffPolicy; +import org.springframework.retry.support.RetryTemplate;; /** * The spring AMQP configuration which is enabled by using the profile @@ -39,17 +43,27 @@ import org.springframework.context.annotation.Configuration; @EnableConfigurationProperties({ AmqpProperties.class, AmqpDeadletterProperties.class }) public class AmqpConfiguration { - @Autowired - protected AmqpProperties amqpProperties; + private static final Logger LOGGER = LoggerFactory.getLogger(AmqpConfiguration.class); @Autowired - protected AmqpDeadletterProperties amqpDeadletterProperties; + private AmqpProperties amqpProperties; + + @Autowired + private AmqpDeadletterProperties amqpDeadletterProperties; + + @Autowired + @Qualifier("threadPoolExecutor") + private ThreadPoolExecutor threadPoolExecutor; @Autowired private ConnectionFactory rabbitConnectionFactory; @Configuration - protected static class HawkBitRabbitConnectionFactoryCreator { + protected static class RabbitConnectionFactoryCreator { + + @Autowired + private AmqpProperties amqpProperties; + @Autowired @Qualifier("threadPoolExecutor") private ThreadPoolExecutor threadPoolExecutor; @@ -57,15 +71,21 @@ public class AmqpConfiguration { @Autowired private ScheduledExecutorService scheduledExecutorService; - @Autowired - protected AmqpProperties amqpProperties; - + /** + * {@link ConnectionFactory} with enabled publisher confirms and + * heartbeat. + * + * @param config + * with standard {@link RabbitProperties} + * @return {@link ConnectionFactory} + */ @Bean public ConnectionFactory rabbitConnectionFactory(final RabbitProperties config) { final CachingConnectionFactory factory = new CachingConnectionFactory(); factory.setRequestedHeartBeat(amqpProperties.getRequestedHeartBeat()); factory.setExecutor(threadPoolExecutor); factory.getRabbitConnectionFactory().setHeartbeatExecutor(scheduledExecutorService); + factory.setPublisherConfirms(true); final String addresses = config.getAddresses(); factory.setAddresses(addresses); @@ -84,7 +104,6 @@ public class AmqpConfiguration { } return factory; } - } /** @@ -101,14 +120,28 @@ public class AmqpConfiguration { } /** - * Method to set the Jackson2JsonMessageConverter. - * - * @return the Jackson2JsonMessageConverter + * @return {@link RabbitTemplate} with automatic retry, published confirms + * and {@link Jackson2JsonMessageConverter}. */ @Bean public RabbitTemplate rabbitTemplate() { final RabbitTemplate rabbitTemplate = new RabbitTemplate(rabbitConnectionFactory); rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter()); + + final RetryTemplate retryTemplate = new RetryTemplate(); + retryTemplate.setBackOffPolicy(new ExponentialBackOffPolicy()); + rabbitTemplate.setRetryTemplate(retryTemplate); + + rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> { + if (ack) { + LOGGER.debug("Message with correlation ID {} confirmed by broker.", correlationData.getId()); + } else { + LOGGER.error("Broker is unable to handle message with correlation ID {} : {}", correlationData.getId(), + cause); + } + + }); + return rabbitTemplate; } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java index 244544b64..afb3e7ff2 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java @@ -9,10 +9,14 @@ package org.eclipse.hawkbit.amqp; import java.net.URI; +import java.util.UUID; import org.eclipse.hawkbit.util.IpUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.support.CorrelationData; /** * A default implementation for the sender service. The service sends all amqp @@ -20,6 +24,7 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; * extracted from the uri. */ public class DefaultAmqpSenderService implements AmqpSenderService { + private static final Logger LOGGER = LoggerFactory.getLogger(DefaultAmqpSenderService.class); private final RabbitTemplate internalAmqpTemplate; @@ -39,7 +44,16 @@ public class DefaultAmqpSenderService implements AmqpSenderService { return; } - internalAmqpTemplate.send(extractExchange(replyTo), null, message); + final String correlationId = UUID.randomUUID().toString(); + final String exchange = extractExchange(replyTo); + + if (LOGGER.isTraceEnabled()) { + LOGGER.trace("Sending message {} to exchange {} with correlationId {}", message, exchange, correlationId); + } else { + LOGGER.debug("Sending message to exchange {} with correlationId {}", exchange, correlationId); + } + + internalAmqpTemplate.send(exchange, null, message, new CorrelationData(correlationId)); } } From 3726aac6db875eaf00d9ca9cd937f915b3325a8a Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 13 Jun 2016 12:38:08 +0200 Subject: [PATCH 42/44] Cleaned up default mismatch. Signed-off-by: Kai Zimmermann --- .../scheduling/AsyncConfigurerThreadpoolProperties.java | 4 ++-- .../src/main/resources/hawkbitdefaults.properties | 6 ------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerThreadpoolProperties.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerThreadpoolProperties.java index 35996a114..4425c7278 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerThreadpoolProperties.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerThreadpoolProperties.java @@ -20,7 +20,7 @@ public class AsyncConfigurerThreadpoolProperties { /** * Max queue size for central event executor. */ - private Integer queuesize = 250; + private Integer queuesize = 5_000; /** * Core processing threads for central event executor. @@ -30,7 +30,7 @@ public class AsyncConfigurerThreadpoolProperties { /** * Maximum thread pool size for central event executor. */ - private Integer maxthreads = 50; + private Integer maxthreads = 20; /** * When the number of threads is greater than the core, this is the maximum diff --git a/hawkbit-autoconfigure/src/main/resources/hawkbitdefaults.properties b/hawkbit-autoconfigure/src/main/resources/hawkbitdefaults.properties index 488777b8d..488559383 100644 --- a/hawkbit-autoconfigure/src/main/resources/hawkbitdefaults.properties +++ b/hawkbit-autoconfigure/src/main/resources/hawkbitdefaults.properties @@ -27,12 +27,6 @@ vaadin.servlet.urlMapping=/UI/* vaadin.servlet.heartbeatInterval=60 vaadin.servlet.closeIdleSessions=false -# Defines the thread pool executor -hawkbit.threadpool.corethreads=5 -hawkbit.threadpool.maxthreads=20 -hawkbit.threadpool.idletimeout=10000 -hawkbit.threadpool.queuesize=20000 - # Defines the polling time for the controllers in HH:MM:SS notation hawkbit.controller.pollingTime=00:05:00 hawkbit.controller.pollingOverdueTime=00:05:00 From 2b245aec823ea9ae0103eda19e92e1bb6376b750 Mon Sep 17 00:00:00 2001 From: Jonathan Knoblauch Date: Mon, 13 Jun 2016 14:50:45 +0200 Subject: [PATCH 43/44] Misspelling Changed refernce to reference --- .../hawkbit/repository/jpa/DistributionSetManagementTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java index 104f2260d..b7da2ff06 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java @@ -785,7 +785,7 @@ public class DistributionSetManagementTest extends AbstractJpaIntegrationTest { @Test @Description("Deletes a DS that is in use by either target assignment or rollout. Expected behaviour is a soft delete on the database, i.e. only marked as " - + "deleted, kept as refernce but unavailable for future use..") + + "deleted, kept as reference but unavailable for future use..") public void deleteAssignedDistributionSet() { DistributionSet ds1 = testdataFactory.createDistributionSet("ds-1"); DistributionSet ds2 = testdataFactory.createDistributionSet("ds-2"); From 8230a476205535df059144f6d6a121c314dd67ed Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 13 Jun 2016 16:02:04 +0200 Subject: [PATCH 44/44] Fixed typos in repo default setup and logging. Signed-off-by: Kai Zimmermann --- .../main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java | 2 +- .../main/java/org/eclipse/hawkbit/repository/Constants.java | 2 +- .../repository/jpa/rsql/RSQLSoftwareModuleTypeFieldsTest.java | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java index 76870ac93..2c8feda13 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java @@ -109,7 +109,7 @@ public class BaseAmqpService { } protected final void logAndThrowMessageError(final Message message, final String error) { - LOGGER.warn("Error \"{}\" reported by message: {}", error, message); + LOGGER.warn("Warning! \"{}\" reported by message: {}", error, message); throw new IllegalArgumentException(error); } diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/Constants.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/Constants.java index 9a1e442b0..5dcb26638 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/Constants.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/Constants.java @@ -33,7 +33,7 @@ public final class Constants { * generated by repository for every new account for "Firmware/Operating * System" . */ - public static final String SMT_DEFAULT_OS_NAME = "Firmware"; + public static final String SMT_DEFAULT_OS_NAME = "OS"; /** * {@link SoftwareModuleType#getName()} of a {@link SoftwareModuleType} * generated by repository for every new account for "applications/apps". diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleTypeFieldsTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleTypeFieldsTest.java index e1538aaee..344d0e320 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleTypeFieldsTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleTypeFieldsTest.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository.jpa.rsql; import static org.fest.assertions.api.Assertions.assertThat; +import org.eclipse.hawkbit.repository.Constants; import org.eclipse.hawkbit.repository.SoftwareModuleTypeFields; import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @@ -34,7 +35,7 @@ public class RSQLSoftwareModuleTypeFieldsTest extends AbstractJpaIntegrationTest @Test @Description("Test filter software module test type by name") public void testFilterByParameterName() { - assertRSQLQuery(SoftwareModuleTypeFields.NAME.name() + "==Firmware", 1); + assertRSQLQuery(SoftwareModuleTypeFields.NAME.name() + "==" + Constants.SMT_DEFAULT_OS_NAME, 1); } @Test