/******************************************************************************* * Copyright (c) 2012 Google, 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: * Google, Inc. - initial API and implementation *******************************************************************************/ package com.windowtester.ui.internal.corel.model; import java.util.Iterator; import java.util.Stack; import org.eclipse.swt.SWT; import com.windowtester.internal.runtime.util.StringUtils; import com.windowtester.recorder.event.user.SemanticKeyDownEvent; import com.windowtester.recorder.event.user.SemanticTextEntryEvent; public class EnteredKeyLabelProvider { public static String getLabel(SemanticKeyDownEvent keyEvent) { String key = keyEvent.getKey(); if (isTab(key)) return "TAB"; if (isEnter(key)) return "CR"; if (isBackSpace(key)) return "BS"; int keyCode = keyEvent.getKeyCode(); switch(keyCode) { case SWT.ARROW_RIGHT : return "ARROW_RIGHT"; case SWT.ARROW_LEFT : return "ARROW_LEFT"; case SWT.ARROW_UP : return "ARROW_UP"; case SWT.ARROW_DOWN : return "ARROW_DOWN"; default: return "'" + key +"'"; } } private static boolean isEnter(String key) { return key.charAt(0) == StringUtils.NEW_LINE.charAt(0) || key.charAt(0) == '\r'; // $codepro.audit.disable platformSpecificLineSeparator } private static boolean isBackSpace(String key) { return key.charAt(0) == '\b'; } private static boolean isTab(String key) { return key.charAt(0) == '\t'; } public static String getLabel(SemanticTextEntryEvent textEvent) { SemanticKeyDownEvent[] chars = textEvent.getKeys(); Stack keys = new Stack(); StringBuffer sb = new StringBuffer("'"); for (int i = 0; i < chars.length; i++) { String character = chars[i].getKey(); if (isBackSpace(character) && !keys.isEmpty()) { keys.pop(); } else { keys.push(character); } } for (Iterator iterator = keys.iterator(); iterator.hasNext();) { String character = (String) iterator.next(); sb.append(character); } sb.append("'"); return sb.toString(); } }