View Javadoc

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  import org.junit.Assert;
12  import org.sirius.client.win32.Win32Client;
13  import org.sirius.client.win32.classes.Aliases;
14  import org.sirius.client.win32.classes.MainWindow;
15  import org.sirius.client.win32.classes.controls.Button;
16  import org.sirius.client.win32.classes.controls.Edit;
17  import org.sirius.client.win32.types.Win32Locator;
18  
19  /**
20   * <p>
21   * This annotation is used to assign global name to some specific control.
22   * The global name will be accessible at any place of code.
23   * </p>
24   * <p>
25   * <b>Initialization example:</b>
26   * <pre>
27   *     public class Test1LevelWindow extends MainWindow {
28   *     
29   *         <b>&#64;Alias(name="Sample Text")</b>
30   *         &#64;Locator(winClass="Edit",caption="Sample text",index=0)
31   *         public Edit edtText;
32   *         
33   *         <b>&#64;Alias(name="Sample Button")</b>
34   *         &#64;Locator(winClass="Button",caption="Test Button",index=2)
35   *         public Button btnTestButton;
36   *         
37   *         public Test1LevelWindow(Win32Client client) {
38   *             super(client, new Win32Locator("Test",0));
39   *         }
40   *     }
41   * </pre>
42   * After that the annotated controls are accessed from {@link Aliases} object
43   * by given alias name.
44   * </p>
45   * <p>
46   * <b>Usage example:</b>
47   * <pre>
48   * Win32Client client = new Win32Client();
49   * Test1LevelWindow win = new Test1LevelWindow(client);
50   * <b>((Edit)Aliases.get("Sample Text"))</b>.setText("Hello");
51   * </pre>
52   * </p>
53   * <p>
54   * <b>NOTE:</b> global aliases storage is initialized together with locators initialization. 
55   * So, it's recommended using aliases together with {@link Locator} annotations.
56   * Also, the external storage requires unique names for the aliases. Otherwise they will be overwritten.
57   * </p>
58   * @see {@link Aliases}
59   * @see {@link Locator}
60   * @author Myk Kolisnyk
61   */
62  @Target(ElementType.FIELD)
63  @Retention(value = RetentionPolicy.RUNTIME)
64  public @interface Alias {
65      /**
66       * The actual text which should be treated as global name.
67       */
68      String name();
69  }