Add select all for mac osx

Signed-off-by: SirWayne <dennis.melzer@bosch-si.com>
This commit is contained in:
SirWayne
2016-06-21 09:45:28 +02:00
parent c3d04a530f
commit deb1dde326
5 changed files with 51 additions and 55 deletions

View File

@@ -42,9 +42,4 @@ public class SoftwareModuleTableLayout extends AbstractTableLayout {
super.init(smTableHeader, smTable, softwareModuleDetails);
}
@Override
protected void publishEvent() {
// nothing to publish
}
}

View File

@@ -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 };
}
}
}

View File

@@ -46,9 +46,4 @@ public class DistributionSetTableLayout extends AbstractTableLayout {
super.init(dsTableHeader, dsTable, distributionDetails);
}
@Override
protected void publishEvent() {
// nothing to publish
}
}

View File

@@ -41,10 +41,4 @@ public class SwModuleTableLayout extends AbstractTableLayout {
void init() {
super.init(swModuleTableHeader, swModuleTable, swModuleDetails);
}
@Override
protected void publishEvent() {
// nothing to publish
}
}

View File

@@ -42,9 +42,4 @@ public class DistributionTableLayout extends AbstractTableLayout {
super.init(dsTableHeader, dsTable, distributionDetails);
}
@Override
protected void publishEvent() {
// nothing to publish
}
}