blob: 1e50d705d689cb34535b10e38187102114a7eb2a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Original authors and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.extension.glazedlists.test.integration;
import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Widget;
public class SWTUtils {
public static final int NO_CLICK = 0;
public static final int LEFT_MOUSE_BUTTON = 1;
public static final int RIGHT_MOUSE_BUTTON = 3;
public static final int ONE_CLICK = 1;
public static void leftClickOnCombo(int x, int y, int stateMask, Control control) {
Event leftClickEvent = getLeftClickEvent(x, y, stateMask, control);
control.notifyListeners(SWT.MouseDown, leftClickEvent);
control.notifyListeners(SWT.MouseUp, leftClickEvent);
}
public static void selectInCombo(int x, int y, int stateMask, Control control) {
Event leftClickEvent = getLeftClickEvent(x, y, stateMask, control);
control.notifyListeners(SWT.Selection, leftClickEvent);
}
public static void leftClick(int x, int y, int stateMask, Widget nattable) {
Event leftClickEvent = getLeftClickEvent(x, y, stateMask, nattable);
nattable.notifyListeners(SWT.MouseDown, leftClickEvent);
nattable.notifyListeners(SWT.MouseUp, leftClickEvent);
}
public static Event getLeftClickEvent(int x, int y, int stateMask, Widget nattable) {
Event event = new Event();
event.time = (int) System.currentTimeMillis();
event.widget = nattable;
event.display = nattable.getDisplay();
IConfigRegistry configRegistry = (nattable instanceof NatTable)
? ((NatTable) nattable).getConfigRegistry()
: null;
event.x = GUIHelper.convertHorizontalPixelToDpi(x, configRegistry);
event.y = GUIHelper.convertVerticalPixelToDpi(y, configRegistry);
event.button = LEFT_MOUSE_BUTTON;
event.stateMask = stateMask;
event.count = ONE_CLICK;
return event;
}
public static void pressCharKey(char c, Widget natTable) {
natTable.notifyListeners(SWT.KeyDown, keyEventWithChar(c));
}
public static void pressKey(int keyCode, Widget natTable) {
natTable.notifyListeners(SWT.KeyDown, keyEvent(keyCode));
}
public static void pressKey(int keyCode, int stateMask, Widget natTable) {
natTable.notifyListeners(SWT.KeyDown, keyEventWithModifier(keyCode, stateMask));
}
public static void pressKeyOnControl(int keyCode, Control control) {
control.notifyListeners(SWT.KeyDown, keyEvent(keyCode));
}
public static void pressKeyOnControl(int keyCode, int stateMask, Control control) {
control.notifyListeners(SWT.KeyDown, keyEventWithModifier(keyCode, stateMask));
}
public static Event keyEvent(int keyCode) {
return keyEventWithModifier(keyCode, SWT.NONE);
}
public static Event keyEventWithModifier(int keyCode, int stateMask) {
Event event = new Event();
event.type = SWT.KeyDown;
event.keyCode = keyCode;
event.stateMask = stateMask;
return event;
}
public static Event keyEventWithChar(char c) {
Event event = new Event();
event.type = SWT.KeyDown;
event.character = c;
event.stateMask = SWT.NONE;
return event;
}
/**
* Some of the tests do not run on Unix, due to issues with Xvfb. This check
* helps skipping those tests.
*
* @return true if we are running on a Unix system.
*/
public static boolean isRunningOnUnix() {
return System.getProperty("os.name").equals("Linux");
}
}