Removed dependency injection where not necessary

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
kaizimmerm
2016-11-28 15:52:06 +01:00
parent 01bab2984d
commit 7a469d8da0
163 changed files with 2697 additions and 3189 deletions

View File

@@ -10,10 +10,13 @@ package org.eclipse.hawkbit.app;
import org.eclipse.hawkbit.ui.login.HawkbitLoginUI;
import org.eclipse.hawkbit.ui.themes.HawkbitTheme;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.Title;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.spring.navigator.SpringViewProvider;
/**
* Example hawkBit login UI implementation.
@@ -31,4 +34,9 @@ public class MyLoginUI extends HawkbitLoginUI {
private static final long serialVersionUID = 1L;
@Autowired
protected MyLoginUI(final SpringViewProvider viewProvider, final ApplicationContext context) {
super(viewProvider, context);
}
}

View File

@@ -10,7 +10,6 @@ package org.eclipse.hawkbit.app;
import org.eclipse.hawkbit.ui.HawkbitUI;
import org.eclipse.hawkbit.ui.push.EventPushStrategy;
import org.vaadin.spring.events.EventBus.SessionEventBus;
import com.vaadin.annotations.Push;
import com.vaadin.annotations.Theme;
@@ -43,7 +42,7 @@ public class MyUI extends HawkbitUI {
* @param eventBus
* the event bus
*/
public MyUI(final EventPushStrategy pushStrategy, final SessionEventBus eventBus) {
super(pushStrategy, eventBus);
public MyUI(final EventPushStrategy pushStrategy) {
super(pushStrategy);
}
}

View File

@@ -10,8 +10,11 @@ package org.eclipse.hawkbit.app;
import org.eclipse.hawkbit.ui.login.HawkbitLoginUI;
import org.eclipse.hawkbit.ui.themes.HawkbitTheme;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.spring.navigator.SpringViewProvider;
/**
* Example hawkBit login UI implementation.
@@ -27,6 +30,11 @@ import com.vaadin.spring.annotation.SpringUI;
@SuppressWarnings({ "squid:MaximumInheritanceDepth" })
public class MyLoginUI extends HawkbitLoginUI {
@Autowired
protected MyLoginUI(final SpringViewProvider viewProvider, final ApplicationContext context) {
super(viewProvider, context);
}
private static final long serialVersionUID = 1L;
}

View File

@@ -10,7 +10,6 @@ package org.eclipse.hawkbit.app;
import org.eclipse.hawkbit.ui.HawkbitUI;
import org.eclipse.hawkbit.ui.push.EventPushStrategy;
import org.vaadin.spring.events.EventBus.SessionEventBus;
import com.vaadin.annotations.Push;
import com.vaadin.shared.communication.PushMode;
@@ -41,8 +40,8 @@ public class MyUI extends HawkbitUI {
* @param eventBus
* the event bus
*/
public MyUI(final EventPushStrategy pushStrategy, final SessionEventBus eventBus) {
super(pushStrategy, eventBus);
public MyUI(final EventPushStrategy pushStrategy) {
super(pushStrategy);
}
}

View File

@@ -69,9 +69,6 @@ public class ConfigurableScenario {
private final MgmtSoftwareModuleClientResource uploadSoftwareModule;
// Exception - squid:S00107 - this is a simulator that leverages multiple
// resouces/feign beans.
@SuppressWarnings("squid:S00107")
public ConfigurableScenario(final MgmtDistributionSetClientResource distributionSetResource,
final MgmtSoftwareModuleClientResource softwareModuleResource,
final MgmtSoftwareModuleClientResource uploadSoftwareModule, final MgmtTargetClientResource targetResource,

View File

@@ -8,6 +8,8 @@
*/
package org.eclipse.hawkbit.autoconfigure.ui;
import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.hawkbit.DistributedResourceBundleMessageSource;
import org.eclipse.hawkbit.ui.push.DelayedEventBusPushStrategy;
import org.eclipse.hawkbit.ui.push.EventPushStrategy;
@@ -18,6 +20,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.vaadin.spring.annotation.EnableVaadinExtensions;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.annotation.EnableEventBus;
import org.vaadin.spring.security.annotation.EnableVaadinSecurity;
@@ -65,8 +68,11 @@ public class UIAutoConfiguration {
@Bean
@ConditionalOnMissingBean
@UIScope
public EventPushStrategy eventPushStrategy(final ConfigurableApplicationContext applicationContext) {
final DelayedEventBusPushStrategy delayedEventBusPushStrategy = new DelayedEventBusPushStrategy();
public EventPushStrategy eventPushStrategy(final ConfigurableApplicationContext applicationContext,
final ScheduledExecutorService executorService, final UIEventBus eventBus,
final UIEventProvider eventProvider) {
final DelayedEventBusPushStrategy delayedEventBusPushStrategy = new DelayedEventBusPushStrategy(executorService,
eventBus, eventProvider);
applicationContext.addApplicationListener(delayedEventBusPushStrategy);
return delayedEventBusPushStrategy;
}

View File

@@ -8,6 +8,8 @@
*/
package org.eclipse.hawkbit;
import java.io.Serializable;
import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationKey;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.EnvironmentAware;
@@ -25,7 +27,8 @@ import org.springframework.stereotype.Component;
*/
@Component
@ConfigurationProperties(prefix = "hawkbit.controller")
public class ControllerPollProperties {
public class ControllerPollProperties implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Maximum polling time that can be configured by a tenant in HH:MM:SS

View File

@@ -14,23 +14,22 @@ import org.eclipse.hawkbit.im.authentication.PermissionService;
import org.eclipse.hawkbit.im.authentication.SpPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
/**
* Bean which contains all SP permissions.
*
*
*
*
*/
@Validated
@Service
public class SpPermissionChecker implements Serializable {
private static final long serialVersionUID = 2757865286212875704L;
@Autowired
private transient PermissionService permissionService;
@Autowired
SpPermissionChecker(final PermissionService permissionService) {
this.permissionService = permissionService;
}
/**
* Gets the SP monitor View Permission.
*

View File

@@ -32,23 +32,22 @@ import com.vaadin.ui.VerticalLayout;
*
* @see Navigator#setErrorView(Class)
*/
@SuppressWarnings("serial")
@SpringComponent
@UIScope
class ErrorView extends VerticalLayout implements View {
private static final long serialVersionUID = 1L;
private final Label message;
@Autowired
private I18N i18n;
private final I18N i18n;
private final DashboardMenu dashboardMenu;
@Autowired
private DashboardMenu dashboardMenu;
/**
* Constructor.
*/
public ErrorView() {
ErrorView(final I18N i18n, final DashboardMenu dashboardMenu) {
this.i18n = i18n;
this.dashboardMenu = dashboardMenu;
setMargin(true);
message = new Label();
addComponent(message);

View File

@@ -61,7 +61,8 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener {
private transient EventPushStrategy pushStrategy;
protected transient EventBus.SessionEventBus eventBus;
@Autowired
protected transient EventBus.UIEventBus eventBus;
@Autowired
private SpringViewProvider viewProvider;
@@ -80,23 +81,13 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener {
@Autowired
private ErrorView errorview;
/**
* Default constructor.
*/
@Autowired
public HawkbitUI(final EventBus.SessionEventBus eventBus) {
this.eventBus = eventBus;
}
/**
* Constructor taking the push strategy.
*
* @param pushStrategy
* the strategy to push events from the backend to the UI
*/
@Autowired
public HawkbitUI(final EventPushStrategy pushStrategy, final EventBus.SessionEventBus eventBus) {
this(eventBus);
public HawkbitUI(final EventPushStrategy pushStrategy) {
this.pushStrategy = pushStrategy;
}

View File

@@ -8,6 +8,8 @@
*/
package org.eclipse.hawkbit.ui;
import java.io.Serializable;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@@ -17,13 +19,15 @@ import org.springframework.stereotype.Component;
*/
@Component
@ConfigurationProperties("hawkbit.server.ui")
public class UiProperties {
public class UiProperties implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Demo account login information.
*
*/
public static class Demo {
public static class Demo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Demo tenant.
@@ -72,12 +76,15 @@ public class UiProperties {
* documentation etc.).
*
*/
public static class Links {
public static class Links implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Configuration of UI documentation links.
*
*/
public static class Documentation {
public static class Documentation implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Link to root of documentation and user guides.
*/
@@ -235,13 +242,15 @@ public class UiProperties {
* Configuration of login view.
*
*/
public static class Login {
public static class Login implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Cookie configuration for login credential cookie.
*
*/
public static class Cookie {
public static class Cookie implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Secure cookie enabled.
*/

View File

@@ -8,13 +8,18 @@
*/
package org.eclipse.hawkbit.ui.artifacts;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.ui.HawkbitUI;
import org.eclipse.hawkbit.ui.artifacts.details.ArtifactDetailsLayout;
import org.eclipse.hawkbit.ui.artifacts.event.ArtifactDetailsEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria;
import org.eclipse.hawkbit.ui.artifacts.footer.SMDeleteActionsLayout;
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleTableLayout;
import org.eclipse.hawkbit.ui.artifacts.smtype.SMTypeFilterLayout;
@@ -25,8 +30,10 @@ import org.eclipse.hawkbit.ui.management.event.DragEvent;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.eclipse.hawkbit.util.SPInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -57,35 +64,25 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW
public static final String VIEW_NAME = "spUpload";
private static final long serialVersionUID = 8754632011301553682L;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private SpPermissionChecker permChecker;
private final SpPermissionChecker permChecker;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient UINotification uiNotification;
private final UINotification uiNotification;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private SMTypeFilterLayout filterByTypeLayout;
private final SMTypeFilterLayout filterByTypeLayout;
@Autowired
private SoftwareModuleTableLayout smTableLayout;
private final SoftwareModuleTableLayout smTableLayout;
@Autowired
private ArtifactDetailsLayout artifactDetailsLayout;
private final ArtifactDetailsLayout artifactDetailsLayout;
@Autowired
private UploadLayout uploadLayout;
private final UploadLayout uploadLayout;
@Autowired
private SMDeleteActionsLayout deleteActionsLayout;
private final SMDeleteActionsLayout deleteActionsLayout;
private VerticalLayout detailAndUploadLayout;
@@ -94,8 +91,29 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW
private GridLayout mainLayout;
private DragAndDropWrapper dadw;
@Override
public void enter(final ViewChangeEvent event) {
@Autowired
UploadArtifactView(final UIEventBus eventBus, final SpPermissionChecker permChecker, final I18N i18n,
final UINotification uiNotification, final ArtifactUploadState artifactUploadState,
final TagManagement tagManagement, final EntityFactory entityFactory,
final SoftwareManagement softwareManagement, final UploadViewAcceptCriteria uploadViewAcceptCriteria,
final SPInfo spInfo) {
this.eventBus = eventBus;
this.permChecker = permChecker;
this.i18n = i18n;
this.uiNotification = uiNotification;
this.artifactUploadState = artifactUploadState;
this.filterByTypeLayout = new SMTypeFilterLayout(artifactUploadState, i18n, permChecker, eventBus,
tagManagement, entityFactory, uiNotification, softwareManagement, uploadViewAcceptCriteria);
this.smTableLayout = new SoftwareModuleTableLayout(i18n, permChecker, artifactUploadState, uiNotification,
eventBus, softwareManagement, entityFactory, uploadViewAcceptCriteria);
this.artifactDetailsLayout = new ArtifactDetailsLayout(i18n, eventBus, artifactUploadState, uiNotification);
this.uploadLayout = new UploadLayout(i18n, uiNotification, eventBus, artifactUploadState, spInfo);
this.deleteActionsLayout = new SMDeleteActionsLayout(i18n, permChecker, eventBus, uiNotification,
artifactUploadState, softwareManagement, uploadViewAcceptCriteria);
}
@PostConstruct
void init() {
buildLayout();
restoreState();
checkNoDataAvaialble();
@@ -109,7 +127,7 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent event) {
if (BaseEntityEventType.MINIMIZED == event.getEventType()) {
minimizeSwTable();
@@ -118,7 +136,7 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final ArtifactDetailsEvent event) {
if (event == ArtifactDetailsEvent.MINIMIZED) {
minimizeArtifactoryDetails();
@@ -272,4 +290,9 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW
}
}
@Override
public void enter(final ViewChangeEvent event) {
// This view is constructed in the init() method()
}
}

View File

@@ -14,9 +14,6 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.ArtifactManagement;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.ui.artifacts.event.ArtifactDetailsEvent;
@@ -37,11 +34,11 @@ import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.SpringContextHelper;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -50,8 +47,6 @@ import com.google.common.collect.Maps;
import com.vaadin.data.Container;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
@@ -65,12 +60,7 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* Display the details of the artifacts for a selected software module.
*
*
*/
@SpringComponent
@UIScope
public class ArtifactDetailsLayout extends VerticalLayout {
private static final long serialVersionUID = -5189069028037133891L;
@@ -91,17 +81,13 @@ public class ArtifactDetailsLayout extends VerticalLayout {
private static final String MD5HASH = "md5Hash";
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private transient UINotification uINotification;
private final UINotification uINotification;
private Label titleOfArtifactDetails;
@@ -111,15 +97,17 @@ public class ArtifactDetailsLayout extends VerticalLayout {
private Table maxArtifactDetailsTable;
private boolean fullWindowMode = false;
private boolean fullWindowMode;
private boolean readOnly = false;
private boolean readOnly;
public ArtifactDetailsLayout(final I18N i18n, final UIEventBus eventBus,
final ArtifactUploadState artifactUploadState, final UINotification uINotification) {
this.i18n = i18n;
this.eventBus = eventBus;
this.artifactUploadState = artifactUploadState;
this.uINotification = uINotification;
/**
* Initialize the artifact details layout.
*/
@PostConstruct
private void init() {
createComponents();
buildLayout();
eventBus.subscribe(this);
@@ -140,9 +128,9 @@ public class ArtifactDetailsLayout extends VerticalLayout {
* @param readOnly
* value true for read only.
*/
// TODO kaizimmerm: fix this
public void init(final boolean readOnly) {
this.readOnly = readOnly;
init();
}
private void createComponents() {
@@ -192,7 +180,7 @@ public class ArtifactDetailsLayout extends VerticalLayout {
header.addComponents(titleOfArtifactDetails, maxMinButton);
header.setComponentAlignment(titleOfArtifactDetails, Alignment.TOP_LEFT);
header.setComponentAlignment(maxMinButton, Alignment.TOP_RIGHT);
header.setExpandRatio(titleOfArtifactDetails, 1.0f);
header.setExpandRatio(titleOfArtifactDetails, 1.0F);
setSizeFull();
setImmediate(true);
@@ -202,7 +190,7 @@ public class ArtifactDetailsLayout extends VerticalLayout {
setComponentAlignment(header, Alignment.MIDDLE_CENTER);
addComponent(artifactDetailsTable);
setComponentAlignment(artifactDetailsTable, Alignment.MIDDLE_CENTER);
setExpandRatio(artifactDetailsTable, 1.0f);
setExpandRatio(artifactDetailsTable, 1.0F);
}
@@ -308,15 +296,15 @@ public class ArtifactDetailsLayout extends VerticalLayout {
table.setColumnHeader(ACTION, i18n.get("upload.action"));
}
table.setColumnExpandRatio(PROVIDED_FILE_NAME, 3.5f);
table.setColumnExpandRatio(PROVIDED_FILE_NAME, 3.5F);
table.setColumnExpandRatio(SIZE, 2f);
if (fullWindowMode) {
table.setColumnExpandRatio(SHA1HASH, 2.8f);
table.setColumnExpandRatio(MD5HASH, 2.4f);
table.setColumnExpandRatio(SHA1HASH, 2.8F);
table.setColumnExpandRatio(MD5HASH, 2.4F);
}
table.setColumnExpandRatio(CREATE_MODIFIED_DATE_UPLOAD, 3f);
table.setColumnExpandRatio(CREATE_MODIFIED_DATE_UPLOAD, 3F);
if (!readOnly) {
table.setColumnExpandRatio(ACTION, 2.5f);
table.setColumnExpandRatio(ACTION, 2.5F);
}
table.setVisibleColumns(getVisbleColumns().toArray());
@@ -460,7 +448,7 @@ public class ArtifactDetailsLayout extends VerticalLayout {
setVisible(false);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent softwareModuleEvent) {
if (BaseEntityEventType.SELECTED_ENTITY == softwareModuleEvent.getEventType()) {
UI.getCurrent().access(() -> {
@@ -486,14 +474,6 @@ public class ArtifactDetailsLayout extends VerticalLayout {
}
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this); // It's good manners to do this, even though
// we should be
// automatically unsubscribed when the UI is
// garbage collected
}
public Table getArtifactDetailsTable() {
return artifactDetailsTable;
}

View File

@@ -14,6 +14,9 @@ import java.util.Map;
import org.eclipse.hawkbit.ui.common.AbstractAcceptCriteria;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.google.common.collect.Maps;
import com.vaadin.spring.annotation.SpringComponent;
@@ -34,6 +37,11 @@ public class UploadViewAcceptCriteria extends AbstractAcceptCriteria {
private static final Map<String, Object> DROP_HINTS_CONFIGS = createDropHintConfigurations();
@Autowired
UploadViewAcceptCriteria(final UINotification uiNotification, final UIEventBus eventBus) {
super(uiNotification, eventBus);
}
@Override
protected String getComponentId(final Component component) {
String id = component.getId();

View File

@@ -10,22 +10,24 @@ package org.eclipse.hawkbit.ui.artifacts.footer;
import java.util.Set;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout;
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
import org.eclipse.hawkbit.ui.management.event.DragEvent;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Component;
import com.vaadin.ui.Table;
import com.vaadin.ui.Table.TableTransferable;
@@ -33,24 +35,30 @@ import com.vaadin.ui.UI;
/**
* Upload view footer layout implementation.
*
*/
@SpringComponent
@UIScope
public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout {
private static final long serialVersionUID = -3273982053389866299L;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private UploadViewConfirmationWindowLayout uploadViewConfirmationWindowLayout;
private final UploadViewConfirmationWindowLayout uploadViewConfirmationWindowLayout;
@Autowired
private UploadViewAcceptCriteria uploadViewAcceptCriteria;
private final UploadViewAcceptCriteria uploadViewAcceptCriteria;
@EventBusListenerMethod(scope = EventScope.SESSION)
public SMDeleteActionsLayout(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus,
final UINotification notification, final ArtifactUploadState artifactUploadState,
final SoftwareManagement softwareManagement, final UploadViewAcceptCriteria uploadViewAcceptCriteria) {
super(i18n, permChecker, eventBus, notification);
this.artifactUploadState = artifactUploadState;
this.uploadViewConfirmationWindowLayout = new UploadViewConfirmationWindowLayout(i18n, eventBus,
softwareManagement, artifactUploadState);
this.uploadViewAcceptCriteria = uploadViewAcceptCriteria;
init();
}
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadArtifactUIEvent event) {
if (isSoftwareEvent(event) || isSoftwareTypeEvent(event)) {
@@ -84,7 +92,7 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout {
|| event == UploadArtifactUIEvent.DISCARD_DELETE_SOFTWARE_TYPE;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DragEvent event) {
if (event == DragEvent.HIDE_DROP_HINT) {
UI.getCurrent().access(() -> hideDropHints());
@@ -134,9 +142,8 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout {
final String swModuleTypeName = sourceComponent.getId()
.replace(UIComponentIdProvider.UPLOAD_TYPE_BUTTON_PREFIX, "");
if (artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().isPresent()
&& artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().get().getName()
.equalsIgnoreCase(swModuleTypeName)) {
if (artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType()
.map(type -> type.getName().equalsIgnoreCase(swModuleTypeName)).orElse(false)) {
notification.displayValidationError(
i18n.get("message.swmodule.type.check.delete", new Object[] { swModuleTypeName }));
} else {

View File

@@ -20,30 +20,24 @@ import org.eclipse.hawkbit.ui.artifacts.state.CustomFile;
import org.eclipse.hawkbit.ui.common.confirmwindow.layout.AbstractConfirmationWindowLayout;
import org.eclipse.hawkbit.ui.common.confirmwindow.layout.ConfirmationTab;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.google.common.collect.Maps;
import com.vaadin.data.Container;
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.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Table.Align;
/**
* Abstract layout of confirm actions window.
*
*
*
*/
@SpringComponent
@UIScope
public class UploadViewConfirmationWindowLayout extends AbstractConfirmationWindowLayout {
private static final long serialVersionUID = 1804036019105286988L;
@@ -56,11 +50,16 @@ public class UploadViewConfirmationWindowLayout extends AbstractConfirmationWind
private static final String DISCARD = "Discard";
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
public UploadViewConfirmationWindowLayout(final I18N i18n, final UIEventBus eventBus,
final SoftwareManagement softwareManagement, final ArtifactUploadState artifactUploadState) {
super(i18n, eventBus);
this.softwareManagement = softwareManagement;
this.artifactUploadState = artifactUploadState;
}
@Override
protected Map<String, ConfirmationTab> getConfimrationTabs() {

View File

@@ -8,8 +8,6 @@
*/
package org.eclipse.hawkbit.ui.artifacts.smtable;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
@@ -29,12 +27,10 @@ import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.SpringContextHelper;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.FormLayout;
@@ -46,26 +42,19 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* Generates window for Software module add or update.
*/
@SpringComponent
@UIScope
public class SoftwareModuleAddUpdateWindow extends CustomComponent {
private static final long serialVersionUID = -5217675246477211483L;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient UINotification uiNotifcation;
private final UINotification uiNotifcation;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private transient EntityFactory entityFactory;
private final EntityFactory entityFactory;
private TextField nameTextField;
@@ -83,6 +72,17 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent {
private FormLayout formLayout;
public SoftwareModuleAddUpdateWindow(final I18N i18n, final UINotification uiNotifcation, final UIEventBus eventBus,
final SoftwareManagement softwareManagement, final EntityFactory entityFactory) {
this.i18n = i18n;
this.uiNotifcation = uiNotifcation;
this.eventBus = eventBus;
this.softwareManagement = softwareManagement;
this.entityFactory = entityFactory;
createRequiredComponents();
}
/**
* Save or update the sw module.
*/
@@ -102,14 +102,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent {
}
}
/**
* Initialize Distribution Add and Edit Window.
*/
@PostConstruct
void init() {
createRequiredComponents();
}
/**
* Create window for new software module.
*

View File

@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.artifacts.smtable;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.MetaData;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
@@ -20,13 +21,12 @@ import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
import org.eclipse.hawkbit.ui.distributions.smtable.SwMetadataPopupLayout;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
@@ -39,41 +39,39 @@ import com.vaadin.ui.Window;
*
*
*/
@SpringComponent
@UIScope
public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDetailsLayout<SoftwareModule> {
private static final long serialVersionUID = -4900381301076646366L;
@Autowired
private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
private final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private SwMetadataPopupLayout swMetadataPopupLayout;
private final SwMetadataPopupLayout swMetadataPopupLayout;
@Autowired
private transient EntityFactory entityFactory;
private final SoftwareModuleMetadatadetailslayout swmMetadataTable;
private SoftwareModuleMetadatadetailslayout swmMetadataTable;
public SoftwareModuleDetails(final I18N i18n, final UIEventBus eventBus,
final SpPermissionChecker permissionChecker,
final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow,
final ArtifactUploadState artifactUploadState, final SoftwareManagement softwareManagement,
final SwMetadataPopupLayout swMetadataPopupLayout, final EntityFactory entityFactory) {
super(i18n, eventBus, permissionChecker, null);
this.softwareModuleAddUpdateWindow = softwareModuleAddUpdateWindow;
this.artifactUploadState = artifactUploadState;
this.softwareManagement = softwareManagement;
this.swMetadataPopupLayout = swMetadataPopupLayout;
/**
* softwareLayout Initialize the component.
*/
@Override
protected void init() {
swmMetadataTable = new SoftwareModuleMetadatadetailslayout();
swmMetadataTable.init(getI18n(), getPermissionChecker(), softwareManagement, swMetadataPopupLayout,
entityFactory);
super.init();
addTabs(detailsTab);
restoreState();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final MetadataEvent event) {
UI.getCurrent().access(() -> {
final MetaData softwareModuleMetadata = event.getMetaData();
@@ -168,7 +166,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
return artifactUploadState.isSwModuleTableMaximized();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent softwareModuleEvent) {
onBaseEntityEvent(softwareModuleEvent);
}
@@ -194,8 +192,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
}
private boolean isSoftwareModuleSelected(final SoftwareModule softwareModule) {
final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().isPresent()
? artifactUploadState.getSelectedBaseSoftwareModule().get() : null;
final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().orElse(null);
return softwareModule != null && selectedUploadSWModule != null
&& selectedUploadSWModule.getName().equals(softwareModule.getName())
&& selectedUploadSWModule.getVersion().equals(softwareModule.getVersion());

View File

@@ -11,7 +11,9 @@ package org.eclipse.hawkbit.ui.artifacts.smtable;
import java.util.List;
import java.util.Map;
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.ui.artifacts.event.SMFilterEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
@@ -24,15 +26,17 @@ import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.distributions.smtable.SwMetadataPopupLayout;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
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.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -42,34 +46,41 @@ import com.vaadin.data.Item;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Table;
import com.vaadin.ui.UI;
/**
* Header of Software module table.
* The Software module table.
*/
@UIScope
@SpringComponent
public class SoftwareModuleTable extends AbstractNamedVersionTable<SoftwareModule, Long> {
private static final long serialVersionUID = 6469417305487144809L;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private UploadViewAcceptCriteria uploadViewAcceptCriteria;
private final UploadViewAcceptCriteria uploadViewAcceptCriteria;
@Autowired
private SwMetadataPopupLayout swMetadataPopupLayout;
private final SwMetadataPopupLayout swMetadataPopupLayout;
@EventBusListenerMethod(scope = EventScope.SESSION)
public SoftwareModuleTable(final UIEventBus eventBus, final I18N i18n, final UINotification uiNotification,
final ArtifactUploadState artifactUploadState, final SoftwareManagement softwareManagement,
final UploadViewAcceptCriteria uploadViewAcceptCriteria, final EntityFactory entityFactory,
final SpPermissionChecker permChecker, final SwMetadataPopupLayout swMetadataPopupLayout) {
super(eventBus, i18n, uiNotification);
this.artifactUploadState = artifactUploadState;
this.softwareManagement = softwareManagement;
this.uploadViewAcceptCriteria = uploadViewAcceptCriteria;
this.swMetadataPopupLayout = swMetadataPopupLayout;
addNewContainerDS();
setColumnProperties();
setDataAvailable(getContainerDataSource().size() != 0);
}
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SMFilterEvent filterEvent) {
UI.getCurrent().access(() -> {
@@ -153,12 +164,12 @@ public class SoftwareModuleTable extends AbstractNamedVersionTable<SoftwareModul
eventBus.publish(this, new SoftwareModuleEvent(BaseEntityEventType.SELECTED_ENTITY, lastSoftwareModule));
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent event) {
onBaseEntityEvent(event);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadArtifactUIEvent event) {
if (event == UploadArtifactUIEvent.DELETED_ALL_SOFWARE) {
UI.getCurrent().access(this::refreshFilter);

View File

@@ -8,43 +8,45 @@
*/
package org.eclipse.hawkbit.ui.artifacts.smtable;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
import com.vaadin.ui.Window;
/**
* Header of Software module table.
*
*
*
*/
@SpringComponent
@UIScope
public class SoftwareModuleTableHeader extends AbstractTableHeader {
private static final long serialVersionUID = 242961845006626297L;
@Autowired
private ArtifactUploadState artifactUploadState;
private final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
@Autowired
private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
public SoftwareModuleTableHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventbus,
final ArtifactUploadState artifactUploadState, final UINotification uiNotifcation,
final UIEventBus eventBus, final SoftwareManagement softwareManagement, final EntityFactory entityFactory,
final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow) {
super(i18n, permChecker, eventbus, null, null, artifactUploadState);
this.softwareModuleAddUpdateWindow = softwareModuleAddUpdateWindow;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadArtifactUIEvent event) {
if (event == UploadArtifactUIEvent.HIDE_FILTER_BY_TYPE) {
setFilterButtonsIconVisible(true);
@@ -73,10 +75,7 @@ public class SoftwareModuleTableHeader extends AbstractTableHeader {
@Override
protected String onLoadSearchBoxValue() {
if (artifactUploadState.getSoftwareModuleFilters().getSearchText().isPresent()) {
return artifactUploadState.getSoftwareModuleFilters().getSearchText().get();
}
return null;
return artifactUploadState.getSoftwareModuleFilters().getSearchText().orElse(null);
}
@Override

View File

@@ -8,38 +8,42 @@
*/
package org.eclipse.hawkbit.ui.artifacts.smtable;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import org.eclipse.hawkbit.ui.distributions.smtable.SwMetadataPopupLayout;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
/**
* Software module table layout. (Upload Management)
*/
@SpringComponent
@UIScope
public class SoftwareModuleTableLayout extends AbstractTableLayout {
private static final long serialVersionUID = 6464291374980641235L;
@Autowired
private SoftwareModuleDetails softwareModuleDetails;
public SoftwareModuleTableLayout(final I18N i18n, final SpPermissionChecker permChecker,
final ArtifactUploadState artifactUploadState, final UINotification uiNotification,
final UIEventBus eventBus, final SoftwareManagement softwareManagement, final EntityFactory entityFactory,
final UploadViewAcceptCriteria uploadViewAcceptCriteria) {
@Autowired
private SoftwareModuleTableHeader smTableHeader;
final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow = new SoftwareModuleAddUpdateWindow(i18n,
uiNotification, eventBus, softwareManagement, entityFactory);
@Autowired
private SoftwareModuleTable smTable;
final SwMetadataPopupLayout swMetadataPopupLayout = new SwMetadataPopupLayout(i18n, uiNotification, eventBus,
softwareManagement, entityFactory, permChecker);
/**
* Initialize the filter layout.
*/
@PostConstruct
void init() {
super.init(smTableHeader, smTable, softwareModuleDetails);
super.init(
new SoftwareModuleTableHeader(i18n, permChecker, eventBus, artifactUploadState, uiNotification,
eventBus, softwareManagement, entityFactory, softwareModuleAddUpdateWindow),
new SoftwareModuleTable(eventBus, i18n, uiNotification, artifactUploadState, softwareManagement,
uploadViewAcceptCriteria, entityFactory, permChecker, swMetadataPopupLayout),
new SoftwareModuleDetails(i18n, eventBus, permChecker, softwareModuleAddUpdateWindow,
artifactUploadState, softwareManagement, swMetadataPopupLayout, entityFactory));
}
}

View File

@@ -11,7 +11,10 @@ package org.eclipse.hawkbit.ui.artifacts.smtype;
import java.util.ArrayList;
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.TagManagement;
import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum;
@@ -23,17 +26,17 @@ import org.eclipse.hawkbit.ui.common.builder.TextAreaBuilder;
import org.eclipse.hawkbit.ui.common.builder.TextFieldBuilder;
import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
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.UIEventBus;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Label;
import com.vaadin.ui.OptionGroup;
import com.vaadin.ui.TextField;
@@ -44,15 +47,12 @@ import com.vaadin.ui.themes.ValoTheme;
* Layout for the create or update software module type.
*
*/
@SpringComponent
@UIScope
public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout<SoftwareModuleType> {
private static final long serialVersionUID = 1L;
private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateSoftwareTypeLayout.class);
@Autowired
private transient SoftwareManagement swTypeManagementService;
private final SoftwareManagement swTypeManagementService;
private String singleAssignStr;
private String multiAssignStr;
@@ -60,6 +60,13 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout<Softw
private Label multiAssign;
private OptionGroup assignOptiongroup;
public CreateUpdateSoftwareTypeLayout(final I18N i18n, final TagManagement tagManagement,
final EntityFactory entityFactory, final UIEventBus eventBus, final SpPermissionChecker permChecker,
final UINotification uiNotification, final SoftwareManagement swTypeManagementService) {
super(i18n, tagManagement, entityFactory, eventBus, permChecker, uiNotification);
this.swTypeManagementService = swTypeManagementService;
}
@Override
protected void addListeners() {
super.addListeners();

View File

@@ -15,52 +15,37 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterSingleButtonClick;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
/**
* Single button click behaviour of filter buttons layout.
*
*
*
*/
@SpringComponent
@UIScope
public class SMTypeFilterButtonClick extends AbstractFilterSingleButtonClick implements Serializable {
private static final long serialVersionUID = 3707945900524967887L;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
public SMTypeFilterButtonClick(final UIEventBus eventBus, final ArtifactUploadState artifactUploadState,
final SoftwareManagement softwareManagement) {
this.eventBus = eventBus;
this.artifactUploadState = artifactUploadState;
this.softwareManagement = softwareManagement;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.layouts.SPFilterButtonClickBehaviour#
* filterUnClicked(com.vaadin.ui. Button)
*/
@Override
protected void filterUnClicked(final Button clickedButton) {
artifactUploadState.getSoftwareModuleFilters().setSoftwareModuleType(null);
eventBus.publish(this, SMFilterEvent.FILTER_BY_TYPE);
}
/*
* (non-Javadoc)
*
* @see hawkbit.server.ui.layouts.SPFilterButtonClickBehaviour#filterClicked
* (com.vaadin.ui.Button )
*/
@Override
protected void filterClicked(final Button clickedButton) {
final SoftwareModuleType softwareModuleType = softwareManagement

View File

@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.artifacts.smtype;
import java.util.EnumSet;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
@@ -19,35 +20,36 @@ import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Software module type filter buttons.
*
*/
@SpringComponent
@UIScope
public class SMTypeFilterButtons extends AbstractFilterButtons {
private static final long serialVersionUID = 169198312654380358L;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private UploadViewAcceptCriteria uploadViewAcceptCriteria;
private final UploadViewAcceptCriteria uploadViewAcceptCriteria;
@EventBusListenerMethod(scope = EventScope.SESSION)
public SMTypeFilterButtons(final UIEventBus eventBus, final ArtifactUploadState artifactUploadState,
final UploadViewAcceptCriteria uploadViewAcceptCriteria, final SoftwareManagement softwareManagement) {
super(eventBus, new SMTypeFilterButtonClick(eventBus, artifactUploadState, softwareManagement));
this.artifactUploadState = artifactUploadState;
this.uploadViewAcceptCriteria = uploadViewAcceptCriteria;
}
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleTypeEvent event) {
if (event.getSoftwareModuleType() != null
&& EnumSet.allOf(SoftwareModuleTypeEnum.class).contains(event.getSoftwareModuleTypeEnum())) {
@@ -56,7 +58,7 @@ public class SMTypeFilterButtons extends AbstractFilterButtons {
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadArtifactUIEvent event) {
if (event == UploadArtifactUIEvent.DELETED_ALL_SOFWARE_TYPE) {
refreshTable();
@@ -70,14 +72,13 @@ public class SMTypeFilterButtons extends AbstractFilterButtons {
@Override
protected LazyQueryContainer createButtonsLazyQueryContainer() {
return HawkbitCommonUtil.createLazyQueryContainer(
new BeanQueryFactory<SoftwareModuleTypeBeanQuery>(SoftwareModuleTypeBeanQuery.class));
return HawkbitCommonUtil.createLazyQueryContainer(new BeanQueryFactory<>(SoftwareModuleTypeBeanQuery.class));
}
@Override
protected boolean isClickedByDefault(final String typeName) {
return artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().isPresent() && artifactUploadState
.getSoftwareModuleFilters().getSoftwareModuleType().get().getName().equals(typeName);
return artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType()
.map(type -> type.getName().equals(typeName)).orElse(false);
}
@Override

View File

@@ -8,18 +8,20 @@
*/
package org.eclipse.hawkbit.ui.artifacts.smtype;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
import com.vaadin.ui.Window;
@@ -27,25 +29,22 @@ import com.vaadin.ui.Window;
/**
* Software module type filter buttons header.
*/
@SpringComponent
@UIScope
public class SMTypeFilterHeader extends AbstractFilterHeader {
private static final long serialVersionUID = -4855810338059032342L;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
private final CreateUpdateSoftwareTypeLayout createUpdateSWTypeLayout;
@Autowired
private CreateUpdateSoftwareTypeLayout createUpdateSWTypeLayout;
public SMTypeFilterHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus,
final ArtifactUploadState artifactUploadState, final TagManagement tagManagement,
final EntityFactory entityFactory, final UINotification uiNotification,
final SoftwareManagement softwareManagement) {
super(permChecker, eventBus, i18n);
this.artifactUploadState = artifactUploadState;
this.createUpdateSWTypeLayout = new CreateUpdateSoftwareTypeLayout(i18n, tagManagement, entityFactory, eventBus,
permChecker, uiNotification, softwareManagement);
/**
* Initialize the components.
*/
@Override
@PostConstruct
protected void init() {
super.init();
if (permChecker.hasCreateDistributionPermission() || permChecker.hasUpdateDistributionPermission()) {
createUpdateSWTypeLayout.init();
}

View File

@@ -8,57 +8,44 @@
*/
package org.eclipse.hawkbit.ui.artifacts.smtype;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterLayout;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Software module type filter buttons layout.
*
*
*
*/
@SpringComponent
@UIScope
public class SMTypeFilterLayout extends AbstractFilterLayout {
private static final long serialVersionUID = 1581066345157393665L;
@Autowired
private transient EventBus.SessionEventBus eventbus;
private final ArtifactUploadState artifactUploadState;
@Autowired
private SMTypeFilterHeader smTypeFilterHeader;
public SMTypeFilterLayout(final ArtifactUploadState artifactUploadState, final I18N i18n,
final SpPermissionChecker permChecker, final UIEventBus eventBus, final TagManagement tagManagement,
final EntityFactory entityFactory, final UINotification uiNotification,
final SoftwareManagement softwareManagement, final UploadViewAcceptCriteria uploadViewAcceptCriteria) {
super(new SMTypeFilterHeader(i18n, permChecker, eventBus, artifactUploadState, tagManagement, entityFactory,
uiNotification, softwareManagement),
new SMTypeFilterButtons(eventBus, artifactUploadState, uploadViewAcceptCriteria, softwareManagement));
@Autowired
private SMTypeFilterButtons smTypeFilterButtons;
this.artifactUploadState = artifactUploadState;
restoreState();
@Autowired
private SMTypeFilterButtonClick smTypeFilterButtonClick;
@Autowired
private ArtifactUploadState artifactUploadState;
/**
* Initialize the filter layout.
*/
@PostConstruct
void init() {
super.init(smTypeFilterHeader, smTypeFilterButtons, smTypeFilterButtonClick);
eventbus.subscribe(this);
eventBus.subscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadArtifactUIEvent event) {
if (event == UploadArtifactUIEvent.HIDE_FILTER_BY_TYPE) {
setVisible(false);
@@ -68,21 +55,6 @@ public class SMTypeFilterLayout extends AbstractFilterLayout {
}
}
@PreDestroy
void destroy() {
/*
* It's good manners to do this, even though vaadin-spring will
* automatically unsubscribe when this UI is garbage collected.
*/
eventbus.unsubscribe(this);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.common.filterlayout.SPFilterLayout#
* onLoadIsTypeFilterIsClosed()
*/
@Override
public Boolean onLoadIsTypeFilterIsClosed() {
return artifactUploadState.isSwTypeFilterClosed();

View File

@@ -38,8 +38,7 @@ public class ArtifactUploadState implements ManagmentEntityState<Long>, Serializ
private static final long serialVersionUID = 8273440375917450859L;
@Autowired
private SoftwareModuleFilters softwareModuleFilters;
private final SoftwareModuleFilters softwareModuleFilters;
private final Map<Long, String> deleteSofwareModules = new HashMap<>();
@@ -75,6 +74,11 @@ public class ArtifactUploadState implements ManagmentEntityState<Long>, Serializ
private final AtomicInteger numberOfFileUploadsFailed = new AtomicInteger();
@Autowired
ArtifactUploadState(final SoftwareModuleFilters softwareModuleFilters) {
this.softwareModuleFilters = softwareModuleFilters;
}
public AtomicInteger getNumberOfFileUploadsFailed() {
return numberOfFileUploadsFailed;
}

View File

@@ -11,8 +11,6 @@ package org.eclipse.hawkbit.ui.artifacts.upload;
import java.io.IOException;
import java.io.OutputStream;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.exception.ArtifactUploadFailedException;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.ui.artifacts.event.UploadFileStatus;
@@ -68,7 +66,7 @@ public class UploadHandler implements StreamVariable, Receiver, SucceededListene
private String failureReason;
private final I18N i18n;
private transient EventBus.SessionEventBus eventBus;
private transient EventBus.UIEventBus eventBus;
private final SoftwareModule selectedSw;
private SoftwareModule selectedSwForUpload;
private final ArtifactUploadState artifactUploadState;
@@ -85,21 +83,12 @@ public class UploadHandler implements StreamVariable, Receiver, SucceededListene
this.mimeType = mimeType;
this.selectedSw = selectedSw;
this.i18n = SpringContextHelper.getBean(I18N.class);
this.eventBus = SpringContextHelper.getBean(EventBus.SessionEventBus.class);
this.eventBus = SpringContextHelper.getBean(EventBus.UIEventBus.class);
this.artifactUploadState = SpringContextHelper.getBean(ArtifactUploadState.class);
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
/*
* It's good manners to do this, even though vaadin-spring will
* automatically unsubscribe when this UI is garbage collected.
*/
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadStatusEventType event) {
if (event == UploadStatusEventType.ABORT_UPLOAD) {
aborted = true;

View File

@@ -17,9 +17,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.apache.commons.io.FileUtils;
import org.eclipse.hawkbit.repository.exception.ArtifactUploadFailedException;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
@@ -43,9 +40,9 @@ import org.eclipse.hawkbit.ui.utils.UINotification;
import org.eclipse.hawkbit.util.SPInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -58,8 +55,6 @@ import com.vaadin.server.FontAwesome;
import com.vaadin.server.Page;
import com.vaadin.server.StreamVariable;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.DragAndDropWrapper;
@@ -74,36 +69,24 @@ import com.vaadin.ui.VerticalLayout;
/**
* Upload files layout.
*/
@UIScope
@SpringComponent
public class UploadLayout extends VerticalLayout {
/**
*
*/
private static final String HTML_DIV = "</div>";
private static final long serialVersionUID = -566164756606779220L;
private static final Logger LOG = LoggerFactory.getLogger(UploadLayout.class);
@Autowired
private UploadStatusInfoWindow uploadInfoWindow;
private final UploadStatusInfoWindow uploadInfoWindow;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient UINotification uiNotification;
private final UINotification uiNotification;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private transient SPInfo spInfo;
private final SPInfo spInfo;
private final List<String> duplicateFileNamesList = new ArrayList<>();
@@ -115,7 +98,7 @@ public class UploadLayout extends VerticalLayout {
private VerticalLayout dropAreaLayout;
private UI ui;
private final UI ui;
private HorizontalLayout fileUploadLayout;
@@ -125,11 +108,15 @@ public class UploadLayout extends VerticalLayout {
private Button uploadStatusButton;
/**
* Initialize the upload layout.
*/
@PostConstruct
void init() {
public UploadLayout(final I18N i18n, final UINotification uiNotification, final UIEventBus eventBus,
final ArtifactUploadState artifactUploadState, final SPInfo spInfo) {
this.uploadInfoWindow = new UploadStatusInfoWindow(eventBus, artifactUploadState, i18n);
this.i18n = i18n;
this.uiNotification = uiNotification;
this.eventBus = eventBus;
this.artifactUploadState = artifactUploadState;
this.spInfo = spInfo;
createComponents();
buildLayout();
restoreState();
@@ -137,7 +124,7 @@ public class UploadLayout extends VerticalLayout {
ui = UI.getCurrent();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadArtifactUIEvent event) {
if (event == UploadArtifactUIEvent.DELETED_ALL_SOFWARE) {
ui.access(() -> updateActionCount());
@@ -150,32 +137,23 @@ public class UploadLayout extends VerticalLayout {
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadStatusEvent event) {
if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_STARTED) {
ui.access(() -> onStartOfUpload());
ui.access(this::onStartOfUpload);
} else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_FAILED) {
ui.access(() -> onUploadFailure(event));
} else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_FINISHED) {
ui.access(() -> onUploadCompletion());
ui.access(this::onUploadCompletion);
} else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_SUCCESSFUL) {
ui.access(() -> onUploadSuccess(event));
} else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_STREAMING_FAILED) {
ui.access(() -> onUploadStreamingFailure(event));
} else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_STREAMING_FINISHED) {
ui.access(() -> onUploadStreamingSuccess());
ui.access(this::onUploadStreamingSuccess);
}
}
@PreDestroy
void destroy() {
/*
* It's good manners to do this, even though vaadin-spring will
* automatically unsubscribe when this UI is garbage collected.
*/
eventBus.unsubscribe(this);
}
private void createComponents() {
createUploadStatusButton();
createProcessButton();

View File

@@ -67,7 +67,7 @@ public class UploadResultWindow implements Button.ClickListener {
private static final String REASON = "reason";
private transient EventBus.SessionEventBus eventBus;
private transient EventBus.UIEventBus eventBus;
/**
@@ -81,7 +81,7 @@ public class UploadResultWindow implements Button.ClickListener {
public UploadResultWindow(final List<UploadStatus> uploadResultList, final I18N i18n) {
this.uploadResultList = uploadResultList;
this.i18n = i18n;
eventBus = SpringContextHelper.getBean( EventBus.SessionEventBus.class);
eventBus = SpringContextHelper.getBean( EventBus.UIEventBus.class);
createComponents();
createLayout();
}

View File

@@ -11,9 +11,6 @@ package org.eclipse.hawkbit.ui.artifacts.upload;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.artifacts.event.UploadFileStatus;
@@ -28,8 +25,8 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -38,8 +35,6 @@ import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.window.WindowMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Grid;
@@ -58,18 +53,13 @@ import elemental.json.JsonValue;
/**
* Shows upload status during upload.
*/
@UIScope
@SpringComponent
public class UploadStatusInfoWindow extends Window {
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private ArtifactUploadState artifactUploadState;
private final ArtifactUploadState artifactUploadState;
@Autowired
private I18N i18n;
private final I18N i18n;
private static final String PROGRESS = "Progress";
@@ -81,9 +71,9 @@ public class UploadStatusInfoWindow extends Window {
private static final long serialVersionUID = 1L;
private Grid grid;
private final Grid grid;
private IndexedContainer uploads;
private final IndexedContainer uploads;
private volatile boolean errorOccured = false;
@@ -91,7 +81,7 @@ public class UploadStatusInfoWindow extends Window {
private Button minimizeButton;
private VerticalLayout mainLayout;
private final VerticalLayout mainLayout;
private Label windowCaption;
@@ -99,15 +89,15 @@ public class UploadStatusInfoWindow extends Window {
private Button resizeButton;
private UI ui;
private final UI ui;
private ConfirmationDialog confirmDialog;
/**
* Default Constructor.
*/
@PostConstruct
void init() {
public UploadStatusInfoWindow(final UIEventBus eventBus, final ArtifactUploadState artifactUploadState,
final I18N i18n) {
this.eventBus = eventBus;
this.artifactUploadState = artifactUploadState;
this.i18n = i18n;
setPopupProperties();
createStatusPopupHeaderComponents();
@@ -130,7 +120,7 @@ public class UploadStatusInfoWindow extends Window {
createConfirmDialog();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final UploadStatusEvent event) {
final UploadFileStatus uploadStatus = event.getUploadStatus();
@@ -166,15 +156,6 @@ public class UploadStatusInfoWindow extends Window {
uploadStarted(event.getUploadStatus().getFileName(), event.getUploadStatus().getSoftwareModule());
}
@PreDestroy
void destroy() {
/*
* It's good manners to do this, even though vaadin-spring will
* automatically unsubscribe when this UI is garbage collected.
*/
eventBus.unsubscribe(this);
}
private void restoreState() {
final Indexed container = grid.getContainerDataSource();
if (container.getItemIds().isEmpty()) {

View File

@@ -18,8 +18,8 @@ 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.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion;
@@ -39,11 +39,14 @@ public abstract class AbstractAcceptCriteria extends ServerSideCriterion {
private int previousRowCount;
@Autowired
protected transient UINotification uiNotification;
protected UINotification uiNotification;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
protected AbstractAcceptCriteria(final UINotification uiNotification, final UIEventBus eventBus) {
this.uiNotification = uiNotification;
this.eventBus = eventBus;
}
@Override
public boolean accept(final DragAndDropEvent dragEvent) {

View File

@@ -11,8 +11,7 @@ package org.eclipse.hawkbit.ui.common;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.exception.EntityNotFoundException;
import org.eclipse.hawkbit.repository.model.MetaData;
import org.eclipse.hawkbit.repository.model.NamedVersionedEntity;
@@ -30,8 +29,8 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
@@ -73,14 +72,11 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
private static final String KEY = "key";
@Autowired
protected I18N i18n;
@Autowired
private UINotification uiNotification;
private final UINotification uiNotification;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
private TextField keyTextField;
@@ -97,6 +93,18 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
private E selectedEntity;
private HorizontalLayout mainLayout;
protected SpPermissionChecker permChecker;
protected AbstractMetadataPopupLayout(final I18N i18n, final UINotification uiNotification,
final UIEventBus eventBus, final SpPermissionChecker permChecker) {
this.i18n = i18n;
this.uiNotification = uiNotification;
this.eventBus = eventBus;
this.permChecker = permChecker;
createComponents();
buildLayout();
}
/**
* Save the metadata and never close the window after saving.
@@ -119,13 +127,6 @@ public abstract class AbstractMetadataPopupLayout<E extends NamedVersionedEntity
}
@PostConstruct
void init() {
createComponents();
buildLayout();
}
/**
* Returns metadata popup.
*

View File

@@ -11,8 +11,6 @@ package org.eclipse.hawkbit.ui.common.confirmwindow.layout;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
@@ -20,8 +18,8 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.server.FontAwesome;
import com.vaadin.ui.Accordion;
@@ -46,16 +44,15 @@ public abstract class AbstractConfirmationWindowLayout extends VerticalLayout {
private String consolidatedMessage;
@Autowired
protected I18N i18n;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
protected AbstractConfirmationWindowLayout(final I18N i18n, final UIEventBus eventBus) {
this.i18n = i18n;
this.eventBus = eventBus;
}
/**
* PostConstruct.
*/
@PostConstruct
public void initialize() {
removeAllComponents();
consolidatedMessage = "";
@@ -69,8 +66,7 @@ public abstract class AbstractConfirmationWindowLayout extends VerticalLayout {
}
private void createActionMessgaeLabel() {
actionMessage = new LabelBuilder().name("").id(UIComponentIdProvider.ACTION_LABEL).visible(false)
.buildLabel();
actionMessage = new LabelBuilder().name("").id(UIComponentIdProvider.ACTION_LABEL).visible(false).buildLabel();
actionMessage.addStyleName(SPUIStyleDefinitions.CONFIRM_WINDOW_INFO_BOX);
}

View File

@@ -8,8 +8,12 @@
*/
package org.eclipse.hawkbit.ui.common.detailslayout;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.NamedVersionedEntity;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.vaadin.spring.events.EventBus.UIEventBus;
/**
*
@@ -20,6 +24,11 @@ public abstract class AbstractNamedVersionedEntityTableDetailsLayout<T extends N
private static final long serialVersionUID = 1L;
protected AbstractNamedVersionedEntityTableDetailsLayout(final I18N i18n, final UIEventBus eventBus,
final SpPermissionChecker permissionChecker, final ManagementUIState managementUIState) {
super(i18n, eventBus, permissionChecker, managementUIState);
}
@Override
protected String getName() {
return HawkbitCommonUtil.getFormattedNameVersion(getSelectedBaseEntity().getName(),

View File

@@ -10,9 +10,6 @@ package org.eclipse.hawkbit.ui.common.detailslayout;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.NamedEntity;
@@ -22,13 +19,14 @@ import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.common.table.BaseUIEntityEvent;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.label.ContentMode;
@@ -48,14 +46,11 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
private static final long serialVersionUID = 4862529368471627190L;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private SpPermissionChecker permissionChecker;
private final SpPermissionChecker permissionChecker;
private T selectedBaseEntity;
@@ -65,37 +60,38 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
private Button manageMetadataBtn;
private TabSheet detailsTab;
protected TabSheet detailsTab;
private VerticalLayout detailsLayout;
private final VerticalLayout detailsLayout;
private VerticalLayout descriptionLayout;
private final VerticalLayout descriptionLayout;
private VerticalLayout logLayout;
private final VerticalLayout logLayout;
private VerticalLayout attributesLayout;
private final VerticalLayout attributesLayout;
/**
* Initialize components.
*/
@PostConstruct
protected void init() {
protected final ManagementUIState managementUIState;
protected AbstractTableDetailsLayout(final I18N i18n, final UIEventBus eventBus,
final SpPermissionChecker permissionChecker, final ManagementUIState managementUIState) {
this.i18n = i18n;
this.eventBus = eventBus;
this.permissionChecker = permissionChecker;
this.managementUIState = managementUIState;
detailsLayout = getTabLayout();
descriptionLayout = getTabLayout();
logLayout = getTabLayout();
attributesLayout = getTabLayout();
createComponents();
buildLayout();
restoreState();
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
protected SpPermissionChecker getPermissionChecker() {
return permissionChecker;
}
protected EventBus.SessionEventBus getEventBus() {
protected EventBus.UIEventBus getEventBus() {
return eventBus;
}
@@ -153,7 +149,6 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
detailsTab.setHeight(90, Unit.PERCENTAGE);
detailsTab.addStyleName(SPUIStyleDefinitions.DETAILS_LAYOUT_STYLE);
detailsTab.setId(getTabSheetId());
addTabs(detailsTab);
}
private void buildLayout() {
@@ -196,7 +191,7 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
caption.setValue(HawkbitCommonUtil.getSoftwareModuleName(headerCaption, value));
}
private void restoreState() {
protected void restoreState() {
if (onLoadIsTableRowSelected()) {
populateData(null);
editButton.setEnabled(true);
@@ -276,22 +271,18 @@ public abstract class AbstractTableDetailsLayout<T extends NamedEntity> extends
}
protected VerticalLayout createLogLayout() {
logLayout = getTabLayout();
return logLayout;
}
protected VerticalLayout createAttributesLayout() {
attributesLayout = getTabLayout();
return attributesLayout;
}
protected VerticalLayout createDetailsLayout() {
detailsLayout = getTabLayout();
return detailsLayout;
}
protected VerticalLayout createDescriptionLayout() {
descriptionLayout = getTabLayout();
return descriptionLayout;
}

View File

@@ -30,7 +30,7 @@ import org.eclipse.hawkbit.ui.utils.SpringContextHelper;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.vaadin.spring.events.EventBus.SessionEventBus;
import org.vaadin.spring.events.EventBus;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
@@ -46,9 +46,6 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* Software module details table.
*
*
*
*
*/
public class SoftwareModuleDetailsTable extends Table {
@@ -67,15 +64,15 @@ public class SoftwareModuleDetailsTable extends Table {
private boolean isUnassignSoftModAllowed;
private SpPermissionChecker permissionChecker;
private transient DistributionSetManagement distributionSetManagement;
private DistributionSetManagement distributionSetManagement;
private I18N i18n;
private transient SessionEventBus eventBus;
private EventBus.UIEventBus eventBus;
private transient ManageDistUIState manageDistUIState;
private ManageDistUIState manageDistUIState;
private transient UINotification uiNotification;
private UINotification uiNotification;
/**
* Initialize software module table- to be displayed in details layout.
@@ -96,7 +93,7 @@ public class SoftwareModuleDetailsTable extends Table {
*/
public void init(final I18N i18n, final boolean isUnassignSoftModAllowed,
final SpPermissionChecker permissionChecker, final DistributionSetManagement distributionSetManagement,
final SessionEventBus eventBus, final ManageDistUIState manageDistUIState) {
final EventBus.UIEventBus eventBus, final ManageDistUIState manageDistUIState) {
this.i18n = i18n;
this.isUnassignSoftModAllowed = isUnassignSoftModAllowed;
this.permissionChecker = permissionChecker;

View File

@@ -14,10 +14,6 @@ import com.vaadin.ui.Button;
/**
* Abstract button click behaviour of filter buttons layout.
*
*
*
*
*/
public abstract class AbstractFilterButtonClickBehaviour implements Serializable {

View File

@@ -13,17 +13,15 @@ import static org.eclipse.hawkbit.ui.utils.SPUIDefinitions.NO_TAG_BUTTON_ID;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUITagButtonStyle;
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.SPUIStyleDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Item;
import com.vaadin.event.dd.DropHandler;
@@ -45,28 +43,19 @@ public abstract class AbstractFilterButtons extends Table {
protected static final String FILTER_BUTTON_COLUMN = "filterButton";
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
private AbstractFilterButtonClickBehaviour filterButtonClickBehaviour;
protected final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour;
protected AbstractFilterButtons(final UIEventBus eventBus,
final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) {
this.eventBus = eventBus;
/**
* Initialize layout of filter buttons.
*
* @param filterButtonClickBehaviour
* click behaviour of filter buttons.
*/
public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) {
this.filterButtonClickBehaviour = filterButtonClickBehaviour;
createTable();
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
private void createTable() {
setImmediate(true);
setId(getButtonsTableId());

View File

@@ -12,9 +12,10 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.server.FontAwesome;
import com.vaadin.ui.Alignment;
@@ -25,20 +26,14 @@ import com.vaadin.ui.VerticalLayout;
/**
* Parent class for filter button header layout.
*
*
*
*
*/
public abstract class AbstractFilterHeader extends VerticalLayout {
private static final long serialVersionUID = -1388340600522323332L;
@Autowired
protected SpPermissionChecker permChecker;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
private Label title;
@@ -46,10 +41,12 @@ public abstract class AbstractFilterHeader extends VerticalLayout {
private Button hideIcon;
/**
* Initialize the header layout.
*/
protected void init() {
protected final I18N i18n;
protected AbstractFilterHeader(final SpPermissionChecker permChecker, final UIEventBus eventBus, final I18N i18n) {
this.permChecker = permChecker;
this.eventBus = eventBus;
this.i18n = i18n;
createComponents();
buildLayout();
}

View File

@@ -15,35 +15,25 @@ import com.vaadin.ui.VerticalLayout;
/**
* Parent class for filter button layout.
*
*
*
*
*/
public abstract class AbstractFilterLayout extends VerticalLayout {
private static final long serialVersionUID = 9190616426688385851L;
private AbstractFilterHeader filterHeader;
private final AbstractFilterHeader filterHeader;
private AbstractFilterButtons filterButtons;
private final AbstractFilterButtons filterButtons;
/**
* Initialize the artifact details layout.
*/
protected void init(final AbstractFilterHeader filterHeader, final AbstractFilterButtons filterButtons,
final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) {
protected AbstractFilterLayout(final AbstractFilterHeader filterHeader, final AbstractFilterButtons filterButtons) {
this.filterHeader = filterHeader;
this.filterButtons = filterButtons;
filterButtons.init(filterButtonClickBehaviour);
buildLayout();
restoreState();
}
private void buildLayout() {
setWidth(SPUIDefinitions.FILTER_BY_TYPE_WIDTH, Unit.PIXELS);
setStyleName("filter-btns-main-layout");
setHeight(100.0f, Unit.PERCENTAGE);
setHeight(100.0F, Unit.PERCENTAGE);
setSpacing(false);
setMargin(false);
@@ -52,10 +42,10 @@ public abstract class AbstractFilterLayout extends VerticalLayout {
setComponentAlignment(filterHeader, Alignment.TOP_CENTER);
setComponentAlignment(filterButtons, Alignment.TOP_CENTER);
setExpandRatio(filterButtons, 1.0f);
setExpandRatio(filterButtons, 1.0F);
}
private void restoreState() {
protected void restoreState() {
if (onLoadIsTypeFilterIsClosed()) {
setVisible(false);
}

View File

@@ -25,12 +25,6 @@ public abstract class AbstractFilterMultiButtonClick extends AbstractFilterButto
private static final long serialVersionUID = 1L;
protected final transient Set<Button> alreadyClickedButtons = new HashSet<>();
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.layouts.SPFilterButtonClick#
* processFilterButtonClick(com.vaadin.ui. Button.ClickEvent)
*/
@Override
public void processFilterButtonClick(final ClickEvent event) {
final Button clickedButton = (Button) event.getComponent();
@@ -46,12 +40,6 @@ public abstract class AbstractFilterMultiButtonClick extends AbstractFilterButto
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.layouts.SPFilterButtonClickBehaviour#
* setDefaultClickedButton(com.vaadin .ui.Button)
*/
@Override
protected void setDefaultClickedButton(final Button button) {
if (button != null) {
@@ -60,10 +48,6 @@ public abstract class AbstractFilterMultiButtonClick extends AbstractFilterButto
}
}
/**
* @param clickedButton
* @return
*/
private boolean isButtonUnClicked(final Button clickedButton) {
return !alreadyClickedButtons.isEmpty() && alreadyClickedButtons.contains(clickedButton);
}

View File

@@ -16,9 +16,6 @@ import com.vaadin.ui.Button.ClickEvent;
/**
* Abstract Single button click behaviour of filter buttons layout.
*
*
*
*
*/
public abstract class AbstractFilterSingleButtonClick extends AbstractFilterButtonClickBehaviour {
@@ -26,12 +23,6 @@ public abstract class AbstractFilterSingleButtonClick extends AbstractFilterButt
private Button alreadyClickedButton;
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.layouts.SPFilterButtonClick#
* processFilterButtonClick(com.vaadin.ui. Button.ClickEvent)
*/
@Override
protected void processFilterButtonClick(final ClickEvent event) {
final Button clickedButton = (Button) event.getComponent();
@@ -54,20 +45,10 @@ public abstract class AbstractFilterSingleButtonClick extends AbstractFilterButt
}
}
/**
* @param clickedButton
* @return
*/
private boolean isButtonUnClicked(final Button clickedButton) {
return alreadyClickedButton != null && alreadyClickedButton.equals(clickedButton);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.layouts.SPFilterButtonClickBehaviour#
* setDefaultClickedButton(com.vaadin .ui.Button)
*/
@Override
protected void setDefaultClickedButton(final Button button) {
alreadyClickedButton = button;
@@ -76,17 +57,10 @@ public abstract class AbstractFilterSingleButtonClick extends AbstractFilterButt
}
}
/**
* @return the alreadyClickedButton
*/
public Button getAlreadyClickedButton() {
return alreadyClickedButton;
}
/**
* @param alreadyClickedButton
* the alreadyClickedButton to set
*/
public void setAlreadyClickedButton(final Button alreadyClickedButton) {
this.alreadyClickedButton = alreadyClickedButton;
}

View File

@@ -8,9 +8,6 @@
*/
package org.eclipse.hawkbit.ui.common.footer;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.common.builder.WindowBuilder;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
@@ -21,8 +18,8 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
@@ -48,17 +45,13 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme
private static final long serialVersionUID = -6047975388519155509L;
@Autowired
protected I18N i18n;
@Autowired
protected SpPermissionChecker permChecker;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
@Autowired
protected transient UINotification notification;
protected UINotification notification;
private DragAndDropWrapper deleteWrapper;
@@ -68,30 +61,30 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme
private Button bulkUploadStatusButton;
/**
* Initialize.
*/
@PostConstruct
protected AbstractDeleteActionsLayout(final I18N i18n, final SpPermissionChecker permChecker,
final UIEventBus eventBus, final UINotification notification) {
this.i18n = i18n;
this.permChecker = permChecker;
this.eventBus = eventBus;
this.notification = notification;
eventBus.subscribe(this);
}
protected void init() {
if (hasCountMessage() || hasDeletePermission() || hasUpdatePermission() || hasBulkUploadPermission()) {
createComponents();
buildLayout();
reload();
}
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
private void reload() {
protected void reload() {
restoreActionCount();
restoreBulkUploadStatusCount();
}
private void createComponents() {
protected void createComponents() {
if (hasDeletePermission()) {
deleteWrapper = createDeleteWrapperLayout();
}
@@ -103,7 +96,7 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme
}
}
private void buildLayout() {
protected void buildLayout() {
final HorizontalLayout dropHintLayout = new HorizontalLayout();
if (hasCountMessage()) {
dropHintLayout.addComponent(getCountMessageLabel());

View File

@@ -8,13 +8,11 @@
*/
package org.eclipse.hawkbit.ui.common.grid;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Container;
import com.vaadin.data.Container.Indexed;
@@ -27,19 +25,18 @@ import com.vaadin.ui.Grid;
public abstract class AbstractGrid extends Grid {
private static final long serialVersionUID = 4856562746502217630L;
@Autowired
protected I18N i18n;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected final I18N i18n;
protected final EventBus.UIEventBus eventBus;
protected final SpPermissionChecker permissionChecker;
protected AbstractGrid(final I18N i18n, final UIEventBus eventBus, final SpPermissionChecker permissionChecker) {
this.i18n = i18n;
this.eventBus = eventBus;
this.permissionChecker = permissionChecker;
/**
* Initialize the components.
*/
@PostConstruct
protected void init() {
setSizeFull();
setImmediate(true);
setId(getGridId());
@@ -48,13 +45,8 @@ public abstract class AbstractGrid extends Grid {
addNewContainerDS();
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
public void addNewContainerDS() {
private void addNewContainerDS() {
final Container container = createContainer();
setContainerDataSource((Indexed) container);
addContainerProperties();

View File

@@ -8,10 +8,13 @@
*/
package org.eclipse.hawkbit.ui.common.grid;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.common.builder.TextFieldBuilder;
import org.eclipse.hawkbit.ui.components.SPUIButton;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.rollout.state.RolloutUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
@@ -42,7 +45,17 @@ public abstract class AbstractGridHeader extends VerticalLayout {
private Button closeButton;
protected void init() {
protected final SpPermissionChecker permissionChecker;
protected final RolloutUIState rolloutUIState;
protected final I18N i18n;
protected AbstractGridHeader(final SpPermissionChecker permissionChecker, final RolloutUIState rolloutUIState,
final I18N i18n) {
this.permissionChecker = permissionChecker;
this.rolloutUIState = rolloutUIState;
this.i18n = i18n;
createComponents();
buildLayout();
restoreState();

View File

@@ -18,27 +18,24 @@ import com.vaadin.ui.VerticalLayout;
/**
*
* Abstract grid layout class which builds layout with grid
* {@link AbstractGrid} and table header
* {@link AbstractGridHeader}.
* Abstract grid layout class which builds layout with grid {@link AbstractGrid}
* and table header {@link AbstractGridHeader}.
*
*/
public abstract class AbstractGridLayout extends VerticalLayout {
private static final long serialVersionUID = 8611248179949245460L;
private AbstractGridHeader tableHeader;
private AbstractGrid grid;
private final AbstractGridHeader tableHeader;
protected final AbstractGrid grid;
protected void init(final AbstractGridHeader tableHeader,final AbstractGrid grid) {
protected AbstractGridLayout(final AbstractGridHeader tableHeader, final AbstractGrid grid) {
this.tableHeader = tableHeader;
this.grid = grid;
buildLayout();
}
private void buildLayout() {
protected void buildLayout() {
setSizeFull();
setSpacing(true);
setMargin(false);
@@ -54,18 +51,17 @@ public abstract class AbstractGridLayout extends VerticalLayout {
tableHeaderLayout.setComponentAlignment(tableHeader, Alignment.TOP_CENTER);
tableHeaderLayout.addComponent(grid);
tableHeaderLayout.setComponentAlignment(grid, Alignment.TOP_CENTER);
tableHeaderLayout.setExpandRatio(grid, 1.0f);
tableHeaderLayout.setExpandRatio(grid, 1.0F);
addComponent(tableHeaderLayout);
setComponentAlignment(tableHeaderLayout, Alignment.TOP_CENTER);
setExpandRatio(tableHeaderLayout, 1.0f);
setExpandRatio(tableHeaderLayout, 1.0F);
if (hasCountMessage()) {
final HorizontalLayout rolloutGroupTargetsCountLayout = createCountMessageComponent();
addComponent(rolloutGroupTargetsCountLayout);
setComponentAlignment(rolloutGroupTargetsCountLayout, Alignment.BOTTOM_CENTER);
}
}
private HorizontalLayout createCountMessageComponent() {

View File

@@ -11,8 +11,11 @@ package org.eclipse.hawkbit.ui.common.table;
import java.util.List;
import org.eclipse.hawkbit.repository.model.NamedVersionedEntity;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.TableColumn;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Item;
import com.vaadin.event.dd.DragAndDropEvent;
@@ -30,12 +33,8 @@ public abstract class AbstractNamedVersionTable<E extends NamedVersionedEntity,
private static final long serialVersionUID = 780050712209750719L;
/**
* Initialize the component.
*/
@Override
protected void init() {
super.init();
protected AbstractNamedVersionTable(final UIEventBus eventBus, final I18N i18n, final UINotification notification) {
super(eventBus, i18n, notification);
setMultiSelect(true);
setSelectable(true);
}

View File

@@ -15,9 +15,6 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.model.NamedEntity;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.common.ManagmentEntityState;
@@ -28,8 +25,8 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.TableColumn;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
@@ -61,20 +58,16 @@ public abstract class AbstractTable<E extends NamedEntity, I> extends Table {
protected static final String ACTION_NOT_ALLOWED_MSG = "message.action.not.allowed";
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
@Autowired
protected I18N i18n;
@Autowired
protected UINotification notification;
/**
* Initialize the components.
*/
@PostConstruct
protected void init() {
protected AbstractTable(final UIEventBus eventBus, final I18N i18n, final UINotification notification) {
this.eventBus = eventBus;
this.i18n = i18n;
this.notification = notification;
setStyleName("sp-table");
setSizeFull();
setImmediate(true);
@@ -84,22 +77,13 @@ public abstract class AbstractTable<E extends NamedEntity, I> extends Table {
setSortEnabled(false);
setId(getTableId());
addCustomGeneratedColumns();
addNewContainerDS();
setColumnProperties();
setDefault();
addValueChangeListener(event -> onValueChange());
selectRow();
setPageLength(SPUIDefinitions.PAGE_SIZE);
setDataAvailable(getContainerDataSource().size() != 0);
eventBus.subscribe(this);
}
@PreDestroy
protected void destroy() {
eventBus.unsubscribe(this);
}
/**
* Gets the selected item id or in multiselect mode a set of selected ids.
*
@@ -148,7 +132,7 @@ public abstract class AbstractTable<E extends NamedEntity, I> extends Table {
setDropHandler(getTableDropHandler());
}
private void addNewContainerDS() {
protected void addNewContainerDS() {
final Container container = createContainer();
addContainerProperties(container);
setContainerDataSource(container);
@@ -178,7 +162,7 @@ public abstract class AbstractTable<E extends NamedEntity, I> extends Table {
}
}
private void setColumnProperties() {
protected void setColumnProperties() {
final List<TableColumn> columnList = getTableVisibleColumns();
final List<Object> swColumnIds = new ArrayList<>();
for (final TableColumn column : columnList) {
@@ -249,9 +233,9 @@ public abstract class AbstractTable<E extends NamedEntity, I> extends Table {
protected void onBaseEntityEvent(final BaseUIEntityEvent<E> event) {
if (BaseEntityEventType.MINIMIZED == event.getEventType()) {
UI.getCurrent().access(() -> applyMinTableSettings());
UI.getCurrent().access(this::applyMinTableSettings);
} else if (BaseEntityEventType.MAXIMIZED == event.getEventType()) {
UI.getCurrent().access(() -> applyMaxTableSettings());
UI.getCurrent().access(this::applyMaxTableSettings);
} else if (BaseEntityEventType.NEW_ENTITY == event.getEventType()) {
UI.getCurrent().access(() -> addEntity(event.getEntity()));
}

View File

@@ -8,21 +8,21 @@
*/
package org.eclipse.hawkbit.ui.common.table;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
import org.eclipse.hawkbit.ui.common.builder.TextFieldBuilder;
import org.eclipse.hawkbit.ui.components.SPUIButton;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.server.FontAwesome;
@@ -41,14 +41,11 @@ public abstract class AbstractTableHeader extends VerticalLayout {
private static final long serialVersionUID = 4881626370291837175L;
@Autowired
protected I18N i18n;
@Autowired
protected SpPermissionChecker permChecker;
@Autowired
protected transient EventBus.SessionEventBus eventbus;
protected EventBus.UIEventBus eventbus;
private Label headerCaption;
@@ -64,26 +61,27 @@ public abstract class AbstractTableHeader extends VerticalLayout {
private HorizontalLayout filterDroppedInfo;
private DragAndDropWrapper dropFilterLayout;
private Button bulkUploadIcon;
/**
* Initialze components.
*/
@PostConstruct
protected void init() {
protected final ManagementUIState managementUIState;
protected final ManageDistUIState manageDistUIstate;
protected final ArtifactUploadState artifactUploadState;
protected AbstractTableHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventbus,
final ManagementUIState managementUIState, final ManageDistUIState manageDistUIstate,
final ArtifactUploadState artifactUploadState) {
this.i18n = i18n;
this.permChecker = permChecker;
this.eventbus = eventbus;
this.managementUIState = managementUIState;
this.manageDistUIstate = manageDistUIstate;
this.artifactUploadState = artifactUploadState;
createComponents();
buildLayout();
restoreState();
eventbus.subscribe(this);
}
@PreDestroy
void destroy() {
eventbus.unsubscribe(this);
}
private void createComponents() {
headerCaption = createHeaderCaption();
searchField = new TextFieldBuilder(getSearchBoxId()).createSearchField(event -> searchBy(event.getText()));
@@ -181,7 +179,7 @@ public abstract class AbstractTableHeader extends VerticalLayout {
filterDroppedInfo.setHeightUndefined();
filterDroppedInfo.setSizeUndefined();
displayFilterDropedInfoOnLoad();
dropFilterLayout = new DragAndDropWrapper(filterDroppedInfo);
final DragAndDropWrapper dropFilterLayout = new DragAndDropWrapper(filterDroppedInfo);
dropFilterLayout.setId(getDropFilterId());
dropFilterLayout.setDropHandler(getDropFilterHandler());

View File

@@ -38,6 +38,8 @@ public abstract class AbstractTableLayout extends VerticalLayout {
this.table = table;
this.detailsLayout = detailsLayout;
buildLayout();
table.selectRow();
}
private void buildLayout() {

View File

@@ -13,9 +13,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.BaseEntity;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
@@ -25,8 +22,8 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.tokenfield.TokenField;
import org.vaadin.tokenfield.TokenField.InsertPosition;
@@ -65,19 +62,14 @@ public abstract class AbstractTagToken<T extends BaseEntity> implements Serializ
protected CssLayout tokenLayout = new CssLayout();
@Autowired
protected SpPermissionChecker checker;
@Autowired
protected I18N i18n;
@Autowired
protected UINotification uinotification;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
@Autowired
protected ManagementUIState managementUIState;
// BaseEntity implements Serializable so this entity is serializable. Maybe
@@ -85,18 +77,18 @@ public abstract class AbstractTagToken<T extends BaseEntity> implements Serializ
@SuppressWarnings("squid:S1948")
protected T selectedEntity;
@PostConstruct
protected void init() {
protected AbstractTagToken(final SpPermissionChecker checker, final I18N i18n, final UINotification uinotification,
final UIEventBus eventBus, final ManagementUIState managementUIState) {
this.checker = checker;
this.i18n = i18n;
this.uinotification = uinotification;
this.eventBus = eventBus;
this.managementUIState = managementUIState;
createTokenField();
checkIfTagAssignedIsAllowed();
eventBus.subscribe(this);
}
@PreDestroy
protected void destroy() {
eventBus.unsubscribe(this);
}
protected void onBaseEntityEvent(final BaseUIEntityEvent<T> baseEntityEvent) {
if (BaseEntityEventType.SELECTED_ENTITY != baseEntityEvent.getEventType()) {
return;

View File

@@ -10,12 +10,16 @@ package org.eclipse.hawkbit.ui.common.tagdetails;
import java.util.List;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.event.remote.entity.TargetTagUpdateEvent;
import org.eclipse.hawkbit.repository.model.BaseEntity;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.push.TargetTagCreatedEventContainer;
import org.eclipse.hawkbit.ui.push.TargetTagDeletedEventContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -31,22 +35,28 @@ public abstract class AbstractTargetTagToken<T extends BaseEntity> extends Abstr
private static final long serialVersionUID = 7772876588903171201L;
@Autowired
protected transient TagManagement tagManagement;
protected final TagManagement tagManagement;
@EventBusListenerMethod(scope = EventScope.SESSION)
protected AbstractTargetTagToken(final SpPermissionChecker checker, final I18N i18n,
final UINotification uinotification, final UIEventBus eventBus, final ManagementUIState managementUIState,
final TagManagement tagManagement) {
super(checker, i18n, uinotification, eventBus, managementUIState);
this.tagManagement = tagManagement;
}
@EventBusListenerMethod(scope = EventScope.UI)
void onEventTargetTagCreated(final TargetTagCreatedEventContainer container) {
container.getEvents().stream().map(event -> event.getEntity())
.forEach(tag -> setContainerPropertValues(tag.getId(), tag.getName(), tag.getColour()));
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onTargetTagDeletedEvent(final TargetTagDeletedEventContainer container) {
container.getEvents().stream().map(event -> getTagIdByTagName(event.getEntityId()))
.forEach(this::removeTagFromCombo);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onTargetTagUpdateEvent(final List<TargetTagUpdateEvent> events) {
events.stream().map(event -> event.getEntity()).forEach(entity -> {
final Item item = container.getItem(entity.getId());

View File

@@ -12,43 +12,50 @@ import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetTag;
import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.push.DistributionSetTagCreatedEventContainer;
import org.eclipse.hawkbit.ui.push.DistributionSetTagDeletedEventContainer;
import org.eclipse.hawkbit.ui.push.DistributionSetTagUpdatedEventContainer;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.google.common.collect.Sets;
import com.vaadin.data.Item;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Implementation of target/ds tag token layout.
*
*/
@SpringComponent
@UIScope
public class DistributionTagToken extends AbstractTagToken<DistributionSet> {
private static final long serialVersionUID = -8022738301736043396L;
@Autowired
private transient TagManagement tagManagement;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final TagManagement tagManagement;
private final DistributionSetManagement distributionSetManagement;
// To Be Done : have to set this value based on view???
private static final Boolean NOTAGS_SELECTED = Boolean.FALSE;
public DistributionTagToken(final SpPermissionChecker checker, final I18N i18n, final UINotification uinotification,
final UIEventBus eventBus, final ManagementUIState managementUIState, final TagManagement tagManagement,
final DistributionSetManagement distributionSetManagement) {
super(checker, i18n, uinotification, eventBus, managementUIState);
this.tagManagement = tagManagement;
this.distributionSetManagement = distributionSetManagement;
}
@Override
protected String getTagStyleName() {
return "distribution-tag-";
@@ -111,25 +118,25 @@ public class DistributionTagToken extends AbstractTagToken<DistributionSet> {
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent distributionTableEvent) {
onBaseEntityEvent(distributionTableEvent);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionSetTagCreatedBulkEvent(final DistributionSetTagCreatedEventContainer eventContainer) {
eventContainer.getEvents().stream().map(event -> event.getEntity())
.forEach(distributionSetTag -> setContainerPropertValues(distributionSetTag.getId(),
distributionSetTag.getName(), distributionSetTag.getColour()));
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionSetTagDeletedEvent(final DistributionSetTagDeletedEventContainer eventContainer) {
eventContainer.getEvents().stream().map(event -> getTagIdByTagName(event.getEntityId()))
.forEach(this::removeTagFromCombo);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionSetTagUpdateEvent(final DistributionSetTagUpdatedEventContainer eventContainer) {
eventContainer.getEvents().stream().map(event -> event.getEntity()).forEach(entity -> {
final Item item = container.getItem(entity.getId());

View File

@@ -11,27 +11,27 @@ package org.eclipse.hawkbit.ui.common.tagdetails;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.repository.model.Target;
import org.eclipse.hawkbit.repository.model.TargetTag;
import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent;
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Implementation of Target tag token.
*
*
*/
@SpringComponent
@UIScope
public class TargetTagToken extends AbstractTargetTagToken<Target> {
private static final long serialVersionUID = 7124887018280196721L;
@@ -39,8 +39,14 @@ public class TargetTagToken extends AbstractTargetTagToken<Target> {
// To Be Done : have to set this value based on view???
private static final Boolean NOTAGS_SELECTED = Boolean.FALSE;
@Autowired
private transient TargetManagement targetManagement;
private final TargetManagement targetManagement;
public TargetTagToken(final SpPermissionChecker checker, final I18N i18n, final UINotification uinotification,
final UIEventBus eventBus, final ManagementUIState managementUIState, final TagManagement tagManagement,
final TargetManagement targetManagement) {
super(checker, i18n, uinotification, eventBus, managementUIState, tagManagement);
this.targetManagement = targetManagement;
}
@Override
protected String getTagStyleName() {
@@ -136,7 +142,7 @@ public class TargetTagToken extends AbstractTargetTagToken<Target> {
return false;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final TargetTableEvent targetTableEvent) {
onBaseEntityEvent(targetTableEvent);
}

View File

@@ -8,14 +8,23 @@
*/
package org.eclipse.hawkbit.ui.distributions;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.SystemManagement;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.ui.HawkbitUI;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.distributions.disttype.DSTypeFilterLayout;
import org.eclipse.hawkbit.ui.distributions.dstable.DistributionSetTableLayout;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
import org.eclipse.hawkbit.ui.distributions.event.DragEvent;
import org.eclipse.hawkbit.ui.distributions.footer.DSDeleteActionsLayout;
import org.eclipse.hawkbit.ui.distributions.smtable.SwModuleTableLayout;
@@ -27,6 +36,7 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -45,9 +55,6 @@ import com.vaadin.ui.VerticalLayout;
/**
* Manage distributions and distributions type view.
*
*
*
*/
@SpringView(name = DistributionsView.VIEW_NAME, ui = HawkbitUI.class)
@UIScope
@@ -56,47 +63,57 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
public static final String VIEW_NAME = "distributions";
private static final long serialVersionUID = 3887435076372276300L;
@Autowired
private SpPermissionChecker permChecker;
private final SpPermissionChecker permChecker;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient UINotification uiNotification;
private final UINotification uiNotification;
@Autowired
private DSTypeFilterLayout filterByDSTypeLayout;
private final DSTypeFilterLayout filterByDSTypeLayout;
@Autowired
private DistributionSetTableLayout distributionTableLayout;
private final DistributionSetTableLayout distributionTableLayout;
@Autowired
private SwModuleTableLayout softwareModuleTableLayout;
private final SwModuleTableLayout softwareModuleTableLayout;
@Autowired
private DistSMTypeFilterLayout filterBySMTypeLayout;
private final DistSMTypeFilterLayout filterBySMTypeLayout;
@Autowired
private DSDeleteActionsLayout deleteActionsLayout;
private final DSDeleteActionsLayout deleteActionsLayout;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
private GridLayout mainLayout;
/*
* (non-Javadoc)
*
* @see
* com.vaadin.navigator.View#enter(com.vaadin.navigator.ViewChangeListener.
* ViewChangeEvent)
*/
@Override
public void enter(final ViewChangeEvent event) {
@Autowired
DistributionsView(final SpPermissionChecker permChecker, final UIEventBus eventBus, final I18N i18n,
final UINotification uiNotification, final ManageDistUIState manageDistUIState,
final SoftwareManagement softwareManagement, final DistributionSetManagement distributionSetManagement,
final TargetManagement targetManagement, final EntityFactory entityFactory,
final TagManagement tagManagement, final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final ArtifactUploadState artifactUploadState, final SystemManagement systemManagement) {
this.permChecker = permChecker;
this.eventBus = eventBus;
this.i18n = i18n;
this.uiNotification = uiNotification;
this.filterByDSTypeLayout = new DSTypeFilterLayout(manageDistUIState, i18n, permChecker, eventBus,
tagManagement, entityFactory, uiNotification, softwareManagement, distributionSetManagement,
distributionsViewAcceptCriteria);
this.distributionTableLayout = new DistributionSetTableLayout(i18n, eventBus, permChecker, manageDistUIState,
softwareManagement, distributionSetManagement, targetManagement, entityFactory, uiNotification,
tagManagement, distributionsViewAcceptCriteria, systemManagement);
this.softwareModuleTableLayout = new SwModuleTableLayout(i18n, uiNotification, eventBus, softwareManagement,
entityFactory, manageDistUIState, permChecker, distributionsViewAcceptCriteria, artifactUploadState);
this.filterBySMTypeLayout = new DistSMTypeFilterLayout(eventBus, i18n, permChecker, manageDistUIState,
tagManagement, entityFactory, uiNotification, softwareManagement, distributionsViewAcceptCriteria);
this.deleteActionsLayout = new DSDeleteActionsLayout(i18n, permChecker, eventBus, uiNotification,
systemManagement, manageDistUIState, distributionsViewAcceptCriteria, distributionSetManagement,
softwareManagement);
this.manageDistUIState = manageDistUIState;
}
@PostConstruct
void init() {
// Build the Distributions view layout with all the required components.
buildLayout();
restoreState();
@@ -142,9 +159,9 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
mainLayout.addComponent(softwareModuleTableLayout, 2, 0);
mainLayout.addComponent(filterBySMTypeLayout, 3, 0);
mainLayout.addComponent(deleteActionsLayout, 1, 1, 2, 1);
mainLayout.setRowExpandRatio(0, 1.0f);
mainLayout.setColumnExpandRatio(1, 0.5f);
mainLayout.setColumnExpandRatio(2, 0.5f);
mainLayout.setRowExpandRatio(0, 1.0F);
mainLayout.setColumnExpandRatio(1, 0.5F);
mainLayout.setColumnExpandRatio(2, 0.5F);
mainLayout.setComponentAlignment(deleteActionsLayout, Alignment.BOTTOM_CENTER);
}
@@ -157,7 +174,7 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
});
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent event) {
if (BaseEntityEventType.MINIMIZED == event.getEventType()) {
minimizeDistTable();
@@ -166,7 +183,7 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent event) {
if (BaseEntityEventType.MINIMIZED == event.getEventType()) {
minimizeSwTable();
@@ -179,17 +196,17 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
mainLayout.removeComponent(filterByDSTypeLayout);
mainLayout.removeComponent(distributionTableLayout);
mainLayout.removeComponent(deleteActionsLayout);
mainLayout.setColumnExpandRatio(2, 1f);
mainLayout.setColumnExpandRatio(0, 0f);
mainLayout.setColumnExpandRatio(1, 0f);
mainLayout.setColumnExpandRatio(2, 1F);
mainLayout.setColumnExpandRatio(0, 0F);
mainLayout.setColumnExpandRatio(1, 0F);
}
private void minimizeSwTable() {
mainLayout.addComponent(filterByDSTypeLayout, 0, 0);
mainLayout.addComponent(distributionTableLayout, 1, 0);
mainLayout.addComponent(deleteActionsLayout, 1, 1, 2, 1);
mainLayout.setColumnExpandRatio(1, 0.5f);
mainLayout.setColumnExpandRatio(2, 0.5f);
mainLayout.setColumnExpandRatio(1, 0.5F);
mainLayout.setColumnExpandRatio(2, 0.5F);
mainLayout.setComponentAlignment(deleteActionsLayout, Alignment.BOTTOM_CENTER);
}
@@ -197,8 +214,8 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
mainLayout.addComponent(softwareModuleTableLayout, 2, 0);
mainLayout.addComponent(filterBySMTypeLayout, 3, 0);
mainLayout.addComponent(deleteActionsLayout, 1, 1, 2, 1);
mainLayout.setColumnExpandRatio(1, 0.5f);
mainLayout.setColumnExpandRatio(2, 0.5f);
mainLayout.setColumnExpandRatio(1, 0.5F);
mainLayout.setColumnExpandRatio(2, 0.5F);
mainLayout.setComponentAlignment(deleteActionsLayout, Alignment.BOTTOM_CENTER);
}
@@ -206,9 +223,9 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
mainLayout.removeComponent(softwareModuleTableLayout);
mainLayout.removeComponent(filterBySMTypeLayout);
mainLayout.removeComponent(deleteActionsLayout);
mainLayout.setColumnExpandRatio(1, 1f);
mainLayout.setColumnExpandRatio(2, 0f);
mainLayout.setColumnExpandRatio(3, 0f);
mainLayout.setColumnExpandRatio(1, 1F);
mainLayout.setColumnExpandRatio(2, 0F);
mainLayout.setColumnExpandRatio(3, 0F);
}
private void checkNoDataAvaialble() {
@@ -243,4 +260,9 @@ public class DistributionsView extends VerticalLayout implements View, BrowserWi
}
}
@Override
public void enter(final ViewChangeEvent event) {
// This view is constructed in the init() method()
}
}

View File

@@ -13,7 +13,10 @@ import java.util.Set;
import java.util.stream.Collectors;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.builder.DistributionSetTypeUpdate;
import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
@@ -28,21 +31,21 @@ 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.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.data.domain.PageRequest;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
@@ -57,8 +60,6 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* Window for create update Distribution Set Type.
*/
@SpringComponent
@UIScope
public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout<DistributionSetType> {
private static final long serialVersionUID = 1L;
@@ -67,11 +68,9 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout<Distri
private static final String DIST_TYPE_MANDATORY = "mandatory";
private static final String STAR = " * ";
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final DistributionSetManagement distributionSetManagement;
private HorizontalLayout distTypeSelectLayout;
private Table sourceTable;
@@ -82,6 +81,15 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout<Distri
private IndexedContainer originalSelectedTableContainer;
public CreateUpdateDistSetTypeLayout(final I18N i18n, final TagManagement tagManagement,
final EntityFactory entityFactory, final UIEventBus eventBus, final SpPermissionChecker permChecker,
final UINotification uiNotification, final SoftwareManagement softwareManagement,
final DistributionSetManagement distributionSetManagement) {
super(i18n, tagManagement, entityFactory, eventBus, permChecker, uiNotification);
this.softwareManagement = softwareManagement;
this.distributionSetManagement = distributionSetManagement;
}
@Override
protected void createRequiredComponents() {

View File

@@ -15,41 +15,31 @@ import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterSingleButtonClick;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.management.event.DistributionTableFilterEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
/**
* Single button click behaviour of filter buttons layout.
*
*
*
*/
@SpringComponent
@UIScope
public class DSTypeFilterButtonClick extends AbstractFilterSingleButtonClick implements Serializable {
private static final long serialVersionUID = -584783755917528648L;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final DistributionSetManagement distributionSetManagement;
public DSTypeFilterButtonClick(final UIEventBus eventBus, final ManageDistUIState manageDistUIState,
final DistributionSetManagement distributionSetManagement) {
this.eventBus = eventBus;
this.manageDistUIState = manageDistUIState;
this.distributionSetManagement = distributionSetManagement;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.common.filterlayout.
* AbstractFilterButtonClickBehaviour#filterUnClicked (com.vaadin.ui.Button)
*/
@Override
protected void filterUnClicked(final Button clickedButton) {
manageDistUIState.getManageDistFilters().setClickedDistSetType(null);
@@ -57,12 +47,6 @@ public class DSTypeFilterButtonClick extends AbstractFilterSingleButtonClick imp
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.common.filterlayout.
* AbstractFilterButtonClickBehaviour#filterClicked (com.vaadin.ui.Button)
*/
@Override
protected void filterClicked(final Button clickedButton) {
final DistributionSetType distSetType = distributionSetManagement

View File

@@ -8,6 +8,7 @@
*/
package org.eclipse.hawkbit.ui.distributions.disttype;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.ui.common.DistributionSetTypeBeanQuery;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons;
import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent;
@@ -17,32 +18,34 @@ import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Distribution Set Type filter buttons.
*/
@SpringComponent
@UIScope
public class DSTypeFilterButtons extends AbstractFilterButtons {
private static final long serialVersionUID = 771251569981876005L;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
private final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
public DSTypeFilterButtons(final UIEventBus eventBus, final ManageDistUIState manageDistUIState,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final DistributionSetManagement distributionSetManagement) {
super(eventBus, new DSTypeFilterButtonClick(eventBus, manageDistUIState, distributionSetManagement));
this.manageDistUIState = manageDistUIState;
this.distributionsViewAcceptCriteria = distributionsViewAcceptCriteria;
}
@Override
protected String getButtonsTableId() {
@@ -52,8 +55,7 @@ public class DSTypeFilterButtons extends AbstractFilterButtons {
@Override
protected LazyQueryContainer createButtonsLazyQueryContainer() {
return HawkbitCommonUtil.createLazyQueryContainer(
new BeanQueryFactory<DistributionSetTypeBeanQuery>(DistributionSetTypeBeanQuery.class));
return HawkbitCommonUtil.createLazyQueryContainer(new BeanQueryFactory<>(DistributionSetTypeBeanQuery.class));
}
@Override
@@ -97,7 +99,7 @@ public class DSTypeFilterButtons extends AbstractFilterButtons {
return SPUIDefinitions.DISTRIBUTION_SET_TYPE_ID_PREFIXS;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionSetTypeEvent event) {
if (event.getDistributionSetTypeEnum() == DistributionSetTypeEvent.DistributionSetTypeEnum.ADD_DIST_SET_TYPE
|| event.getDistributionSetTypeEnum() == DistributionSetTypeEvent.DistributionSetTypeEnum.UPDATE_DIST_SET_TYPE) {
@@ -106,7 +108,7 @@ public class DSTypeFilterButtons extends AbstractFilterButtons {
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent event) {
if (event == SaveActionWindowEvent.SAVED_DELETE_DIST_SET_TYPES) {
refreshTypeTable();

View File

@@ -8,42 +8,43 @@
*/
package org.eclipse.hawkbit.ui.distributions.disttype;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
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;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
/**
* Distribution Set Type filter buttons header.
*/
@SpringComponent
@UIScope
public class DSTypeFilterHeader extends AbstractFilterHeader {
private static final long serialVersionUID = 3433417459392880222L;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private CreateUpdateDistSetTypeLayout createUpdateDistSetTypeLayout;
private final CreateUpdateDistSetTypeLayout createUpdateDistSetTypeLayout;
private CommonDialogWindow addUpdateWindow;
@Override
@PostConstruct
public void init() {
super.init();
public DSTypeFilterHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus,
final ManageDistUIState manageDistUIState, final TagManagement tagManagement,
final EntityFactory entityFactory, final UINotification uiNotification,
final SoftwareManagement softwareManagement, final DistributionSetManagement distributionSetManagement) {
super(permChecker, eventBus, i18n);
this.manageDistUIState = manageDistUIState;
this.createUpdateDistSetTypeLayout = new CreateUpdateDistSetTypeLayout(i18n, tagManagement, entityFactory,
eventBus, permChecker, uiNotification, softwareManagement, distributionSetManagement);
if (hasCreateUpdatePermission()) {
createUpdateDistSetTypeLayout.init();
}
@@ -61,7 +62,7 @@ public class DSTypeFilterHeader extends AbstractFilterHeader {
@Override
protected void settingsIconClicked(final ClickEvent event) {
addUpdateWindow = createUpdateDistSetTypeLayout.getWindow();
final CommonDialogWindow addUpdateWindow = createUpdateDistSetTypeLayout.getWindow();
UI.getCurrent().addWindow(addUpdateWindow);
}

View File

@@ -8,58 +8,46 @@
*/
package org.eclipse.hawkbit.ui.distributions.disttype;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterLayout;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Distribution Set Type filter buttons layout.
*
*
*
*/
@SpringComponent
@UIScope
public class DSTypeFilterLayout extends AbstractFilterLayout {
private static final long serialVersionUID = 2689002932344750781L;
@Autowired
private transient EventBus.SessionEventBus eventbus;
private final ManageDistUIState manageDistUIState;
@Autowired
private DSTypeFilterHeader dsTypeFilterHeader;
public DSTypeFilterLayout(final ManageDistUIState manageDistUIState, final I18N i18n,
final SpPermissionChecker permChecker, final UIEventBus eventBus, final TagManagement tagManagement,
final EntityFactory entityFactory, final UINotification uiNotification,
final SoftwareManagement softwareManagement, final DistributionSetManagement distributionSetManagement,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria) {
super(new DSTypeFilterHeader(i18n, permChecker, eventBus, manageDistUIState, tagManagement, entityFactory,
uiNotification, softwareManagement, distributionSetManagement),
new DSTypeFilterButtons(eventBus, manageDistUIState, distributionsViewAcceptCriteria,
distributionSetManagement));
this.manageDistUIState = manageDistUIState;
@Autowired
private DSTypeFilterButtons dsTypeFilterButtons;
@Autowired
private DSTypeFilterButtonClick dsTypeFilterButtonClick;
@Autowired
private ManageDistUIState manageDistUIState;
/**
* Initialize the filter layout.
*/
@PostConstruct
public void init() {
super.init(dsTypeFilterHeader, dsTypeFilterButtons, dsTypeFilterButtonClick);
eventbus.subscribe(this);
restoreState();
eventBus.subscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionsUIEvent event) {
if (event == DistributionsUIEvent.HIDE_DIST_FILTER_BY_TYPE) {
setVisible(false);
@@ -69,22 +57,6 @@ public class DSTypeFilterLayout extends AbstractFilterLayout {
}
}
@PreDestroy
void destroy() {
/*
* It's good manners to do this, even though vaadin-spring will
* automatically unsubscribe when this UI is garbage collected.
*/
eventbus.unsubscribe(this);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.hawkbit.server.ui.common.filterlayout.AbstractFilterLayout#
* onLoadIsTypeFilterIsClosed()
*/
@Override
public Boolean onLoadIsTypeFilterIsClosed() {

View File

@@ -16,6 +16,8 @@ import java.util.Set;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
@@ -34,16 +36,17 @@ import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.management.dstable.DistributionAddUpdateWindowLayout;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.data.Item;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.HorizontalLayout;
@@ -55,41 +58,28 @@ import com.vaadin.ui.Window;
/**
* Distribution set details layout.
*
*
*
*/
@SpringComponent
@UIScope
public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDetailsLayout<DistributionSet> {
private static final long serialVersionUID = -4595004466943546669L;
private static final String SOFT_MODULE = "softwareModule";
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout;
private final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout;
@Autowired
private DistributionTagToken distributionTagToken;
private final DistributionTagToken distributionTagToken;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final DistributionSetManagement distributionSetManagement;
@Autowired
private transient TargetManagement targetManagement;
private final TargetManagement targetManagement;
@Autowired
private DsMetadataPopupLayout dsMetadataPopupLayout;
private final DsMetadataPopupLayout dsMetadataPopupLayout;
@Autowired
private transient EntityFactory entityFactory;
private final EntityFactory entityFactory;
private SoftwareModuleDetailsTable softwareModuleTable;
@@ -101,11 +91,29 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
private Map<String, StringBuilder> assignedSWModule;
/**
* softwareLayout Initialize the component.
*/
@Override
protected void init() {
public DistributionSetDetails(final I18N i18n, final UIEventBus eventBus,
final SpPermissionChecker permissionChecker, final ManageDistUIState manageDistUIState,
final ManagementUIState managementUIState,
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout,
final SoftwareManagement softwareManagement, final DistributionSetManagement distributionSetManagement,
final TargetManagement targetManagement, final EntityFactory entityFactory,
final UINotification uinotification, final TagManagement tagManagement,
final DsMetadataPopupLayout popupLayout) {
super(i18n, eventBus, permissionChecker, managementUIState);
this.manageDistUIState = manageDistUIState;
this.distributionAddUpdateWindowLayout = distributionAddUpdateWindowLayout;
this.distributionTagToken = new DistributionTagToken(permissionChecker, i18n, uinotification, eventBus,
managementUIState, tagManagement, distributionSetManagement);
this.softwareManagement = softwareManagement;
this.distributionSetManagement = distributionSetManagement;
this.targetManagement = targetManagement;
this.dsMetadataPopupLayout = popupLayout;
this.entityFactory = entityFactory;
init();
}
private void init() {
softwareModuleTable = new SoftwareModuleDetailsTable();
softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(),
manageDistUIState);
@@ -116,8 +124,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
tfqDetailsTable = new TargetFilterQueryDetailsTable();
tfqDetailsTable.init(getI18n());
super.init();
addTabs(detailsTab);
restoreState();
}
protected VerticalLayout createTagsLayout() {
@@ -355,19 +363,19 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
return getPermissionChecker().hasUpdateDistributionPermission();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent event) {
if (event.getSoftwareModuleEventType() == SoftwareModuleEventType.ASSIGN_SOFTWARE_MODULE) {
UI.getCurrent().access(() -> updateSoftwareModule(event.getEntity()));
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent distributionTableEvent) {
onBaseEntityEvent(distributionTableEvent);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent saveActionWindowEvent) {
if ((saveActionWindowEvent == SaveActionWindowEvent.SAVED_ASSIGNMENTS
|| saveActionWindowEvent == SaveActionWindowEvent.DISCARD_ALL_ASSIGNMENTS)
@@ -377,11 +385,11 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
}
setSelectedBaseEntity(
distributionSetManagement.findDistributionSetByIdWithDetails(getSelectedBaseEntityId()));
UI.getCurrent().access(() -> populateModule());
UI.getCurrent().access(this::populateModule);
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEventDiscard(final SaveActionWindowEvent saveActionWindowEvent) {
if (saveActionWindowEvent == SaveActionWindowEvent.DISCARD_ASSIGNMENT
|| saveActionWindowEvent == SaveActionWindowEvent.DISCARD_ALL_ASSIGNMENTS

View File

@@ -45,17 +45,19 @@ import org.eclipse.hawkbit.ui.push.DistributionCreatedEventContainer;
import org.eclipse.hawkbit.ui.push.DistributionDeletedEventContainer;
import org.eclipse.hawkbit.ui.push.DistributionSetUpdatedEventContainer;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
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.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
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;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -65,8 +67,6 @@ import com.vaadin.data.Item;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.Table;
@@ -75,8 +75,6 @@ import com.vaadin.ui.UI;
/**
* Distribution set table.
*/
@SpringComponent
@UIScope
public class DistributionSetTable extends AbstractNamedVersionTable<DistributionSet, DistributionSetIdName> {
private static final long serialVersionUID = -7731776093470487988L;
@@ -86,37 +84,41 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
private static final List<Object> DISPLAY_DROP_HINT_EVENTS = new ArrayList<>(
Arrays.asList(DragEvent.SOFTWAREMODULE_DRAG));
@Autowired
private SpPermissionChecker permissionChecker;
private final SpPermissionChecker permissionChecker;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final DistributionSetManagement distributionSetManagement;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
private final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
@Autowired
private transient TargetManagement targetManagement;
private final TargetManagement targetManagement;
@Autowired
private DsMetadataPopupLayout dsMetadataPopupLayout;
private final DsMetadataPopupLayout dsMetadataPopupLayout;
/**
* Initialize the component.
*/
@Override
protected void init() {
super.init();
public DistributionSetTable(final UIEventBus eventBus, final I18N i18n, final UINotification notification,
final SpPermissionChecker permissionChecker, final ManageDistUIState manageDistUIState,
final DistributionSetManagement distributionSetManagement, final SoftwareManagement softwareManagement,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final TargetManagement targetManagement, final DsMetadataPopupLayout dsMetadataPopupLayout) {
super(eventBus, i18n, notification);
this.permissionChecker = permissionChecker;
this.manageDistUIState = manageDistUIState;
this.distributionSetManagement = distributionSetManagement;
this.softwareManagement = softwareManagement;
this.distributionsViewAcceptCriteria = distributionsViewAcceptCriteria;
this.targetManagement = targetManagement;
this.dsMetadataPopupLayout = dsMetadataPopupLayout;
addTableStyleGenerator();
addNewContainerDS();
setColumnProperties();
setDataAvailable(getContainerDataSource().size() != 0);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DragEvent event) {
if (event == DragEvent.HIDE_DROP_HINT) {
UI.getCurrent().access(() -> removeStyleName(SPUIStyleDefinitions.SHOW_DROP_HINT_TABLE));
@@ -125,7 +127,7 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionSetUpdateEvents(final DistributionSetUpdatedEventContainer eventContainer) {
final List<DistributionSetIdName> visibleItemIds = (List<DistributionSetIdName>) getVisibleItemIds();
@@ -150,12 +152,12 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
.forEach(event -> updateDistributionInTable(event.getEntity()));
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionCreatedEvents(final DistributionCreatedEventContainer eventContainer) {
refreshDistributions();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionDeletedEvents(final DistributionDeletedEventContainer eventContainer) {
final LazyQueryContainer dsContainer = (LazyQueryContainer) getContainerDataSource();
final List<Object> visibleItemIds = (List<Object>) getVisibleItemIds();
@@ -470,7 +472,7 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
});
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent event) {
onBaseEntityEvent(event);
if (BaseEntityEventType.UPDATED_ENTITY != event.getEventType()) {
@@ -479,7 +481,7 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
UI.getCurrent().access(() -> updateDistributionInTable(event.getEntity()));
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent event) {
if (event == SaveActionWindowEvent.DELETED_DISTRIBUTIONS || event == SaveActionWindowEvent.SAVED_ASSIGNMENTS) {
UI.getCurrent().access(this::refreshFilter);
@@ -492,7 +494,7 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
* @param event
* as instance of {@link DistributionTableFilterEvent}
*/
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
public void onEvent(final DistributionTableFilterEvent event) {
if (event == DistributionTableFilterEvent.FILTER_BY_TEXT
|| event == DistributionTableFilterEvent.REMOVE_FILTER_BY_TEXT

View File

@@ -8,6 +8,7 @@
*/
package org.eclipse.hawkbit.ui.distributions.dstable;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
@@ -16,14 +17,13 @@ import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.management.dstable.DistributionAddUpdateWindowLayout;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.event.DistributionTableFilterEvent;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
import com.vaadin.ui.Window;
@@ -31,19 +31,19 @@ import com.vaadin.ui.Window;
/**
* Distribution table header.
*/
@SpringComponent
@UIScope
public class DistributionSetTableHeader extends AbstractTableHeader {
private static final long serialVersionUID = -3483238438474530748L;
@Autowired
private ManageDistUIState manageDistUIstate;
private final DistributionAddUpdateWindowLayout addUpdateWindowLayout;
@Autowired
private DistributionAddUpdateWindowLayout addUpdateWindowLayout;
public DistributionSetTableHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventbus,
final ManageDistUIState manageDistUIstate, final DistributionAddUpdateWindowLayout addUpdateWindowLayout) {
super(i18n, permChecker, eventbus, null, manageDistUIstate, null);
this.addUpdateWindowLayout = addUpdateWindowLayout;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionsUIEvent event) {
if (event == DistributionsUIEvent.HIDE_DIST_FILTER_BY_TYPE) {
setFilterButtonsIconVisible(true);

View File

@@ -8,42 +8,51 @@
*/
package org.eclipse.hawkbit.ui.distributions.dstable;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.SystemManagement;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.management.dstable.DistributionAddUpdateWindowLayout;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
/**
* DistributionSet table layout
*/
@SpringComponent
@UIScope
public class DistributionSetTableLayout extends AbstractTableLayout {
private static final long serialVersionUID = 6464291374980641235L;
/**
* Details to be autowired before table as details listens to value change
* of table.
*/
@Autowired
private DistributionSetDetails distributionDetails;
public DistributionSetTableLayout(final I18N i18n, final UIEventBus eventBus,
final SpPermissionChecker permissionChecker, final ManageDistUIState manageDistUIState,
final SoftwareManagement softwareManagement, final DistributionSetManagement distributionSetManagement,
final TargetManagement targetManagement, final EntityFactory entityFactory,
final UINotification uiNotification, final TagManagement tagManagement,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final SystemManagement systemManagement) {
@Autowired
private DistributionSetTableHeader dsTableHeader;
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout = new DistributionAddUpdateWindowLayout(
i18n, uiNotification, eventBus, distributionSetManagement, systemManagement, entityFactory);
@Autowired
private DistributionSetTable dsTable;
final DsMetadataPopupLayout popupLayout = new DsMetadataPopupLayout(i18n, uiNotification, eventBus,
distributionSetManagement, entityFactory, permissionChecker);
/**
* Initialize the filter layout.
*/
@PostConstruct
void init() {
super.init(dsTableHeader, dsTable, distributionDetails);
super.init(
new DistributionSetTableHeader(i18n, permissionChecker, eventBus, manageDistUIState,
distributionAddUpdateWindowLayout),
new DistributionSetTable(eventBus, i18n, uiNotification, permissionChecker, manageDistUIState,
distributionSetManagement, softwareManagement, distributionsViewAcceptCriteria,
targetManagement, popupLayout),
new DistributionSetDetails(i18n, eventBus, permissionChecker, manageDistUIState, null,
distributionAddUpdateWindowLayout, softwareManagement, distributionSetManagement,
targetManagement, entityFactory, uiNotification, tagManagement, popupLayout));
}
}

View File

@@ -18,29 +18,30 @@ import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.repository.model.MetaData;
import org.eclipse.hawkbit.ui.common.AbstractMetadataPopupLayout;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.google.common.collect.Lists;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Pop up layout to display distribution metadata.
*/
@SpringComponent
@UIScope
public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout<DistributionSet, MetaData> {
private static final long serialVersionUID = -7778944849012048106L;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final DistributionSetManagement distributionSetManagement;
@Autowired
private transient EntityFactory entityFactory;
private final EntityFactory entityFactory;
@Autowired
protected SpPermissionChecker permChecker;
public DsMetadataPopupLayout(final I18N i18n, final UINotification uiNotification, final UIEventBus eventBus,
final DistributionSetManagement distributionSetManagement, final EntityFactory entityFactory,
final SpPermissionChecker permChecker) {
super(i18n, uiNotification, eventBus, permChecker);
this.distributionSetManagement = distributionSetManagement;
this.entityFactory = entityFactory;
}
@Override
protected void checkForDuplicate(final DistributionSet entity, final String value) {

View File

@@ -15,6 +15,9 @@ import java.util.Map;
import org.eclipse.hawkbit.ui.common.AbstractAcceptCriteria;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.google.common.collect.Maps;
import com.vaadin.spring.annotation.SpringComponent;
@@ -35,6 +38,11 @@ public class DistributionsViewAcceptCriteria extends AbstractAcceptCriteria {
private static final Map<String, List<String>> DROP_CONFIGS = createDropConfigurations();
@Autowired
DistributionsViewAcceptCriteria(final UINotification uiNotification, final UIEventBus eventBus) {
super(uiNotification, eventBus);
}
@Override
protected String getComponentId(final Component component) {
String id = component.getId();

View File

@@ -15,6 +15,9 @@ import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.SystemManagement;
import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName;
@@ -27,16 +30,17 @@ import org.eclipse.hawkbit.ui.distributions.event.DragEvent;
import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Component;
import com.vaadin.ui.Table;
import com.vaadin.ui.Table.TableTransferable;
@@ -44,12 +48,7 @@ import com.vaadin.ui.UI;
/**
* Distributions footer layout implementation.
*
*
*
*/
@org.springframework.stereotype.Component
@UIScope
public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout {
private static final long serialVersionUID = 3494052985006132714L;
@@ -58,19 +57,30 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout {
Arrays.asList(DragEvent.DISTRIBUTION_TYPE_DRAG, DragEvent.DISTRIBUTION_DRAG, DragEvent.SOFTWAREMODULE_DRAG,
DragEvent.SOFTWAREMODULE_TYPE_DRAG));
@Autowired
private transient SystemManagement systemManagement;
private final SystemManagement systemManagement;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private DistributionsConfirmationWindowLayout distConfirmationWindowLayout;
private final DistributionsConfirmationWindowLayout distConfirmationWindowLayout;
@Autowired
private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
private final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
@EventBusListenerMethod(scope = EventScope.SESSION)
public DSDeleteActionsLayout(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus,
final UINotification notification, final SystemManagement systemManagement,
final ManageDistUIState manageDistUIState,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final DistributionSetManagement dsManagement, final SoftwareManagement softwareManagement) {
super(i18n, permChecker, eventBus, notification);
this.systemManagement = systemManagement;
this.manageDistUIState = manageDistUIState;
this.distConfirmationWindowLayout = new DistributionsConfirmationWindowLayout(i18n, eventBus, dsManagement,
softwareManagement, manageDistUIState);
this.distributionsViewAcceptCriteria = distributionsViewAcceptCriteria;
init();
}
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DragEvent event) {
if (event == DragEvent.HIDE_DROP_HINT) {
hideDropHints();
@@ -79,7 +89,7 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout {
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent event) {
if (event != null) {
UI.getCurrent().access(() -> {
@@ -253,7 +263,7 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout {
* @param event
* as instance of {@link DistributionsUIEvent}
*/
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
public void onEvent(final DistributionsUIEvent event) {
if (event == DistributionsUIEvent.UPDATE_COUNT) {
updateDSActionCount();

View File

@@ -26,11 +26,12 @@ import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
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.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -39,7 +40,6 @@ import com.vaadin.data.Container;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Table.Align;
@@ -48,11 +48,7 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* Abstract layout of confirm actions window.
*
*
*
*/
@org.springframework.stereotype.Component
@UIScope
public class DistributionsConfirmationWindowLayout extends AbstractConfirmationWindowLayout {
private static final long serialVersionUID = 3641621131320823058L;
@@ -77,14 +73,20 @@ public class DistributionsConfirmationWindowLayout extends AbstractConfirmationW
private ConfirmationTab assignmnetTab;
@Autowired
private transient DistributionSetManagement dsManagement;
private final DistributionSetManagement dsManagement;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
public DistributionsConfirmationWindowLayout(final I18N i18n, final UIEventBus eventBus,
final DistributionSetManagement dsManagement, final SoftwareManagement softwareManagement,
final ManageDistUIState manageDistUIState) {
super(i18n, eventBus);
this.dsManagement = dsManagement;
this.softwareManagement = softwareManagement;
this.manageDistUIState = manageDistUIState;
}
@Override
protected Map<String, ConfirmationTab> getConfimrationTabs() {
@@ -630,7 +632,7 @@ public class DistributionsConfirmationWindowLayout extends AbstractConfirmationW
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEventDiscard(final SaveActionWindowEvent saveActionWindowEvent) {
if (saveActionWindowEvent == SaveActionWindowEvent.DELETE_ALL_SOFWARE) {
getSWAssignmentsTableContainer();

View File

@@ -20,28 +20,28 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata;
import org.eclipse.hawkbit.ui.common.AbstractMetadataPopupLayout;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent.MetadataUIEvent;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
/**
* Pop up layout to display software module metadata.
*/
@SpringComponent
@UIScope
public class SwMetadataPopupLayout extends AbstractMetadataPopupLayout<SoftwareModule, MetaData> {
private static final long serialVersionUID = -1252090014161012563L;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private transient EntityFactory entityFactory;
private final EntityFactory entityFactory;
@Autowired
protected SpPermissionChecker permChecker;
public SwMetadataPopupLayout(final I18N i18n, final UINotification uiNotification, final UIEventBus eventBus,
final SoftwareManagement softwareManagement, final EntityFactory entityFactory,
final SpPermissionChecker permChecker) {
super(i18n, uiNotification, eventBus, permChecker);
this.softwareManagement = softwareManagement;
this.entityFactory = entityFactory;
}
@Override
protected void checkForDuplicate(final SoftwareModule entity, final String value) {

View File

@@ -57,7 +57,7 @@ public class SwModuleBeanQuery extends AbstractBeanQuery<ProxyBaseSwModuleItem>
super(definition, queryConfig, sortIds, sortStates);
if (HawkbitCommonUtil.isNotNullOrEmpty(queryConfig)) {
type = Optional.ofNullable((SoftwareModuleType) queryConfig.get(SPUIDefinitions.BY_SOFTWARE_MODULE_TYPE))
.map(t -> t.getId()).orElse(null);
.map(SoftwareModuleType::getId).orElse(null);
final String text = (String) queryConfig.get(SPUIDefinitions.FILTER_BY_TEXT);
if (!Strings.isNullOrEmpty(text)) {
searchText = String.format("%%%s%%", text);

View File

@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.distributions.smtable;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.MetaData;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
@@ -20,8 +21,9 @@ import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -44,32 +46,31 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
private static final long serialVersionUID = -1052279281066089812L;
@Autowired
private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
private final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private SwMetadataPopupLayout swMetadataPopupLayout;
private final SwMetadataPopupLayout swMetadataPopupLayout;
@Autowired
private transient EntityFactory entityFactory;
private final SoftwareModuleMetadatadetailslayout swmMetadataTable;
private SoftwareModuleMetadatadetailslayout swmMetadataTable;
public SwModuleDetails(final I18N i18n, final UIEventBus eventBus, final SpPermissionChecker permissionChecker,
final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow,
final ManageDistUIState manageDistUIState, final SoftwareManagement softwareManagement,
final SwMetadataPopupLayout swMetadataPopupLayout, final EntityFactory entityFactory) {
super(i18n, eventBus, permissionChecker, null);
this.softwareModuleAddUpdateWindow = softwareModuleAddUpdateWindow;
this.manageDistUIState = manageDistUIState;
this.softwareManagement = softwareManagement;
this.swMetadataPopupLayout = swMetadataPopupLayout;
/**
* softwareLayout Initialize the component.
*/
@Override
protected void init() {
swmMetadataTable = new SoftwareModuleMetadatadetailslayout();
swmMetadataTable.init(getI18n(), getPermissionChecker(), softwareManagement, swMetadataPopupLayout,
entityFactory);
super.init();
addTabs(detailsTab);
restoreState();
}
/**
@@ -79,7 +80,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
* as instance of {@link MetadataEvent}
*/
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final MetadataEvent event) {
UI.getCurrent().access(() -> {
final MetaData softwareModuleMetadata = event.getMetaData();
@@ -94,7 +95,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
});
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent softwareModuleEvent) {
onBaseEntityEvent(softwareModuleEvent);
}
@@ -203,10 +204,12 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
}
private boolean isSoftwareModuleSelected(final SoftwareModule softwareModule) {
final Long selectedDistSWModuleId = manageDistUIState.getSelectedBaseSwModuleId().isPresent()
? manageDistUIState.getSelectedBaseSwModuleId().get() : null;
return softwareModule != null && selectedDistSWModuleId != null
&& selectedDistSWModuleId.equals(softwareModule.getId());
if (softwareModule == null) {
return false;
}
return manageDistUIState.getSelectedBaseSwModuleId().map(module -> module.equals(softwareModule.getId()))
.orElse(false);
}
@Override

View File

@@ -17,6 +17,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.ui.artifacts.details.ArtifactDetailsLayout;
import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.ManagmentEntityState;
import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
@@ -27,15 +28,17 @@ import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteri
import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
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.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -47,8 +50,6 @@ import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.FontAwesome;
import com.vaadin.server.Page;
import com.vaadin.shared.ui.window.WindowMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.JavaScript;
@@ -60,39 +61,40 @@ import com.vaadin.ui.Window;
* Implementation of software module table using generic abstract table styles .
*
*/
@SpringComponent
@UIScope
public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Long> {
private static final long serialVersionUID = 6785314784507424750L;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
@Autowired
private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
private final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
@Autowired
private ArtifactDetailsLayout artifactDetailsLayout;
private final ArtifactDetailsLayout artifactDetailsLayout;
@Autowired
private SwMetadataPopupLayout swMetadataPopupLayout;
private final SwMetadataPopupLayout swMetadataPopupLayout;
/**
* Initialize the filter layout.
*/
@Override
protected void init() {
super.init();
public SwModuleTable(final UIEventBus eventBus, final I18N i18n, final UINotification uiNotification,
final ManageDistUIState manageDistUIState, final SoftwareManagement softwareManagement,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final SwMetadataPopupLayout swMetadataPopupLayout, final ArtifactUploadState artifactUploadState) {
super(eventBus, i18n, uiNotification);
this.manageDistUIState = manageDistUIState;
this.softwareManagement = softwareManagement;
this.distributionsViewAcceptCriteria = distributionsViewAcceptCriteria;
this.artifactDetailsLayout = new ArtifactDetailsLayout(i18n, eventBus, artifactUploadState, uiNotification);
this.swMetadataPopupLayout = swMetadataPopupLayout;
addNewContainerDS();
setColumnProperties();
setDataAvailable(getContainerDataSource().size() != 0);
styleTableOnDistSelection();
}
/* All event Listeners */
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SMFilterEvent filterEvent) {
UI.getCurrent().access(() -> {
@@ -105,7 +107,7 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
});
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionsUIEvent event) {
UI.getCurrent().access(() -> {
if (event == DistributionsUIEvent.ORDER_BY_DISTRIBUTION) {
@@ -115,14 +117,14 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
});
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent event) {
if (event == SaveActionWindowEvent.DELETE_ALL_SOFWARE) {
UI.getCurrent().access(this::refreshFilter);
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleEvent event) {
onBaseEntityEvent(event);
}

View File

@@ -8,6 +8,7 @@
*/
package org.eclipse.hawkbit.ui.distributions.smtable;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
@@ -15,14 +16,13 @@ import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
import com.vaadin.ui.Window;
@@ -31,19 +31,20 @@ import com.vaadin.ui.Window;
* Implementation of software module Header block using generic abstract details
* style .
*/
@SpringComponent
@UIScope
public class SwModuleTableHeader extends AbstractTableHeader {
private static final long serialVersionUID = 242961845006626297L;
@Autowired
private ManageDistUIState manageDistUIState;
private final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
@Autowired
private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow;
public SwModuleTableHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventbus,
final ManageDistUIState manageDistUIstate,
final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow) {
super(i18n, permChecker, eventbus, null, manageDistUIstate, null);
this.softwareModuleAddUpdateWindow = softwareModuleAddUpdateWindow;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionsUIEvent event) {
if (event == DistributionsUIEvent.HIDE_SM_FILTER_BY_TYPE) {
setFilterButtonsIconVisible(true);
@@ -72,10 +73,7 @@ public class SwModuleTableHeader extends AbstractTableHeader {
@Override
protected String onLoadSearchBoxValue() {
if (manageDistUIState.getSoftwareModuleFilters().getSearchText().isPresent()) {
return manageDistUIState.getSoftwareModuleFilters().getSearchText().get();
}
return null;
return manageDistUIstate.getSoftwareModuleFilters().getSearchText().orElse(null);
}
@Override
@@ -102,14 +100,14 @@ public class SwModuleTableHeader extends AbstractTableHeader {
@Override
protected void showFilterButtonsLayout() {
manageDistUIState.setSwTypeFilterClosed(false);
manageDistUIstate.setSwTypeFilterClosed(false);
eventbus.publish(this, DistributionsUIEvent.SHOW_SM_FILTER_BY_TYPE);
}
@Override
protected void resetSearchText() {
if (manageDistUIState.getSoftwareModuleFilters().getSearchText().isPresent()) {
manageDistUIState.getSoftwareModuleFilters().setSearchText(null);
if (manageDistUIstate.getSoftwareModuleFilters().getSearchText().isPresent()) {
manageDistUIstate.getSoftwareModuleFilters().setSearchText(null);
eventbus.publish(this, SMFilterEvent.REMOVER_FILTER_BY_TEXT);
}
}
@@ -121,30 +119,30 @@ public class SwModuleTableHeader extends AbstractTableHeader {
@Override
public void maximizeTable() {
manageDistUIState.setSwModuleTableMaximized(Boolean.TRUE);
manageDistUIstate.setSwModuleTableMaximized(Boolean.TRUE);
eventbus.publish(this, new SoftwareModuleEvent(BaseEntityEventType.MAXIMIZED, null));
}
@Override
public void minimizeTable() {
manageDistUIState.setSwModuleTableMaximized(Boolean.FALSE);
manageDistUIstate.setSwModuleTableMaximized(Boolean.FALSE);
eventbus.publish(this, new SoftwareModuleEvent(BaseEntityEventType.MINIMIZED, null));
}
@Override
public Boolean onLoadIsTableMaximized() {
return manageDistUIState.isSwModuleTableMaximized();
return manageDistUIstate.isSwModuleTableMaximized();
}
@Override
public Boolean onLoadIsShowFilterButtonDisplayed() {
return manageDistUIState.isSwTypeFilterClosed();
return manageDistUIstate.isSwTypeFilterClosed();
}
@Override
protected void searchBy(final String newSearchText) {
manageDistUIState.getSoftwareModuleFilters().setSearchText(newSearchText);
manageDistUIstate.getSoftwareModuleFilters().setSearchText(newSearchText);
eventbus.publish(this, SMFilterEvent.FILTER_BY_TEXT);
}

View File

@@ -8,37 +8,42 @@
*/
package org.eclipse.hawkbit.ui.distributions.smtable;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
/**
* Implementation of software module Layout
*/
@SpringComponent
@UIScope
public class SwModuleTableLayout extends AbstractTableLayout {
private static final long serialVersionUID = 6464291374980641235L;
@Autowired
private SwModuleTableHeader swModuleTableHeader;
public SwModuleTableLayout(final I18N i18n, final UINotification uiNotification, final UIEventBus eventBus,
final SoftwareManagement softwareManagement, final EntityFactory entityFactory,
final ManageDistUIState manageDistUIState, final SpPermissionChecker permChecker,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final ArtifactUploadState artifactUploadState) {
@Autowired
private SwModuleDetails swModuleDetails;
final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow = new SoftwareModuleAddUpdateWindow(i18n,
uiNotification, eventBus, softwareManagement, entityFactory);
@Autowired
private SwModuleTable swModuleTable;
final SwMetadataPopupLayout swMetadataPopupLayout = new SwMetadataPopupLayout(i18n, uiNotification, eventBus,
softwareManagement, entityFactory, permChecker);
/**
* Initialize the filter layout.
*/
@PostConstruct
void init() {
super.init(swModuleTableHeader, swModuleTable, swModuleDetails);
super.init(
new SwModuleTableHeader(i18n, permChecker, eventBus, manageDistUIState, softwareModuleAddUpdateWindow),
new SwModuleTable(eventBus, i18n, uiNotification, manageDistUIState, softwareManagement,
distributionsViewAcceptCriteria, swMetadataPopupLayout, artifactUploadState),
new SwModuleDetails(i18n, eventBus, permChecker, softwareModuleAddUpdateWindow, manageDistUIState,
softwareManagement, swMetadataPopupLayout, entityFactory));
}
}

View File

@@ -15,54 +15,37 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterSingleButtonClick;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
/**
* Single button click behaviour of filter buttons layout.
*
*
*
*/
@SpringComponent
@UIScope
public class DistSMTypeFilterButtonClick extends AbstractFilterSingleButtonClick implements Serializable {
private static final long serialVersionUID = -4166632002904286983L;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private transient SoftwareManagement softwareManagement;
private final SoftwareManagement softwareManagement;
public DistSMTypeFilterButtonClick(final UIEventBus eventBus, final ManageDistUIState manageDistUIState,
final SoftwareManagement softwareManagement) {
this.eventBus = eventBus;
this.manageDistUIState = manageDistUIState;
this.softwareManagement = softwareManagement;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.common.filterlayout.
* AbstractFilterButtonClickBehaviour#filterUnClicked (com.vaadin.ui.Button)
*/
@Override
protected void filterUnClicked(final Button clickedButton) {
manageDistUIState.getSoftwareModuleFilters().setSoftwareModuleType(null);
eventBus.publish(this, SMFilterEvent.FILTER_BY_TYPE);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.hawkbit.server.ui.common.filterlayout.
* AbstractFilterButtonClickBehaviour#filterClicked (com.vaadin.ui.Button)
*/
@Override
protected void filterClicked(final Button clickedButton) {
final SoftwareModuleType smType = softwareManagement

View File

@@ -15,6 +15,7 @@ import static org.eclipse.hawkbit.ui.utils.UIComponentIdProvider.SW_MODULE_TYPE_
import java.util.Collections;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent;
import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons;
@@ -23,33 +24,35 @@ import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Software Module Type filter buttons.
*/
@UIScope
@SpringComponent
public class DistSMTypeFilterButtons extends AbstractFilterButtons {
private static final long serialVersionUID = 6804534533362387433L;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
@Autowired
private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
private final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria;
public DistSMTypeFilterButtons(final UIEventBus eventBus, final ManageDistUIState manageDistUIState,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria,
final SoftwareManagement softwareManagement) {
super(eventBus, new DistSMTypeFilterButtonClick(eventBus, manageDistUIState, softwareManagement));
this.manageDistUIState = manageDistUIState;
this.distributionsViewAcceptCriteria = distributionsViewAcceptCriteria;
}
@Override
protected String getButtonsTableId() {
@@ -103,7 +106,7 @@ public class DistSMTypeFilterButtons extends AbstractFilterButtons {
return SPUIDefinitions.SOFTWARE_MODULE_TAG_ID_PREFIXS;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SoftwareModuleTypeEvent event) {
if (isCreateOrUpdate(event) && event.getSoftwareModuleType() != null) {
refreshTypeTable();
@@ -115,7 +118,7 @@ public class DistSMTypeFilterButtons extends AbstractFilterButtons {
|| event.getSoftwareModuleTypeEnum() == UPDATE_SOFTWARE_MODULE_TYPE;
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent event) {
if (event == SaveActionWindowEvent.SAVED_DELETE_SW_MODULE_TYPES) {
refreshTypeTable();

View File

@@ -8,19 +8,21 @@
*/
package org.eclipse.hawkbit.ui.distributions.smtype;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.ui.artifacts.smtype.CreateUpdateSoftwareTypeLayout;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
import com.vaadin.ui.Window;
@@ -28,22 +30,21 @@ import com.vaadin.ui.Window;
/**
* Software Module Type filter buttons header.
*/
@SpringComponent
@UIScope
public class DistSMTypeFilterHeader extends AbstractFilterHeader {
private static final long serialVersionUID = -8763788280848718344L;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
private final CreateUpdateSoftwareTypeLayout createUpdateSWTypeLayout;
@Autowired
private CreateUpdateSoftwareTypeLayout createUpdateSWTypeLayout;
public DistSMTypeFilterHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus,
final ManageDistUIState manageDistUIState, final TagManagement tagManagement,
final EntityFactory entityFactory, final UINotification uiNotification,
final SoftwareManagement swTypeManagementService) {
super(permChecker, eventBus, i18n);
this.manageDistUIState = manageDistUIState;
this.createUpdateSWTypeLayout = new CreateUpdateSoftwareTypeLayout(i18n, tagManagement, entityFactory, eventBus,
permChecker, uiNotification, swTypeManagementService);
@Override
@PostConstruct
public void init() {
super.init();
if (hasCreateUpdatePermission()) {
createUpdateSWTypeLayout.init();
}

View File

@@ -8,58 +8,45 @@
*/
package org.eclipse.hawkbit.ui.distributions.smtype;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SoftwareManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterLayout;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
/**
* Software Module Type filter layout.
*
*
*
*/
@SpringComponent
@UIScope
public class DistSMTypeFilterLayout extends AbstractFilterLayout {
private static final long serialVersionUID = 3042297420534417538L;
@Autowired
private transient EventBus.SessionEventBus eventbus;
private final ManageDistUIState manageDistUIState;
@Autowired
private DistSMTypeFilterHeader smTypeFilterHeader;
public DistSMTypeFilterLayout(final UIEventBus eventBus, final I18N i18n, final SpPermissionChecker permChecker,
final ManageDistUIState manageDistUIState, final TagManagement tagManagement,
final EntityFactory entityFactory, final UINotification uiNotification,
final SoftwareManagement softwareManagement,
final DistributionsViewAcceptCriteria distributionsViewAcceptCriteria) {
super(new DistSMTypeFilterHeader(i18n, permChecker, eventBus, manageDistUIState, tagManagement, entityFactory,
uiNotification, softwareManagement),
new DistSMTypeFilterButtons(eventBus, manageDistUIState, distributionsViewAcceptCriteria,
softwareManagement));
this.manageDistUIState = manageDistUIState;
@Autowired
private DistSMTypeFilterButtons smTypeFilterButtons;
@Autowired
private DistSMTypeFilterButtonClick smTypeFilterButtonClick;
@Autowired
private ManageDistUIState manageDistUIState;
/**
* Initialize the filter layout.
*/
@PostConstruct
public void init() {
super.init(smTypeFilterHeader, smTypeFilterButtons, smTypeFilterButtonClick);
eventbus.subscribe(this);
restoreState();
eventBus.subscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionsUIEvent event) {
if (event == DistributionsUIEvent.HIDE_SM_FILTER_BY_TYPE) {
setVisible(false);
@@ -69,22 +56,6 @@ public class DistSMTypeFilterLayout extends AbstractFilterLayout {
}
}
@PreDestroy
void destroy() {
/*
* It's good manners to do this, even though vaadin-spring will
* automatically unsubscribe when this UI is garbage collected.
*/
eventbus.unsubscribe(this);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.hawkbit.server.ui.common.filterlayout.AbstractFilterLayout#
* onLoadIsTypeFilterIsClosed()
*/
@Override
public Boolean onLoadIsTypeFilterIsClosed() {

View File

@@ -36,11 +36,9 @@ public class ManageDistUIState implements ManagmentEntityState<DistributionSetId
private static final long serialVersionUID = -7569047247017742928L;
@Autowired
private ManageDistFilters manageDistFilters;
private final ManageDistFilters manageDistFilters;
@Autowired
private ManageSoftwareModuleFilters softwareModuleFilters;
private final ManageSoftwareModuleFilters softwareModuleFilters;
private final Map<DistributionSetIdName, HashSet<SoftwareModuleIdName>> assignedList = new HashMap<>();
@@ -76,6 +74,13 @@ public class ManageDistUIState implements ManagmentEntityState<DistributionSetId
private boolean noDataAvailableDist;
@Autowired
ManageDistUIState(final ManageDistFilters manageDistFilters,
final ManageSoftwareModuleFilters softwareModuleFilters) {
this.manageDistFilters = manageDistFilters;
this.softwareModuleFilters = softwareModuleFilters;
}
/**
* @return the manageDistFilters
*/

View File

@@ -25,6 +25,7 @@ import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -49,28 +50,34 @@ public class AutoCompleteTextFieldComponent extends HorizontalLayout {
private static final long serialVersionUID = 1L;
@Autowired
private FilterManagementUIState filterManagementUIState;
private final FilterManagementUIState filterManagementUIState;
private final EventBus.UIEventBus eventBus;
private final RsqlValidationOracle rsqlValidationOracle;
private final Executor executor;
private final List<FilterQueryChangeListener> listeners = new LinkedList<>();
private Label validationIcon;
private TextField queryTextField;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Autowired
private transient RsqlValidationOracle rsqlValidationOracle;
@Autowired
@Qualifier("uiExecutor")
private transient Executor executor;
private transient List<FilterQueryChangeListener> listeners = new LinkedList<>();
private final Label validationIcon;
private final TextField queryTextField;
public AutoCompleteTextFieldComponent(final FilterManagementUIState filterManagementUIState,
final UIEventBus eventBus, final RsqlValidationOracle rsqlValidationOracle,
@Qualifier("uiExecutor") final Executor executor) {
this.filterManagementUIState = filterManagementUIState;
this.eventBus = eventBus;
this.rsqlValidationOracle = rsqlValidationOracle;
this.executor = executor;
}
/**
* Constructor.
*/
public AutoCompleteTextFieldComponent() {
@PostConstruct
void init() {
queryTextField = createSearchField();
validationIcon = createStatusIcon();
@@ -80,13 +87,7 @@ public class AutoCompleteTextFieldComponent extends HorizontalLayout {
addStyleName("custom-search-layout");
addComponents(validationIcon, queryTextField);
setComponentAlignment(validationIcon, Alignment.TOP_CENTER);
}
/**
* Called by the spring-framework when this bean has be post-constructed.
*/
@PostConstruct
public void postConstruct() {
eventBus.subscribe(this);
new TextFieldSuggestionBox(rsqlValidationOracle, this).extend(queryTextField);
}
@@ -96,7 +97,7 @@ public class AutoCompleteTextFieldComponent extends HorizontalLayout {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final CustomFilterUIEvent custFUIEvent) {
if (custFUIEvent == CustomFilterUIEvent.UPDATE_TARGET_FILTER_SEARCH_ICON) {
validationIcon.setValue(FontAwesome.CHECK_CIRCLE.getHtml());

View File

@@ -10,9 +10,6 @@ package org.eclipse.hawkbit.ui.filtermanagement;
import java.util.Optional;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
@@ -30,8 +27,8 @@ import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -40,8 +37,6 @@ import com.vaadin.event.FieldEvents.BlurListener;
import com.vaadin.event.FieldEvents.TextChangeEvent;
import com.vaadin.event.LayoutEvents.LayoutClickListener;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
@@ -56,40 +51,29 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* A Vaadin layout for create or update the target filter.
*/
@SpringComponent
@UIScope
public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button.ClickListener {
private static final long serialVersionUID = 7474232427119031474L;
private static final String BREADCRUMB_CUSTOM_FILTERS = "breadcrumb.target.filter.custom.filters";
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private FilterManagementUIState filterManagementUIState;
private final FilterManagementUIState filterManagementUIState;
@Autowired
private transient TargetFilterQueryManagement targetFilterQueryManagement;
private final TargetFilterQueryManagement targetFilterQueryManagement;
@Autowired
private SpPermissionChecker permissionChecker;
private final SpPermissionChecker permissionChecker;
@Autowired
private UINotification notification;
private final UINotification notification;
@Autowired
private transient UiProperties uiProperties;
private final UiProperties uiProperties;
@Autowired
private transient EntityFactory entityFactory;
private final EntityFactory entityFactory;
@Autowired
private AutoCompleteTextFieldComponent queryTextField;
private final AutoCompleteTextFieldComponent queryTextField;
private Button breadcrumbButton;
@@ -121,11 +105,21 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button
private LayoutClickListener nameLayoutClickListner;
/**
* Initialize the Campaign Status History Header.
*/
@PostConstruct
public void init() {
public CreateOrUpdateFilterHeader(final I18N i18n, final UIEventBus eventBus,
final FilterManagementUIState filterManagementUIState,
final TargetFilterQueryManagement targetFilterQueryManagement, final SpPermissionChecker permissionChecker,
final UINotification notification, final UiProperties uiProperties, final EntityFactory entityFactory,
final AutoCompleteTextFieldComponent queryTextField) {
this.i18n = i18n;
this.eventBus = eventBus;
this.filterManagementUIState = filterManagementUIState;
this.targetFilterQueryManagement = targetFilterQueryManagement;
this.permissionChecker = permissionChecker;
this.notification = notification;
this.uiProperties = uiProperties;
this.entityFactory = entityFactory;
this.queryTextField = queryTextField;
createComponents();
createListeners();
buildLayout();
@@ -140,12 +134,7 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button
}
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final CustomFilterUIEvent custFUIEvent) {
if (custFUIEvent == CustomFilterUIEvent.TARGET_FILTER_DETAIL_VIEW) {
populateComponents();

View File

@@ -13,9 +13,6 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
@@ -27,21 +24,20 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.vaadin.data.Item;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.Table;
@@ -52,38 +48,34 @@ import com.vaadin.ui.themes.ValoTheme;
*
*
*/
@SpringComponent
@UIScope
public class CreateOrUpdateFilterTable extends Table {
private static final long serialVersionUID = 6887304217281629713L;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Autowired
private FilterManagementUIState filterManagementUIState;
private final FilterManagementUIState filterManagementUIState;
private LazyQueryContainer container;
private final EventBus.UIEventBus eventBus;
private static final int PROPERTY_DEPT = 3;
private static final String ASSIGN_DIST_SET = "assignedDistributionSet";
private static final String INSTALL_DIST_SET = "installedDistributionSet";
/**
* Initialize the Action History Table.
*/
@PostConstruct
public void init() {
public CreateOrUpdateFilterTable(final I18N i18n, final UIEventBus eventBus,
final FilterManagementUIState filterManagementUIState) {
this.i18n = i18n;
this.filterManagementUIState = filterManagementUIState;
this.eventBus = eventBus;
setStyleName("sp-table");
setSizeFull();
setImmediate(true);
setHeight(100.0f, Unit.PERCENTAGE);
setHeight(100.0F, Unit.PERCENTAGE);
addStyleName(ValoTheme.TABLE_NO_VERTICAL_LINES);
addStyleName(ValoTheme.TABLE_SMALL);
setColumnCollapsingAllowed(true);
@@ -96,18 +88,13 @@ public class CreateOrUpdateFilterTable extends Table {
setItemDescriptionGenerator(new AssignInstalledDSTooltipGenerator());
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final CustomFilterUIEvent custFUIEvent) {
if (custFUIEvent == CustomFilterUIEvent.TARGET_DETAILS_VIEW
|| custFUIEvent == CustomFilterUIEvent.CREATE_NEW_FILTER_CLICK) {
UI.getCurrent().access(() -> populateTableData());
UI.getCurrent().access(this::populateTableData);
} else if (custFUIEvent == CustomFilterUIEvent.FILTER_TARGET_BY_QUERY) {
UI.getCurrent().access(() -> onQuery());
UI.getCurrent().access(this::onQuery);
}
}
@@ -192,9 +179,9 @@ public class CreateOrUpdateFilterTable extends Table {
}
private List<TableColumn> getVisbleColumns() {
final List<TableColumn> columnList = new ArrayList<>();
columnList.add(new TableColumn(SPUILabelDefinitions.NAME, i18n.get("header.name"), 0.15f));
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_BY, i18n.get("header.createdBy"), 0.1f));
final List<TableColumn> columnList = Lists.newArrayListWithExpectedSize(7);
columnList.add(new TableColumn(SPUILabelDefinitions.NAME, i18n.get("header.name"), 0.15F));
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_BY, i18n.get("header.createdBy"), 0.1F));
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_DATE, i18n.get("header.createdDate"), 0.1F));
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_LAST_MODIFIED_BY, i18n.get("header.modifiedBy"), 0.1F));
columnList.add(

View File

@@ -13,9 +13,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.event.remote.DistributionSetDeletedEvent;
import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent;
import org.eclipse.hawkbit.ui.distributions.dstable.ManageDistBeanQuery;
@@ -25,45 +22,34 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.data.Container;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Table;
import com.vaadin.ui.themes.ValoTheme;
/**
* Table for selecting a distribution set.
*/
@SpringComponent
@UIScope
public class DistributionSetSelectTable extends Table {
private static final long serialVersionUID = -4307487829435471759L;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Autowired
private ManageDistUIState manageDistUIState;
private final ManageDistUIState manageDistUIState;
private Container container;
/**
* Initialize the component.
*/
@PostConstruct
protected void init() {
public DistributionSetSelectTable(final I18N i18n, final UIEventBus eventBus,
final ManageDistUIState manageDistUIState) {
this.i18n = i18n;
this.manageDistUIState = manageDistUIState;
setStyleName("sp-table");
setSizeFull();
setSelectable(true);
@@ -78,12 +64,7 @@ public class DistributionSetSelectTable extends Table {
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvents(final List<?> events) {
final Object firstEvent = events.get(0);
if (DistributionSetCreatedEvent.class.isInstance(firstEvent)

View File

@@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.filtermanagement;
import java.io.Serializable;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.repository.model.DistributionSet;
@@ -20,18 +19,17 @@ import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
import org.eclipse.hawkbit.ui.common.builder.WindowBuilder;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleNoBorderWithIcon;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Property;
import com.vaadin.server.FontAwesome;
import com.vaadin.server.Sizeable;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
@@ -45,36 +43,36 @@ import com.vaadin.ui.Window;
* Creates a dialog window to select the distribution set for a target filter
* query.
*/
@SpringComponent
@UIScope
public class DistributionSetSelectWindow
implements CommonDialogWindow.SaveDialogCloseListener, Property.ValueChangeListener {
private static final long serialVersionUID = 4752345414134989396L;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private DistributionSetSelectTable dsTable;
private final DistributionSetSelectTable dsTable;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private final TargetManagement targetManagement;
@Autowired
private transient TargetManagement targetManagement;
@Autowired
private transient TargetFilterQueryManagement targetFilterQueryManagement;
private final TargetFilterQueryManagement targetFilterQueryManagement;
private CommonDialogWindow window;
private CheckBox checkBox;
private Long tfqId;
private void init() {
public DistributionSetSelectWindow(final I18N i18n, final UIEventBus eventBus,
final TargetManagement targetManagement, final TargetFilterQueryManagement targetFilterQueryManagement,
final ManageDistUIState manageDistUIState) {
this.i18n = i18n;
this.dsTable = new DistributionSetSelectTable(i18n, eventBus, manageDistUIState);
this.eventBus = eventBus;
this.targetManagement = targetManagement;
this.targetFilterQueryManagement = targetFilterQueryManagement;
}
private void initLocal() {
final Label label = new Label(i18n.get("label.auto.assign.description"));
checkBox = new CheckBox(i18n.get("label.auto.assign.enable"));
@@ -120,7 +118,7 @@ public class DistributionSetSelectWindow
throw new IllegalStateException("TargetFilterQuery does not exist for the given id");
}
init();
initLocal();
final DistributionSet distributionSet = tfq.getAutoAssignDistributionSet();
if (distributionSet != null) {

View File

@@ -8,15 +8,25 @@
*/
package org.eclipse.hawkbit.ui.filtermanagement;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.ui.HawkbitUI;
import org.eclipse.hawkbit.ui.UiProperties;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent;
import org.eclipse.hawkbit.ui.filtermanagement.footer.TargetFilterCountMessageLabel;
import org.eclipse.hawkbit.ui.filtermanagement.state.FilterManagementUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -30,11 +40,8 @@ import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
/**
*
*
*
* View for custom target filter management.
*/
@SpringView(name = FilterManagementView.VIEW_NAME, ui = HawkbitUI.class)
@UIScope
public class FilterManagementView extends VerticalLayout implements View {
@@ -43,29 +50,41 @@ public class FilterManagementView extends VerticalLayout implements View {
public static final String VIEW_NAME = "targetFilters";
@Autowired
private TargetFilterHeader targetFilterHeader;
private final TargetFilterHeader targetFilterHeader;
private final TargetFilterTable targetFilterTable;
private final CreateOrUpdateFilterHeader createNewFilterHeader;
private final CreateOrUpdateFilterTable createNewFilterTable;
private final FilterManagementUIState filterManagementUIState;
private final TargetFilterCountMessageLabel targetFilterCountMessageLabel;
private final EventBus.UIEventBus eventBus;
@Autowired
private TargetFilterTable targetFilterTable;
FilterManagementView(final I18N i18n, final UIEventBus eventBus,
final FilterManagementUIState filterManagementUIState,
final TargetFilterQueryManagement targetFilterQueryManagement, final SpPermissionChecker permissionChecker,
final UINotification notification, final UiProperties uiProperties, final EntityFactory entityFactory,
final AutoCompleteTextFieldComponent queryTextField, final ManageDistUIState manageDistUIState,
final TargetManagement targetManagement) {
this.targetFilterHeader = new TargetFilterHeader(eventBus, filterManagementUIState, permissionChecker);
this.targetFilterTable = new TargetFilterTable(i18n, notification, eventBus, filterManagementUIState,
targetFilterQueryManagement, manageDistUIState, targetManagement);
this.createNewFilterHeader = new CreateOrUpdateFilterHeader(i18n, eventBus, filterManagementUIState,
targetFilterQueryManagement, permissionChecker, notification, uiProperties, entityFactory,
queryTextField);
this.createNewFilterTable = new CreateOrUpdateFilterTable(i18n, eventBus, filterManagementUIState);
this.filterManagementUIState = filterManagementUIState;
this.targetFilterCountMessageLabel = new TargetFilterCountMessageLabel(filterManagementUIState, i18n, eventBus);
this.eventBus = eventBus;
}
@Autowired
private CreateOrUpdateFilterHeader createNewFilterHeader;
@Autowired
private CreateOrUpdateFilterTable createNewFilterTable;
@Autowired
private FilterManagementUIState filterManagementUIState;
@Autowired
private TargetFilterCountMessageLabel targetFilterCountMessageLabel;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Override
public void enter(final ViewChangeEvent event) {
@PostConstruct
void init() {
setSizeFull();
setImmediate(true);
buildLayout();
@@ -90,7 +109,7 @@ public class FilterManagementView extends VerticalLayout implements View {
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final CustomFilterUIEvent custFilterUIEvent) {
if (custFilterUIEvent == CustomFilterUIEvent.TARGET_FILTER_DETAIL_VIEW) {
viewTargetFilterDetailLayout();
@@ -156,4 +175,9 @@ public class FilterManagementView extends VerticalLayout implements View {
return messageLabelLayout;
}
@Override
public void enter(final ViewChangeEvent event) {
// This view is constructed in the init() method()
}
}

View File

@@ -8,8 +8,6 @@
*/
package org.eclipse.hawkbit.ui.filtermanagement;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
import org.eclipse.hawkbit.ui.common.builder.TextFieldBuilder;
@@ -21,12 +19,10 @@ import org.eclipse.hawkbit.ui.filtermanagement.state.FilterManagementUIState;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
@@ -38,20 +34,15 @@ import com.vaadin.ui.VerticalLayout;
*
*
*/
@SpringComponent
@UIScope
public class TargetFilterHeader extends VerticalLayout {
private static final long serialVersionUID = -7022704971955491673L;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private FilterManagementUIState filterManagementUIState;
private final FilterManagementUIState filterManagementUIState;
@Autowired
private SpPermissionChecker permissionChecker;
private final SpPermissionChecker permissionChecker;
private Label headerCaption;
@@ -61,11 +52,12 @@ public class TargetFilterHeader extends VerticalLayout {
private SPUIButton searchResetIcon;
/**
* Initialize the Campaign Status History Header.
*/
@PostConstruct
public void init() {
public TargetFilterHeader(final UIEventBus eventBus, final FilterManagementUIState filterManagementUIState,
final SpPermissionChecker permissionChecker) {
this.eventBus = eventBus;
this.filterManagementUIState = filterManagementUIState;
this.permissionChecker = permissionChecker;
createComponents();
buildLayout();
}

View File

@@ -13,15 +13,14 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
import org.eclipse.hawkbit.ui.common.ConfirmationDialog;
import org.eclipse.hawkbit.ui.components.ProxyDistribution;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent;
import org.eclipse.hawkbit.ui.filtermanagement.state.FilterManagementUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
@@ -30,11 +29,11 @@ import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -42,8 +41,6 @@ import com.google.common.collect.Maps;
import com.vaadin.data.Container;
import com.vaadin.data.Item;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Link;
@@ -55,39 +52,38 @@ import com.vaadin.ui.themes.ValoTheme;
* Displays list of target filter queries
*
*/
@SpringComponent
@UIScope
public class TargetFilterTable extends Table {
private static final long serialVersionUID = -4307487829435474759L;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private UINotification notification;
private final UINotification notification;
@Autowired
private transient EventBus.SessionEventBus eventBus;
private final EventBus.UIEventBus eventBus;
@Autowired
private FilterManagementUIState filterManagementUIState;
private final FilterManagementUIState filterManagementUIState;
@Autowired
private transient TargetFilterQueryManagement targetFilterQueryManagement;
private final TargetFilterQueryManagement targetFilterQueryManagement;
@Autowired
private DistributionSetSelectWindow dsSelectWindow;
private final DistributionSetSelectWindow dsSelectWindow;
private Container container;
private static final int PROPERTY_DEPT = 3;
/**
* Initialize the Action History Table.
*/
@PostConstruct
public void init() {
public TargetFilterTable(final I18N i18n, final UINotification notification, final UIEventBus eventBus,
final FilterManagementUIState filterManagementUIState,
final TargetFilterQueryManagement targetFilterQueryManagement, final ManageDistUIState manageDistUIState,
final TargetManagement targetManagement) {
this.i18n = i18n;
this.notification = notification;
this.eventBus = eventBus;
this.filterManagementUIState = filterManagementUIState;
this.targetFilterQueryManagement = targetFilterQueryManagement;
this.dsSelectWindow = new DistributionSetSelectWindow(i18n, eventBus, targetManagement,
targetFilterQueryManagement, manageDistUIState);
setStyleName("sp-table");
setSizeFull();
setImmediate(true);
@@ -102,12 +98,7 @@ public class TargetFilterTable extends Table {
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final CustomFilterUIEvent filterEvent) {
if (filterEvent == CustomFilterUIEvent.FILTER_BY_CUST_FILTER_TEXT
|| filterEvent == CustomFilterUIEvent.FILTER_BY_CUST_FILTER_TEXT_REMOVE
@@ -155,7 +146,8 @@ public class TargetFilterTable extends Table {
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_DATE, i18n.get("header.createdDate"), 0.2F));
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_MODIFIED_BY, i18n.get("header.modifiedBy"), 0.1F));
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_MODIFIED_DATE, i18n.get("header.modifiedDate"), 0.2F));
columnList.add(new TableColumn(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET, i18n.get("header.auto.assignment.ds"), 0.1F));
columnList.add(new TableColumn(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET,
i18n.get("header.auto.assignment.ds"), 0.1F));
columnList.add(new TableColumn(SPUIDefinitions.CUSTOM_FILTER_DELETE, i18n.get("header.delete"), 0.1F));
return columnList;
@@ -232,10 +224,11 @@ public class TargetFilterTable extends Table {
private Button customFilterDistributionSetButton(final Long itemId) {
final Item row1 = getItem(itemId);
final ProxyDistribution distSet = (ProxyDistribution) row1.getItemProperty(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET).getValue();
final ProxyDistribution distSet = (ProxyDistribution) row1
.getItemProperty(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET).getValue();
final String buttonId = "distSetButton";
Button updateIcon;
if(distSet == null) {
if (distSet == null) {
updateIcon = SPUIComponentProvider.getButton(buttonId, i18n.get("button.no.auto.assignment"),
i18n.get("button.auto.assignment.desc"), null, false, null, SPUIButtonStyleSmallNoBorder.class);
} else {
@@ -252,7 +245,7 @@ public class TargetFilterTable extends Table {
private void onClickOfDistributionSetButton(final ClickEvent event) {
final Item item = (Item) ((Button) event.getComponent()).getData();
final Long tfqId = (Long)item.getItemProperty(SPUILabelDefinitions.VAR_ID).getValue();
final Long tfqId = (Long) item.getItemProperty(SPUILabelDefinitions.VAR_ID).getValue();
dsSelectWindow.showForTargetFilter(tfqId);

View File

@@ -8,9 +8,6 @@
*/
package org.eclipse.hawkbit.ui.filtermanagement.footer;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent;
import org.eclipse.hawkbit.ui.filtermanagement.state.FilterManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
@@ -18,15 +15,12 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
@@ -36,37 +30,25 @@ import com.vaadin.ui.UI;
* Count message label which display current filter details and details
* on pinning.
*/
@SpringComponent
@UIScope
public class TargetFilterCountMessageLabel extends Label {
private static final long serialVersionUID = -7188528790042766877L;
@Autowired
private FilterManagementUIState filterManagementUIState;
private final FilterManagementUIState filterManagementUIState;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient EventBus.SessionEventBus eventBus;
public TargetFilterCountMessageLabel(final FilterManagementUIState filterManagementUIState, final I18N i18n,
final UIEventBus eventBus) {
this.filterManagementUIState = filterManagementUIState;
this.i18n = i18n;
/**
* PostConstruct method called by spring after bean has been initialized.
*/
@PostConstruct
public void postConstruct() {
applyStyle();
displayTargetFilterMessage();
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final CustomFilterUIEvent custFUIEvent) {
if (custFUIEvent == CustomFilterUIEvent.TARGET_DETAILS_VIEW
|| custFUIEvent == CustomFilterUIEvent.CREATE_NEW_FILTER_CLICK

View File

@@ -8,8 +8,6 @@
*/
package org.eclipse.hawkbit.ui.layouts;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
@@ -33,8 +31,8 @@ import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
@@ -73,23 +71,17 @@ public abstract class AbstractCreateUpdateTagLayout<E extends NamedEntity> exten
protected static final String TAG_DYNAMIC_STYLE = "tag-color-preview";
protected static final String MESSAGE_ERROR_MISSING_TAGNAME = "message.error.missing.tagname";
@Autowired
protected I18N i18n;
@Autowired
protected transient TagManagement tagManagement;
protected TagManagement tagManagement;
@Autowired
protected transient EntityFactory entityFactory;
protected EntityFactory entityFactory;
@Autowired
protected transient EventBus.SessionEventBus eventBus;
protected EventBus.UIEventBus eventBus;
@Autowired
protected SpPermissionChecker permChecker;
@Autowired
protected transient UINotification uiNotification;
protected UINotification uiNotification;
private final FormLayout formLayout = new FormLayout();
@@ -116,6 +108,17 @@ public abstract class AbstractCreateUpdateTagLayout<E extends NamedEntity> exten
protected String tagNameValue;
protected String tagDescValue;
public AbstractCreateUpdateTagLayout(final I18N i18n, final TagManagement tagManagement,
final EntityFactory entityFactory, final UIEventBus eventBus, final SpPermissionChecker permChecker,
final UINotification uiNotification) {
this.i18n = i18n;
this.tagManagement = tagManagement;
this.entityFactory = entityFactory;
this.eventBus = eventBus;
this.permChecker = permChecker;
this.uiNotification = uiNotification;
}
/**
*
* Save or update the entity.
@@ -169,11 +172,6 @@ public abstract class AbstractCreateUpdateTagLayout<E extends NamedEntity> exten
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
protected void createRequiredComponents() {
createTagStr = i18n.get("label.create.tag");

View File

@@ -8,14 +8,20 @@
*/
package org.eclipse.hawkbit.ui.layouts;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.model.NamedEntity;
import org.eclipse.hawkbit.ui.colorpicker.ColorPickerConstants;
import org.eclipse.hawkbit.ui.colorpicker.ColorPickerHelper;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.server.Page;
@@ -39,6 +45,11 @@ public abstract class CreateUpdateTypeLayout<E extends NamedEntity> extends Abst
public static final String TYPE_NAME_DYNAMIC_STYLE = "new-tag-name";
private static final String TYPE_DESC_DYNAMIC_STYLE = "new-tag-desc";
public CreateUpdateTypeLayout(final I18N i18n, final TagManagement tagManagement, final EntityFactory entityFactory,
final UIEventBus eventBus, final SpPermissionChecker permChecker, final UINotification uiNotification) {
super(i18n, tagManagement, entityFactory, eventBus, permChecker, uiNotification);
}
@Override
protected void addListeners() {
super.addListeners();

View File

@@ -33,23 +33,22 @@ import com.vaadin.ui.VerticalLayout;
/**
* Login UI window that is independent of the {@link HawkbitUI} itself.
*
*
*
*/
@Title("hawkBit UI - Login")
public class HawkbitLoginUI extends DefaultHawkbitUI {
private static final Logger LOG = LoggerFactory.getLogger(HawkbitLoginUI.class);
/**
*
*/
private static final long serialVersionUID = 1L;
@Autowired
private SpringViewProvider viewProvider;
private final SpringViewProvider viewProvider;
private final ApplicationContext context;
@Autowired
private transient ApplicationContext context;
protected HawkbitLoginUI(final SpringViewProvider viewProvider, final ApplicationContext context) {
this.viewProvider = viewProvider;
this.context = context;
}
@Override
protected void init(final VaadinRequest request) {

View File

@@ -71,17 +71,13 @@ public class LoginView extends VerticalLayout implements View {
private static final String SP_LOGIN_USER = "sp-login-user";
private static final String SP_LOGIN_TENANT = "sp-login-tenant";
@Autowired
private transient VaadinSecurity vaadinSecurity;
private final VaadinSecurity vaadinSecurity;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient UiProperties uiProperties;
private final UiProperties uiProperties;
@Autowired
private transient MultitenancyIndicator multiTenancyIndicator;
private final MultitenancyIndicator multiTenancyIndicator;
private final transient AntPathMatcher matcher = new AntPathMatcher();
private boolean useCookie = true;
@@ -91,6 +87,15 @@ public class LoginView extends VerticalLayout implements View {
private PasswordField password;
private Button signin;
@Autowired
LoginView(final VaadinSecurity vaadinSecurity, final I18N i18n, final UiProperties uiProperties,
final MultitenancyIndicator multiTenancyIndicator) {
this.vaadinSecurity = vaadinSecurity;
this.i18n = i18n;
this.uiProperties = uiProperties;
this.multiTenancyIndicator = multiTenancyIndicator;
}
void loginAuthenticationFailedNotification() {
final Notification notification = new Notification(i18n.get("notification.login.failed.title"));
notification.setDescription(i18n.get("notification.login.failed.description"));

View File

@@ -8,10 +8,19 @@
*/
package org.eclipse.hawkbit.ui.management;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.DeploymentManagement;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.SystemManagement;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.ui.HawkbitUI;
import org.eclipse.hawkbit.ui.UiProperties;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.management.actionhistory.ActionHistoryComponent;
import org.eclipse.hawkbit.ui.management.dstable.DistributionTableLayout;
@@ -19,16 +28,21 @@ import org.eclipse.hawkbit.ui.management.dstag.DistributionTagLayout;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.event.DragEvent;
import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent;
import org.eclipse.hawkbit.ui.management.event.ManagementViewAcceptCriteria;
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
import org.eclipse.hawkbit.ui.management.footer.DeleteActionsLayout;
import org.eclipse.hawkbit.ui.management.state.DistributionTableFilters;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.management.targettable.TargetTable;
import org.eclipse.hawkbit.ui.management.targettable.TargetTableLayout;
import org.eclipse.hawkbit.ui.management.targettag.CreateUpdateTargetTagLayoutWindow;
import org.eclipse.hawkbit.ui.management.targettag.TargetTagFilterLayout;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -46,7 +60,7 @@ import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
/**
*
* Target status and deployment management view.
*
*/
@SpringView(name = DeploymentView.VIEW_NAME, ui = HawkbitUI.class)
@@ -56,43 +70,71 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
public static final String VIEW_NAME = "deployment";
private static final long serialVersionUID = 1847434723456644998L;
@Autowired
private transient EventBus.SessionEventBus eventbus;
private final EventBus.UIEventBus eventbus;
@Autowired
private SpPermissionChecker permChecker;
private final SpPermissionChecker permChecker;
@Autowired
private I18N i18n;
private final I18N i18n;
@Autowired
private transient UINotification uiNotification;
private final UINotification uiNotification;
@Autowired
private ManagementUIState managementUIState;
private final ManagementUIState managementUIState;
@Autowired
private ActionHistoryComponent actionHistoryComponent;
private final ActionHistoryComponent actionHistoryComponent;
@Autowired
private TargetTagFilterLayout targetTagFilterLayout;
private final TargetTagFilterLayout targetTagFilterLayout;
@Autowired
private TargetTableLayout targetTableLayout;
private final TargetTableLayout targetTableLayout;
@Autowired
private DistributionTagLayout distributionTagLayout;
private final DistributionTagLayout distributionTagLayout;
@Autowired
private DistributionTableLayout distributionTableLayoutNew;
private final DistributionTableLayout distributionTableLayoutNew;
@Autowired
private DeleteActionsLayout deleteAndActionsLayout;
private final DeleteActionsLayout deleteAndActionsLayout;
private GridLayout mainLayout;
@Override
public void enter(final ViewChangeEvent event) {
@Autowired
DeploymentView(final UIEventBus eventbus, final SpPermissionChecker permChecker, final I18N i18n,
final UINotification uiNotification, final ManagementUIState managementUIState,
final DeploymentManagement deploymentManagement, final UIEventBus eventBus,
final DistributionTableFilters distFilterParameters,
final DistributionSetManagement distributionSetManagement, final TargetManagement targetManagement,
final EntityFactory entityFactory, final UiProperties uiproperties,
final ManagementViewAcceptCriteria managementViewAcceptCriteria, final TagManagement tagManagement,
final TargetFilterQueryManagement targetFilterQueryManagement, final SystemManagement systemManagement) {
this.eventbus = eventbus;
this.permChecker = permChecker;
this.i18n = i18n;
this.uiNotification = uiNotification;
this.managementUIState = managementUIState;
this.actionHistoryComponent = new ActionHistoryComponent(i18n, deploymentManagement, eventBus, uiNotification,
managementUIState);
final CreateUpdateTargetTagLayoutWindow createUpdateTargetTagLayout = new CreateUpdateTargetTagLayoutWindow(
i18n, tagManagement, entityFactory, eventBus, permChecker, uiNotification);
this.targetTagFilterLayout = new TargetTagFilterLayout(i18n, createUpdateTargetTagLayout, managementUIState,
managementViewAcceptCriteria, permChecker, eventBus, uiNotification, entityFactory, targetManagement,
targetFilterQueryManagement);
final TargetTable targetTable = new TargetTable(eventBus, i18n, uiNotification, targetManagement,
managementUIState, permChecker, managementViewAcceptCriteria);
this.targetTableLayout = new TargetTableLayout(eventbus, targetTable, targetManagement, uiNotification,
entityFactory, i18n, eventBus, uiNotification, managementUIState, managementViewAcceptCriteria,
deploymentManagement, uiproperties, permChecker, uiNotification, tagManagement);
this.distributionTagLayout = new DistributionTagLayout(eventbus, managementUIState, i18n, permChecker, eventBus,
tagManagement, entityFactory, uiNotification, distFilterParameters, distributionSetManagement,
managementViewAcceptCriteria);
this.distributionTableLayoutNew = new DistributionTableLayout(i18n, eventBus, permChecker, managementUIState,
distributionSetManagement, managementViewAcceptCriteria, entityFactory, uiNotification,
systemManagement, tagManagement, targetManagement);
this.deleteAndActionsLayout = new DeleteActionsLayout(i18n, permChecker, eventBus, uiNotification,
tagManagement, managementViewAcceptCriteria, managementUIState, targetManagement, targetTable,
deploymentManagement, distributionSetManagement);
}
@PostConstruct
void init() {
buildLayout();
restoreState();
checkNoDataAvaialble();
@@ -107,7 +149,7 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
eventbus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent event) {
if (BaseEntityEventType.MINIMIZED == event.getEventType()) {
minimizeDistTable();
@@ -116,7 +158,7 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final TargetTableEvent event) {
if (BaseEntityEventType.MINIMIZED == event.getEventType()) {
minimizeTargetTable();
@@ -125,13 +167,13 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final ManagementUIEvent mgmtUIEvent) {
if (mgmtUIEvent == ManagementUIEvent.MAX_ACTION_HISTORY) {
UI.getCurrent().access(() -> maximizeActionHistory());
UI.getCurrent().access(this::maximizeActionHistory);
}
if (mgmtUIEvent == ManagementUIEvent.MIN_ACTION_HISTORY) {
UI.getCurrent().access(() -> minimizeActionHistory());
UI.getCurrent().access(this::minimizeActionHistory);
}
}
@@ -163,7 +205,7 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
layoutWidgets();
mainLayout.setSizeFull();
mainLayout.setSpacing(true);
mainLayout.setRowExpandRatio(0, 1f);
mainLayout.setRowExpandRatio(0, 1F);
}
private void layoutWidgets() {
@@ -185,9 +227,9 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
mainLayout.addComponent(actionHistoryComponent, 4, 0);
mainLayout.addComponent(distributionTableLayoutNew, 2, 0);
mainLayout.addComponent(distributionTagLayout, 3, 0);
mainLayout.setColumnExpandRatio(1, 0.275f);
mainLayout.setColumnExpandRatio(2, 0.275f);
mainLayout.setColumnExpandRatio(4, 0.45f);
mainLayout.setColumnExpandRatio(1, 0.275F);
mainLayout.setColumnExpandRatio(2, 0.275F);
mainLayout.setColumnExpandRatio(4, 0.45F);
if (showFooterLayout()) {
mainLayout.addComponent(deleteAndActionsLayout, 1, 1, 2, 1);
mainLayout.setComponentAlignment(deleteAndActionsLayout, Alignment.BOTTOM_CENTER);
@@ -199,7 +241,7 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
mainLayout.setRows(2);
mainLayout.addComponent(distributionTableLayoutNew, 0, 0);
mainLayout.addComponent(distributionTagLayout, 1, 0);
mainLayout.setColumnExpandRatio(0, 1f);
mainLayout.setColumnExpandRatio(0, 1F);
if (showFooterLayout()) {
mainLayout.addComponent(deleteAndActionsLayout, 0, 1);
mainLayout.setComponentAlignment(deleteAndActionsLayout, Alignment.BOTTOM_CENTER);
@@ -225,8 +267,8 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
mainLayout.addComponent(targetTagFilterLayout, 0, 0);
mainLayout.addComponent(targetTableLayout, 1, 0);
mainLayout.addComponent(actionHistoryComponent, 2, 0);
mainLayout.setColumnExpandRatio(1, 0.4f);
mainLayout.setColumnExpandRatio(2, 0.6f);
mainLayout.setColumnExpandRatio(1, 0.4F);
mainLayout.setColumnExpandRatio(2, 0.6F);
if (showFooterLayout()) {
mainLayout.addComponent(deleteAndActionsLayout, 1, 1);
mainLayout.setComponentAlignment(deleteAndActionsLayout, Alignment.BOTTOM_CENTER);
@@ -249,10 +291,10 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
}
mainLayout.removeComponent(actionHistoryComponent);
mainLayout.removeComponent(deleteAndActionsLayout);
mainLayout.setColumnExpandRatio(1, 1f);
mainLayout.setColumnExpandRatio(2, 0f);
mainLayout.setColumnExpandRatio(3, 0f);
mainLayout.setColumnExpandRatio(4, 0f);
mainLayout.setColumnExpandRatio(1, 1F);
mainLayout.setColumnExpandRatio(2, 0F);
mainLayout.setColumnExpandRatio(3, 0F);
mainLayout.setColumnExpandRatio(4, 0F);
}
private void maximizeDistTable() {
@@ -262,10 +304,10 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
mainLayout.removeComponent(actionHistoryComponent);
}
mainLayout.removeComponent(deleteAndActionsLayout);
mainLayout.setColumnExpandRatio(0, 0f);
mainLayout.setColumnExpandRatio(1, 0f);
mainLayout.setColumnExpandRatio(2, 1f);
mainLayout.setColumnExpandRatio(4, 0f);
mainLayout.setColumnExpandRatio(0, 0F);
mainLayout.setColumnExpandRatio(1, 0F);
mainLayout.setColumnExpandRatio(2, 1F);
mainLayout.setColumnExpandRatio(4, 0F);
}
private void maximizeActionHistory() {
@@ -276,11 +318,11 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
mainLayout.removeComponent(distributionTableLayoutNew);
mainLayout.removeComponent(distributionTagLayout);
}
mainLayout.setColumnExpandRatio(0, 0f);
mainLayout.setColumnExpandRatio(1, 0f);
mainLayout.setColumnExpandRatio(2, 0f);
mainLayout.setColumnExpandRatio(3, 0f);
mainLayout.setColumnExpandRatio(4, 1f);
mainLayout.setColumnExpandRatio(0, 0F);
mainLayout.setColumnExpandRatio(1, 0F);
mainLayout.setColumnExpandRatio(2, 0F);
mainLayout.setColumnExpandRatio(3, 0F);
mainLayout.setColumnExpandRatio(4, 1F);
mainLayout.removeComponent(deleteAndActionsLayout);
mainLayout.setComponentAlignment(actionHistoryComponent, Alignment.TOP_LEFT);
}
@@ -329,4 +371,9 @@ public class DeploymentView extends VerticalLayout implements View, BrowserWindo
}
}
@Override
public void enter(final ViewChangeEvent event) {
// This view is constructed in the init() method()
}
}

View File

@@ -8,20 +8,19 @@
*/
package org.eclipse.hawkbit.ui.management.actionhistory;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.DeploymentManagement;
import org.eclipse.hawkbit.repository.model.Target;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
@@ -30,37 +29,26 @@ import com.vaadin.ui.VerticalLayout;
*
*
*/
@SpringComponent
@UIScope
public class ActionHistoryComponent extends VerticalLayout {
private static final long serialVersionUID = -3766179797384539821L;
@Autowired
private ActionHistoryHeader actionHistoryHeader;
private final ActionHistoryHeader actionHistoryHeader;
private final ActionHistoryTable actionHistoryTable;
private final EventBus.UIEventBus eventBus;
@Autowired
private ActionHistoryTable actionHistoryTable;
@Autowired
private transient EventBus.SessionEventBus eventBus;
/**
* Initialize the Action History Component.
*/
@PostConstruct
public void init() {
public ActionHistoryComponent(final I18N i18n, final DeploymentManagement deploymentManagement,
final UIEventBus eventBus, final UINotification notification, final ManagementUIState managementUIState) {
this.actionHistoryHeader = new ActionHistoryHeader(eventBus, managementUIState);
this.actionHistoryTable = new ActionHistoryTable(i18n, deploymentManagement, eventBus, notification,
managementUIState);
this.eventBus = eventBus;
buildLayout();
setSizeFull();
setImmediate(true);
eventBus.subscribe(this);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final TargetTableEvent targetUIEvent) {
if (BaseEntityEventType.SELECTED_ENTITY == targetUIEvent.getEventType()) {
setData(SPUIDefinitions.DATA_AVAILABLE);
@@ -76,7 +64,7 @@ public class ActionHistoryComponent extends VerticalLayout {
addComponents(actionHistoryHeader, actionHistoryTable);
setComponentAlignment(actionHistoryHeader, Alignment.TOP_CENTER);
setComponentAlignment(actionHistoryTable, Alignment.TOP_CENTER);
setExpandRatio(actionHistoryTable, 1.0f);
setExpandRatio(actionHistoryTable, 1.0F);
}
/**

View File

@@ -8,8 +8,6 @@
*/
package org.eclipse.hawkbit.ui.management.actionhistory;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.ui.common.builder.LabelBuilder;
import org.eclipse.hawkbit.ui.components.SPUIButton;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
@@ -19,13 +17,11 @@ import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
@@ -35,26 +31,18 @@ import com.vaadin.ui.VerticalLayout;
*
*
*/
@SpringComponent
@UIScope
public class ActionHistoryHeader extends VerticalLayout {
private static final long serialVersionUID = -6276188234115774351L;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Autowired
private ManagementUIState managementUIState;
private final EventBus.UIEventBus eventBus;
private final ManagementUIState managementUIState;
private Label titleOfActionHistory;
private SPUIButton maxMinButton;
/**
* Initialize the Action History Header.
*/
@PostConstruct
public void init() {
public ActionHistoryHeader(final UIEventBus eventBus, final ManagementUIState managementUIState) {
this.eventBus = eventBus;
this.managementUIState = managementUIState;
buildComponent();
buildLayout();
restorePreviousState();

View File

@@ -13,9 +13,6 @@ import java.util.Collection;
import java.util.List;
import java.util.StringJoiner;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.eclipse.hawkbit.repository.ActionStatusFields;
import org.eclipse.hawkbit.repository.DeploymentManagement;
import org.eclipse.hawkbit.repository.exception.CancelActionNotAllowedException;
@@ -40,13 +37,13 @@ import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
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.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -55,8 +52,6 @@ import com.vaadin.data.Item;
import com.vaadin.data.util.HierarchicalContainer;
import com.vaadin.server.FontAwesome;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.HorizontalLayout;
@@ -71,42 +66,33 @@ import com.vaadin.ui.themes.ValoTheme;
* Table for {@link Target#getActions()} history.
*
*/
@SpringComponent
@UIScope
public class ActionHistoryTable extends TreeTable {
private static final long serialVersionUID = -1631514704696786653L;
private static final Logger LOG = LoggerFactory.getLogger(ActionHistoryTable.class);
private static final String BUTTON_CANCEL = "button.cancel";
private static final String BUTTON_OK = "button.ok";
private static final String STATUS_ICON_GREEN = "statusIconGreen";
@Autowired
private I18N i18n;
@Autowired
private transient DeploymentManagement deploymentManagement;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Autowired
private UINotification notification;
@Autowired
private ManagementUIState managementUIState;
private final I18N i18n;
private final DeploymentManagement deploymentManagement;
private final EventBus.UIEventBus eventBus;
private final UINotification notification;
private final ManagementUIState managementUIState;
private Container hierarchicalContainer;
private boolean alreadyHasMessages;
private Target target;
private static final String STATUS_ICON_GREEN = "statusIconGreen";
public ActionHistoryTable(final I18N i18n, final DeploymentManagement deploymentManagement,
final UIEventBus eventBus, final UINotification notification, final ManagementUIState managementUIState) {
this.i18n = i18n;
this.deploymentManagement = deploymentManagement;
this.eventBus = eventBus;
this.notification = notification;
this.managementUIState = managementUIState;
/**
* Initialize the Action History Table.
*/
@PostConstruct
public void init() {
initializeTableSettings();
buildComponent();
restorePreviousState();
@@ -115,12 +101,7 @@ public class ActionHistoryTable extends TreeTable {
setPageLength(SPUIDefinitions.PAGE_SIZE);
}
@PreDestroy
void destroy() {
eventBus.unsubscribe(this);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final ManagementUIEvent mgmtUIEvent) {
if (mgmtUIEvent == ManagementUIEvent.MAX_ACTION_HISTORY) {
UI.getCurrent().access(() -> createTableContentForMax());
@@ -411,9 +392,9 @@ public class ActionHistoryTable extends TreeTable {
actionCancel.setEnabled(isActionActive && !actionWithActiveStatus.isCancelingOrCanceled());
actionCancel.addClickListener(event -> confirmAndCancelAction(actionId));
final Button actionForce = SPUIComponentProvider.getButton(
UIComponentIdProvider.ACTION_HISTORY_TABLE_FORCE_ID, "", i18n.get("message.force.action"),
ValoTheme.BUTTON_TINY, true, FontAwesome.BOLT, SPUIButtonStyleSmallNoBorder.class);
final Button actionForce = SPUIComponentProvider.getButton(UIComponentIdProvider.ACTION_HISTORY_TABLE_FORCE_ID,
"", i18n.get("message.force.action"), ValoTheme.BUTTON_TINY, true, FontAwesome.BOLT,
SPUIButtonStyleSmallNoBorder.class);
actionForce.setEnabled(
isActionActive && !actionWithActiveStatus.isForce() && !actionWithActiveStatus.isCancelingOrCanceled());
actionForce.addClickListener(event -> confirmAndForceAction(actionId));

View File

@@ -10,8 +10,6 @@ package org.eclipse.hawkbit.ui.management.dstable;
import java.util.Collections;
import javax.annotation.PostConstruct;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SystemManagement;
@@ -38,15 +36,13 @@ import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
import org.eclipse.hawkbit.ui.utils.SpringContextHelper;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus;
import org.vaadin.spring.events.EventBus.UIEventBus;
import com.google.common.collect.Sets;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.CustomComponent;
@@ -58,29 +54,16 @@ import com.vaadin.ui.themes.ValoTheme;
/**
* WindowContent for adding/editing a Distribution
*/
@SpringComponent
@UIScope
public class DistributionAddUpdateWindowLayout extends CustomComponent {
private static final long serialVersionUID = -5602182034230568435L;
@Autowired
private I18N i18n;
@Autowired
private transient UINotification notificationMessage;
@Autowired
private transient EventBus.SessionEventBus eventBus;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
@Autowired
private transient SystemManagement systemManagement;
@Autowired
private transient EntityFactory entityFactory;
private final I18N i18n;
private final UINotification notificationMessage;
private final EventBus.UIEventBus eventBus;
private final DistributionSetManagement distributionSetManagement;
private final SystemManagement systemManagement;
private final EntityFactory entityFactory;
private TextField distNameTextField;
private TextField distVersionTextField;
@@ -92,6 +75,19 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
private FormLayout formLayout;
public DistributionAddUpdateWindowLayout(final I18N i18n, final UINotification notificationMessage,
final UIEventBus eventBus, final DistributionSetManagement distributionSetManagement,
final SystemManagement systemManagement, final EntityFactory entityFactory) {
this.i18n = i18n;
this.notificationMessage = notificationMessage;
this.eventBus = eventBus;
this.distributionSetManagement = distributionSetManagement;
this.systemManagement = systemManagement;
this.entityFactory = entityFactory;
createRequiredComponents();
buildLayout();
}
/**
* Save or update distribution set.
*
@@ -113,15 +109,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
}
/**
* Initialize Distribution Add and Edit Window.
*/
@PostConstruct
void init() {
createRequiredComponents();
buildLayout();
}
private void buildLayout() {
addStyleName("lay-color");
setSizeUndefined();

View File

@@ -10,6 +10,9 @@ package org.eclipse.hawkbit.ui.management.dstable;
import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.EntityFactory;
import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.SystemManagement;
import org.eclipse.hawkbit.repository.TagManagement;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
@@ -20,13 +23,13 @@ import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.distributions.dstable.DsMetadataPopupLayout;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
import org.eclipse.hawkbit.ui.utils.I18N;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
@@ -37,47 +40,50 @@ import com.vaadin.ui.Window;
/**
* Distribution set details layout.
*/
@SpringComponent
@UIScope
public class DistributionDetails extends AbstractNamedVersionedEntityTableDetailsLayout<DistributionSet> {
private static final long serialVersionUID = 350360207334118826L;
@Autowired
private ManagementUIState managementUIState;
@Autowired
private DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout;
@Autowired
private DistributionTagToken distributionTagToken;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
@Autowired
private DsMetadataPopupLayout dsMetadataPopupLayout;
@Autowired
private transient EntityFactory entityFactory;
private final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout;
private final DistributionTagToken distributionTagToken;
private final DistributionSetManagement distributionSetManagement;
private final DsMetadataPopupLayout dsMetadataPopupLayout;
private final EntityFactory entityFactory;
private SoftwareModuleDetailsTable softwareModuleTable;
private DistributionSetMetadatadetailslayout dsMetadataTable;
@Override
protected void init() {
public DistributionDetails(final I18N i18n, final UIEventBus eventBus, final SpPermissionChecker permissionChecker,
final ManagementUIState managementUIState, final DistributionSetManagement distributionSetManagement,
final DsMetadataPopupLayout dsMetadataPopupLayout, final EntityFactory entityFactory,
final UINotification notificationMessage, final SystemManagement systemManagement,
final TagManagement tagManagement,
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout) {
super(i18n, eventBus, permissionChecker, managementUIState);
this.distributionTagToken = new DistributionTagToken(permissionChecker, i18n, notificationMessage, eventBus,
managementUIState, tagManagement, distributionSetManagement);
this.distributionSetManagement = distributionSetManagement;
this.dsMetadataPopupLayout = new DsMetadataPopupLayout(i18n, notificationMessage, eventBus,
distributionSetManagement, entityFactory, permissionChecker);
this.entityFactory = entityFactory;
this.distributionAddUpdateWindowLayout = distributionAddUpdateWindowLayout;
buildComponents();
}
private void buildComponents() {
softwareModuleTable = new SoftwareModuleDetailsTable();
softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null);
dsMetadataTable = new DistributionSetMetadatadetailslayout();
dsMetadataTable.init(getI18n(), getPermissionChecker(), distributionSetManagement, dsMetadataPopupLayout,
entityFactory);
super.init();
addTabs(detailsTab);
restoreState();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent distributionTableEvent) {
onBaseEntityEvent(distributionTableEvent);
}

View File

@@ -45,16 +45,17 @@ import org.eclipse.hawkbit.ui.push.DistributionCreatedEventContainer;
import org.eclipse.hawkbit.ui.push.DistributionDeletedEventContainer;
import org.eclipse.hawkbit.ui.push.DistributionSetUpdatedEventContainer;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N;
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.TableColumn;
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
import org.eclipse.hawkbit.ui.utils.UINotification;
import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
import org.vaadin.spring.events.EventBus.UIEventBus;
import org.vaadin.spring.events.EventScope;
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -64,8 +65,6 @@ import com.vaadin.data.Item;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.spring.annotation.UIScope;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.DragAndDropWrapper;
@@ -76,53 +75,48 @@ import com.vaadin.ui.UI;
/**
* Distribution set table.
*/
@SpringComponent
@UIScope
public class DistributionTable extends AbstractNamedVersionTable<DistributionSet, DistributionSetIdName> {
private static final long serialVersionUID = -1928335256399519494L;
@Autowired
private SpPermissionChecker permissionChecker;
@Autowired
private UINotification uiNotification;
@Autowired
private ManagementUIState managementUIState;
@Autowired
private ManagementViewAcceptCriteria managementViewAcceptCriteria;
@Autowired
private transient TargetManagement targetService;
@Autowired
private DsMetadataPopupLayout dsMetadataPopupLayout;
@Autowired
private transient DistributionSetManagement distributionSetManagement;
private String notAllowedMsg;
private Boolean isDistPinned = false;
private final SpPermissionChecker permissionChecker;
private final ManagementUIState managementUIState;
private final ManagementViewAcceptCriteria managementViewAcceptCriteria;
private final TargetManagement targetService;
private final DsMetadataPopupLayout dsMetadataPopupLayout;
private final DistributionSetManagement distributionSetManagement;
private final String notAllowedMsg;
private boolean isDistPinned;
private Button distributinPinnedBtn;
@Override
protected void init() {
super.init();
public DistributionTable(final UIEventBus eventBus, final I18N i18n, final SpPermissionChecker permissionChecker,
final UINotification notification, final ManagementUIState managementUIState,
final ManagementViewAcceptCriteria managementViewAcceptCriteria, final TargetManagement targetService,
final DsMetadataPopupLayout dsMetadataPopupLayout,
final DistributionSetManagement distributionSetManagement) {
super(eventBus, i18n, notification);
this.permissionChecker = permissionChecker;
this.managementUIState = managementUIState;
this.managementViewAcceptCriteria = managementViewAcceptCriteria;
this.targetService = targetService;
this.dsMetadataPopupLayout = dsMetadataPopupLayout;
this.distributionSetManagement = distributionSetManagement;
notAllowedMsg = i18n.get("message.action.not.allowed");
addNewContainerDS();
setColumnProperties();
setDataAvailable(getContainerDataSource().size() != 0);
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionCreatedEvents(final DistributionCreatedEventContainer eventContainer) {
if (eventContainer.getEvents().stream().anyMatch(event -> event.getEntity().isComplete())) {
refreshDistributions();
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionDeleteEvents(final DistributionDeletedEventContainer eventContainer) {
final LazyQueryContainer dsContainer = (LazyQueryContainer) getContainerDataSource();
final List<Object> visibleItemIds = (List<Object>) getVisibleItemIds();
@@ -145,7 +139,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
reSelectItemsAfterDeletionEvent();
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onDistributionSetUpdateEvents(final DistributionSetUpdatedEventContainer eventContainer) {
final List<DistributionSetIdName> visibleItemIds = (List<DistributionSetIdName>) getVisibleItemIds();
@@ -213,7 +207,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
* @param event
* as instance of {@link DistributionTableFilterEvent}
*/
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableFilterEvent event) {
if (event == DistributionTableFilterEvent.FILTER_BY_TEXT
|| event == DistributionTableFilterEvent.REMOVE_FILTER_BY_TEXT
@@ -222,7 +216,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DragEvent dragEvent) {
if (dragEvent == DragEvent.TARGET_DRAG || dragEvent == DragEvent.TARGET_TAG_DRAG
|| dragEvent == DragEvent.DISTRIBUTION_TAG_DRAG) {
@@ -232,7 +226,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final DistributionTableEvent event) {
onBaseEntityEvent(event);
if (BaseEntityEventType.UPDATED_ENTITY != event.getEventType()) {
@@ -242,7 +236,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final PinUnpinEvent pinUnpinEvent) {
UI.getCurrent().access(() -> {
if (pinUnpinEvent == PinUnpinEvent.PIN_TARGET) {
@@ -259,14 +253,14 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
});
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final SaveActionWindowEvent event) {
if (event == SaveActionWindowEvent.DELETED_DISTRIBUTIONS) {
refreshFilter();
}
}
@EventBusListenerMethod(scope = EventScope.SESSION)
@EventBusListenerMethod(scope = EventScope.UI)
void onEvent(final ManagementUIEvent managementUIEvent) {
UI.getCurrent().access(() -> {
if (managementUIEvent == ManagementUIEvent.UNASSIGN_DISTRIBUTION_TAG
@@ -444,7 +438,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distList,
distTagName);
uiNotification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(distTagName, result, i18n));
notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(distTagName, result, i18n));
if (result.getAssigned() >= 1 && managementUIState.getDistributionTableFilters().isNoTagSelected()) {
refreshFilter();
}
@@ -464,8 +458,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
.add(new TargetIdName(target.getId(), target.getControllerId(), target.getName())));
assignTargetToDs(getItem(distItemId), targetDetailsList);
} else {
uiNotification
.displaySuccess(i18n.get("message.no.targets.assiged.fortag", new Object[] { targetTagName }));
notification.displaySuccess(i18n.get("message.no.targets.assiged.fortag", new Object[] { targetTagName }));
}
}
@@ -512,13 +505,13 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
} else if (wrapperSource.getId().startsWith(SPUIDefinitions.TARGET_TAG_ID_PREFIXS)) {
return !isNoTagButton(tagData, SPUIDefinitions.TARGET_TAG_BUTTON);
}
uiNotification.displayValidationError(notAllowedMsg);
notification.displayValidationError(notAllowedMsg);
return false;
}
private Boolean isNoTagButton(final String tagData, final String targetNoTagData) {
if (tagData.equals(targetNoTagData)) {
uiNotification.displayValidationError(
notification.displayValidationError(
i18n.get("message.tag.cannot.be.assigned", new Object[] { i18n.get("label.no.tag.assigned") }));
return true;
}
@@ -556,7 +549,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
eventBus.publish(this, ManagementUIEvent.UPDATE_COUNT);
}
if (null != message) {
uiNotification.displayValidationError(message);
notification.displayValidationError(message);
}
}

Some files were not shown because too many files have changed in this diff Show More