Improve and fix texts of confirmation popups in UI (#1002)
* fix force action confirm text, add plural wording for multiple assigning Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com> * fix hard coded plural s on DeleteSupport Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com> * fix entity creation and deletion notification i18n Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com> * remove placeholder for optional plural s from UI messages Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com> * renaming Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
This commit is contained in:
@@ -117,7 +117,7 @@ public class HawkbitEntityEventListener {
|
|||||||
|
|
||||||
if (eventPayloadIdentifier.shouldBeDeffered()) {
|
if (eventPayloadIdentifier.shouldBeDeffered()) {
|
||||||
notificationUnreadButton.incrementUnreadNotification(
|
notificationUnreadButton.incrementUnreadNotification(
|
||||||
eventPayloadIdentifier.getEventTypeMessageKey(), remoteEventPayload);
|
eventPayloadIdentifier.getNotificationType(), remoteEventPayload);
|
||||||
} else {
|
} else {
|
||||||
eventBus.publish(EventTopics.ENTITY_MODIFIED, UI.getCurrent(), remoteEventPayload);
|
eventBus.publish(EventTopics.ENTITY_MODIFIED, UI.getCurrent(), remoteEventPayload);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,8 +84,8 @@ public class ArtifactDetailsGrid extends AbstractGrid<ProxyArtifact, Long> {
|
|||||||
this.notification = notification;
|
this.notification = notification;
|
||||||
this.artifactManagement = artifactManagement;
|
this.artifactManagement = artifactManagement;
|
||||||
|
|
||||||
this.artifactDeleteSupport = new DeleteSupport<>(this, i18n, notification,
|
this.artifactDeleteSupport = new DeleteSupport<>(this, i18n, notification, "artifact.details.header",
|
||||||
i18n.getMessage("artifact.details.header"), ProxyArtifact::getFilename, this::artifactsDeletionCallback,
|
"caption.artifacts", ProxyArtifact::getFilename, this::artifactsDeletionCallback,
|
||||||
UIComponentIdProvider.ARTIFACT_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.ARTIFACT_DELETE_CONFIRMATION_DIALOG);
|
||||||
|
|
||||||
setFilterSupport(
|
setFilterSupport(
|
||||||
|
|||||||
@@ -112,9 +112,9 @@ public class SoftwareModuleGrid extends AbstractGrid<ProxySoftwareModule, SwFilt
|
|||||||
getSelectionSupport().enableMultiSelection();
|
getSelectionSupport().enableMultiSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.swModuleDeleteSupport = new DeleteSupport<>(this, i18n, notification,
|
this.swModuleDeleteSupport = new DeleteSupport<>(this, i18n, notification, "caption.software.module",
|
||||||
i18n.getMessage("caption.software.module"), ProxySoftwareModule::getNameAndVersion,
|
"caption.softwaremodules", ProxySoftwareModule::getNameAndVersion, this::deleteSoftwareModules,
|
||||||
this::deleteSoftwareModules, UIComponentIdProvider.SM_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.SM_DELETE_CONFIRMATION_DIALOG);
|
||||||
|
|
||||||
setFilterSupport(new FilterSupport<>(
|
setFilterSupport(new FilterSupport<>(
|
||||||
new SoftwareModuleDataProvider(softwareModuleManagement,
|
new SoftwareModuleDataProvider(softwareModuleManagement,
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ public class SMTypeFilterButtons extends AbstractTypeFilterButtons {
|
|||||||
* @param smTypeWindowBuilder
|
* @param smTypeWindowBuilder
|
||||||
* SmTypeWindowBuilder
|
* SmTypeWindowBuilder
|
||||||
* @param typeFilterLayoutUiState
|
* @param typeFilterLayoutUiState
|
||||||
* TypeFilterLayoutUiState
|
* TypeFilterLayoutUiState
|
||||||
* @param view
|
* @param view
|
||||||
* EventView
|
* EventView
|
||||||
*/
|
*/
|
||||||
public SMTypeFilterButtons(final UIEventBus eventBus, final VaadinMessageSource i18n,
|
public SMTypeFilterButtons(final UIEventBus eventBus, final VaadinMessageSource i18n,
|
||||||
final UINotification uiNotification, final SpPermissionChecker permChecker,
|
final UINotification uiNotification, final SpPermissionChecker permChecker,
|
||||||
@@ -85,8 +85,13 @@ public class SMTypeFilterButtons extends AbstractTypeFilterButtons {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getFilterButtonsType() {
|
protected String getMessageKeyEntityTypeSing() {
|
||||||
return i18n.getMessage("caption.entity.software.module.type");
|
return "caption.entity.software.module.type";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getMessageKeyEntityTypePlur() {
|
||||||
|
return "caption.entity.software.module.types";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import org.vaadin.spring.events.EventBus.UIEventBus;
|
|||||||
* Grid for MetaData pop up layout.
|
* Grid for MetaData pop up layout.
|
||||||
*
|
*
|
||||||
* @param <F>
|
* @param <F>
|
||||||
* Generic type
|
* Generic type
|
||||||
*/
|
*/
|
||||||
public class MetaDataWindowGrid<F> extends AbstractGrid<ProxyMetaData, F> implements MasterEntityAwareComponent<F> {
|
public class MetaDataWindowGrid<F> extends AbstractGrid<ProxyMetaData, F> implements MasterEntityAwareComponent<F> {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@@ -44,17 +44,17 @@ public class MetaDataWindowGrid<F> extends AbstractGrid<ProxyMetaData, F> implem
|
|||||||
* Constructor for MetaDataWindowGrid
|
* Constructor for MetaDataWindowGrid
|
||||||
*
|
*
|
||||||
* @param i18n
|
* @param i18n
|
||||||
* VaadinMessageSource
|
* VaadinMessageSource
|
||||||
* @param eventBus
|
* @param eventBus
|
||||||
* UIEventBus
|
* UIEventBus
|
||||||
* @param permissionChecker
|
* @param permissionChecker
|
||||||
* SpPermissionChecker
|
* SpPermissionChecker
|
||||||
* @param notification
|
* @param notification
|
||||||
* UINotification
|
* UINotification
|
||||||
* @param dataProvider
|
* @param dataProvider
|
||||||
* AbstractMetaDataDataProvider for filter support
|
* AbstractMetaDataDataProvider for filter support
|
||||||
* @param itemsDeletionCallback
|
* @param itemsDeletionCallback
|
||||||
* Grid item deletion Call back for event listener
|
* Grid item deletion Call back for event listener
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public MetaDataWindowGrid(final VaadinMessageSource i18n, final UIEventBus eventBus,
|
public MetaDataWindowGrid(final VaadinMessageSource i18n, final UIEventBus eventBus,
|
||||||
@@ -63,8 +63,8 @@ public class MetaDataWindowGrid<F> extends AbstractGrid<ProxyMetaData, F> implem
|
|||||||
final Predicate<Collection<ProxyMetaData>> itemsDeletionCallback) {
|
final Predicate<Collection<ProxyMetaData>> itemsDeletionCallback) {
|
||||||
super(i18n, eventBus, permissionChecker);
|
super(i18n, eventBus, permissionChecker);
|
||||||
|
|
||||||
this.metaDataDeleteSupport = new DeleteSupport<>(this, i18n, notification, i18n.getMessage("caption.metadata"),
|
this.metaDataDeleteSupport = new DeleteSupport<>(this, i18n, notification, "caption.metadata",
|
||||||
ProxyMetaData::getKey, itemsDeletionCallback,
|
"caption.metadata.plur", ProxyMetaData::getKey, itemsDeletionCallback,
|
||||||
UIComponentIdProvider.METADATA_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.METADATA_DELETE_CONFIRMATION_DIALOG);
|
||||||
|
|
||||||
setFilterSupport(new FilterSupport<>(dataProvider));
|
setFilterSupport(new FilterSupport<>(dataProvider));
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import java.util.Objects;
|
|||||||
|
|
||||||
import org.eclipse.hawkbit.ui.common.data.proxies.ProxyIdentifiableEntity;
|
import org.eclipse.hawkbit.ui.common.data.proxies.ProxyIdentifiableEntity;
|
||||||
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayload.EntityModifiedEventType;
|
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayload.EntityModifiedEventType;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import com.google.common.base.MoreObjects;
|
import com.google.common.base.MoreObjects;
|
||||||
|
|
||||||
@@ -23,15 +22,15 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
private final Class<? extends ProxyIdentifiableEntity> parentType;
|
private final Class<? extends ProxyIdentifiableEntity> parentType;
|
||||||
private final Class<? extends ProxyIdentifiableEntity> entityType;
|
private final Class<? extends ProxyIdentifiableEntity> entityType;
|
||||||
private final EntityModifiedEventType modifiedEventType;
|
private final EntityModifiedEventType modifiedEventType;
|
||||||
private final String eventTypeMessageKey;
|
private final EventNotificationType notificationType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for EntityModifiedEventPayloadIdentifier
|
* Constructor for EntityModifiedEventPayloadIdentifier
|
||||||
*
|
*
|
||||||
* @param entityType
|
* @param entityType
|
||||||
* Event payload of identifiable entity type
|
* Event payload of identifiable entity type
|
||||||
* @param modifiedEventType
|
* @param modifiedEventType
|
||||||
* EntityModifiedEventType
|
* EntityModifiedEventType
|
||||||
*/
|
*/
|
||||||
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> entityType,
|
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> entityType,
|
||||||
final EntityModifiedEventType modifiedEventType) {
|
final EntityModifiedEventType modifiedEventType) {
|
||||||
@@ -42,26 +41,26 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
* Constructor for EntityModifiedEventPayloadIdentifier
|
* Constructor for EntityModifiedEventPayloadIdentifier
|
||||||
*
|
*
|
||||||
* @param entityType
|
* @param entityType
|
||||||
* Event payload of identifiable entity type
|
* Event payload of identifiable entity type
|
||||||
* @param modifiedEventType
|
* @param modifiedEventType
|
||||||
* EntityModifiedEventType
|
* EntityModifiedEventType
|
||||||
* @param eventTypeMessageKey
|
* @param notificationType
|
||||||
* Key for event type message
|
* type of notification that is triggered by the event
|
||||||
*/
|
*/
|
||||||
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> entityType,
|
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> entityType,
|
||||||
final EntityModifiedEventType modifiedEventType, final String eventTypeMessageKey) {
|
final EntityModifiedEventType modifiedEventType, final EventNotificationType notificationType) {
|
||||||
this(null, entityType, modifiedEventType, eventTypeMessageKey);
|
this(null, entityType, modifiedEventType, notificationType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for EntityModifiedEventPayloadIdentifier
|
* Constructor for EntityModifiedEventPayloadIdentifier
|
||||||
*
|
*
|
||||||
* @param parentType
|
* @param parentType
|
||||||
* Event payload of identifiable parent type
|
* Event payload of identifiable parent type
|
||||||
* @param entityType
|
* @param entityType
|
||||||
* Event payload of identifiable entity type
|
* Event payload of identifiable entity type
|
||||||
* @param modifiedEventType
|
* @param modifiedEventType
|
||||||
* EntityModifiedEventType
|
* EntityModifiedEventType
|
||||||
*/
|
*/
|
||||||
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> parentType,
|
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> parentType,
|
||||||
final Class<? extends ProxyIdentifiableEntity> entityType,
|
final Class<? extends ProxyIdentifiableEntity> entityType,
|
||||||
@@ -73,21 +72,21 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
* Constructor for EntityModifiedEventPayloadIdentifier
|
* Constructor for EntityModifiedEventPayloadIdentifier
|
||||||
*
|
*
|
||||||
* @param parentType
|
* @param parentType
|
||||||
* Event payload of identifiable parent type
|
* Event payload of identifiable parent type
|
||||||
* @param entityType
|
* @param entityType
|
||||||
* Event payload of identifiable entity type
|
* Event payload of identifiable entity type
|
||||||
* @param modifiedEventType
|
* @param modifiedEventType
|
||||||
* EntityModifiedEventType
|
* EntityModifiedEventType
|
||||||
* @param eventTypeMessageKey
|
* @param notificationType
|
||||||
* Key for event type message
|
* type of notification that is triggered by the event
|
||||||
*/
|
*/
|
||||||
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> parentType,
|
public EntityModifiedEventPayloadIdentifier(final Class<? extends ProxyIdentifiableEntity> parentType,
|
||||||
final Class<? extends ProxyIdentifiableEntity> entityType, final EntityModifiedEventType modifiedEventType,
|
final Class<? extends ProxyIdentifiableEntity> entityType, final EntityModifiedEventType modifiedEventType,
|
||||||
final String eventTypeMessageKey) {
|
final EventNotificationType notificationType) {
|
||||||
this.parentType = parentType;
|
this.parentType = parentType;
|
||||||
this.entityType = entityType;
|
this.entityType = entityType;
|
||||||
this.modifiedEventType = modifiedEventType;
|
this.modifiedEventType = modifiedEventType;
|
||||||
this.eventTypeMessageKey = eventTypeMessageKey;
|
this.notificationType = notificationType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,10 +111,10 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Key of event type message
|
* @return type of notification
|
||||||
*/
|
*/
|
||||||
public String getEventTypeMessageKey() {
|
public EventNotificationType getNotificationType() {
|
||||||
return eventTypeMessageKey;
|
return notificationType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,14 +122,14 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
* <code>false</code>
|
* <code>false</code>
|
||||||
*/
|
*/
|
||||||
public boolean shouldBeDeffered() {
|
public boolean shouldBeDeffered() {
|
||||||
return !StringUtils.isEmpty(eventTypeMessageKey);
|
return notificationType != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static method for constructor EntityModifiedEventPayloadIdentifier
|
* Static method for constructor EntityModifiedEventPayloadIdentifier
|
||||||
*
|
*
|
||||||
* @param eventPayload
|
* @param eventPayload
|
||||||
* EntityModifiedEventPayload
|
* EntityModifiedEventPayload
|
||||||
*
|
*
|
||||||
* @return Payload identifier containing information about an modified event
|
* @return Payload identifier containing information about an modified event
|
||||||
*/
|
*/
|
||||||
@@ -141,7 +140,7 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
// eventTypeMessageKey is omitted intentionally, because it is not
|
// notificationType is omitted intentionally, because it is not
|
||||||
// relevant for event identification
|
// relevant for event identification
|
||||||
return getParentType() != null
|
return getParentType() != null
|
||||||
? Objects.hash(getParentType().getName(), getEntityType().getName(), modifiedEventType)
|
? Objects.hash(getParentType().getName(), getEntityType().getName(), modifiedEventType)
|
||||||
@@ -158,7 +157,7 @@ public class EntityModifiedEventPayloadIdentifier {
|
|||||||
}
|
}
|
||||||
final EntityModifiedEventPayloadIdentifier other = (EntityModifiedEventPayloadIdentifier) obj;
|
final EntityModifiedEventPayloadIdentifier other = (EntityModifiedEventPayloadIdentifier) obj;
|
||||||
|
|
||||||
// eventTypeMessageKey is omitted intentionally, because it is not
|
// notificationType is omitted intentionally, because it is not
|
||||||
// relevant for event identification
|
// relevant for event identification
|
||||||
return Objects.equals(this.getParentType(), other.getParentType())
|
return Objects.equals(this.getParentType(), other.getParentType())
|
||||||
&& Objects.equals(this.getEntityType(), other.getEntityType())
|
&& Objects.equals(this.getEntityType(), other.getEntityType())
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2020 Bosch.IO 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.event;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Types of event notification that can be displayed in the UI
|
||||||
|
*/
|
||||||
|
public enum EventNotificationType {
|
||||||
|
// Target
|
||||||
|
TARGET_CREATED("event.notifcation.target.created", "event.notifcation.targets.created"), TARGET_DELETED(
|
||||||
|
"event.notifcation.target.deleted", "event.notifcation.targets.deleted"),
|
||||||
|
// Distribution set
|
||||||
|
DISTRIBUTIONSET_CREATED("event.notifcation.distributionset.created",
|
||||||
|
"event.notifcation.distributionsets.created"), DISTRIBUTIONSET_DELETED(
|
||||||
|
"event.notifcation.distributionset.deleted", "event.notifcation.distributionsets.deleted"),
|
||||||
|
// Software module
|
||||||
|
SOFTWAREMODULE_CREATED("event.notifcation.softwaremodule.created",
|
||||||
|
"event.notifcation.softwaremodules.created"), SOFTWAREMODULE_DELETED(
|
||||||
|
"event.notifcation.softwaremodule.deleted", "event.notifcation.softwaremodules.deleted");
|
||||||
|
|
||||||
|
private final String notificationMessageKeySing;
|
||||||
|
private final String notificationMessageKeyPlur;
|
||||||
|
|
||||||
|
EventNotificationType(final String notificationMessageKeySing, final String notificationMessageKeyPlur) {
|
||||||
|
this.notificationMessageKeySing = notificationMessageKeySing;
|
||||||
|
this.notificationMessageKeyPlur = notificationMessageKeyPlur;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNotificationMessageKeySing() {
|
||||||
|
return notificationMessageKeySing;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNotificationMessageKeyPlur() {
|
||||||
|
return notificationMessageKeyPlur;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -57,8 +57,8 @@ public abstract class AbstractFilterButtons<T extends ProxyFilterButton, F> exte
|
|||||||
final UINotification notification, final SpPermissionChecker permChecker) {
|
final UINotification notification, final SpPermissionChecker permChecker) {
|
||||||
super(i18n, eventBus, permChecker);
|
super(i18n, eventBus, permChecker);
|
||||||
|
|
||||||
this.filterButtonDeleteSupport = new DeleteSupport<>(this, i18n, notification, getFilterButtonsType(),
|
this.filterButtonDeleteSupport = new DeleteSupport<>(this, i18n, notification, getMessageKeyEntityTypeSing(),
|
||||||
ProxyFilterButton::getName, this::deleteFilterButtons,
|
getMessageKeyEntityTypePlur(), ProxyFilterButton::getName, this::deleteFilterButtons,
|
||||||
UIComponentIdProvider.FILTER_BUTTON_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.FILTER_BUTTON_DELETE_CONFIRMATION_DIALOG);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +75,9 @@ public abstract class AbstractFilterButtons<T extends ProxyFilterButton, F> exte
|
|||||||
addStyleName(ValoTheme.TABLE_COMPACT);
|
addStyleName(ValoTheme.TABLE_COMPACT);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract String getFilterButtonsType();
|
protected abstract String getMessageKeyEntityTypeSing();
|
||||||
|
|
||||||
|
protected abstract String getMessageKeyEntityTypePlur();
|
||||||
|
|
||||||
protected abstract boolean deleteFilterButtons(Collection<T> filterButtonsToDelete);
|
protected abstract boolean deleteFilterButtons(Collection<T> filterButtonsToDelete);
|
||||||
|
|
||||||
|
|||||||
@@ -71,9 +71,9 @@ public abstract class AbstractDsGrid<F> extends AbstractGrid<ProxyDistributionSe
|
|||||||
getSelectionSupport().enableMultiSelection();
|
getSelectionSupport().enableMultiSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.distributionDeleteSupport = new DeleteSupport<>(this, i18n, notification,
|
this.distributionDeleteSupport = new DeleteSupport<>(this, i18n, notification, "distribution.details.header",
|
||||||
i18n.getMessage("distribution.details.header"), ProxyDistributionSet::getNameVersion,
|
"caption.distributionsets", ProxyDistributionSet::getNameVersion, this::deleteDistributionSets,
|
||||||
this::deleteDistributionSets, UIComponentIdProvider.DS_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.DS_DELETE_CONFIRMATION_DIALOG);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ public class DeleteSupport<T extends ProxyIdentifiableEntity> {
|
|||||||
|
|
||||||
private final Grid<T> grid;
|
private final Grid<T> grid;
|
||||||
private final VaadinMessageSource i18n;
|
private final VaadinMessageSource i18n;
|
||||||
private final String entityType;
|
private final String localizedEntityTypeSing;
|
||||||
|
private final String localizedEntityTypePlur;
|
||||||
private final UINotification notification;
|
private final UINotification notification;
|
||||||
private final Predicate<Collection<T>> itemsDeletionCallback;
|
private final Predicate<Collection<T>> itemsDeletionCallback;
|
||||||
private final String deletionWindowId;
|
private final String deletionWindowId;
|
||||||
@@ -50,26 +51,30 @@ public class DeleteSupport<T extends ProxyIdentifiableEntity> {
|
|||||||
* Constructor for DeleteSupport
|
* Constructor for DeleteSupport
|
||||||
*
|
*
|
||||||
* @param grid
|
* @param grid
|
||||||
* Vaadin Grid
|
* Vaadin Grid
|
||||||
* @param i18n
|
* @param i18n
|
||||||
* VaadinMessageSource
|
* VaadinMessageSource
|
||||||
* @param notification
|
* @param notification
|
||||||
* UINotification
|
* UINotification
|
||||||
* @param entityType
|
* @param messageKeyEntityTypeSing
|
||||||
* Entity type
|
* message key for the singular entity name for i18n
|
||||||
|
* @param messageKeyEntityTypePlur
|
||||||
|
* message key for the plural entity name for i18n
|
||||||
* @param entityNameGenerator
|
* @param entityNameGenerator
|
||||||
* Entity name generator
|
* Entity name generator
|
||||||
* @param itemsDeletionCallback
|
* @param itemsDeletionCallback
|
||||||
* Callback for delete event
|
* Callback for delete event
|
||||||
* @param deletionWindowId
|
* @param deletionWindowId
|
||||||
* Id of deletion Grid window
|
* Id of deletion Grid window
|
||||||
*/
|
*/
|
||||||
public DeleteSupport(final Grid<T> grid, final VaadinMessageSource i18n, final UINotification notification,
|
public DeleteSupport(final Grid<T> grid, final VaadinMessageSource i18n, final UINotification notification,
|
||||||
final String entityType, final Function<T, String> entityNameGenerator,
|
final String messageKeyEntityTypeSing, final String messageKeyEntityTypePlur,
|
||||||
final Predicate<Collection<T>> itemsDeletionCallback, final String deletionWindowId) {
|
final Function<T, String> entityNameGenerator, final Predicate<Collection<T>> itemsDeletionCallback,
|
||||||
|
final String deletionWindowId) {
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
this.i18n = i18n;
|
this.i18n = i18n;
|
||||||
this.entityType = entityType;
|
this.localizedEntityTypeSing = i18n.getMessage(messageKeyEntityTypeSing);
|
||||||
|
this.localizedEntityTypePlur = i18n.getMessage(messageKeyEntityTypePlur);
|
||||||
this.entityNameGenerator = entityNameGenerator;
|
this.entityNameGenerator = entityNameGenerator;
|
||||||
this.notification = notification;
|
this.notification = notification;
|
||||||
this.itemsDeletionCallback = itemsDeletionCallback;
|
this.itemsDeletionCallback = itemsDeletionCallback;
|
||||||
@@ -80,14 +85,15 @@ public class DeleteSupport<T extends ProxyIdentifiableEntity> {
|
|||||||
* Open confirmation pop up window for delete action
|
* Open confirmation pop up window for delete action
|
||||||
*
|
*
|
||||||
* @param clickedItem
|
* @param clickedItem
|
||||||
* Item selected for deletion
|
* Item selected for deletion
|
||||||
*/
|
*/
|
||||||
public void openConfirmationWindowDeleteAction(final T clickedItem) {
|
public void openConfirmationWindowDeleteAction(final T clickedItem) {
|
||||||
final Set<T> itemsToBeDeleted = getItemsForDeletion(clickedItem);
|
final Set<T> itemsToBeDeleted = getItemsForDeletion(clickedItem);
|
||||||
final int itemsToBeDeletedSize = itemsToBeDeleted.size();
|
final int itemsToBeDeletedSize = itemsToBeDeleted.size();
|
||||||
|
|
||||||
final String clickedItemName = entityNameGenerator.apply(clickedItem);
|
final String clickedItemName = entityNameGenerator.apply(clickedItem);
|
||||||
final String confirmationCaption = i18n.getMessage("caption.entity.delete.action.confirmbox", entityType);
|
final String confirmationCaption = i18n.getMessage("caption.entity.delete.action.confirmbox",
|
||||||
|
localizedEntityTypeSing);
|
||||||
|
|
||||||
final StringBuilder confirmationQuestionBuilder = new StringBuilder();
|
final StringBuilder confirmationQuestionBuilder = new StringBuilder();
|
||||||
confirmationQuestionBuilder.append(createDeletionText(UIMessageIdProvider.MESSAGE_CONFIRM_DELETE_ENTITY,
|
confirmationQuestionBuilder.append(createDeletionText(UIMessageIdProvider.MESSAGE_CONFIRM_DELETE_ENTITY,
|
||||||
@@ -131,9 +137,9 @@ public class DeleteSupport<T extends ProxyIdentifiableEntity> {
|
|||||||
private String createDeletionText(final String messageId, final int itemsToBeDeletedSize,
|
private String createDeletionText(final String messageId, final int itemsToBeDeletedSize,
|
||||||
final String clickedItemName) {
|
final String clickedItemName) {
|
||||||
if (itemsToBeDeletedSize == 1) {
|
if (itemsToBeDeletedSize == 1) {
|
||||||
return i18n.getMessage(messageId, entityType, clickedItemName, "");
|
return i18n.getMessage(messageId, localizedEntityTypeSing, clickedItemName);
|
||||||
} else {
|
} else {
|
||||||
return i18n.getMessage(messageId, itemsToBeDeletedSize, entityType, "s");
|
return i18n.getMessage(messageId, itemsToBeDeletedSize, localizedEntityTypePlur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +163,8 @@ public class DeleteSupport<T extends ProxyIdentifiableEntity> {
|
|||||||
} catch (final RuntimeException ex) {
|
} catch (final RuntimeException ex) {
|
||||||
final String itemsToBeDeletedIds = itemsToBeDeleted.stream().map(ProxyIdentifiableEntity::getId)
|
final String itemsToBeDeletedIds = itemsToBeDeleted.stream().map(ProxyIdentifiableEntity::getId)
|
||||||
.map(String::valueOf).collect(Collectors.joining(","));
|
.map(String::valueOf).collect(Collectors.joining(","));
|
||||||
LOG.warn("Deletion of {} with ids '{}' failed: {}", entityType, itemsToBeDeletedIds, ex.getMessage());
|
LOG.warn("Deletion of {} with ids '{}' failed: {}", localizedEntityTypeSing, itemsToBeDeletedIds,
|
||||||
|
ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isDeletionSuccessfull) {
|
if (isDeletionSuccessfull) {
|
||||||
@@ -171,7 +178,7 @@ public class DeleteSupport<T extends ProxyIdentifiableEntity> {
|
|||||||
* Sets the question to confirm the delete action
|
* Sets the question to confirm the delete action
|
||||||
*
|
*
|
||||||
* @param confirmationQuestionDetailsGenerator
|
* @param confirmationQuestionDetailsGenerator
|
||||||
* Confirmation detail for delete action
|
* Confirmation detail for delete action
|
||||||
*/
|
*/
|
||||||
public void setConfirmationQuestionDetailsGenerator(
|
public void setConfirmationQuestionDetailsGenerator(
|
||||||
final Function<T, String> confirmationQuestionDetailsGenerator) {
|
final Function<T, String> confirmationQuestionDetailsGenerator) {
|
||||||
|
|||||||
@@ -55,11 +55,11 @@ public abstract class DeploymentAssignmentSupport<S extends ProxyNamedEntity, T
|
|||||||
|
|
||||||
if (sourceItemsToAssignCount > 1) {
|
if (sourceItemsToAssignCount > 1) {
|
||||||
return i18n.getMessage(UIMessageIdProvider.MESSAGE_CONFIRM_ASSIGN_MULTIPLE_ENTITIES_TO_ENTITY,
|
return i18n.getMessage(UIMessageIdProvider.MESSAGE_CONFIRM_ASSIGN_MULTIPLE_ENTITIES_TO_ENTITY,
|
||||||
sourceItemsToAssignCount, sourceEntityType(), targetEntityType(), targetItemName);
|
sourceItemsToAssignCount, sourceEntityTypePlur(), targetEntityType(), targetItemName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return i18n.getMessage(UIMessageIdProvider.MESSAGE_CONFIRM_ASSIGN_MULTIPLE_ENTITIES_TO_ENTITY,
|
return i18n.getMessage(UIMessageIdProvider.MESSAGE_CONFIRM_ASSIGN_MULTIPLE_ENTITIES_TO_ENTITY,
|
||||||
sourceEntityType(), sourceItemNames.get(0), targetEntityType(), targetItemName);
|
sourceEntityTypeSing(), sourceItemNames.get(0), targetEntityType(), targetItemName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ConfirmationDialog createConfirmationWindow(final String confirmationMessage, final Component content,
|
private ConfirmationDialog createConfirmationWindow(final String confirmationMessage, final Component content,
|
||||||
@@ -73,7 +73,9 @@ public abstract class DeploymentAssignmentSupport<S extends ProxyNamedEntity, T
|
|||||||
}, content, confirmationWindowId());
|
}, content, confirmationWindowId());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract String sourceEntityType();
|
protected abstract String sourceEntityTypeSing();
|
||||||
|
|
||||||
|
protected abstract String sourceEntityTypePlur();
|
||||||
|
|
||||||
protected abstract String targetEntityType();
|
protected abstract String targetEntityType();
|
||||||
|
|
||||||
|
|||||||
@@ -41,17 +41,17 @@ public class DistributionSetsToTargetAssignmentSupport
|
|||||||
* Constructor for DistributionSetsToTargetAssignmentSupport
|
* Constructor for DistributionSetsToTargetAssignmentSupport
|
||||||
*
|
*
|
||||||
* @param notification
|
* @param notification
|
||||||
* UINotification
|
* UINotification
|
||||||
* @param i18n
|
* @param i18n
|
||||||
* VaadinMessageSource
|
* VaadinMessageSource
|
||||||
* @param systemSecurityContext
|
* @param systemSecurityContext
|
||||||
* SystemSecurityContext
|
* SystemSecurityContext
|
||||||
* @param configManagement
|
* @param configManagement
|
||||||
* TenantConfigurationManagement
|
* TenantConfigurationManagement
|
||||||
* @param permChecker
|
* @param permChecker
|
||||||
* SpPermissionChecker
|
* SpPermissionChecker
|
||||||
* @param assignmentController
|
* @param assignmentController
|
||||||
* DeploymentAssignmentWindowController
|
* DeploymentAssignmentWindowController
|
||||||
*/
|
*/
|
||||||
public DistributionSetsToTargetAssignmentSupport(final UINotification notification, final VaadinMessageSource i18n,
|
public DistributionSetsToTargetAssignmentSupport(final UINotification notification, final VaadinMessageSource i18n,
|
||||||
final SystemSecurityContext systemSecurityContext, final TenantConfigurationManagement configManagement,
|
final SystemSecurityContext systemSecurityContext, final TenantConfigurationManagement configManagement,
|
||||||
@@ -98,10 +98,15 @@ public class DistributionSetsToTargetAssignmentSupport
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sourceEntityType() {
|
protected String sourceEntityTypeSing() {
|
||||||
return i18n.getMessage("distribution.details.header");
|
return i18n.getMessage("distribution.details.header");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sourceEntityTypePlur() {
|
||||||
|
return i18n.getMessage("caption.distributionsets");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String targetEntityType() {
|
protected String targetEntityType() {
|
||||||
return i18n.getMessage("caption.target");
|
return i18n.getMessage("caption.target");
|
||||||
|
|||||||
@@ -186,10 +186,15 @@ public class SwModulesToDistributionSetAssignmentSupport
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sourceEntityType() {
|
protected String sourceEntityTypeSing() {
|
||||||
return i18n.getMessage("caption.software.module");
|
return i18n.getMessage("caption.software.module");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sourceEntityTypePlur() {
|
||||||
|
return i18n.getMessage("caption.softwaremodules");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String targetEntityType() {
|
protected String targetEntityType() {
|
||||||
return i18n.getMessage("distribution.details.header");
|
return i18n.getMessage("distribution.details.header");
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ public class TargetsToDistributionSetAssignmentSupport
|
|||||||
* Constructor for TargetsToDistributionSetAssignmentSupport
|
* Constructor for TargetsToDistributionSetAssignmentSupport
|
||||||
*
|
*
|
||||||
* @param notification
|
* @param notification
|
||||||
* UINotification
|
* UINotification
|
||||||
* @param i18n
|
* @param i18n
|
||||||
* VaadinMessageSource
|
* VaadinMessageSource
|
||||||
* @param permChecker
|
* @param permChecker
|
||||||
* SpPermissionChecker
|
* SpPermissionChecker
|
||||||
* @param assignmentController
|
* @param assignmentController
|
||||||
* DeploymentAssignmentWindowController
|
* DeploymentAssignmentWindowController
|
||||||
*/
|
*/
|
||||||
public TargetsToDistributionSetAssignmentSupport(final UINotification notification, final VaadinMessageSource i18n,
|
public TargetsToDistributionSetAssignmentSupport(final UINotification notification, final VaadinMessageSource i18n,
|
||||||
final SpPermissionChecker permChecker, final DeploymentAssignmentWindowController assignmentController) {
|
final SpPermissionChecker permChecker, final DeploymentAssignmentWindowController assignmentController) {
|
||||||
@@ -75,10 +75,15 @@ public class TargetsToDistributionSetAssignmentSupport
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sourceEntityType() {
|
protected String sourceEntityTypeSing() {
|
||||||
return i18n.getMessage("caption.target");
|
return i18n.getMessage("caption.target");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sourceEntityTypePlur() {
|
||||||
|
return i18n.getMessage("caption.targets");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String targetEntityType() {
|
protected String targetEntityType() {
|
||||||
return i18n.getMessage("distribution.details.header");
|
return i18n.getMessage("distribution.details.header");
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import java.util.Map.Entry;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayload;
|
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayload;
|
||||||
|
import org.eclipse.hawkbit.ui.common.event.EventNotificationType;
|
||||||
import org.eclipse.hawkbit.ui.common.event.EventTopics;
|
import org.eclipse.hawkbit.ui.common.event.EventTopics;
|
||||||
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
|
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
|
||||||
import org.eclipse.hawkbit.ui.utils.VaadinMessageSource;
|
import org.eclipse.hawkbit.ui.utils.VaadinMessageSource;
|
||||||
@@ -51,7 +52,7 @@ public class NotificationUnreadButton extends Button {
|
|||||||
|
|
||||||
private int unreadNotificationCounter;
|
private int unreadNotificationCounter;
|
||||||
private Window notificationsWindow;
|
private Window notificationsWindow;
|
||||||
private final transient Map<String, EntityModifiedEventPayload> remotelyOriginatedEventsStore;
|
private final transient Map<EventNotificationType, EntityModifiedEventPayload> remotelyOriginatedEventsStore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
@@ -142,15 +143,18 @@ public class NotificationUnreadButton extends Button {
|
|||||||
return notificationsLayout;
|
return notificationsLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Label buildEventNotificationLabel(final Entry<String, EntityModifiedEventPayload> remotelyOriginatedEvent) {
|
private Label buildEventNotificationLabel(
|
||||||
|
final Entry<EventNotificationType, EntityModifiedEventPayload> remotelyOriginatedEvent) {
|
||||||
|
final EventNotificationType notificationType = remotelyOriginatedEvent.getKey();
|
||||||
final int modifiedEntitiesCount = remotelyOriginatedEvent.getValue().getEntityIds().size();
|
final int modifiedEntitiesCount = remotelyOriginatedEvent.getValue().getEntityIds().size();
|
||||||
final StringBuilder notificationLabelBuilder = new StringBuilder(String.valueOf(modifiedEntitiesCount));
|
String message = "";
|
||||||
|
if (modifiedEntitiesCount == 1) {
|
||||||
notificationLabelBuilder.append(" ");
|
message = i18n.getMessage(notificationType.getNotificationMessageKeySing());
|
||||||
final String pluralPrefix = modifiedEntitiesCount > 1 ? "s" : "";
|
} else {
|
||||||
notificationLabelBuilder.append(i18n.getMessage(remotelyOriginatedEvent.getKey(), pluralPrefix));
|
message = i18n.getMessage(notificationType.getNotificationMessageKeyPlur(),
|
||||||
|
String.valueOf(modifiedEntitiesCount));
|
||||||
return new Label(notificationLabelBuilder.toString());
|
}
|
||||||
|
return new Label(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dispatchEntityModifiedEvents() {
|
private void dispatchEntityModifiedEvents() {
|
||||||
@@ -167,21 +171,20 @@ public class NotificationUnreadButton extends Button {
|
|||||||
/**
|
/**
|
||||||
* Increments the unread notifications
|
* Increments the unread notifications
|
||||||
*
|
*
|
||||||
* @param entityNotificationMsgKey
|
* @param notificationType
|
||||||
* Key value for notification message
|
* notification type for message
|
||||||
* @param eventPayload
|
* @param eventPayload
|
||||||
* EntityModifiedEventPayload
|
* EntityModifiedEventPayload
|
||||||
*/
|
*/
|
||||||
public void incrementUnreadNotification(final String entityNotificationMsgKey,
|
public void incrementUnreadNotification(final EventNotificationType notificationType,
|
||||||
final EntityModifiedEventPayload eventPayload) {
|
final EntityModifiedEventPayload eventPayload) {
|
||||||
remotelyOriginatedEventsStore.merge(entityNotificationMsgKey, eventPayload,
|
remotelyOriginatedEventsStore.merge(notificationType, eventPayload, (oldEventPayload, newEventPayload) -> {
|
||||||
(oldEventPayload, newEventPayload) -> {
|
// currently we do not support parent aware differed events,
|
||||||
// currently we do not support parent aware differed events,
|
// thus ignoring parentId of the incoming eventPayload
|
||||||
// thus ignoring parentId of the incoming eventPayload
|
oldEventPayload.getEntityIds().addAll(newEventPayload.getEntityIds());
|
||||||
oldEventPayload.getEntityIds().addAll(newEventPayload.getEntityIds());
|
|
||||||
|
|
||||||
return oldEventPayload;
|
return oldEventPayload;
|
||||||
});
|
});
|
||||||
|
|
||||||
unreadNotificationCounter += eventPayload.getEntityIds().size();
|
unreadNotificationCounter += eventPayload.getEntityIds().size();
|
||||||
refreshCaption();
|
refreshCaption();
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ import com.vaadin.ui.Window;
|
|||||||
public class DSTypeFilterButtons extends AbstractTypeFilterButtons {
|
public class DSTypeFilterButtons extends AbstractTypeFilterButtons {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private static final String DS_SET_TYPE = "Distribution set Type";
|
|
||||||
|
|
||||||
private final transient DistributionSetTypeManagement distributionSetTypeManagement;
|
private final transient DistributionSetTypeManagement distributionSetTypeManagement;
|
||||||
private final transient DsTypeWindowBuilder dsTypeWindowBuilder;
|
private final transient DsTypeWindowBuilder dsTypeWindowBuilder;
|
||||||
private final transient SystemManagement systemManagement;
|
private final transient SystemManagement systemManagement;
|
||||||
@@ -81,8 +79,13 @@ public class DSTypeFilterButtons extends AbstractTypeFilterButtons {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getFilterButtonsType() {
|
protected String getMessageKeyEntityTypeSing() {
|
||||||
return DS_SET_TYPE;
|
return "caption.entity.distribution.type";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getMessageKeyEntityTypePlur() {
|
||||||
|
return "caption.entity.distribution.types";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -99,9 +99,9 @@ public class TargetFilterGrid extends AbstractGrid<ProxyTargetFilterQuery, Strin
|
|||||||
this.targetFilterQueryManagement = targetFilterQueryManagement;
|
this.targetFilterQueryManagement = targetFilterQueryManagement;
|
||||||
this.autoAssignmentWindowBuilder = autoAssignmentWindowBuilder;
|
this.autoAssignmentWindowBuilder = autoAssignmentWindowBuilder;
|
||||||
|
|
||||||
this.targetFilterDeleteSupport = new DeleteSupport<>(this, i18n, notification,
|
this.targetFilterDeleteSupport = new DeleteSupport<>(this, i18n, notification, "caption.filter.custom",
|
||||||
i18n.getMessage("caption.filter.custom"), ProxyTargetFilterQuery::getName,
|
"caption.filter.custom.plur", ProxyTargetFilterQuery::getName, this::targetFiltersDeletionCallback,
|
||||||
this::targetFiltersDeletionCallback, UIComponentIdProvider.TARGET_FILTER_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.TARGET_FILTER_DELETE_CONFIRMATION_DIALOG);
|
||||||
|
|
||||||
setFilterSupport(new FilterSupport<>(new TargetFilterQueryDataProvider(targetFilterQueryManagement,
|
setFilterSupport(new FilterSupport<>(new TargetFilterQueryDataProvider(targetFilterQueryManagement,
|
||||||
new TargetFilterQueryToProxyTargetFilterMapper())));
|
new TargetFilterQueryToProxyTargetFilterMapper())));
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public class ActionHistoryGrid extends AbstractGrid<ProxyAction, String> {
|
|||||||
* Map entity id to proxy entity
|
* Map entity id to proxy entity
|
||||||
*
|
*
|
||||||
* @param entityId
|
* @param entityId
|
||||||
* Entity id
|
* Entity id
|
||||||
*
|
*
|
||||||
* @return Proxy action
|
* @return Proxy action
|
||||||
*/
|
*/
|
||||||
@@ -290,7 +290,7 @@ public class ActionHistoryGrid extends AbstractGrid<ProxyAction, String> {
|
|||||||
*/
|
*/
|
||||||
private void confirmAndForceAction(final Long actionId) {
|
private void confirmAndForceAction(final Long actionId) {
|
||||||
final ConfirmationDialog confirmDialog = new ConfirmationDialog(i18n,
|
final ConfirmationDialog confirmDialog = new ConfirmationDialog(i18n,
|
||||||
i18n.getMessage(UIMessageIdProvider.BUTTON_OK), i18n.getMessage(UIMessageIdProvider.BUTTON_CANCEL),
|
i18n.getMessage("caption.force.action.confirmbox"), i18n.getMessage("message.force.action.confirm"),
|
||||||
ok -> {
|
ok -> {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
forceActiveAction(actionId);
|
forceActiveAction(actionId);
|
||||||
|
|||||||
@@ -46,21 +46,21 @@ public class DistributionTagButtons extends AbstractTagFilterButtons {
|
|||||||
* Constructor for DistributionTagButtons
|
* Constructor for DistributionTagButtons
|
||||||
*
|
*
|
||||||
* @param eventBus
|
* @param eventBus
|
||||||
* UIEventBus
|
* UIEventBus
|
||||||
* @param i18n
|
* @param i18n
|
||||||
* VaadinMessageSource
|
* VaadinMessageSource
|
||||||
* @param uiNotification
|
* @param uiNotification
|
||||||
* UINotification
|
* UINotification
|
||||||
* @param permChecker
|
* @param permChecker
|
||||||
* SpPermissionChecker
|
* SpPermissionChecker
|
||||||
* @param distributionSetTagManagement
|
* @param distributionSetTagManagement
|
||||||
* DistributionSetTagManagement
|
* DistributionSetTagManagement
|
||||||
* @param distributionSetManagement
|
* @param distributionSetManagement
|
||||||
* DistributionSetManagement
|
* DistributionSetManagement
|
||||||
* @param dsTagWindowBuilder
|
* @param dsTagWindowBuilder
|
||||||
* DsTagWindowBuilder
|
* DsTagWindowBuilder
|
||||||
* @param distributionTagLayoutUiState
|
* @param distributionTagLayoutUiState
|
||||||
* TagFilterLayoutUiState
|
* TagFilterLayoutUiState
|
||||||
*/
|
*/
|
||||||
public DistributionTagButtons(final UIEventBus eventBus, final VaadinMessageSource i18n,
|
public DistributionTagButtons(final UIEventBus eventBus, final VaadinMessageSource i18n,
|
||||||
final UINotification uiNotification, final SpPermissionChecker permChecker,
|
final UINotification uiNotification, final SpPermissionChecker permChecker,
|
||||||
@@ -91,8 +91,13 @@ public class DistributionTagButtons extends AbstractTagFilterButtons {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getFilterButtonsType() {
|
protected String getMessageKeyEntityTypeSing() {
|
||||||
return i18n.getMessage(UIMessageIdProvider.CAPTION_DISTRIBUTION_TAG);
|
return UIMessageIdProvider.CAPTION_DISTRIBUTION_TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getMessageKeyEntityTypePlur() {
|
||||||
|
return "caption.entity.distribution.tags";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -147,8 +147,8 @@ public class TargetGrid extends AbstractGrid<ProxyTarget, TargetManagementFilter
|
|||||||
getSelectionSupport().enableMultiSelection();
|
getSelectionSupport().enableMultiSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.targetDeleteSupport = new DeleteSupport<>(this, i18n, notification,
|
this.targetDeleteSupport = new DeleteSupport<>(this, i18n, notification, "target.details.header",
|
||||||
i18n.getMessage("target.details.header"), ProxyTarget::getName, this::deleteTargets,
|
"caption.targets", ProxyTarget::getName, this::deleteTargets,
|
||||||
UIComponentIdProvider.TARGET_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.TARGET_DELETE_CONFIRMATION_DIALOG);
|
||||||
|
|
||||||
this.pinSupport = new PinSupport<>(this::refreshItem, this::publishPinningChangedEvent,
|
this.pinSupport = new PinSupport<>(this::refreshItem, this::publishPinningChangedEvent,
|
||||||
|
|||||||
@@ -67,8 +67,13 @@ public class TargetTagFilterButtons extends AbstractTagFilterButtons {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getFilterButtonsType() {
|
protected String getMessageKeyEntityTypeSing() {
|
||||||
return i18n.getMessage(UIMessageIdProvider.CAPTION_TARGET_TAG);
|
return UIMessageIdProvider.CAPTION_TARGET_TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getMessageKeyEntityTypePlur() {
|
||||||
|
return "caption.entity.target.tags";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQuery;
|
|||||||
import org.eclipse.hawkbit.ui.common.data.proxies.ProxyType;
|
import org.eclipse.hawkbit.ui.common.data.proxies.ProxyType;
|
||||||
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayload.EntityModifiedEventType;
|
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayload.EntityModifiedEventType;
|
||||||
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayloadIdentifier;
|
import org.eclipse.hawkbit.ui.common.event.EntityModifiedEventPayloadIdentifier;
|
||||||
|
import org.eclipse.hawkbit.ui.common.event.EventNotificationType;
|
||||||
import org.eclipse.hawkbit.ui.push.event.ActionChangedEvent;
|
import org.eclipse.hawkbit.ui.push.event.ActionChangedEvent;
|
||||||
import org.eclipse.hawkbit.ui.push.event.RolloutChangedEvent;
|
import org.eclipse.hawkbit.ui.push.event.RolloutChangedEvent;
|
||||||
import org.eclipse.hawkbit.ui.push.event.RolloutGroupChangedEvent;
|
import org.eclipse.hawkbit.ui.push.event.RolloutGroupChangedEvent;
|
||||||
@@ -64,29 +65,27 @@ public class HawkbitEventProvider implements UIEventProvider {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
EVENTS.put(TargetCreatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxyTarget.class,
|
EVENTS.put(TargetCreatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxyTarget.class,
|
||||||
EntityModifiedEventType.ENTITY_ADDED, "target.created.event.container.notifcation.message"));
|
EntityModifiedEventType.ENTITY_ADDED, EventNotificationType.TARGET_CREATED));
|
||||||
EVENTS.put(TargetUpdatedEvent.class,
|
EVENTS.put(TargetUpdatedEvent.class,
|
||||||
new EntityModifiedEventPayloadIdentifier(ProxyTarget.class, EntityModifiedEventType.ENTITY_UPDATED));
|
new EntityModifiedEventPayloadIdentifier(ProxyTarget.class, EntityModifiedEventType.ENTITY_UPDATED));
|
||||||
EVENTS.put(TargetDeletedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxyTarget.class,
|
EVENTS.put(TargetDeletedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxyTarget.class,
|
||||||
EntityModifiedEventType.ENTITY_REMOVED, "target.deleted.event.container.notifcation.message"));
|
EntityModifiedEventType.ENTITY_REMOVED, EventNotificationType.TARGET_DELETED));
|
||||||
|
|
||||||
EVENTS.put(DistributionSetCreatedEvent.class,
|
EVENTS.put(DistributionSetCreatedEvent.class,
|
||||||
new EntityModifiedEventPayloadIdentifier(ProxyDistributionSet.class,
|
new EntityModifiedEventPayloadIdentifier(ProxyDistributionSet.class,
|
||||||
EntityModifiedEventType.ENTITY_ADDED,
|
EntityModifiedEventType.ENTITY_ADDED, EventNotificationType.DISTRIBUTIONSET_CREATED));
|
||||||
"distribution.created.event.container.notifcation.message"));
|
|
||||||
EVENTS.put(DistributionSetUpdatedEvent.class, new EntityModifiedEventPayloadIdentifier(
|
EVENTS.put(DistributionSetUpdatedEvent.class, new EntityModifiedEventPayloadIdentifier(
|
||||||
ProxyDistributionSet.class, EntityModifiedEventType.ENTITY_UPDATED));
|
ProxyDistributionSet.class, EntityModifiedEventType.ENTITY_UPDATED));
|
||||||
EVENTS.put(DistributionSetDeletedEvent.class,
|
EVENTS.put(DistributionSetDeletedEvent.class,
|
||||||
new EntityModifiedEventPayloadIdentifier(ProxyDistributionSet.class,
|
new EntityModifiedEventPayloadIdentifier(ProxyDistributionSet.class,
|
||||||
EntityModifiedEventType.ENTITY_REMOVED,
|
EntityModifiedEventType.ENTITY_REMOVED, EventNotificationType.DISTRIBUTIONSET_DELETED));
|
||||||
"distribution.deleted.event.container.notifcation.message"));
|
|
||||||
|
|
||||||
EVENTS.put(SoftwareModuleCreatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxySoftwareModule.class,
|
EVENTS.put(SoftwareModuleCreatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxySoftwareModule.class,
|
||||||
EntityModifiedEventType.ENTITY_ADDED, "software.module.created.event.container.notifcation.message"));
|
EntityModifiedEventType.ENTITY_ADDED, EventNotificationType.SOFTWAREMODULE_CREATED));
|
||||||
EVENTS.put(SoftwareModuleUpdatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxySoftwareModule.class,
|
EVENTS.put(SoftwareModuleUpdatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxySoftwareModule.class,
|
||||||
EntityModifiedEventType.ENTITY_UPDATED));
|
EntityModifiedEventType.ENTITY_UPDATED));
|
||||||
EVENTS.put(SoftwareModuleDeletedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxySoftwareModule.class,
|
EVENTS.put(SoftwareModuleDeletedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxySoftwareModule.class,
|
||||||
EntityModifiedEventType.ENTITY_REMOVED, "software.module.deleted.event.container.notifcation.message"));
|
EntityModifiedEventType.ENTITY_REMOVED, EventNotificationType.SOFTWAREMODULE_DELETED));
|
||||||
|
|
||||||
EVENTS.put(TargetTagCreatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxyTarget.class,
|
EVENTS.put(TargetTagCreatedEvent.class, new EntityModifiedEventPayloadIdentifier(ProxyTarget.class,
|
||||||
ProxyTag.class, EntityModifiedEventType.ENTITY_ADDED));
|
ProxyTag.class, EntityModifiedEventType.ENTITY_ADDED));
|
||||||
|
|||||||
@@ -127,8 +127,8 @@ public class RolloutGrid extends AbstractGrid<ProxyRollout, String> {
|
|||||||
this::mapIdToProxyEntity, this::getSelectedEntityIdFromUiState, this::setSelectedEntityIdToUiState));
|
this::mapIdToProxyEntity, this::getSelectedEntityIdFromUiState, this::setSelectedEntityIdToUiState));
|
||||||
getSelectionSupport().disableSelection();
|
getSelectionSupport().disableSelection();
|
||||||
|
|
||||||
this.rolloutDeleteSupport = new DeleteSupport<>(this, i18n, uiNotification,
|
this.rolloutDeleteSupport = new DeleteSupport<>(this, i18n, uiNotification, ROLLOUT_CAPTION_MSG_KEY,
|
||||||
i18n.getMessage(ROLLOUT_CAPTION_MSG_KEY), ProxyRollout::getName, this::deleteRollout,
|
"caption.rollouts", ProxyRollout::getName, this::deleteRollout,
|
||||||
UIComponentIdProvider.ROLLOUT_DELETE_CONFIRMATION_DIALOG);
|
UIComponentIdProvider.ROLLOUT_DELETE_CONFIRMATION_DIALOG);
|
||||||
this.rolloutDeleteSupport.setConfirmationQuestionDetailsGenerator(this::getDeletionDetails);
|
this.rolloutDeleteSupport.setConfirmationQuestionDetailsGenerator(this::getDeletionDetails);
|
||||||
|
|
||||||
|
|||||||
@@ -83,18 +83,18 @@ header.action.delete=Delete
|
|||||||
header.status=Status
|
header.status=Status
|
||||||
|
|
||||||
# event container
|
# event container
|
||||||
target.created.event.container.notifcation.message=target{0} created
|
event.notifcation.target.created = 1 target created
|
||||||
target.deleted.event.container.notifcation.message=target{0} deleted
|
event.notifcation.target.deleted = 1 target deleted
|
||||||
distribution.created.event.container.notifcation.message=distribution set{0} created
|
event.notifcation.targets.created = {0} targets created
|
||||||
distribution.deleted.event.container.notifcation.message=distribution set{0} deleted
|
event.notifcation.targets.deleted = {0} targets deleted
|
||||||
target.tag.created.event.container.notifcation.message=target tag{0} created
|
event.notifcation.distributionset.created = 1 distribution set created
|
||||||
target.tag.deleted.event.container.notifcation.message=target tag{0} deleted
|
event.notifcation.distributionset.deleted = 1 distribution set deleted
|
||||||
target.tag.updated.event.container.notifcation.message=target tag{0} changed
|
event.notifcation.distributionsets.created = {0} distribution sets created
|
||||||
software.module.created.event.container.notifcation.message=software module{0} created
|
event.notifcation.distributionsets.deleted = {0} distribution sets deleted
|
||||||
software.module.deleted.event.container.notifcation.message=software module{0} deleted
|
event.notifcation.softwaremodule.created = 1 software module created
|
||||||
distribution.set.tag.created.event.container.notifcation.message=distribution set tag{0} created
|
event.notifcation.softwaremodule.deleted = 1 software module deleted
|
||||||
distribution.set.tag.deleted.event.container.notifcation.message=distribution set tag{0} deleted
|
event.notifcation.softwaremodules.created = {0} software modules created
|
||||||
distribution.set.tag.updated.event.container.notifcation.message=distribution set tag{0} changed
|
event.notifcation.softwaremodules.deleted = {0} software modules deleted
|
||||||
|
|
||||||
# Captions prefix with - caption
|
# Captions prefix with - caption
|
||||||
caption.filter.by.type = Filter by type
|
caption.filter.by.type = Filter by type
|
||||||
@@ -371,8 +371,8 @@ tooltip.in.time = In Time
|
|||||||
message.save.success = {0} saved successfully
|
message.save.success = {0} saved successfully
|
||||||
message.save.fail = {0} could not be saved, possibly due to invalid user input
|
message.save.fail = {0} could not be saved, possibly due to invalid user input
|
||||||
message.update.success = {0} updated successfully
|
message.update.success = {0} updated successfully
|
||||||
message.delete.success = {0} {1}{2} deleted successfully
|
message.delete.success = {0} {1} deleted successfully
|
||||||
message.delete.fail = {0} {1}{2} deletion failed
|
message.delete.fail = {0} {1} deletion failed
|
||||||
message.dist.pending.action = Target {0} is already assigned with distribution {1} . Pending for action
|
message.dist.pending.action = Target {0} is already assigned with distribution {1} . Pending for action
|
||||||
message.empty.target.tags= No Tags Created
|
message.empty.target.tags= No Tags Created
|
||||||
message.empty.disttype.tags = No Distribution type tags created
|
message.empty.disttype.tags = No Distribution type tags created
|
||||||
@@ -767,16 +767,27 @@ rollout.not.exists=Rollout {0} does not exist. Maybe the rollout was deleted.
|
|||||||
color.not.exists=There is no mapping for the provided colour {0}
|
color.not.exists=There is no mapping for the provided colour {0}
|
||||||
|
|
||||||
caption.entity.target.tag = Target Tag
|
caption.entity.target.tag = Target Tag
|
||||||
|
caption.entity.target.tags = Target Tags
|
||||||
caption.entity.distribution.tag = Distribution Tag
|
caption.entity.distribution.tag = Distribution Tag
|
||||||
|
caption.entity.distribution.tags = Distribution Tags
|
||||||
caption.entity.distribution.type = Distribution set Type
|
caption.entity.distribution.type = Distribution set Type
|
||||||
|
caption.entity.distribution.types = Distribution set Types
|
||||||
caption.entity.software.module.type = Software Module Type
|
caption.entity.software.module.type = Software Module Type
|
||||||
|
caption.entity.software.module.types = Software Module Types
|
||||||
|
|
||||||
validator.textfield.min.length = Please enter a text consisting of at least one and a maximum of {0} characters.
|
validator.textfield.min.length = Please enter a text consisting of at least one and a maximum of {0} characters.
|
||||||
|
|
||||||
caption.entity.delete.action.confirmbox = Confirm Deletion
|
caption.entity.delete.action.confirmbox = Confirm Deletion
|
||||||
message.confirm.delete.entity = Are you sure you want to delete {0} {1}{2}?
|
message.confirm.delete.entity = Are you sure you want to delete {0} {1}?
|
||||||
caption.entity.assign.action.confirmbox = Confirm Assignment
|
caption.entity.assign.action.confirmbox = Confirm Assignment
|
||||||
message.confirm.assign.multiple.entities.to.entity = Are you sure you want to assign {0} {1} to {2} {3}?
|
message.confirm.assign.multiple.entities.to.entity = Are you sure you want to assign {0} {1} to {2} {3}?
|
||||||
|
caption.distributionsets = Distribution sets
|
||||||
|
caption.softwaremodules = Software Modules
|
||||||
|
caption.targets = Targets
|
||||||
|
caption.artifacts = Artifacts
|
||||||
|
caption.metadata.plur = Metadata
|
||||||
|
caption.rollouts = Rollouts
|
||||||
|
caption.filter.custom.plur = Custom Filters
|
||||||
|
|
||||||
# character descriptions
|
# character descriptions
|
||||||
character.whitespace = whitespace
|
character.whitespace = whitespace
|
||||||
|
|||||||
Reference in New Issue
Block a user