diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleEvent.java index 95770cb8f..1764f8998 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleEvent.java @@ -28,6 +28,10 @@ public class SoftwareModuleEvent extends BaseEntityEvent { private SoftwareModuleEventType softwareModuleEventType; + public SoftwareModuleEvent() { + super(null, null); + } + /** * Creates software module event. * diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleTypeEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleTypeEvent.java index 88e076775..f1b8deb72 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleTypeEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/SoftwareModuleTypeEvent.java @@ -25,7 +25,7 @@ public class SoftwareModuleTypeEvent { * */ public enum SoftwareModuleTypeEnum { - ADD_SOFTWARE_MODULE_TYPE, DELETE_SOFTWARE_MODULE_TYPE, UPDATE_SOFTWARE_MODULE_TYPE + ADD_SOFTWARE_MODULE_TYPE, DELETE_SOFTWARE_MODULE_TYPE, UPDATE_SOFTWARE_MODULE_TYPE, SELECT_ALL } private SoftwareModuleType softwareModuleType; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java index 478438891..11ac5e571 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java @@ -35,6 +35,7 @@ import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.data.Container; import com.vaadin.data.Item; +import com.vaadin.event.Action; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; @@ -211,4 +212,15 @@ public class SoftwareModuleTable extends AbstractNamedVersionTable * i is the id of the table */ -public abstract class AbstractNamedVersionTable extends AbstractTable { +public abstract class AbstractNamedVersionTable extends AbstractTable + implements Handler { private static final long serialVersionUID = 780050712209750719L; + protected ShortcutAction actionSelectAll; + + protected ShortcutAction actionUnSelectAll; + + /** + * Initialize the component. + */ + @Override + protected void init() { + super.init(); + actionSelectAll = new ShortcutAction(i18n.get("action.target.table.selectall")); + actionUnSelectAll = new ShortcutAction(i18n.get("action.target.table.clear")); + setMultiSelect(true); + setSelectable(true); + } + @Override protected List getTableVisibleColumns() { final List columnList = super.getTableVisibleColumns(); @@ -44,4 +64,24 @@ public abstract class AbstractNamedVersionTable extends Table { private static final Logger LOG = LoggerFactory.getLogger(AbstractTable.class); + // TODO MR should be private and use with getter/setter @Autowired protected transient EventBus.SessionEventBus eventBus; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableLayout.java index b9fa20f03..fa847b4ba 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableLayout.java @@ -9,8 +9,11 @@ package org.eclipse.hawkbit.ui.common.table; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractTableDetailsLayout; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.event.Action.Handler; +import com.vaadin.event.ShortcutAction; import com.vaadin.ui.Alignment; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; @@ -27,6 +30,15 @@ public abstract class AbstractTableLayout extends VerticalLayout { private static final long serialVersionUID = 8611248179949245460L; + /** + * action for the shortcut key ctrl + 'A'. + */ + protected static final ShortcutAction ACTION_CTRL_A = new ShortcutAction("Select All", ShortcutAction.KeyCode.A, + new int[] { ShortcutAction.ModifierKey.CTRL }); + + @Autowired + private transient EventBus.SessionEventBus eventBus; + private AbstractTableHeader tableHeader; private AbstractTable table; @@ -93,12 +105,14 @@ public abstract class AbstractTableLayout extends VerticalLayout { * @return reference of {@link Handler} to handler the short cut keys. * Default is null. */ - protected Handler getShortCutKeysHandler() { - return null; - } + protected abstract Handler getShortCutKeysHandler(); public void setShowFilterButtonVisible(final boolean visible) { tableHeader.setFilterButtonsIconVisible(visible); } + public EventBus.SessionEventBus getEventBus() { + return eventBus; + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java index 01c242247..56abe5d25 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTable.java @@ -31,6 +31,8 @@ import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModule import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable; import org.eclipse.hawkbit.ui.common.table.AbstractTable; import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; +import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTableEvent; +import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTableEvent.DistributionSetComponentEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria; import org.eclipse.hawkbit.ui.distributions.event.DragEvent; @@ -55,6 +57,7 @@ import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.data.Container; import com.vaadin.data.Item; +import com.vaadin.event.Action; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; @@ -472,4 +475,15 @@ public class DistributionSetTable extends AbstractNamedVersionTable { + + /** + * DistributionSet table components events. + * + */ + public enum DistributionSetComponentEvent { + SELECT_ALL + } + + private DistributionSetComponentEvent distributionSetComponentEvent; + + /** + * Constructor. + * + * @param eventType + * the event type. + * @param entity + * the entity + */ + public DistributionSetTableEvent(final BaseEntityEventType eventType, final DistributionSet entity) { + super(eventType, entity); + } + + /** + * The component event. + * + * @param DistributionSetTableEvent + * the distributionSet component event. + */ + public DistributionSetTableEvent(final DistributionSetComponentEvent distributionSetComponentEvent) { + super(null, null); + this.distributionSetComponentEvent = distributionSetComponentEvent; + } + + public DistributionSetComponentEvent getDistributionSetComponentEvent() { + return distributionSetComponentEvent; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionSetTypeEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionSetTypeEvent.java index 9cbd1f1bc..798d2a43d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionSetTypeEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionSetTypeEvent.java @@ -30,16 +30,11 @@ public class DistributionSetTypeEvent { private final DistributionSetTypeEnum distributionSetTypeEnum; - private String distributionSetTypeName; - /** * @param distributionSetTypeEnum - * @param distributionSetTypeName */ - public DistributionSetTypeEvent(final DistributionSetTypeEnum distributionSetTypeEnum, - final String distributionSetTypeName) { + public DistributionSetTypeEvent(final DistributionSetTypeEnum distributionSetTypeEnum) { this.distributionSetTypeEnum = distributionSetTypeEnum; - this.distributionSetTypeName = distributionSetTypeName; } /** @@ -52,14 +47,6 @@ public class DistributionSetTypeEvent { this.distributionSetType = distributionSetType; } - public String getDistributionSetTypeName() { - return distributionSetTypeName; - } - - public void setDistributionSetTypeName(final String distributionSetTypeName) { - this.distributionSetTypeName = distributionSetTypeName; - } - public DistributionSetType getDistributionSetType() { return distributionSetType; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/SoftwareModuleTableEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/SoftwareModuleTableEvent.java new file mode 100644 index 000000000..d3347d52f --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/SoftwareModuleTableEvent.java @@ -0,0 +1,51 @@ +package org.eclipse.hawkbit.ui.distributions.event; + +import org.eclipse.hawkbit.repository.model.SoftwareModule; +import org.eclipse.hawkbit.ui.common.table.BaseEntityEvent; +import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; + +/** + * + * + * + */ +public class SoftwareModuleTableEvent extends BaseEntityEvent { + + /** + * SoftwareModule table components events. + * + */ + public enum SoftwareModuleComponentEvent { + SELECT_ALL + } + + private SoftwareModuleComponentEvent softwareModuleComponentEvent; + + /** + * Constructor. + * + * @param eventType + * the event type. + * @param entity + * the entity + */ + public SoftwareModuleTableEvent(final BaseEntityEventType eventType, final SoftwareModule entity) { + super(eventType, entity); + } + + /** + * The component event. + * + * @param SoftwareModuleComponentEvent + * the softwareModule component event. + */ + public SoftwareModuleTableEvent(final SoftwareModuleComponentEvent softwareModuleComponentEvent) { + super(null, null); + this.softwareModuleComponentEvent = softwareModuleComponentEvent; + } + + public SoftwareModuleComponentEvent getSoftwareModuleComponentEvent() { + return softwareModuleComponentEvent; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java index eeea33723..d07111858 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTable.java @@ -26,6 +26,8 @@ import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria; import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent; +import org.eclipse.hawkbit.ui.distributions.event.SoftwareModuleTableEvent; +import org.eclipse.hawkbit.ui.distributions.event.SoftwareModuleTableEvent.SoftwareModuleComponentEvent; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; @@ -42,6 +44,8 @@ import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.data.Container; import com.vaadin.data.Item; +import com.vaadin.event.Action; +import com.vaadin.event.Action.Handler; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; @@ -62,7 +66,7 @@ import com.vaadin.ui.Window; */ @SpringComponent @ViewScope -public class SwModuleTable extends AbstractNamedVersionTable { +public class SwModuleTable extends AbstractNamedVersionTable implements Handler { private static final long serialVersionUID = 6785314784507424750L; @@ -388,4 +392,15 @@ public class SwModuleTable extends AbstractNamedVersionTable { + /** + * DistributionSet table components events. + * + */ + public enum DistributionTableComponentEvent { + SELECT_ALL + } + /** * Constructor. * @@ -31,4 +39,14 @@ public class DistributionTableEvent extends BaseEntityEvent { super(eventType, entity); } + /** + * The component event. + * + * @param DistributionSetTableEvent + * the distributionSet component event. + */ + public DistributionTableEvent(final DistributionTableComponentEvent distributionComponentEvent) { + super(null, null); + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 3b9c18952..7fb2446f0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -21,7 +21,6 @@ import java.util.stream.Collectors; import org.eclipse.hawkbit.eventbus.event.TargetCreatedEvent; import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent; -import org.eclipse.hawkbit.repository.OffsetBasedPageRequest; import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; @@ -63,7 +62,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; @@ -353,6 +351,7 @@ public class TargetTable extends AbstractTable implements }; } + // TODO MR private void onTargetDeletedEvent(final List events) { final LazyQueryContainer targetContainer = (LazyQueryContainer) getContainerDataSource(); final List visibleItemIds = (List) getVisibleItemIds(); @@ -928,16 +927,24 @@ public class TargetTable extends AbstractTable implements * Select all rows in the table. */ public void selectAll() { - final PageRequest pageRequest = new OffsetBasedPageRequest(0, size(), - new Sort(SPUIDefinitions.TARGET_TABLE_CREATE_AT_SORT_ORDER, "createdAt")); - List targetIdList; - // is custom filter selected - if (managementUIState.getTargetTableFilters().getTargetFilterQuery().isPresent()) { - targetIdList = getTargetIdsByCustomFilters(pageRequest); - } else { - targetIdList = getTargetIdsBySimpleFilters(pageRequest); - } - setValue(targetIdList); + // final PageRequest pageRequest = new OffsetBasedPageRequest(0, size(), + // new Sort(SPUIDefinitions.TARGET_TABLE_CREATE_AT_SORT_ORDER, + // "createdAt")); + // List targetIdList; + // // is custom filter selected + // if + // (managementUIState.getTargetTableFilters().getTargetFilterQuery().isPresent()) + // { + // targetIdList = getTargetIdsByCustomFilters(pageRequest); + // } else { + // targetIdList = getTargetIdsBySimpleFilters(pageRequest); + // } + // setValue(targetIdList); + + // TODO MR + // As Vaadin Table only returns the current ItemIds which are visible + // you don't need to search explicit for them. + setValue(getItemIds()); } private List getTargetIdsBySimpleFilters(final PageRequest pageRequest) {