diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableLayout.java index 2672c4546..421fbc89c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableLayout.java @@ -42,9 +42,4 @@ public class SoftwareModuleTableLayout extends AbstractTableLayout { super.init(smTableHeader, smTable, softwareModuleDetails); } - @Override - protected void publishEvent() { - // nothing to publish - } - } 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 98874626d..905c5917c 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,11 +9,12 @@ package org.eclipse.hawkbit.ui.common.table; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractTableDetailsLayout; -import org.springframework.beans.factory.annotation.Autowired; import com.vaadin.event.Action; import com.vaadin.event.Action.Handler; import com.vaadin.event.ShortcutAction; +import com.vaadin.server.Page; +import com.vaadin.server.WebBrowser; import com.vaadin.ui.Alignment; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; @@ -24,22 +25,16 @@ import com.vaadin.ui.themes.ValoTheme; */ 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 }); + 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; @@ -63,24 +58,24 @@ 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); } /** @@ -99,29 +94,51 @@ public abstract class AbstractTableLayout extends VerticalLayout { * Default is null. */ 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)) { - table.selectAll(); - publishEvent(); - } - } - - @Override - public Action[] getActions(final Object target, final Object sender) { - return new Action[] { ACTION_CTRL_A }; - } - }; + return new TableShortCutHandler(); } - protected abstract void publishEvent(); + 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[] { ShortcutAction.ModifierKey.CTRL }); + + private final ShortcutAction selectAllMacAction = new ShortcutAction(SELECT_ALL_TEXT, ShortcutAction.KeyCode.A, + new int[] { ShortcutAction.ModifierKey.META }); + + private static final long serialVersionUID = 1L; + + @Override + public void handleAction(final Action action, final Object sender, final Object target) { + if (!isSelecAllAction(action)) { + return; + } + table.selectAll(); + publishEvent(); + } + + private boolean isSelecAllAction(final Action action) { + return selectAllAction.equals(action) || selectAllMacAction.equals(action); + } + + @Override + public Action[] getActions(final Object target, final Object sender) { + + final WebBrowser webBrowser = Page.getCurrent().getWebBrowser(); + if (webBrowser.isMacOSX()) { + return new Action[] { selectAllMacAction }; + } + + return new Action[] { selectAllAction }; + } + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java index 66c8aff0e..e15189f6a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java @@ -46,9 +46,4 @@ public class DistributionSetTableLayout extends AbstractTableLayout { super.init(dsTableHeader, dsTable, distributionDetails); } - @Override - protected void publishEvent() { - // nothing to publish - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableLayout.java index e0d4b8ac6..9d298207a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableLayout.java @@ -41,10 +41,4 @@ public class SwModuleTableLayout extends AbstractTableLayout { void init() { super.init(swModuleTableHeader, swModuleTable, swModuleDetails); } - - @Override - protected void publishEvent() { - // nothing to publish - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java index fefbca972..0d9a782a1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java @@ -42,9 +42,4 @@ public class DistributionTableLayout extends AbstractTableLayout { super.init(dsTableHeader, dsTable, distributionDetails); } - @Override - protected void publishEvent() { - // nothing to publish - } - }