1 package com.atlassian.pageobjects.components.aui;
2
3 import com.atlassian.pageobjects.PageBinder;
4 import com.atlassian.pageobjects.binder.Init;
5 import com.atlassian.pageobjects.components.ActivatedComponent;
6 import com.atlassian.pageobjects.elements.PageElement;
7 import com.atlassian.pageobjects.elements.PageElementFinder;
8 import com.atlassian.pageobjects.elements.query.Poller;
9 import org.openqa.selenium.By;
10
11 import javax.inject.Inject;
12 import java.util.ArrayList;
13 import java.util.List;
14
15
16
17
18
19
20 public class AuiDropDownMenu implements ActivatedComponent<AuiDropDownMenu>
21 {
22 @Inject
23 protected PageBinder pageBinder;
24
25 @Inject
26 protected PageElementFinder elementFinder;
27
28 private final By locator;
29 private PageElement rootElement;
30 private PageElement triggerElement;
31 private PageElement viewElement;
32
33 public AuiDropDownMenu(By locator)
34 {
35 this.locator = locator;
36 }
37
38 @Init
39 public void initialize()
40 {
41 rootElement = elementFinder.find(locator);
42 triggerElement = rootElement.find(By.className("aui-dd-trigger"));
43 viewElement = rootElement.find(By.className("aui-dropdown"));
44 }
45
46 public PageElement getTrigger()
47 {
48 return triggerElement;
49 }
50
51 public PageElement getView()
52 {
53 return viewElement;
54 }
55
56 public AuiDropDownMenu open()
57 {
58 if(!isOpen())
59 {
60 triggerElement.click();
61 Poller.waitUntilTrue(viewElement.timed().isVisible());
62 }
63 return this;
64 }
65
66 public AuiDropDownMenu close()
67 {
68 if(isOpen())
69 {
70 triggerElement.click();
71 Poller.waitUntilTrue(viewElement.timed().isVisible());
72 }
73 return this;
74 }
75
76 public boolean isOpen()
77 {
78 return viewElement.isVisible();
79 }
80
81 public List<String> getItems()
82 {
83 List<String> items = new ArrayList<String>();
84 for(PageElement e: viewElement.findAll(By.tagName("li")))
85 {
86 items.add(e.getText());
87 }
88
89 return items;
90 }
91 }