/******************************************************************************* * Copyright (c) 2014 Red Hat Inc.. * 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 * * Contributors: * Mickael Istria (Red Hat) - initial API and implementation *******************************************************************************/ package org.eclipse.swtbot.generator.framework.rules.simple; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Widget; import org.eclipse.swtbot.generator.framework.GenerationSimpleRule; import org.eclipse.swtbot.generator.framework.WidgetUtils; public class PressShortCutRule extends GenerationSimpleRule { String widgetLocator; Widget widget; private char keyChar; private int modifier; @Override public boolean appliesTo(Event event) { return event.type == SWT.KeyDown && event.stateMask != 0 && !(event.stateMask == SWT.SHIFT && Character.isUpperCase(event.character)); } @Override public void initializeForEvent(Event event) { this.widget = event.widget; this.keyChar = event.character; this.modifier = event.stateMask; this.widgetLocator = WidgetUtils.widgetLocator(this.widget); } @Override public List<String> getActions() { List<String> res = new ArrayList<String>(); StringBuilder line = new StringBuilder(); line.append(this.widgetLocator); line.append(".pressShortcut("); //$NON-NLS-1$ line.append(computeString(this.modifier)); if (this.keyChar != '\0') { line.append(", "); //$NON-NLS-1$ line.append('\''); line.append(this.keyChar); line.append('\''); } line.append(")"); //$NON-NLS-1$ res.add(line.toString()); return res; } private static String computeString(int modifier) { if (modifier == 0) { return "SWT.NONE"; //$NON-NLS-1$ } StringBuilder res = new StringBuilder(); if ((modifier & SWT.CTRL) != 0) { res.append("SWT.CTRL"); //$NON-NLS-1$ } if ((modifier & SWT.ALT) != 0) { if (res.length() > 0) { res.append(" | "); //$NON-NLS-1$ } res.append("SWT.ALT"); //$NON-NLS-1$ } if ((modifier & SWT.SHIFT) != 0) { if (res.length() > 0) { res.append(" | "); //$NON-NLS-1$ } res.append("SWT.SHIFT"); //$NON-NLS-1$ } return res.toString(); } @Override public List<String> getImports() { // TODO Auto-generated method stub return null; } @Override public Widget getWidget() { return this.widget; } }