[
https://issues.jboss.org/browse/ARQGRA-199?page=com.atlassian.jira.plugin...
]
Lukáš Fryč edited comment on ARQGRA-199 at 11/5/12 9:08 AM:
------------------------------------------------------------
{code:java}
public class Page {
// use ClassImposterizer.imposterise(MethodInterceptor);
@FindBy(...)
MyTabPanel tabPanel;
// user API
class MyTabPanel extends ContainerWrapperFor2<WebElement,
TabPanel<Calendar>> {
@Dynamic // Tabs extends ContainerForAny
Tabs tabs;
public ContainerFor2<WebElement, TabPanel<Calendar>> tabs() {
return tabs;
}
}
@FindBy("")
class Tabs extends ContainerForAny {
WebElement getNth(WebElement root, int n);
}
class ContainerWrapperFor15<T1, T2, T3, ...> extends
ContainerWrapperFor14<T1, T2, T3, ..., T15> {
}
class ContainerForAny<...> extends ContainerWrapperFor12<...> {
...
}
ContainerFor2<WebElement, TabPanel<Calendar>> tabs = tabPanel.tabs();
WebElement element = tabPanel.tabs().get(1);
WebElement element = tabPanel.tabs().first();
TabPanel<Calendar> innerTabPanel = tabPanel.tabs().second();
UserDetails details = tabPanel.tabs().get(UserDetails.class);
accordion.items().second();
// proxy of ContainerFor2 interface will be passed to TabPanelImpl
// and returned by TabPanel#tabs()
interface ContainerFor15<T1, T2> {
(X) X get(int i);
// returns first occurence of given type of container
X get(Class<X> class);
// proxy delegates to this.get(1)
@Order(1)
T1 first();
T1 get1();
// proxy delegates to this.get(2)
@Order(2)
T2 second();
...
@Order
T12 get12();
}
}
{code}
was (Author: lfryc):
{code:java}
public class Page {
// use ClassImposterizer.imposterise(MethodInterceptor);
@FindBy(...)
MyTabPanel tabPanel;
// user API
class MyTabPanel extends ContainerWrapperFor15<WebElement,
TabPanel<Calendar>> {
@Dynamic
ContainerForAny container;
public ContainerFor15<WebElement, TabPanel<Calendar>> tabs() {
return container;
}
}
class TabPanel extends TabPanel15 {
}
class ContainerWrapperFor15<T1, T2, T3, ...> extends
ContainerWrapperFor14<T1, T2, T3, ..., T15> {
}
class ContainerForAny<...> extends ContainerWrapperFor12<...> {
...
}
ContainerFor2<WebElement, TabPanel<Calendar>> tabs = tabPanel.tabs();
WebElement element = tabPanel.tabs().get(1);
WebElement element = tabPanel.tabs().first();
TabPanel<Calendar> innerTabPanel = tabPanel.tabs().second();
UserDetails details = tabPanel.tabs().get(UserDetails.class);
accordion.items().second();
// proxy of ContainerFor2 interface will be passed to TabPanelImpl
// and returned by TabPanel#tabs()
interface ContainerFor12<T1, T2> {
(X) X get(int i);
// returns first occurence of given type of container
X get(Class<X> class);
// proxy delegates to this.get(1)
@Order(1)
T1 first();
T1 get1();
// proxy delegates to this.get(2)
@Order(2)
T2 second();
...
@Order
T12 get12();
}
}
{code}
Provide a way to create Page Fragments dynamically
--------------------------------------------------
Key: ARQGRA-199
URL:
https://issues.jboss.org/browse/ARQGRA-199
Project: Arquillian Graphene
Issue Type: Enhancement
Components: api, unit-test
Affects Versions: 2.0.0.Alpha2
Reporter: Juraj Húska
Assignee: Juraj Húska
Fix For: 2.0.0.Alpha3
The only way now to declare and initialize Page Fragment is to annotate the
implementation class of that Page Fragment by {{@FindBy}} (or use static factory method).
It will nice and vital addition to have way how to declare and create Page Fragments
dynamically.
It will be for example useful in the use case described in the
[
comment|https://issues.jboss.org/browse/ARQGRA-199?focusedCommentId=12731...]
below.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira