Added permission check for create/update metadata
Added 'cancel' button in metadata popup Added show 'metadata' icon next to 'edit' icon Signed-off-by: AMU7KOR <Asharani.Murugesh@in.bosch.com>
This commit is contained in:
@@ -200,4 +200,23 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
|
||||
&& selectedUploadSWModule.getName().equals(softwareModule.getName())
|
||||
&& selectedUploadSWModule.getVersion().equals(softwareModule.getVersion());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isMetadataIconToBeDisplayed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getShowMetadataButtonId() {
|
||||
SoftwareModule selectedBaseEntity = getSelectedBaseEntity();
|
||||
return SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + selectedBaseEntity.getName() + "."
|
||||
+ selectedBaseEntity.getVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showMetadata(ClickEvent event) {
|
||||
UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(getSelectedBaseEntity(),null));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.eclipse.hawkbit.repository.model.MetaData;
|
||||
import org.eclipse.hawkbit.repository.model.NamedVersionedEntity;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.customrenderers.renderers.HtmlButtonRenderer;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleBorderWithIcon;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
@@ -81,7 +82,7 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
|
||||
@Autowired
|
||||
private UINotification uiNotification;
|
||||
|
||||
|
||||
@Autowired
|
||||
protected transient EventBus.SessionEventBus eventBus;
|
||||
|
||||
@@ -91,6 +92,8 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
|
||||
private Button addIcon;
|
||||
|
||||
private Button discardButton;
|
||||
|
||||
private Grid metaDataGrid;
|
||||
|
||||
private Label headerCaption;
|
||||
@@ -103,9 +106,8 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
private void init() {
|
||||
createComponents();
|
||||
buildLayout();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns metadata popup.
|
||||
@@ -120,41 +122,18 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
selectedEntity = entity;
|
||||
String nameVersion = HawkbitCommonUtil.getFormattedNameVersion(entity.getName(), entity.getVersion());
|
||||
metadataWindow = SPUIComponentProvider.getWindow(getMetadataCaption(nameVersion), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onSave(), event -> onDiscard(), null);
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonCaption(i18n.get("button.discard"));
|
||||
metadataWindow.setCancelButtonIcon(FontAwesome.UNDO);
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onSave(), event -> onCancel(), null);
|
||||
metadataWindow.setId(SPUIComponentIdProvider.METADATA_POPUP_ID);
|
||||
metadataWindow.setHeight(550, Unit.PIXELS);
|
||||
metadataWindow.setWidth(800, Unit.PIXELS);
|
||||
metadataWindow.getMainLayout().setSizeFull();
|
||||
metadataWindow.setResizable(true);
|
||||
metadataWindow.addWindowModeChangeListener(event -> onResize(event));
|
||||
setUpDetails(entity.getId(),metaData);
|
||||
metadataWindow.getButtonsLayout().addComponent(discardButton, 1);
|
||||
setUpDetails(entity.getId(), metaData);
|
||||
return metadataWindow;
|
||||
}
|
||||
|
||||
public void setUpDetails(final Long swId, final M metaData) {
|
||||
keyTextField.clear();
|
||||
valueTextArea.clear();
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
addIcon.setEnabled(true);
|
||||
if (swId != null) {
|
||||
metaDataGrid.getContainerDataSource().removeAllItems();
|
||||
populateGrid();
|
||||
metaDataGrid.getSelectionModel().reset();
|
||||
if (!metaDataGrid.getContainerDataSource().getItemIds().isEmpty()) {
|
||||
if (metaData == null) {
|
||||
metaDataGrid.select(metaDataGrid.getContainerDataSource().getIdByIndex(0));
|
||||
} else {
|
||||
metaDataGrid.select(metaData.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public E getSelectedEntity() {
|
||||
return selectedEntity;
|
||||
}
|
||||
@@ -173,12 +152,17 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
|
||||
protected abstract void deleteMetadata(E entity, String key, String value);
|
||||
|
||||
protected abstract boolean hasCreatePermission();
|
||||
|
||||
protected abstract boolean hasUpdatePermission();
|
||||
|
||||
private void createComponents() {
|
||||
keyTextField = createKeyTextField();
|
||||
valueTextArea = createValueTextField();
|
||||
metaDataGrid = createMetadataGrid();
|
||||
addIcon = createAddIcon();
|
||||
headerCaption = createHeaderCaption();
|
||||
discardButton = createDiscardButton();
|
||||
}
|
||||
|
||||
private void buildLayout() {
|
||||
@@ -188,8 +172,10 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
headerLayout.setMargin(false);
|
||||
headerLayout.setSizeFull();
|
||||
headerLayout.addComponent(headerCaption);
|
||||
headerLayout.addComponents(addIcon);
|
||||
headerLayout.setComponentAlignment(addIcon, Alignment.MIDDLE_RIGHT);
|
||||
if (hasCreatePermission()) {
|
||||
headerLayout.addComponents(addIcon);
|
||||
headerLayout.setComponentAlignment(addIcon, Alignment.MIDDLE_RIGHT);
|
||||
}
|
||||
headerLayout.setExpandRatio(headerCaption, 1.0F);
|
||||
|
||||
final HorizontalLayout headerWrapperLayout = new HorizontalLayout();
|
||||
@@ -294,9 +280,13 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
}
|
||||
} else {
|
||||
keyTextField.clear();
|
||||
keyTextField.setEnabled(true);
|
||||
valueTextArea.clear();
|
||||
metaDataGrid.select(null);
|
||||
if (hasCreatePermission()) {
|
||||
keyTextField.setEnabled(true);
|
||||
valueTextArea.setEnabled(true);
|
||||
addIcon.setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -329,9 +319,11 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
if (metadataCompositeKey != null) {
|
||||
Item item = metaDataGrid.getContainerDataSource().getItem(metadataCompositeKey);
|
||||
keyTextField.setValue((String) item.getItemProperty(KEY).getValue());
|
||||
// TODO value to be stored in table???
|
||||
valueTextArea.setValue((String) item.getItemProperty(VALUE).getValue());
|
||||
keyTextField.setEnabled(false);
|
||||
if (hasUpdatePermission()) {
|
||||
valueTextArea.setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -356,10 +348,12 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
}
|
||||
|
||||
private void onAdd(ClickEvent event) {
|
||||
metaDataGrid.deselect(metaDataGrid.getSelectedRow());
|
||||
valueTextArea.clear();
|
||||
keyTextField.clear();
|
||||
keyTextField.setEnabled(true);
|
||||
valueTextArea.setEnabled(true);
|
||||
addIcon.setEnabled(true);
|
||||
metaDataGrid.deselect(metaDataGrid.getSelectedRow());
|
||||
}
|
||||
|
||||
private void onSave() {
|
||||
@@ -376,7 +370,10 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
metaDataGrid.select(metadata.getKey());
|
||||
addIcon.setEnabled(true);
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
if (!hasUpdatePermission()) {
|
||||
valueTextArea.setEnabled(false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
M metadata = updateMetadata(entity, key, value);
|
||||
@@ -385,7 +382,7 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
metaDataGrid.select(metadata.getKey());
|
||||
addIcon.setEnabled(true);
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -429,18 +426,24 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
popualateKeyValue(itemSelected);
|
||||
}
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void onCancel() {
|
||||
metadataWindow.close();
|
||||
UI.getCurrent().removeWindow(metadataWindow);
|
||||
}
|
||||
|
||||
private void onKeyChange(TextChangeEvent event) {
|
||||
if (!valueTextArea.getValue().isEmpty() && !event.getText().isEmpty()) {
|
||||
metadataWindow.setSaveButtonEnabled(true);
|
||||
metadataWindow.setCancelButtonEnabled(true);
|
||||
} else {
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
if (hasCreatePermission() || hasUpdatePermission()) {
|
||||
if (!valueTextArea.getValue().isEmpty() && !event.getText().isEmpty()) {
|
||||
metadataWindow.setSaveButtonEnabled(true);
|
||||
setDiscardButtonEnabled(true);
|
||||
} else {
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void onRowClick(SelectionEvent event) {
|
||||
@@ -453,20 +456,29 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
} else {
|
||||
keyTextField.clear();
|
||||
valueTextArea.clear();
|
||||
keyTextField.setEnabled(true);
|
||||
addIcon.setEnabled(false);
|
||||
if (hasCreatePermission()) {
|
||||
keyTextField.setEnabled(true);
|
||||
valueTextArea.setEnabled(true);
|
||||
addIcon.setEnabled(false);
|
||||
}
|
||||
else{
|
||||
keyTextField.setEnabled(false);
|
||||
valueTextArea.setEnabled(false);
|
||||
}
|
||||
}
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
}
|
||||
|
||||
private void onValueChange(TextChangeEvent event) {
|
||||
if (!keyTextField.getValue().isEmpty() && !event.getText().isEmpty()) {
|
||||
metadataWindow.setSaveButtonEnabled(true);
|
||||
metadataWindow.setCancelButtonEnabled(true);
|
||||
} else {
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
metadataWindow.setCancelButtonEnabled(false);
|
||||
if (hasCreatePermission() || hasUpdatePermission()) {
|
||||
if (!keyTextField.getValue().isEmpty() && !event.getText().isEmpty()) {
|
||||
metadataWindow.setSaveButtonEnabled(true);
|
||||
setDiscardButtonEnabled(true);
|
||||
} else {
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,7 +488,8 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
} else {
|
||||
metaDataGrid.getColumn(DELETE_BUTTON).setWidth(50);
|
||||
}
|
||||
//Repopulating the grid (forcing for repaint)- workaround as grid size is not getting adjusted
|
||||
// Repopulating the grid (forcing for repaint)- workaround as grid size
|
||||
// is not getting adjusted
|
||||
Map<String, String> keyValueDetails = new LinkedHashMap<>();
|
||||
for (Object key : metaDataGrid.getContainerDataSource().getItemIds()) {
|
||||
Item item = metaDataGrid.getContainerDataSource().getItem(key);
|
||||
@@ -489,4 +502,47 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
|
||||
}
|
||||
}
|
||||
|
||||
private Button createDiscardButton() {
|
||||
Button discardButton = SPUIComponentProvider.getButton(SPUIComponentIdProvider.CANCEL_BUTTON,
|
||||
i18n.get("button.discard"), "", "", true, FontAwesome.UNDO, SPUIButtonStyleBorderWithIcon.class);
|
||||
discardButton.setSizeUndefined();
|
||||
discardButton.addStyleName("default-color");
|
||||
discardButton.addClickListener(event -> onDiscard());
|
||||
return discardButton;
|
||||
}
|
||||
|
||||
private void setUpDetails(final Long swId, final M metaData) {
|
||||
resetDetails();
|
||||
if (swId != null) {
|
||||
metaDataGrid.getContainerDataSource().removeAllItems();
|
||||
populateGrid();
|
||||
metaDataGrid.getSelectionModel().reset();
|
||||
if (!metaDataGrid.getContainerDataSource().getItemIds().isEmpty()) {
|
||||
if (metaData == null) {
|
||||
metaDataGrid.select(metaDataGrid.getContainerDataSource().getIdByIndex(0));
|
||||
} else {
|
||||
metaDataGrid.select(metaData.getKey());
|
||||
}
|
||||
} else if (hasCreatePermission()) {
|
||||
keyTextField.setEnabled(true);
|
||||
valueTextArea.setEnabled(true);
|
||||
addIcon.setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void resetDetails() {
|
||||
keyTextField.clear();
|
||||
valueTextArea.clear();
|
||||
keyTextField.setEnabled(false);
|
||||
valueTextArea.setEnabled(false);
|
||||
metadataWindow.setSaveButtonEnabled(false);
|
||||
setDiscardButtonEnabled(false);
|
||||
addIcon.setEnabled(true);
|
||||
}
|
||||
|
||||
private void setDiscardButtonEnabled(Boolean enable) {
|
||||
discardButton.setEnabled(enable);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||
|
||||
import com.vaadin.data.Property.ValueChangeListener;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.server.Resource;
|
||||
import com.vaadin.ui.AbstractOrderedLayout;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
@@ -161,23 +160,11 @@ public class CommonDialogWindow extends Window {
|
||||
public void setSaveButtonEnabled(final boolean enabled) {
|
||||
saveButton.setEnabled(enabled);
|
||||
}
|
||||
|
||||
public void setCancelButtonEnabled(final boolean enabled) {
|
||||
cancelButton.setEnabled(enabled);
|
||||
}
|
||||
|
||||
public HorizontalLayout getButtonsLayout() {
|
||||
return buttonsLayout;
|
||||
}
|
||||
|
||||
public void setCancelButtonCaption(final String caption) {
|
||||
cancelButton.setCaption(caption);
|
||||
}
|
||||
|
||||
public void setCancelButtonIcon(final Resource icon) {
|
||||
cancelButton.setIcon(icon);
|
||||
}
|
||||
|
||||
public VerticalLayout getMainLayout() {
|
||||
return mainLayout;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,8 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
|
||||
|
||||
private Button editButton;
|
||||
|
||||
private Button manageMetadataBtn;
|
||||
|
||||
private TabSheet detailsTab;
|
||||
|
||||
private VerticalLayout detailsLayout;
|
||||
@@ -137,6 +139,12 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
|
||||
editButton.setId(getEditButtonId());
|
||||
editButton.addClickListener(this::onEdit);
|
||||
|
||||
manageMetadataBtn = SPUIComponentProvider.getButton("", "", "", null, false,
|
||||
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
||||
manageMetadataBtn.setId(getEditButtonId());
|
||||
manageMetadataBtn.setDescription(i18n.get("tooltip.metadata.icon"));
|
||||
manageMetadataBtn.addClickListener(this::showMetadata);
|
||||
|
||||
editButton.setEnabled(false);
|
||||
|
||||
detailsTab = SPUIComponentProvider.getDetailsTabSheet();
|
||||
@@ -156,6 +164,10 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
|
||||
if (hasEditPermission()) {
|
||||
nameEditLayout.addComponent(editButton);
|
||||
nameEditLayout.setComponentAlignment(editButton, Alignment.TOP_RIGHT);
|
||||
if (isMetadataIconToBeDisplayed()) {
|
||||
nameEditLayout.addComponent(manageMetadataBtn);
|
||||
nameEditLayout.setComponentAlignment(manageMetadataBtn, Alignment.TOP_RIGHT);
|
||||
}
|
||||
}
|
||||
nameEditLayout.setExpandRatio(caption, 1.0F);
|
||||
nameEditLayout.addStyleName(SPUIStyleDefinitions.WIDGET_TITLE);
|
||||
@@ -336,4 +348,10 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
|
||||
|
||||
protected abstract String getName();
|
||||
|
||||
protected abstract String getShowMetadataButtonId();
|
||||
|
||||
protected abstract Boolean isMetadataIconToBeDisplayed();
|
||||
|
||||
protected abstract void showMetadata(Button.ClickEvent event);
|
||||
|
||||
}
|
||||
|
||||
@@ -399,10 +399,29 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
||||
return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isMetadataIconToBeDisplayed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getShowMetadataButtonId() {
|
||||
DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState
|
||||
.getLastSelectedDistribution().get() : null;
|
||||
return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "."
|
||||
+ lastselectedDistDS.getVersion();
|
||||
}
|
||||
|
||||
private boolean isDistributionSetSelected(DistributionSet ds) {
|
||||
DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState
|
||||
.getLastSelectedDistribution().get() : null;
|
||||
return ds != null && lastselectedDistDS != null && lastselectedDistDS.getName().equals(ds.getName())
|
||||
&& lastselectedDistDS.getVersion().endsWith(ds.getVersion());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void showMetadata(ClickEvent event) {
|
||||
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(getSelectedBaseEntity(),null));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import java.util.List;
|
||||
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
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.common.AbstractMetadataPopupLayout;
|
||||
@@ -37,14 +38,17 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<Distribut
|
||||
@Autowired
|
||||
private EntityFactory entityFactory;
|
||||
|
||||
@Autowired
|
||||
protected SpPermissionChecker permChecker;
|
||||
|
||||
@Override
|
||||
protected void checkForDuplicate(DistributionSet entity, String value) {
|
||||
distributionSetManagement.findOne(entity, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create metadata for DistributionSet.
|
||||
*/
|
||||
|
||||
@Override
|
||||
protected DistributionSetMetadata createMetadata(DistributionSet entity, String key, String value) {
|
||||
DistributionSetMetadata dsMetaData = distributionSetManagement.createDistributionSetMetadata(entityFactory
|
||||
@@ -80,4 +84,14 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<Distribut
|
||||
distributionSetManagement.deleteDistributionSetMetadata(entity, key);
|
||||
eventBus.publish(this, new MetadataEvent(MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA, dsMetaData));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasCreatePermission() {
|
||||
return permChecker.hasCreateDistributionPermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasUpdatePermission() {
|
||||
return permChecker.hasUpdateDistributionPermission();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +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.distributions.event;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public enum SwModuleUIEvent {
|
||||
HIDE_FILTER_BY_TYPE, SHOW_FILTER_BY_TYPE, DELETED_ALL_SOFWARE ;
|
||||
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import java.util.List;
|
||||
|
||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||
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.artifacts.state.ArtifactUploadState;
|
||||
@@ -46,6 +47,9 @@ public class SwMetadataPopupLayout extends AbstractMetadataPopupLayout<SoftwareM
|
||||
@Autowired
|
||||
private ManageDistUIState manageDistUIState;
|
||||
|
||||
@Autowired
|
||||
protected SpPermissionChecker permChecker;
|
||||
|
||||
@Override
|
||||
protected void checkForDuplicate(SoftwareModule entity, String value) {
|
||||
softwareManagement.findSoftwareModuleMetadata(entity, value);
|
||||
@@ -86,5 +90,15 @@ public class SwMetadataPopupLayout extends AbstractMetadataPopupLayout<SoftwareM
|
||||
softwareManagement.deleteSoftwareModuleMetadata(entity, key);
|
||||
eventBus.publish(this, new MetadataEvent(MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA, swMetadata));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasCreatePermission() {
|
||||
return permChecker.hasCreateDistributionPermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasUpdatePermission() {
|
||||
return permChecker.hasUpdateDistributionPermission();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -208,4 +208,20 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
|
||||
&& selectedDistSWModuleId.equals(softwareModule.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isMetadataIconToBeDisplayed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getShowMetadataButtonId() {
|
||||
SoftwareModule selectedBaseEntity = getSelectedBaseEntity();
|
||||
return SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + selectedBaseEntity.getName() + "."
|
||||
+ selectedBaseEntity.getVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showMetadata(ClickEvent event) {
|
||||
UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(getSelectedBaseEntity(),null));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,11 +206,28 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
|
||||
return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isMetadataIconToBeDisplayed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getShowMetadataButtonId() {
|
||||
DistributionSetIdName lastselectedDistDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState
|
||||
.getLastSelectedDistribution().get() : null;
|
||||
return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "."
|
||||
+ lastselectedDistDS.getVersion();
|
||||
}
|
||||
private boolean isDistributionSetSelected(DistributionSet ds) {
|
||||
DistributionSetIdName lastselectedManageDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState
|
||||
.getLastSelectedDistribution().get() : null;
|
||||
return ds!=null && lastselectedManageDS != null && lastselectedManageDS.getName().equals(ds.getName())
|
||||
&& lastselectedManageDS.getVersion().endsWith(ds.getVersion());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showMetadata(ClickEvent event) {
|
||||
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(getSelectedBaseEntity(),null));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -253,7 +253,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
|
||||
|
||||
private Button createManageMetadataButton(String nameVersionStr) {
|
||||
final Button manageMetadataBtn = SPUIComponentProvider.getButton(
|
||||
SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false,
|
||||
SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false,
|
||||
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
||||
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
||||
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.DS_METADATA_ICON);
|
||||
|
||||
@@ -248,4 +248,19 @@ public class TargetDetails extends AbstractTableDetailsLayout<Target> {
|
||||
return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getShowMetadataButtonId() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isMetadataIconToBeDisplayed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showMetadata(ClickEvent event) {
|
||||
//No implementation required
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user