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..7262aee72 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 @@ -12,17 +12,11 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; /** * Event to represent software module type add, update or delete. - * - * - * */ public class SoftwareModuleTypeEvent { /** * Software module type events in the Upload UI. - * - * - * */ public enum SoftwareModuleTypeEnum { ADD_SOFTWARE_MODULE_TYPE, DELETE_SOFTWARE_MODULE_TYPE, UPDATE_SOFTWARE_MODULE_TYPE 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 6527a37be..99fe185e5 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 @@ -211,4 +211,5 @@ public class SoftwareModuleTable extends AbstractNamedVersionTable getTableVisibleColumns() { final List columnList = super.getTableVisibleColumns(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java index 1808cf070..1121ac8a7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java @@ -153,6 +153,16 @@ public abstract class AbstractTable extends Table { } } + /** + * Select all rows in the table. + */ + protected void selectAll() { + if (isMultiSelect()) { + // only contains the ItemIds of the visible items in the table + setValue(getItemIds()); + } + } + private void setColumnProperties() { final List columnList = getTableVisibleColumns(); final List swColumnIds = new ArrayList<>(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java index ad5fba1ad..3631b6678 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java @@ -36,10 +36,6 @@ import com.vaadin.ui.VerticalLayout; /** * Parent class for table header. - * - * - * - * */ public abstract class AbstractTableHeader extends VerticalLayout { 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..11c0083ec 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.eclipse.hawkbit.ui.utils.ShortCutModifierUtils; +import com.vaadin.event.Action; 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; @@ -18,23 +21,19 @@ import com.vaadin.ui.themes.ValoTheme; /** * Parent class for table layout. - * - * - * - * */ public abstract class AbstractTableLayout extends VerticalLayout { - private static final long serialVersionUID = 8611248179949245460L; + private static final long serialVersionUID = 1L; private AbstractTableHeader tableHeader; - private AbstractTable table; + private AbstractTable table; - private AbstractTableDetailsLayout detailsLayout; + private AbstractTableDetailsLayout detailsLayout; - protected void init(final AbstractTableHeader tableHeader, final AbstractTable table, - final AbstractTableDetailsLayout detailsLayout) { + protected void init(final AbstractTableHeader tableHeader, final AbstractTable table, + final AbstractTableDetailsLayout detailsLayout) { this.tableHeader = tableHeader; this.table = table; this.detailsLayout = detailsLayout; @@ -58,33 +57,33 @@ public abstract class AbstractTableLayout extends VerticalLayout { if (isShortCutKeysRequired()) { final Panel tablePanel = new Panel(); tablePanel.setStyleName("table-panel"); - tablePanel.setHeight(100.0f, Unit.PERCENTAGE); + tablePanel.setHeight(100.0F, Unit.PERCENTAGE); tablePanel.setContent(table); tablePanel.addActionHandler(getShortCutKeysHandler()); tablePanel.addStyleName(ValoTheme.PANEL_BORDERLESS); tableHeaderLayout.addComponent(tablePanel); tableHeaderLayout.setComponentAlignment(tablePanel, Alignment.TOP_CENTER); - tableHeaderLayout.setExpandRatio(tablePanel, 1.0f); + tableHeaderLayout.setExpandRatio(tablePanel, 1.0F); } else { tableHeaderLayout.addComponent(table); tableHeaderLayout.setComponentAlignment(table, Alignment.TOP_CENTER); - tableHeaderLayout.setExpandRatio(table, 1.0f); + tableHeaderLayout.setExpandRatio(table, 1.0F); } addComponent(tableHeaderLayout); addComponent(detailsLayout); setComponentAlignment(tableHeaderLayout, Alignment.TOP_CENTER); setComponentAlignment(detailsLayout, Alignment.TOP_CENTER); - setExpandRatio(tableHeaderLayout, 1.0f); + setExpandRatio(tableHeaderLayout, 1.0F); } /** * If any short cut keys required on the table. * - * @return true if required else false. Default is 'false'. + * @return true if required else false. Default is 'true'. */ protected boolean isShortCutKeysRequired() { - return false; + return true; } /** @@ -94,11 +93,38 @@ public abstract class AbstractTableLayout extends VerticalLayout { * Default is null. */ protected Handler getShortCutKeysHandler() { - return null; + return new TableShortCutHandler(); + } + + protected void publishEvent() { + // can be override by subclasses } public void setShowFilterButtonVisible(final boolean visible) { tableHeader.setFilterButtonsIconVisible(visible); } + private class TableShortCutHandler implements Handler { + + private static final String SELECT_ALL_TEXT = "Select All"; + private final ShortcutAction selectAllAction = new ShortcutAction(SELECT_ALL_TEXT, ShortcutAction.KeyCode.A, + new int[] { ShortCutModifierUtils.getCtrlOrMetaModifier() }); + + private static final long serialVersionUID = 1L; + + @Override + public void handleAction(final Action action, final Object sender, final Object target) { + if (!selectAllAction.equals(action)) { + return; + } + table.selectAll(); + publishEvent(); + } + + @Override + public Action[] getActions(final Object target, final Object sender) { + return new Action[] { selectAllAction }; + } + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java index 25e081fa0..9b819e1b4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java @@ -31,9 +31,6 @@ import com.vaadin.spring.annotation.ViewScope; /** * Distribution Set Type filter buttons. - * - * - * */ @SpringComponent @ViewScope 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 0b895179b..a52c0b683 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 @@ -65,7 +65,6 @@ import com.vaadin.ui.UI; /** * Distribution set table. - * */ @SpringComponent @ViewScope @@ -468,7 +467,6 @@ public class DistributionSetTable extends AbstractNamedVersionTable { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/TargetTableEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/TargetTableEvent.java index 04dd917a9..214d12106 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/TargetTableEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/TargetTableEvent.java @@ -13,9 +13,7 @@ import org.eclipse.hawkbit.ui.common.table.BaseEntityEvent; import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; /** - * - * - * + * Class which contains the Event when selecting all entries of the target table */ public class TargetTableEvent extends BaseEntityEvent { @@ -24,7 +22,7 @@ public class TargetTableEvent extends BaseEntityEvent { * */ public enum TargetComponentEvent { - REFRESH_TARGETS, SELLECT_ALL, BULK_TARGET_CREATED, BULK_UPLOAD_COMPLETED, BULK_TARGET_UPLOAD_STARTED, BULK_UPLOAD_PROCESS_STARTED + REFRESH_TARGETS, SELECT_ALL, BULK_TARGET_CREATED, BULK_UPLOAD_COMPLETED, BULK_TARGET_UPLOAD_STARTED, BULK_UPLOAD_PROCESS_STARTED } private TargetComponentEvent targetComponentEvent; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/CountMessageLabel.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/CountMessageLabel.java index ed6d033bd..fccee7cb5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/CountMessageLabel.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/CountMessageLabel.java @@ -95,7 +95,7 @@ public class CountMessageLabel extends Label { @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final TargetTableEvent event) { - if (TargetTableEvent.TargetComponentEvent.SELLECT_ALL == event.getTargetComponentEvent() + if (TargetTableEvent.TargetComponentEvent.SELECT_ALL == event.getTargetComponentEvent() || TargetComponentEvent.REFRESH_TARGETS == event.getTargetComponentEvent()) { displayTargetCountStatus(); } 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 4eca0a35d..0a70f60d5 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 @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.management.targettable; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -19,13 +18,11 @@ import java.util.Set; import java.util.stream.Collectors; import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; -import org.eclipse.hawkbit.repository.OffsetBasedPageRequest; import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.eventbus.event.TargetCreatedEvent; import org.eclipse.hawkbit.repository.eventbus.event.TargetInfoUpdateEvent; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.model.TargetFilterQuery; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetInfo; import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; @@ -64,8 +61,6 @@ import org.eclipse.hawkbit.ui.utils.UINotification; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; @@ -73,12 +68,8 @@ import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.google.common.base.Strings; -import com.google.common.collect.Iterables; 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.ShortcutAction; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; @@ -97,11 +88,10 @@ import com.vaadin.ui.themes.ValoTheme; /** * Concrete implementation of Target table. - * */ @SpringComponent @ViewScope -public class TargetTable extends AbstractTable implements Handler { +public class TargetTable extends AbstractTable { private static final Logger LOG = LoggerFactory.getLogger(TargetTable.class); private static final String TARGET_PINNED = "targetPinned"; @@ -129,15 +119,10 @@ public class TargetTable extends AbstractTable implements private Button targetPinnedBtn; private Boolean isTargetPinned = Boolean.FALSE; - private ShortcutAction actionSelectAll; - private ShortcutAction actionUnSelectAll; @Override protected void init() { super.init(); - addActionHandler(this); - actionSelectAll = new ShortcutAction(i18n.get("action.target.table.selectall")); - actionUnSelectAll = new ShortcutAction(i18n.get("action.target.table.clear")); setItemDescriptionGenerator(new AssignInstalledDSTooltipGenerator()); } @@ -262,22 +247,6 @@ public class TargetTable extends AbstractTable implements HawkbitCommonUtil.addTargetTableContainerProperties(container); } - @Override - public Action[] getActions(final Object target, final Object sender) { - return new Action[] { actionSelectAll, actionUnSelectAll }; - } - - @Override - public void handleAction(final Action action, final Object sender, final Object target) { - if (actionSelectAll.equals(action)) { - selectAll(); - eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.SELLECT_ALL)); - } - if (actionUnSelectAll.equals(action)) { - unSelectAll(); - } - } - @Override protected void addCustomGeneratedColumns() { addGeneratedColumn(SPUIDefinitions.TARGET_STATUS_PIN_TOGGLE_ICON, @@ -931,52 +900,10 @@ 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); - } - private List getTargetIdsBySimpleFilters(final PageRequest pageRequest) { - final Long filterByDistId = managementUIState.getTargetTableFilters().getDistributionSet().isPresent() - ? managementUIState.getTargetTableFilters().getDistributionSet().get().getId() : null; - final List statusList = new ArrayList<>(); - if (isFilteredByStatus()) { - statusList.addAll(managementUIState.getTargetTableFilters().getClickedStatusTargetTags()); - } - final List tagList = new ArrayList<>(); - if (isFilteredByTags()) { - tagList.addAll(managementUIState.getTargetTableFilters().getClickedTargetTags()); - } - String searchText = managementUIState.getTargetTableFilters().getSearchText().isPresent() - ? managementUIState.getTargetTableFilters().getSearchText().get() : null; - if (!Strings.isNullOrEmpty(searchText)) { - searchText = String.format("%%%s%%", searchText); - } - final Boolean noTagSelected = managementUIState.getTargetTableFilters().isNoTagSelected(); - - final String[] tagArray = tagList.toArray(new String[tagList.size()]); - - List targetIdList; - targetIdList = targetManagement.findAllTargetIdsByFilters(pageRequest, statusList, searchText, filterByDistId, - noTagSelected, tagList.toArray(tagArray)); - Collections.reverse(targetIdList); - return targetIdList; - } - - private List getTargetIdsByCustomFilters(final PageRequest pageRequest) { - List targetIdList; - final TargetFilterQuery targetFilterQuery = managementUIState.getTargetTableFilters().getTargetFilterQuery() - .isPresent() ? managementUIState.getTargetTableFilters().getTargetFilterQuery().get() : null; - targetIdList = targetManagement.findAllTargetIdsByTargetFilterQuery(pageRequest, targetFilterQuery); - Collections.reverse(targetIdList); - return targetIdList; + // As Vaadin Table only returns the current ItemIds which are visible + // you don't need to search explicit for them. + setValue(getItemIds()); } /** @@ -1065,10 +992,6 @@ public class TargetTable extends AbstractTable implements return targetManagement.countTargetsAll(); } - private static TargetIdName getLastSelectedItem(final Set values) { - return Iterables.getLast(values); - } - private boolean isFilteredByStatus() { return !managementUIState.getTargetTableFilters().getClickedStatusTargetTags().isEmpty(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java index b6379729b..16dc584ed 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java @@ -65,9 +65,6 @@ public class TargetTableHeader extends AbstractTableHeader { @Autowired private ManagementUIState managementUIState; - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private ManagementViewAcceptCriteria managementViewAcceptCriteria; @@ -231,14 +228,14 @@ public class TargetTableHeader extends AbstractTableHeader { @Override protected void showFilterButtonsLayout() { managementUIState.setTargetTagFilterClosed(false); - eventBus.publish(this, ManagementUIEvent.SHOW_TARGET_TAG_LAYOUT); + eventbus.publish(this, ManagementUIEvent.SHOW_TARGET_TAG_LAYOUT); } @Override protected void resetSearchText() { if (managementUIState.getTargetTableFilters().getSearchText().isPresent()) { managementUIState.getTargetTableFilters().setSearchText(null); - eventBus.publish(this, TargetFilterEvent.REMOVE_FILTER_BY_TEXT); + eventbus.publish(this, TargetFilterEvent.REMOVE_FILTER_BY_TEXT); } } @@ -255,13 +252,13 @@ public class TargetTableHeader extends AbstractTableHeader { @Override public void maximizeTable() { managementUIState.setTargetTableMaximized(Boolean.TRUE); - eventBus.publish(this, new TargetTableEvent(BaseEntityEventType.MAXIMIZED,null)); + eventbus.publish(this, new TargetTableEvent(BaseEntityEventType.MAXIMIZED,null)); } @Override public void minimizeTable() { managementUIState.setTargetTableMaximized(Boolean.FALSE); - eventBus.publish(this, new TargetTableEvent(BaseEntityEventType.MINIMIZED,null)); + eventbus.publish(this, new TargetTableEvent(BaseEntityEventType.MINIMIZED,null)); } @Override @@ -277,12 +274,12 @@ public class TargetTableHeader extends AbstractTableHeader { @Override protected void searchBy(final String newSearchText) { managementUIState.getTargetTableFilters().setSearchText(newSearchText); - eventBus.publish(this, TargetFilterEvent.FILTER_BY_TEXT); + eventbus.publish(this, TargetFilterEvent.FILTER_BY_TEXT); } @Override protected void addNewItem(final ClickEvent event) { - eventBus.publish(this, DragEvent.HIDE_DROP_HINT); + eventbus.publish(this, DragEvent.HIDE_DROP_HINT); targetAddUpdateWindow.resetComponents(); final Window addTargetWindow = targetAddUpdateWindow.getWindow(); addTargetWindow.setCaption(i18n.get("caption.add.new.target")); @@ -401,13 +398,13 @@ public class TargetTableHeader extends AbstractTableHeader { getFilterDroppedInfo().setSizeFull(); getFilterDroppedInfo().addComponent(filteredDistLabel); getFilterDroppedInfo().addComponent(filterLabelClose); - getFilterDroppedInfo().setExpandRatio(filteredDistLabel, 1.0f); - eventBus.publish(this, TargetFilterEvent.FILTER_BY_DISTRIBUTION); + getFilterDroppedInfo().setExpandRatio(filteredDistLabel, 1.0F); + eventbus.publish(this, TargetFilterEvent.FILTER_BY_DISTRIBUTION); } private void closeFilterByDistribution() { - eventBus.publish(this, DragEvent.HIDE_DROP_HINT); + eventbus.publish(this, DragEvent.HIDE_DROP_HINT); /* Remove filter by distribution information. */ getFilterDroppedInfo().removeAllComponents(); getFilterDroppedInfo().setSizeUndefined(); @@ -415,7 +412,7 @@ public class TargetTableHeader extends AbstractTableHeader { managementUIState.getTargetTableFilters().setDistributionSet(null); /* Reload the table */ - eventBus.publish(this, TargetFilterEvent.REMOVE_FILTER_BY_DISTRIBUTION); + eventbus.publish(this, TargetFilterEvent.REMOVE_FILTER_BY_DISTRIBUTION); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableLayout.java index aaf5c6a9f..8c3ec3a1a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableLayout.java @@ -16,28 +16,17 @@ import org.eclipse.hawkbit.ui.management.event.TargetTableEvent.TargetComponentE import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.spring.events.EventBus; -import com.vaadin.event.Action; -import com.vaadin.event.Action.Handler; -import com.vaadin.event.ShortcutAction; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; /** * Target table layout. - * - * - * */ @SpringComponent @ViewScope public class TargetTableLayout extends AbstractTableLayout { private static final long serialVersionUID = 2248703121998709112L; - /** - * action for the shortcut key ctrl + 'A'. - */ - private static final ShortcutAction ACTION_CTRL_A = new ShortcutAction("Select All", ShortcutAction.KeyCode.A, - new int[] { ShortcutAction.ModifierKey.CTRL }); @Autowired private transient EventBus.SessionEventBus eventBus; @@ -56,45 +45,14 @@ public class TargetTableLayout extends AbstractTableLayout { */ @PostConstruct void init() { + super.init(targetTableHeader, targetTable, targetDetails); } - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.server.ui.common.table.AbstractTableLayout# - * isShortCutKeysRequired() - */ @Override - protected boolean isShortCutKeysRequired() { - return true; - } + protected void publishEvent() { - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.server.ui.common.table.AbstractTableLayout# - * getShortCutKeysHandler() - */ - @Override - protected Handler getShortCutKeysHandler() { - return new Handler() { - - private static final long serialVersionUID = 1L; - - @Override - public void handleAction(final Action action, final Object sender, final Object target) { - if (ACTION_CTRL_A.equals(action)) { - targetTable.selectAll(); - eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.SELLECT_ALL)); - } - } - - @Override - public Action[] getActions(final Object target, final Object sender) { - return new Action[] { ACTION_CTRL_A }; - } - }; + eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.SELECT_ALL)); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/ShortCutModifierUtils.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/ShortCutModifierUtils.java new file mode 100644 index 000000000..b844caafd --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/ShortCutModifierUtils.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2015 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.ui.utils; + +import com.vaadin.event.ShortcutAction; +import com.vaadin.server.Page; +import com.vaadin.server.WebBrowser; + +/** + * On different systems there are different modifier for short cuts. This + * utility class handles the cross-platform functionality. + */ +public final class ShortCutModifierUtils { + + private ShortCutModifierUtils() { + + } + + /** + * Returns the ctrl or meta modifier depending on the platform. + * + * @return on mac return + * {@link com.vaadin.event.ShortcutAction.ModifierKey#META} other + * platform return + * {@link com.vaadin.event.ShortcutAction.ModifierKey#CTRL} + */ + public static int getCtrlOrMetaModifier() { + final WebBrowser webBrowser = Page.getCurrent().getWebBrowser(); + if (webBrowser.isMacOSX()) { + return ShortcutAction.ModifierKey.META; + } + + return ShortcutAction.ModifierKey.CTRL; + } +} diff --git a/hawkbit-ui/src/main/resources/messages_de.properties b/hawkbit-ui/src/main/resources/messages_de.properties index 1c437071a..4134a7466 100644 --- a/hawkbit-ui/src/main/resources/messages_de.properties +++ b/hawkbit-ui/src/main/resources/messages_de.properties @@ -299,10 +299,6 @@ message.tag.use.bulk.upload = {0} cannot be deleted .It is in use in targets bul message.bulk.upload.tag.assignment.failed = Tag {0} assignment failed as tag no longer exists message.bulk.upload.tag.assignments.failed= Few tag assignments failed as tags no longer exists -# action info -action.target.table.selectall = Select all (Ctrl+A) -action.target.table.clear = Clear selections - #reused messages soft.module.jvm =Runtime soft.module.application =Application