| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| SWTBotWidget |
|
| 0.0;0 |
| 1 | /******************************************************************************* | |
| 2 | * Copyright (c) 2008 Ketan Padegaonkar and others. | |
| 3 | * All rights reserved. This program and the accompanying materials | |
| 4 | * are made available under the terms of the Eclipse Public License v1.0 | |
| 5 | * which accompanies this distribution, and is available at | |
| 6 | * http://www.eclipse.org/legal/epl-v10.html | |
| 7 | * | |
| 8 | * Contributors: | |
| 9 | * Ketan Padegaonkar - initial API and implementation | |
| 10 | *******************************************************************************/ | |
| 11 | package org.eclipse.swtbot.swt.finder; | |
| 12 | ||
| 13 | import static java.lang.annotation.ElementType.TYPE; | |
| 14 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.ID_KEY_VALUE; | |
| 15 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.ID_VALUE; | |
| 16 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.IN_GROUP; | |
| 17 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.LABEL; | |
| 18 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.MNEMONIC; | |
| 19 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.NONE; | |
| 20 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.TEXT; | |
| 21 | import static org.eclipse.swtbot.swt.finder.ReferenceBy.TOOLTIP; | |
| 22 | ||
| 23 | import java.lang.annotation.Retention; | |
| 24 | import java.lang.annotation.RetentionPolicy; | |
| 25 | import java.lang.annotation.Target; | |
| 26 | ||
| 27 | import org.eclipse.swt.SWT; | |
| 28 | import org.eclipse.swt.widgets.Widget; | |
| 29 | ||
| 30 | /** | |
| 31 | * Marks a SWTBot widget so tools recognise them. This anotation is primarily used to describe the convinience API that | |
| 32 | * should be generated for a class annotated with the specified widget. | |
| 33 | * <p> | |
| 34 | * Usage: | |
| 35 | * | |
| 36 | * <pre> | |
| 37 | * @SWTBotWidget(clasz = Button.class, style = @Style(name = "SWT.PUSH", value = SWT.PUSH), preferredName = "button", referenceBy = { ReferenceBy.LABEL, ReferenceBy.MNEMONIC, ReferenceBy.TOOLTIP }) | |
| 38 | * public class SWTBotButton ...{ | |
| 39 | * // the implement | |
| 40 | * } | |
| 41 | * </pre> | |
| 42 | * | |
| 43 | * The above represents: | |
| 44 | * <ul> | |
| 45 | * <li>widget of type 'Button.class'</li> | |
| 46 | * <li>with style bits 'SWT.PUSH'</li> | |
| 47 | * <li>the preferred name for the generated API would be 'button'</li> | |
| 48 | * <li>the widget can be referenced by: <strong>a combination</strong> of LABEL, MNEMONIC, TOOLTIP, in addition to the | |
| 49 | * defaults described in {@link #defaultReferenceBy()}</li> | |
| 50 | * </ul> | |
| 51 | * This annotation will generate the following convinience API to find buttons: | |
| 52 | * <ul> | |
| 53 | * <li>public SWTBotButton buttonWithLabel(String label)</li> | |
| 54 | * <li>public SWTBotButton buttonWithLabel(String label, int index)</li> | |
| 55 | * <li>public SWTBotButton button(String mnemonicText)</li> | |
| 56 | * <li>public SWTBotButton button(String mnemonicText, int index)</li> | |
| 57 | * <li>public SWTBotButton buttonWithTooltip(String tooltip)</li> | |
| 58 | * <li>public SWTBotButton buttonWithTooltip(String tooltip, int index)</li> | |
| 59 | * <li>public SWTBotButton buttonWithId(String key, String value)</li> | |
| 60 | * <li>public SWTBotButton buttonWithId(String key, String value, int index)</li> | |
| 61 | * <li>public SWTBotButton buttonWithId(String value)</li> | |
| 62 | * <li>public SWTBotButton buttonWithId(String value, int index)</li> | |
| 63 | * <li>public SWTBotButton buttonInGroup(String inGroup)</li> | |
| 64 | * <li>public SWTBotButton buttonInGroup(String inGroup, int index)</li> | |
| 65 | * <li>public SWTBotButton button()</li> | |
| 66 | * <li>public SWTBotButton button(int index)</li> | |
| 67 | * <li>public SWTBotButton buttonWithLabelInGroup(String label, String inGroup)</li> | |
| 68 | * <li>public SWTBotButton buttonWithLabelInGroup(String label, String inGroup, int index)</li> | |
| 69 | * <li>public SWTBotButton buttonInGroup(String mnemonicText, String inGroup)</li> | |
| 70 | * <li>public SWTBotButton buttonInGroup(String mnemonicText, String inGroup, int index)</li> | |
| 71 | * <li>public SWTBotButton buttonWithTooltipInGroup(String tooltip, String inGroup)</li> | |
| 72 | * <li>public SWTBotButton buttonWithTooltipInGroup(String tooltip, String inGroup, int index)</li> | |
| 73 | * </ul> | |
| 74 | * </p> | |
| 75 | * | |
| 76 | * @author Ketan Padegaonkar <KetanPadegaonkar [at] gmail [dot] com> | |
| 77 | * @version $Id$ | |
| 78 | * @since 2.0 | |
| 79 | */ | |
| 80 | @Retention(RetentionPolicy.RUNTIME) | |
| 81 | @Target( { TYPE }) | |
| 82 | public @interface SWTBotWidget { | |
| 83 | /** Widget can be found using the following methods */ | |
| 84 | ReferenceBy[] referenceBy() default { ID_KEY_VALUE, ID_VALUE, IN_GROUP, LABEL, MNEMONIC, NONE, TEXT, TOOLTIP }; | |
| 85 | ||
| 86 | /** Widget is of the specified class */ | |
| 87 | Class<? extends Widget> clasz(); | |
| 88 | ||
| 89 | /** If a the specified widget can have different styles, specify one of the styles in {@link SWT} */ | |
| 90 | Style style() default @Style(); | |
| 91 | ||
| 92 | /** The preferred name for the widget */ | |
| 93 | String preferredName(); | |
| 94 | ||
| 95 | /** Default reference by */ | |
| 96 | ReferenceBy[] defaultReferenceBy() default { ReferenceBy.ID_KEY_VALUE, ReferenceBy.ID_VALUE, ReferenceBy.IN_GROUP, ReferenceBy.NONE }; | |
| 97 | ||
| 98 | Class<?> returnType() default Object.class; | |
| 99 | } |