package com.redheap.selenium.page;
import com.redheap.selenium.component.AdfComponent;
import com.redheap.selenium.component.AdfRegion;
import com.redheap.selenium.domain.PageMessageWrapper;
import oracle.adf.view.rich.automation.selenium.DialogManager;
import org.apache.commons.lang3.reflect.ConstructorUtils;
import org.openqa.selenium.WebDriverException;
public class PageFragment /*extends BaseObject*/ {
private final AdfRegion region;
public PageFragment(AdfRegion region) {
this.region = region;
// TODO: verify correct fragment is running
}
protected <P extends PageFragment> P navigatedTo(Class<? extends P> cls) {
try {
return ConstructorUtils.invokeConstructor(cls, region);
} catch (Exception e) {
throw new WebDriverException(e.getCause() != null ? e.getCause() : e);
}
}
protected <D extends WindowDialog> D openedDialog(Class<? extends D> cls) {
try {
return ConstructorUtils.invokeConstructor(cls, findRegion().getDriver(),
DialogManager.getInstance().getCurrentDialog());
} catch (Exception e) {
throw new WebDriverException(e.getCause() != null ? e.getCause() : e);
}
}
protected AdfRegion findRegion() {
return region;
}
protected <T extends AdfComponent> T findAdfComponent(String relativeClientId) {
return region.findAdfComponent(relativeClientId);
}
/**
* Convenience method to get all the messages on the page.
* @return A {@link com.redheap.selenium.domain.PageMessageWrapper PageMessageWrapper} object containing
* all messages and some convenicence methods
*/
protected PageMessageWrapper getMessages() {
return findRegion().getAllMessages();
}
}