1 package com.atlassian.pageobjects.elements.test.pageobjects.component;
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.ElementBy;
8 import com.atlassian.pageobjects.elements.query.Poller;
9 import com.atlassian.pageobjects.elements.test.pageobjects.page.ElementsPage;
10 import com.atlassian.webdriver.AtlassianWebDriver;
11 import org.openqa.selenium.By;
12
13 import javax.inject.Inject;
14
15
16
17
18 public class JQueryMenu implements ActivatedComponent<JQueryMenu>
19 {
20 @Inject
21 protected AtlassianWebDriver driver;
22
23 @Inject
24 protected PageBinder pageBinder;
25
26 @ElementBy(id="elements_link")
27 private PageElement elementsLink;
28
29 @ElementBy(id="menu")
30 private PageElement rootElement;
31
32 private PageElement triggerElement;
33 private PageElement viewElement;
34
35 @Init
36 public void intialize()
37 {
38 triggerElement = rootElement.find(By.tagName("a"));
39 viewElement = rootElement.find(By.tagName("ul"));
40 }
41
42
43 public ElementsPage gotoElementsPage()
44 {
45 elementsLink.click();
46 return pageBinder.bind(ElementsPage.class);
47 }
48
49
50 public PageElement getTrigger()
51 {
52 return triggerElement;
53 }
54
55 public PageElement getView()
56 {
57 return viewElement;
58 }
59
60 public JQueryMenu open()
61 {
62 if(!isOpen())
63 {
64 getTrigger().click();
65 Poller.waitUntilTrue(getView().timed().isVisible());
66 }
67 return this;
68 }
69
70 public JQueryMenu close()
71 {
72 if(isOpen())
73 {
74 getTrigger().click();
75 Poller.waitUntilFalse(getView().timed().isVisible());
76 }
77
78 return this;
79 }
80
81 public boolean isOpen()
82 {
83 return getView().isVisible();
84 }
85 }