1 /** 2 * 3 */ 4 package org.sirius.client.win32.annotations; 5 6 import java.lang.annotation.ElementType; 7 import java.lang.annotation.Retention; 8 import java.lang.annotation.RetentionPolicy; 9 import java.lang.annotation.Target; 10 11 /** 12 * <p> 13 * The annotation is designed to assign window locators to the fields. 14 * When the containing class is initialized these fields are initialized automatically 15 * with the locator specified by the annotation. 16 * </p> 17 * <p> 18 * <b>Example:</b> 19 * <pre> 20 * public class Test1LevelWindow extends MainWindow { 21 * 22 * @Locator(winClass="Edit",caption="Sample text",index=0) 23 * public Edit edtText; 24 * 25 * @Locator(winClass="Button",caption="Test Button",index=2) 26 * public Button btnTestButton; 27 * 28 * public Test1LevelWindow(Win32Client client) { 29 * super(client, new Win32Locator("Test",0)); 30 * } 31 * } 32 * </pre> 33 * After that we may initialize just main window object like: 34 * <pre> 35 * Win32Client client = new Win32Client(); 36 * Test1LevelWindow win = new Test1LevelWindow(client); 37 * </pre> 38 * and then the <b>edtText</b> and <b>btnTestButton</b> fields will be initialized. 39 * </p> 40 * <p> 41 * <b>NOTE:</b> the initialization is limited to object instances creation and locator value assignments. 42 * So, these objects wouldn't contain any HWND information. It's done this way because actual window objects 43 * may be unavailable at the time of the initialization. So, these elements would be filled with actual HWNDs 44 * as soon as we start using them first. 45 * </p> 46 * @author Myk Kolisnyk 47 */ 48 @Target(ElementType.FIELD) 49 @Retention(value = RetentionPolicy.RUNTIME) 50 public @interface Locator { 51 String winClass() default "(.*)"; 52 String caption() default "(.*)"; 53 int index() default 0; 54 }