From 72a61c9f6cd2b3b6cdc200684d8e429a87db829a Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 15 Apr 2016 13:01:23 +0200 Subject: [PATCH 01/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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/43] 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 c8ff0d225356b918e50082ecf0680879b6750115 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 18:42:36 +0200 Subject: [PATCH 26/43] change padding Signed-off-by: Melanie Retter --- .../ui/common/filterlayout/AbstractFilterButtons.java | 7 ++++--- .../VAADIN/themes/hawkbit/customstyles/table-common.scss | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) 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..8f669318b 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); @@ -120,6 +120,7 @@ public abstract class AbstractFilterButtons extends Table { ? item.getItemProperty(SPUILabelDefinitions.VAR_COLOR).getValue().toString() : DEFAULT_GREEN; final Button typeButton = createFilterButton(id, name, desc, color, itemId); typeButton.addClickListener(event -> filterButtonClickBehaviour.processFilterButtonClick(event)); + typeButton.addStyleName("generatedColumnPadding"); if (typeButton.getData().equals(SPUIDefinitions.NO_TAG_BUTTON_ID) && isNoTagSateSelected()) { filterButtonClickBehaviour.setDefaultClickedButton(typeButton); } else if (id != null && isClickedByDefault(name)) { diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss index 8820dbcc9..81d590248 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss @@ -181,4 +181,8 @@ visibility: hidden; float: right; } + + .v-button-generatedColumnPadding .v-button-tiny { + padding: 0 0px; + } } From e71ab4e63f7ff42fda9156497bb077b5da5ccae4 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 4 Jun 2016 21:11:19 +0200 Subject: [PATCH 27/43] Ip Address tracking configurable. Signed-off-by: Kai Zimmermann --- .../resource/DdiArtifactStoreController.java | 2 +- .../ddi/rest/resource/DdiRootController.java | 45 +++++++---------- .../rest/resource/DdiRootControllerTest.java | 22 +++++++++ .../eclipse/hawkbit/security/DosFilter.java | 2 +- .../security/HawkbitSecurityProperties.java | 16 ++++++- .../java/org/eclipse/hawkbit/util/IpUtil.java | 48 ++++++++++++++++--- .../org/eclipse/hawkbit/util/IpUtilTest.java | 23 ++++++++- 7 files changed, 119 insertions(+), 39 deletions(-) diff --git a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactStoreController.java b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactStoreController.java index 85a326f9a..75d502c47 100644 --- a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactStoreController.java +++ b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactStoreController.java @@ -134,7 +134,7 @@ public class DdiArtifactStoreController implements DdiDlArtifactStoreControllerR private Action checkAndReportDownloadByTarget(final HttpServletRequest request, final String targetid, final LocalArtifact artifact) { final Target target = controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(request, securityProperties.getClients().getRemoteIpHeader())); + IpUtil.getClientIpFromRequest(request, securityProperties)); final Action action = controllerManagement .getActionForDownloadByTargetAndSoftwareModule(target.getControllerId(), artifact.getSoftwareModule()); diff --git a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java index 20d1b2e29..120e6c246 100644 --- a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java +++ b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java @@ -119,16 +119,14 @@ public class DdiRootController implements DdiRootControllerRestApi { public ResponseEntity getControllerBase(@PathVariable("targetid") final String targetid) { LOG.debug("getControllerBase({})", targetid); - final Target target = controllerManagement.findOrRegisterTargetIfItDoesNotexist(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + final Target target = controllerManagement.findOrRegisterTargetIfItDoesNotexist(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); if (target.getTargetInfo().getUpdateStatus() == TargetUpdateStatus.UNKNOWN) { LOG.debug("target with {} extsisted but was in status UNKNOWN -> REGISTERED)", targetid); controllerManagement.updateTargetStatus(target.getTargetInfo(), TargetUpdateStatus.REGISTERED, - System.currentTimeMillis(), - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + System.currentTimeMillis(), IpUtil.getClientIpFromRequest( + requestResponseContextHolder.getHttpServletRequest(), securityProperties)); } return new ResponseEntity<>( @@ -143,9 +141,8 @@ public class DdiRootController implements DdiRootControllerRestApi { @PathVariable("fileName") final String fileName) { ResponseEntity result; - final Target target = controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + final Target target = controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); final SoftwareModule module = softwareManagement.findSoftwareModuleById(softwareModuleId); if (checkModule(fileName, module)) { @@ -200,9 +197,8 @@ public class DdiRootController implements DdiRootControllerRestApi { public ResponseEntity downloadArtifactMd5(@PathVariable("targetid") final String targetid, @PathVariable("softwareModuleId") final Long softwareModuleId, @PathVariable("fileName") final String fileName) { - controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); final SoftwareModule module = softwareManagement.findSoftwareModuleById(softwareModuleId); @@ -228,9 +224,8 @@ public class DdiRootController implements DdiRootControllerRestApi { @RequestParam(value = "c", required = false, defaultValue = "-1") final int resource) { LOG.debug("getControllerBasedeploymentAction({},{})", targetid, resource); - final Target target = controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + final Target target = controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); final Action action = findActionWithExceptionIfNotFound(actionId); if (!action.getTarget().getId().equals(target.getId())) { @@ -263,9 +258,8 @@ public class DdiRootController implements DdiRootControllerRestApi { @PathVariable("targetid") final String targetid, @PathVariable("actionId") @NotEmpty final Long actionId) { LOG.debug("provideBasedeploymentActionFeedback for target [{},{}]: {}", targetid, actionId, feedback); - final Target target = controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + final Target target = controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); if (!actionId.equals(feedback.getId())) { LOG.warn( @@ -357,9 +351,8 @@ public class DdiRootController implements DdiRootControllerRestApi { @Override public ResponseEntity putConfigData(@Valid @RequestBody final DdiConfigData configData, @PathVariable("targetid") final String targetid) { - controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); controllerManagement.updateControllerAttributes(targetid, configData.getData()); @@ -372,9 +365,8 @@ public class DdiRootController implements DdiRootControllerRestApi { @PathVariable("actionId") @NotEmpty final Long actionId) { LOG.debug("getControllerCancelAction({})", targetid); - final Target target = controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + final Target target = controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); final Action action = findActionWithExceptionIfNotFound(actionId); if (!action.getTarget().getId().equals(target.getId())) { @@ -403,9 +395,8 @@ public class DdiRootController implements DdiRootControllerRestApi { @PathVariable("actionId") @NotEmpty final Long actionId) { LOG.debug("provideCancelActionFeedback for target [{}]: {}", targetid, feedback); - final Target target = controllerManagement.updateLastTargetQuery(targetid, - IpUtil.getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), - securityProperties.getClients().getRemoteIpHeader())); + final Target target = controllerManagement.updateLastTargetQuery(targetid, IpUtil + .getClientIpFromRequest(requestResponseContextHolder.getHttpServletRequest(), securityProperties)); if (!actionId.equals(feedback.getId())) { LOG.warn( diff --git a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java index 135754604..98e9f6838 100644 --- a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java +++ b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java @@ -33,9 +33,11 @@ import org.eclipse.hawkbit.repository.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTestWithMongoDB; import org.eclipse.hawkbit.rest.util.JsonBuilder; import org.eclipse.hawkbit.rest.util.MockMvcResultPrinter; +import org.eclipse.hawkbit.security.HawkbitSecurityProperties; import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationKey; import org.eclipse.hawkbit.util.IpUtil; import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.hateoas.MediaTypes; import org.springframework.http.MediaType; @@ -50,6 +52,9 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Root Poll Resource") public class DdiRootControllerTest extends AbstractRestIntegrationTestWithMongoDB { + @Autowired + private HawkbitSecurityProperties securityProperties; + @Test @Description("Ensures that targets cannot be created e.g. in plug'n play scenarios when tenant does not exists but can be created if the tenant exists.") @WithUser(tenantId = "tenantDoesNotExists", allSpPermissions = true, authorities = "ROLE_CONTROLLER", autoCreateTenant = false) @@ -257,6 +262,23 @@ public class DdiRootControllerTest extends AbstractRestIntegrationTestWithMongoD } + @Test + @Description("Ensures that the source IP address of the polling target is not stored in repository if disabled") + public void rootRsIpAddressNotStoredIfDisabled() throws Exception { + securityProperties.getClients().setTrackRemoteIp(false); + + // test + final String knownControllerId1 = "0815"; + mvc.perform(get("/{tenant}/controller/v1/{controllerId}", tenantAware.getCurrentTenant(), knownControllerId1)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()); + + // verify + final Target target = targetManagement.findTargetByControllerID(knownControllerId1); + assertThat(target.getTargetInfo().getAddress()).isEqualTo(IpUtil.createHttpUri("***")); + + securityProperties.getClients().setTrackRemoteIp(true); + } + @Test @Description("Controller trys to finish an update process after it has been finished by an error action status.") public void tryToFinishAnUpdateProcessAfterItHasBeenFinished() throws Exception { diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/DosFilter.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/DosFilter.java index f0d8f7d48..961b418a0 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/DosFilter.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/DosFilter.java @@ -110,7 +110,7 @@ public class DosFilter extends OncePerRequestFilter { boolean processChain; - final String ip = IpUtil.getClientIpFromRequest(request, forwardHeader).getHost(); + final String ip = IpUtil.getClientIpFromRequest(request, forwardHeader, true).getHost(); if (checkIpFails(ip)) { processChain = handleMissingIpAddress(response); } else { diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java index 6192a8f31..3f0be994a 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java @@ -82,10 +82,16 @@ public class HawkbitSecurityProperties { private String blacklist = ""; /** - * Name of the http header from which the remote ip is extracted. + * Name of the http header from which the remote ip is extracted for DDI + * connected clients. */ private String remoteIpHeader = "X-Forwarded-For"; + /** + * Set to true if DDI clients remote IP should be stored. + */ + private boolean trackRemoteIp = true; + public String getBlacklist() { return blacklist; } @@ -101,6 +107,14 @@ public class HawkbitSecurityProperties { public void setRemoteIpHeader(final String remoteIpHeader) { this.remoteIpHeader = remoteIpHeader; } + + public boolean isTrackRemoteIp() { + return trackRemoteIp; + } + + public void setTrackRemoteIp(final boolean trackRemoteIp) { + this.trackRemoteIp = trackRemoteIp; + } } /** diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java index 4e08d8bfe..96fc557aa 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java @@ -15,6 +15,8 @@ import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; +import org.eclipse.hawkbit.security.HawkbitSecurityProperties; + import com.google.common.net.HttpHeaders; /** @@ -45,17 +47,49 @@ public final class IpUtil { * @param request * the {@link HttpServletRequest} to determine the IP address * where this request has been sent from - * @param forwardHeader - * the header name containing the IP address e.g. forwarded by a - * proxy {@code x-forwarded-for} + * @param securityProperties + * hawkBit security properties. * @return the {@link URI} based IP address from the client which sent the * request */ - public static URI getClientIpFromRequest(final HttpServletRequest request, final String forwardHeader) { - String ip = request.getHeader(forwardHeader); - if (ip == null || (ip = findClientIpAddress(ip)) == null) { - ip = request.getRemoteAddr(); + public static URI getClientIpFromRequest(final HttpServletRequest request, + final HawkbitSecurityProperties securityProperties) { + + return getClientIpFromRequest(request, securityProperties.getClients().getRemoteIpHeader(), + securityProperties.getClients().isTrackRemoteIp()); + } + + /** + * Retrieves the string based IP address from a given + * {@link HttpServletRequest} by either the + * {@link HttpHeaders#X_FORWARDED_FOR} or by the + * {@link HttpServletRequest#getRemoteAddr()} methods. + * + * @param request + * the {@link HttpServletRequest} to determine the IP address + * where this request has been sent from + * @param forwardHeader + * the header name containing the IP address e.g. forwarded by a + * proxy {@code x-forwarded-for} + * + * @param trackRemoteIp + * to true if remote IP should be tracked. + * @return the {@link URI} based IP address from the client which sent the + * request + */ + public static URI getClientIpFromRequest(final HttpServletRequest request, final String forwardHeader, + final boolean trackRemoteIp) { + String ip; + + if (trackRemoteIp) { + ip = request.getHeader(forwardHeader); + if (ip == null || (ip = findClientIpAddress(ip)) == null) { + ip = request.getRemoteAddr(); + } + } else { + ip = "***"; } + return createHttpUri(ip); } diff --git a/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java b/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java index 9eb83d2a9..0f4a01d26 100644 --- a/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java +++ b/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java @@ -50,7 +50,7 @@ public class IpUtilTest { when(requestMock.getRemoteAddr()).thenReturn(knownRemoteClientIP.getHost()); // test - final URI remoteAddr = IpUtil.getClientIpFromRequest(requestMock, "bumlux"); + final URI remoteAddr = IpUtil.getClientIpFromRequest(requestMock, "bumlux", true); // verify assertThat(remoteAddr).as("The remote address should be as the known client IP address") @@ -59,6 +59,25 @@ public class IpUtilTest { verify(requestMock, times(1)).getRemoteAddr(); } + @Test + @Description("Tests create uri from request with masked IP when IP tracking is disabled") + public void maskRemoteAddrIfDisabled() { + // known values + final URI knownRemoteClientIP = IpUtil.createHttpUri("***"); + // mock + when(requestMock.getHeader(HttpHeaders.X_FORWARDED_FOR)).thenReturn(null); + when(requestMock.getRemoteAddr()).thenReturn(knownRemoteClientIP.getHost()); + + // test + final URI remoteAddr = IpUtil.getClientIpFromRequest(requestMock, "bumlux", false); + + // verify + assertThat(remoteAddr).as("The remote address should be as the known client IP address") + .isEqualTo(knownRemoteClientIP); + verify(requestMock, times(0)).getHeader("bumlux"); + verify(requestMock, times(0)).getRemoteAddr(); + } + @Test @Description("Tests create uri from x forward header") public void getRemoteAddrFromXForwardedForHeader() { @@ -69,7 +88,7 @@ public class IpUtilTest { when(requestMock.getRemoteAddr()).thenReturn(null); // test - final URI remoteAddr = IpUtil.getClientIpFromRequest(requestMock, "X-Forwarded-For"); + final URI remoteAddr = IpUtil.getClientIpFromRequest(requestMock, "X-Forwarded-For", true); // verify assertThat(remoteAddr).as("The remote address should be as the known client IP address") From d19a4666688d5597518cc697078efc2374e75a49 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 4 Jun 2016 21:42:04 +0200 Subject: [PATCH 28/43] Added missing READMEs Signed-off-by: Kai Zimmermann --- hawkbit-repository/README.md | 47 ++++++++++++++++++ .../hawkbit-repository-api/README.md | 6 +++ .../hawkbit-repository-core/README.md | 3 ++ .../hawkbit-repository-jpa/README.md | 48 +------------------ 4 files changed, 58 insertions(+), 46 deletions(-) create mode 100644 hawkbit-repository/README.md create mode 100644 hawkbit-repository/hawkbit-repository-api/README.md create mode 100644 hawkbit-repository/hawkbit-repository-core/README.md diff --git a/hawkbit-repository/README.md b/hawkbit-repository/README.md new file mode 100644 index 000000000..2d68a4e73 --- /dev/null +++ b/hawkbit-repository/README.md @@ -0,0 +1,47 @@ +# hawkBit metadata repository + +The repository is in charge for managing the meta data of the update server, e.g. provisioning targets, distribution sets, software modules etc. + +# Build + +[indent=0] +---- + $ mvn clean install +---- + +Note, in order to build correctly in your IDE, you have to add ./target/generated-sources/apt to your build path. + +#Concepts + +## Rollout +A rollout consists of the distribution set and a target-query-filter which defines the targets to be updated in this rollout. The targets within this filter are split up in configured amount of _Deployment Groups_ at creation time. + +When starting a rollout, for all targets within this rollout deployment actions will be created. The deployment actions of the first group will be started immediately all other deployment actions will be scheduled. + +> Due rollouts might include a large number of targets and deployment group, creation as well as starting a rollout might take some time and therefore the creation and starting of an rollout is executed asynchronously. The creation and starting progress is reflected by the rollout's status attribute + +### Rollout Creation +The targets reflected by the target-query-filter is interpreted at creation time. Only targets which have been created at that time are included in the rollout. Targets which are created after the rollout creation will not be included. At rollout creation time all necessary deployment groups containing the targets will be created. Dynamically adding targets to a created or running rollout is currently not supported. + +### Rollout Starting +The rollout is using the same concept based on _deployment acionts_ per target. All necessary _deployment acionts_ will be created at starting point but not all _deployment acionts_ will be set to running. Only the _deployment acionts_ of the first _deployment group_ is set to running, all other actions are created in _scheduled_ state. +If targets having not finished _deployment actions_ at rollout starting time, these action are tried to cancel (state: canceling). Scheduled actions from another rollout are canceled directly on server side because they were never running before and can be safely canceled. + +>Multiple rollouts can be running at the same time, but if the rollouts effect the same targets they will interfer the targets _deployment actions_ e.g. canceling/cancel already running/scheduled _deployment actions_. + +### Deployment Group Condition/Action +#### Success Condition/Action +A _success condition_ defines when a deployment group is interpreted as success and triggers the _success action_. E.g. a threshold of successfully updated targets within the group. + +The _success action_ is executed if the _success_condition_ is fullfilled. Currently only the _success action_ starting the next following deployment group is available. + +#### Error Condition/Action +A _error condition_ defines when a deployment group is interpreted as failure and triggers the _error action_. E.g. a threshold of update failures of targets within the group. + +The _error action_ is executed if the _error condition_ is fullfilled. Currently only the _error action_ pausing the whole rollout is available, a paused rollout can be resumed by a user. + +### Rollout Scheduler +The rollout is managed by a scheduler task which is checking for rollouts in _running_ state. This is done atomic by updating the row in the database, so only the rollouts are checked and processed for the current instance to avoid that multiple instances are processing a rollout. + +>Due the scheduler, it might take some time until a rollouts is processed and switching is state or starting the next deployment group. + diff --git a/hawkbit-repository/hawkbit-repository-api/README.md b/hawkbit-repository/hawkbit-repository-api/README.md new file mode 100644 index 000000000..8000ad390 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/README.md @@ -0,0 +1,6 @@ +# hawkBit repository API + +API for repository access. Contains: + +- Entity Model +- Management service API \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/README.md b/hawkbit-repository/hawkbit-repository-core/README.md new file mode 100644 index 000000000..6973d7406 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-core/README.md @@ -0,0 +1,3 @@ +# hawkBit common implementation + +Core elements that can be used by implementations. \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa/README.md b/hawkbit-repository/hawkbit-repository-jpa/README.md index 2d68a4e73..6dd0217e7 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/README.md +++ b/hawkbit-repository/hawkbit-repository-jpa/README.md @@ -1,47 +1,3 @@ -# hawkBit metadata repository - -The repository is in charge for managing the meta data of the update server, e.g. provisioning targets, distribution sets, software modules etc. - -# Build - -[indent=0] ----- - $ mvn clean install ----- - -Note, in order to build correctly in your IDE, you have to add ./target/generated-sources/apt to your build path. - -#Concepts - -## Rollout -A rollout consists of the distribution set and a target-query-filter which defines the targets to be updated in this rollout. The targets within this filter are split up in configured amount of _Deployment Groups_ at creation time. - -When starting a rollout, for all targets within this rollout deployment actions will be created. The deployment actions of the first group will be started immediately all other deployment actions will be scheduled. - -> Due rollouts might include a large number of targets and deployment group, creation as well as starting a rollout might take some time and therefore the creation and starting of an rollout is executed asynchronously. The creation and starting progress is reflected by the rollout's status attribute - -### Rollout Creation -The targets reflected by the target-query-filter is interpreted at creation time. Only targets which have been created at that time are included in the rollout. Targets which are created after the rollout creation will not be included. At rollout creation time all necessary deployment groups containing the targets will be created. Dynamically adding targets to a created or running rollout is currently not supported. - -### Rollout Starting -The rollout is using the same concept based on _deployment acionts_ per target. All necessary _deployment acionts_ will be created at starting point but not all _deployment acionts_ will be set to running. Only the _deployment acionts_ of the first _deployment group_ is set to running, all other actions are created in _scheduled_ state. -If targets having not finished _deployment actions_ at rollout starting time, these action are tried to cancel (state: canceling). Scheduled actions from another rollout are canceled directly on server side because they were never running before and can be safely canceled. - ->Multiple rollouts can be running at the same time, but if the rollouts effect the same targets they will interfer the targets _deployment actions_ e.g. canceling/cancel already running/scheduled _deployment actions_. - -### Deployment Group Condition/Action -#### Success Condition/Action -A _success condition_ defines when a deployment group is interpreted as success and triggers the _success action_. E.g. a threshold of successfully updated targets within the group. - -The _success action_ is executed if the _success_condition_ is fullfilled. Currently only the _success action_ starting the next following deployment group is available. - -#### Error Condition/Action -A _error condition_ defines when a deployment group is interpreted as failure and triggers the _error action_. E.g. a threshold of update failures of targets within the group. - -The _error action_ is executed if the _error condition_ is fullfilled. Currently only the _error action_ pausing the whole rollout is available, a paused rollout can be resumed by a user. - -### Rollout Scheduler -The rollout is managed by a scheduler task which is checking for rollouts in _running_ state. This is done atomic by updating the row in the database, so only the rollouts are checked and processed for the current instance to avoid that multiple instances are processing a rollout. - ->Due the scheduler, it might take some time until a rollouts is processed and switching is state or starting the next deployment group. +# hawkBit JPA implementation +JPA implementation of the repository. Based on [EclipseLink](http://www.eclipse.org/eclipselink/) and [Spring Data Jpa](http://projects.spring.io/spring-data-jpa/). \ No newline at end of file From 44aaaab4e230f1323b58476ba61717fa0f7ca2ed Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 4 Jun 2016 22:07:26 +0200 Subject: [PATCH 29/43] Fixed sonar issues and changes package of test repo classes for easier sonar exclusion. Signed-off-by: Kai Zimmermann --- .../jpa/AbstractJpaIntegrationTest.java | 2 +- ...AbstractJpaIntegrationTestWithMongoDB.java | 2 +- .../jpa/ArtifactManagementTest.java | 4 +- .../jpa/DistributionSetManagementTest.java | 2 +- .../repository/jpa/ReportManagementTest.java | 6 +- .../repository/jpa/RolloutManagementTest.java | 2 +- .../jpa/SoftwareManagementTest.java | 2 +- .../repository/jpa/SystemManagementTest.java | 2 +- .../repository/jpa/TargetManagementTest.java | 4 +- .../rsql/RSQLDistributionSetFieldTest.java | 2 +- .../jpa/rsql/RSQLSoftwareModuleFieldTest.java | 2 +- .../RSQLSoftwareModuleMetadataFieldsTest.java | 2 +- .../jpa/rsql/RSQLTargetFieldTest.java | 2 +- .../jpa/tenancy/MultiTenancyEntityTest.java | 4 +- .../util/AbstractIntegrationTest.java | 2 +- .../AbstractIntegrationTestWithMongoDB.java | 2 +- .../{ => test}/util/CIMySqlTestDatabase.java | 2 +- .../{ => test}/util/FreePortFileWriter.java | 2 +- .../{ => test}/util/HashGeneratorUtils.java | 2 +- .../util/JpaTestRepositoryManagement.java | 2 +- .../{ => test}/util/TestConfiguration.java | 2 +- .../util/TestRepositoryManagement.java | 2 +- .../{ => test}/util/TestdataFactory.java | 2 +- .../{ => test}/util/Testdatabase.java | 2 +- .../util/WithSpringAuthorityRule.java | 2 +- .../repository/{ => test}/util/WithUser.java | 2 +- .../rest/AbstractRestIntegrationTest.java | 2 +- ...bstractRestIntegrationTestWithMongoDB.java | 2 +- .../artifacts/state/ArtifactUploadState.java | 63 +++++++++---------- .../artifacts/upload/UploadStatusObject.java | 51 ++++++++++----- .../targettable/BulkUploadHandler.java | 2 +- 31 files changed, 100 insertions(+), 82 deletions(-) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/AbstractIntegrationTest.java (99%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/AbstractIntegrationTestWithMongoDB.java (98%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/CIMySqlTestDatabase.java (98%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/FreePortFileWriter.java (97%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/HashGeneratorUtils.java (97%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/JpaTestRepositoryManagement.java (97%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/TestConfiguration.java (98%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/TestRepositoryManagement.java (91%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/TestdataFactory.java (99%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/Testdatabase.java (90%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/WithSpringAuthorityRule.java (99%) rename hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/{ => test}/util/WithUser.java (97%) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java index b4b451ecd..45831d08f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java @@ -12,7 +12,7 @@ import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.eclipse.hawkbit.cache.TenantAwareCacheManager; -import org.eclipse.hawkbit.repository.util.AbstractIntegrationTest; +import org.eclipse.hawkbit.repository.test.util.AbstractIntegrationTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.data.mongodb.gridfs.GridFsOperations; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTestWithMongoDB.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTestWithMongoDB.java index d1c433cc4..e2e755246 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTestWithMongoDB.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTestWithMongoDB.java @@ -12,7 +12,7 @@ import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.eclipse.hawkbit.cache.TenantAwareCacheManager; -import org.eclipse.hawkbit.repository.util.AbstractIntegrationTestWithMongoDB; +import org.eclipse.hawkbit.repository.test.util.AbstractIntegrationTestWithMongoDB; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ArtifactManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ArtifactManagementTest.java index faf7649d0..293dcdf91 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ArtifactManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ArtifactManagementTest.java @@ -32,8 +32,8 @@ import org.eclipse.hawkbit.repository.model.Artifact; import org.eclipse.hawkbit.repository.model.ExternalArtifactProvider; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.SoftwareModule; -import org.eclipse.hawkbit.repository.util.HashGeneratorUtils; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.HashGeneratorUtils; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.Test; import org.slf4j.LoggerFactory; import org.springframework.data.mongodb.core.query.Criteria; 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 d26474bb4..67d5202a5 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 @@ -34,12 +34,12 @@ 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.SoftwareModule; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.util.WithUser; import org.fest.assertions.core.Condition; import org.junit.Test; import org.springframework.data.domain.Page; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ReportManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ReportManagementTest.java index 4fba80616..ca82924a8 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ReportManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ReportManagementTest.java @@ -37,9 +37,9 @@ import org.eclipse.hawkbit.repository.report.model.DataReportSeries; import org.eclipse.hawkbit.repository.report.model.DataReportSeriesItem; import org.eclipse.hawkbit.repository.report.model.InnerOuterDataReportSeries; import org.eclipse.hawkbit.repository.report.model.SeriesTime; -import org.eclipse.hawkbit.repository.util.TestdataFactory; -import org.eclipse.hawkbit.repository.util.WithSpringAuthorityRule; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; +import org.eclipse.hawkbit.repository.test.util.WithSpringAuthorityRule; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.After; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java index 42e5de498..381e9722d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java @@ -34,13 +34,13 @@ import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupErrorAction import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupErrorCondition; import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupStatus; import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupSuccessCondition; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; 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.model.TargetUpdateStatus; import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; -import org.eclipse.hawkbit.repository.util.TestdataFactory; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Description; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SoftwareManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SoftwareManagementTest.java index 366dd6ec7..75633a85a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SoftwareManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SoftwareManagementTest.java @@ -39,7 +39,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.Test; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SystemManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SystemManagementTest.java index e697f65d8..a89486757 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SystemManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/SystemManagementTest.java @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.report.model.TenantUsage; -import org.eclipse.hawkbit.repository.util.WithSpringAuthorityRule; +import org.eclipse.hawkbit.repository.test.util.WithSpringAuthorityRule; import org.junit.Test; import ru.yandex.qatools.allure.annotations.Description; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java index 79a7ad89f..4a83b1054 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java @@ -38,13 +38,13 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaTarget; import org.eclipse.hawkbit.repository.jpa.model.JpaTargetInfo; import org.eclipse.hawkbit.repository.jpa.model.JpaTargetTag; import org.eclipse.hawkbit.repository.model.Action.Status; +import org.eclipse.hawkbit.repository.test.util.WithSpringAuthorityRule; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Tag; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetTag; -import org.eclipse.hawkbit.repository.util.WithSpringAuthorityRule; -import org.eclipse.hawkbit.repository.util.WithUser; import org.junit.Test; import org.springframework.data.domain.PageRequest; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLDistributionSetFieldTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLDistributionSetFieldTest.java index 6604e3152..4eb15a78d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLDistributionSetFieldTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLDistributionSetFieldTest.java @@ -20,7 +20,7 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetMetadata; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetTag; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetTag; -import org.eclipse.hawkbit.repository.util.TestdataFactory; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; import org.junit.Before; import org.junit.Test; import org.springframework.data.domain.Page; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleFieldTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleFieldTest.java index 47732dac2..25897ccde 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleFieldTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleFieldTest.java @@ -16,7 +16,7 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule; import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModuleMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; -import org.eclipse.hawkbit.repository.util.TestdataFactory; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; import org.junit.Before; import org.junit.Test; import org.springframework.data.domain.Page; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java index 3f843bffc..e04ee8c9b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest; import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModuleMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; -import org.eclipse.hawkbit.repository.util.TestdataFactory; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; import org.junit.Before; import org.junit.Test; import org.springframework.data.domain.Page; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java index f21e4c938..2cccd655b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java @@ -24,7 +24,7 @@ import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetInfo; import org.eclipse.hawkbit.repository.model.TargetTag; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; -import org.eclipse.hawkbit.repository.util.TestdataFactory; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; import org.junit.Before; import org.junit.Test; import org.springframework.data.domain.Page; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/tenancy/MultiTenancyEntityTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/tenancy/MultiTenancyEntityTest.java index 86a0389d5..52f314171 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/tenancy/MultiTenancyEntityTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/tenancy/MultiTenancyEntityTest.java @@ -16,8 +16,8 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSetType; import org.eclipse.hawkbit.repository.jpa.model.JpaTarget; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.util.WithSpringAuthorityRule; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithSpringAuthorityRule; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.Test; import org.springframework.data.domain.Page; import org.springframework.data.domain.Slice; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/AbstractIntegrationTest.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java similarity index 99% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/AbstractIntegrationTest.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java index c2bd61676..3d09fabc3 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/AbstractIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import org.eclipse.hawkbit.ExcludePathAwareShallowETagFilter; import org.eclipse.hawkbit.repository.ArtifactManagement; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/AbstractIntegrationTestWithMongoDB.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTestWithMongoDB.java similarity index 98% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/AbstractIntegrationTestWithMongoDB.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTestWithMongoDB.java index 28d8add3a..bb54f550c 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/AbstractIntegrationTestWithMongoDB.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTestWithMongoDB.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.io.IOException; import java.net.UnknownHostException; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/CIMySqlTestDatabase.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/CIMySqlTestDatabase.java similarity index 98% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/CIMySqlTestDatabase.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/CIMySqlTestDatabase.java index e6bbe1f6a..3601f896e 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/CIMySqlTestDatabase.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/CIMySqlTestDatabase.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.sql.Connection; import java.sql.DriverManager; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/FreePortFileWriter.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.java similarity index 97% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/FreePortFileWriter.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.java index 383722a75..149cdf2b5 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/FreePortFileWriter.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.io.File; import java.net.InetSocketAddress; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/HashGeneratorUtils.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.java similarity index 97% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/HashGeneratorUtils.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.java index e222007f1..9d1dbca7c 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/HashGeneratorUtils.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/JpaTestRepositoryManagement.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.java similarity index 97% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/JpaTestRepositoryManagement.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.java index 7ec5bb407..eae0b9a7d 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/JpaTestRepositoryManagement.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.util.List; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestConfiguration.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestConfiguration.java similarity index 98% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestConfiguration.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestConfiguration.java index acbaae2b4..e6a8e7686 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestConfiguration.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.util.concurrent.Executor; import java.util.concurrent.Executors; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestRepositoryManagement.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestRepositoryManagement.java similarity index 91% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestRepositoryManagement.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestRepositoryManagement.java index ddad59990..482c7725c 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestRepositoryManagement.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestRepositoryManagement.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; /** * Repository support for tests. diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestdataFactory.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java similarity index 99% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestdataFactory.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java index 1ed5679c8..81e2c1daf 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/TestdataFactory.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.io.InputStream; import java.nio.charset.Charset; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/Testdatabase.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/Testdatabase.java similarity index 90% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/Testdatabase.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/Testdatabase.java index b24d34533..e6f9be49f 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/Testdatabase.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/Testdatabase.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; /** * diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/WithSpringAuthorityRule.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.java similarity index 99% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/WithSpringAuthorityRule.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.java index b456cc32b..8f5f8e94b 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/WithSpringAuthorityRule.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.lang.annotation.Annotation; import java.lang.reflect.Field; diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/WithUser.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithUser.java similarity index 97% rename from hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/WithUser.java rename to hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithUser.java index 04af9196b..a6151ed4c 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/util/WithUser.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithUser.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.repository.util; +package org.eclipse.hawkbit.repository.test.util; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; diff --git a/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java b/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java index 14ba8556e..1708bf6cc 100644 --- a/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java +++ b/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java @@ -8,7 +8,7 @@ */ package org.eclipse.hawkbit.rest; -import org.eclipse.hawkbit.repository.util.AbstractIntegrationTest; +import org.eclipse.hawkbit.repository.test.util.AbstractIntegrationTest; import org.eclipse.hawkbit.rest.configuration.RestConfiguration; import org.eclipse.hawkbit.rest.util.FilterHttpResponse; import org.springframework.beans.factory.annotation.Autowired; diff --git a/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTestWithMongoDB.java b/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTestWithMongoDB.java index 4d952434d..70d65e141 100644 --- a/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTestWithMongoDB.java +++ b/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTestWithMongoDB.java @@ -8,7 +8,7 @@ */ package org.eclipse.hawkbit.rest; -import org.eclipse.hawkbit.repository.util.AbstractIntegrationTestWithMongoDB; +import org.eclipse.hawkbit.repository.test.util.AbstractIntegrationTestWithMongoDB; import org.eclipse.hawkbit.rest.configuration.RestConfiguration; import org.eclipse.hawkbit.rest.util.FilterHttpResponse; import org.springframework.beans.factory.annotation.Autowired; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java index 5399e59c8..ed2feef0a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java @@ -53,70 +53,65 @@ public class ArtifactUploadState implements ManagmentEntityState, Serializ private Set selectedSoftwareModules = Collections.emptySet(); - private boolean swTypeFilterClosed = Boolean.FALSE; + private boolean swTypeFilterClosed; - private boolean swModuleTableMaximized = Boolean.FALSE; + private boolean swModuleTableMaximized; - private boolean artifactDetailsMaximized = Boolean.FALSE; + private boolean artifactDetailsMaximized; private final Set selectedDeleteSWModuleTypes = new HashSet<>(); - private boolean noDataAvilableSoftwareModule = Boolean.FALSE; - - private boolean isStatusPopupMinimized = Boolean.FALSE; - - private boolean isUploadCompleted = Boolean.FALSE; - + private boolean noDataAvilableSoftwareModule; + + private boolean statusPopupMinimized; + + private boolean uploadCompleted; + private List uploadedFileStatusList = new ArrayList<>(); - + private final AtomicInteger numberOfFileUploadsExpected = new AtomicInteger(); private final AtomicInteger numberOfFilesActuallyUpload = new AtomicInteger(); - + private final AtomicInteger numberOfFileUploadsFailed = new AtomicInteger(); public AtomicInteger getNumberOfFileUploadsFailed() { return numberOfFileUploadsFailed; } - + public AtomicInteger getNumberOfFilesActuallyUpload() { return numberOfFilesActuallyUpload; } - + public AtomicInteger getNumberOfFileUploadsExpected() { return numberOfFileUploadsExpected; } - - + public List getUploadedFileStatusList() { return uploadedFileStatusList; } - - public void setUploadedFileStatusList(List uploadedFileStatusList) { + + public void setUploadedFileStatusList(final List uploadedFileStatusList) { this.uploadedFileStatusList = uploadedFileStatusList; } - + public boolean isUploadCompleted() { - return isUploadCompleted; - } - - public void setUploadCompleted(boolean isUploadCompleted) { - this.isUploadCompleted = isUploadCompleted; + return uploadCompleted; + } + + public void setUploadCompleted(final boolean uploadCompleted) { + this.uploadCompleted = uploadCompleted; + } + + public void setStatusPopupMinimized(final boolean statusPopupMinimized) { + this.statusPopupMinimized = statusPopupMinimized; } - - public void setStatusPopupMinimized(boolean isStatusPopupMinimized) { - this.isStatusPopupMinimized = isStatusPopupMinimized; - } - public boolean isStatusPopupMinimized() { - return isStatusPopupMinimized; - } + return statusPopupMinimized; + } - - - - /** + /** * Set software. * * @return diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java index 4ea82d7dd..db876fe3b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.ui.artifacts.upload; +import java.io.Serializable; + import org.eclipse.hawkbit.repository.model.SoftwareModule; /** @@ -16,22 +18,24 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; * popup. * */ -public class UploadStatusObject { +public class UploadStatusObject implements Serializable { + private static final long serialVersionUID = 1L; + private String status; private Double progress; private String filename; private String reason; - private SoftwareModule selectedSoftwareModule; + private final SoftwareModule selectedSoftwareModule; public UploadStatusObject(final String status, final Double progress, final String fileName, final String reason, final SoftwareModule selectedSoftwareModule) { - this(fileName,selectedSoftwareModule); + this(fileName, selectedSoftwareModule); this.status = status; this.progress = progress; this.reason = reason; } - public UploadStatusObject(String fileName, SoftwareModule selectedSoftwareModule) { + public UploadStatusObject(final String fileName, final SoftwareModule selectedSoftwareModule) { this.filename = fileName; this.selectedSoftwareModule = selectedSoftwareModule; } @@ -44,7 +48,7 @@ public class UploadStatusObject { return status; } - public void setStatus(String status) { + public void setStatus(final String status) { this.status = status; } @@ -52,7 +56,7 @@ public class UploadStatusObject { return progress; } - public void setProgress(Double progress) { + public void setProgress(final Double progress) { this.progress = progress; } @@ -60,7 +64,7 @@ public class UploadStatusObject { return filename; } - public void setFilename(String filename) { + public void setFilename(final String filename) { this.filename = filename; } @@ -68,19 +72,38 @@ public class UploadStatusObject { return reason; } - public void setReason(String reason) { + public void setReason(final String reason) { this.reason = reason; } @Override - public boolean equals(Object obj) { - if (this == null || obj == null) { - return false; - } - if (obj instanceof UploadStatusObject && this.getFilename() == ((UploadStatusObject) obj).getFilename()) { + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((filename == null) ? 0 : filename.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { return true; } - return false; + if (obj == null) { + return false; + } + if (!(obj instanceof UploadStatusObject)) { + return false; + } + final UploadStatusObject other = (UploadStatusObject) obj; + if (filename == null) { + if (other.filename != null) { + return false; + } + } else if (!filename.equals(other.filename)) { + return false; + } + return true; } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java index d6a613cf7..982e9d75b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java @@ -98,7 +98,7 @@ public class BulkUploadHandler extends CustomComponent final TargetBulkUpdateWindowLayout targetBulkUpdateWindowLayout; - private final EntityFactory entityFactory; + private transient EntityFactory entityFactory; /** * From def8eafd92e874a9723f0531310c5ca970d9a20b Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sun, 5 Jun 2016 16:17:58 +0200 Subject: [PATCH 30/43] Changed package name of test utils to allow sonar exclusion. Signed-off-by: Kai Zimmermann --- .../hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java | 2 +- .../hawkbit/ddi/rest/resource/DdiRootControllerTest.java | 4 ++-- .../hawkbit/amqp/AmqpMessageDispatcherServiceTest.java | 2 +- .../hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java | 2 +- .../mgmt/rest/resource/MgmtDistributionSetResourceTest.java | 4 ++-- .../rest/resource/MgmtDistributionSetTypeResourceTest.java | 2 +- .../hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java | 2 +- .../mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java | 4 ++-- .../rest/resource/MgmtSoftwareModuleTypeResourceTest.java | 2 +- .../hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java index b3828582c..7f12b78ae 100644 --- a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java +++ b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java @@ -29,11 +29,11 @@ import org.apache.commons.lang3.RandomUtils; import org.eclipse.hawkbit.eventbus.event.DownloadProgressEvent; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.Status; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.repository.model.Artifact; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTestWithMongoDB; import org.junit.Test; import org.slf4j.LoggerFactory; diff --git a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java index 98e9f6838..31ec37c58 100644 --- a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java +++ b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java @@ -28,8 +28,8 @@ import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; -import org.eclipse.hawkbit.repository.util.WithSpringAuthorityRule; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithSpringAuthorityRule; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTestWithMongoDB; import org.eclipse.hawkbit.rest.util.JsonBuilder; import org.eclipse.hawkbit.rest.util.MockMvcResultPrinter; diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherServiceTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherServiceTest.java index 5faaa74f0..103dc6c57 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherServiceTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherServiceTest.java @@ -37,7 +37,7 @@ import org.eclipse.hawkbit.repository.model.Artifact; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.SoftwareModule; -import org.eclipse.hawkbit.repository.util.AbstractIntegrationTestWithMongoDB; +import org.eclipse.hawkbit.repository.test.util.AbstractIntegrationTestWithMongoDB; import org.eclipse.hawkbit.util.IpUtil; import org.junit.Test; import org.mockito.ArgumentCaptor; 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..8cd92d2bd 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 @@ -16,7 +16,7 @@ import org.eclipse.hawkbit.api.UrlProtocol; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.SoftwareModule; -import org.eclipse.hawkbit.repository.util.AbstractIntegrationTestWithMongoDB; +import org.eclipse.hawkbit.repository.test.util.AbstractIntegrationTestWithMongoDB; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java index ad72aa55d..556454f93 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java @@ -29,12 +29,12 @@ import java.util.Set; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.Action.Status; +import org.eclipse.hawkbit.repository.test.util.TestdataFactory; +import org.eclipse.hawkbit.repository.test.util.WithUser; 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.Target; -import org.eclipse.hawkbit.repository.util.TestdataFactory; -import org.eclipse.hawkbit.repository.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTest; import org.eclipse.hawkbit.rest.util.JsonBuilder; import org.eclipse.hawkbit.rest.util.MockMvcResultPrinter; diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java index ad6be0854..bc6d69cd3 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java @@ -27,7 +27,7 @@ import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTest; import org.eclipse.hawkbit.rest.util.JsonBuilder; import org.eclipse.hawkbit.rest.util.MockMvcResultPrinter; diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java index ff49542ce..11536e6e1 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java @@ -29,7 +29,7 @@ import org.eclipse.hawkbit.repository.model.Rollout; import org.eclipse.hawkbit.repository.model.Rollout.RolloutStatus; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupSuccessCondition; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.repository.model.RolloutGroupConditionBuilder; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTest; diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java index e7397dd49..79a3fc2b2 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java @@ -41,8 +41,8 @@ import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; -import org.eclipse.hawkbit.repository.util.HashGeneratorUtils; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.HashGeneratorUtils; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTestWithMongoDB; import org.eclipse.hawkbit.rest.json.model.ExceptionInfo; import org.eclipse.hawkbit.rest.util.JsonBuilder; diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java index 363b12cde..36d975138 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java @@ -26,7 +26,7 @@ import java.util.List; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.rest.AbstractRestIntegrationTest; import org.eclipse.hawkbit.rest.util.JsonBuilder; import org.eclipse.hawkbit.rest.util.MockMvcResultPrinter; diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java index 6e50d1103..1375307d4 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java @@ -40,7 +40,7 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaTargetInfo; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.ActionType; import org.eclipse.hawkbit.repository.model.Action.Status; -import org.eclipse.hawkbit.repository.util.WithUser; +import org.eclipse.hawkbit.repository.test.util.WithUser; import org.eclipse.hawkbit.repository.model.ActionStatus; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.SoftwareModule; From 0ece2b28aece58487b9836f9ae8a7790a696a870 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 10:51:02 +0200 Subject: [PATCH 31/43] 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 739f3eb012690e12ce184160249b56ab7ef7ad0e Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 12:40:55 +0200 Subject: [PATCH 32/43] correct css Signed-off-by: Melanie Retter --- .../ui/common/filterlayout/AbstractFilterButtons.java | 3 ++- .../VAADIN/themes/hawkbit/customstyles/table-common.scss | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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 8f669318b..fae68e27a 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 @@ -120,7 +120,6 @@ public abstract class AbstractFilterButtons extends Table { ? item.getItemProperty(SPUILabelDefinitions.VAR_COLOR).getValue().toString() : DEFAULT_GREEN; final Button typeButton = createFilterButton(id, name, desc, color, itemId); typeButton.addClickListener(event -> filterButtonClickBehaviour.processFilterButtonClick(event)); - typeButton.addStyleName("generatedColumnPadding"); if (typeButton.getData().equals(SPUIDefinitions.NO_TAG_BUTTON_ID) && isNoTagSateSelected()) { filterButtonClickBehaviour.setDefaultClickedButton(typeButton); } else if (id != null && isClickedByDefault(name)) { @@ -181,6 +180,8 @@ public abstract class AbstractFilterButtons extends Table { button.setDescription(name); } button.setData(id == null ? SPUIDefinitions.NO_TAG_BUTTON_ID : itemId); + + button.addStyleName("generatedColumnPadding"); return button; } diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss index 81d590248..7c1d0c28c 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss @@ -182,7 +182,8 @@ float: right; } - .v-button-generatedColumnPadding .v-button-tiny { - padding: 0 0px; + .v-button-generatedColumnPadding .v-button-tiny-generatedColumnPadding { + padding: 0px 0px !important; } + } From 3e46568d2c60a8f06406d7877f0616ea4dae5cac Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 17:50:31 +0200 Subject: [PATCH 33/43] 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 34/43] 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 909a809b4bc454ad011b571d8dcb45f665737f34 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Mon, 6 Jun 2016 18:57:39 +0200 Subject: [PATCH 35/43] Improve padding on the left side Signed-off-by: Melanie Retter --- .../eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java | 3 ++- .../VAADIN/themes/hawkbit/customstyles/table-common.scss | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java index 014bdbfb9..0403c0fd8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java @@ -30,8 +30,9 @@ public class SPUITagButtonStyle implements SPUIButtonDecorator { button.setCaption(buttonCaption.substring(0, SPUIButtonDefinitions.BUTTON_CAPTION_LENGTH) + "..."); } button.setImmediate(true); - button.addStyleName("button-no-border" + " " + ValoTheme.BUTTON_BORDERLESS + " " + ValoTheme.BUTTON_TINY + " " + button.addStyleName("generatedColumnPadding button-no-border" + " " + ValoTheme.BUTTON_BORDERLESS + " " + "button-tag-no-border"); + // Set Style if (null != style) { if (setStyle) { diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss index 7c1d0c28c..a619754b6 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss @@ -182,8 +182,12 @@ float: right; } - .v-button-generatedColumnPadding .v-button-tiny-generatedColumnPadding { - padding: 0px 0px !important; + .v-button-generatedColumnPadding { + height: 28px; + padding: 0 0px !important; + font-size: 12px; + border-radius: 4px; } + } From ddc6580d049c6a7daa7cb44734c636659c1fd007 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Fri, 3 Jun 2016 17:35:50 +0200 Subject: [PATCH 36/43] 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 158a198cf4ed31fae853849116a606a1c5f5bb41 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Tue, 7 Jun 2016 11:28:10 +0200 Subject: [PATCH 37/43] Changed padding left/right of Simple Filter tags Signed-off-by: Melanie Retter --- .../ui/common/filterlayout/AbstractFilterButtons.java | 1 + .../hawkbit/ui/decorators/SPUITagButtonStyle.java | 9 --------- .../VAADIN/themes/hawkbit/customstyles/table-common.scss | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) 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 fae68e27a..5c2727c69 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 @@ -156,6 +156,7 @@ public abstract class AbstractFilterButtons extends Table { columnIds.add(FILTER_BUTTON_COLUMN); setVisibleColumns(columnIds.toArray()); setColumnHeaderMode(ColumnHeaderMode.HIDDEN); + setColumnWidth(FILTER_BUTTON_COLUMN, 137); } private Button createFilterButton(final Long id, final String name, final String description, final String color, diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java index 0403c0fd8..a95317d8a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUITagButtonStyle.java @@ -8,8 +8,6 @@ */ package org.eclipse.hawkbit.ui.decorators; -import org.eclipse.hawkbit.ui.utils.SPUIButtonDefinitions; - import com.vaadin.server.Resource; import com.vaadin.ui.Button; import com.vaadin.ui.themes.ValoTheme; @@ -22,13 +20,6 @@ public class SPUITagButtonStyle implements SPUIButtonDecorator { @Override public Button decorate(final Button button, final String style, final boolean setStyle, final Resource icon) { - /** - * Add ... for long name - */ - final String buttonCaption = button.getCaption(); - if (buttonCaption != null && buttonCaption.length() > SPUIButtonDefinitions.BUTTON_CAPTION_LENGTH) { - button.setCaption(buttonCaption.substring(0, SPUIButtonDefinitions.BUTTON_CAPTION_LENGTH) + "..."); - } button.setImmediate(true); button.addStyleName("generatedColumnPadding button-no-border" + " " + ValoTheme.BUTTON_BORDERLESS + " " + "button-tag-no-border"); diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss index a619754b6..3bfc12aac 100644 --- a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss +++ b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/customstyles/table-common.scss @@ -184,7 +184,7 @@ .v-button-generatedColumnPadding { height: 28px; - padding: 0 0px !important; + padding: 0 6px !important; font-size: 12px; border-radius: 4px; } From 023bcf6876402a3a862d3386175cf67bd3a76a73 Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Tue, 7 Jun 2016 12:41:57 +0200 Subject: [PATCH 38/43] delete duplicate style assignment Signed-off-by: Melanie Retter --- .../hawkbit/ui/common/filterlayout/AbstractFilterButtons.java | 1 - 1 file changed, 1 deletion(-) 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 5c2727c69..6af66c5c0 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 @@ -182,7 +182,6 @@ public abstract class AbstractFilterButtons extends Table { } button.setData(id == null ? SPUIDefinitions.NO_TAG_BUTTON_ID : itemId); - button.addStyleName("generatedColumnPadding"); return button; } From 1392798bf75081ac8bdc8f9f025b8bb7ff30cd84 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Wed, 8 Jun 2016 10:54:29 +0200 Subject: [PATCH 39/43] 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 8ae8696dfa4b2dc464c34c97d3760a1078c2e20d Mon Sep 17 00:00:00 2001 From: Melanie Retter Date: Thu, 9 Jun 2016 13:40:24 +0200 Subject: [PATCH 40/43] 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 41/43] 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 42/43] 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 43/43] 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