package com.autonomy.abc.selenium.find.results;
import com.autonomy.abc.selenium.indexes.Index;
import com.hp.autonomy.frontend.selenium.util.AppElement;
import com.hp.autonomy.frontend.selenium.util.AppPage;
import com.hp.autonomy.frontend.selenium.util.Waits;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class DocumentViewer extends AppElement implements AppPage {
private static final int DOCUMENT_LOAD_TIMEOUT = 30;
protected DocumentViewer(final WebDriver driver, final WebElement element){
super(element,driver);
}
private WebElement closeButton() {
return findElement(By.id("cboxClose"));
}
public void close() {
closeButton().click();
Waits.loadOrFadeWait();
}
public WebElement frame() {
waitForDocumentLoad();
return findElement(By.tagName("iframe"));
}
private String getField(final String name) {
try {
return findElement(By.xpath(".//th[contains(text(), '" + name + "')]/../td")).getText();
} catch (final NoSuchElementException ignored) {
return null;
}
}
public Index getIndex() {
return new Index(getField("Index"));
}
public String getIndexName() {
return findElement(By.className("preview-mode-document-database")).getText();
}
public String getReference() {
return findElement(By.className("preview-mode-document-url")).getText();
}
@Override
public void waitForLoad() {
Waits.loadOrFadeWait();
}
private void waitForDocumentLoad() {
new WebDriverWait(getDriver(), DOCUMENT_LOAD_TIMEOUT).until(ExpectedConditions.invisibilityOfElementLocated(By.className("view-server-loading-indicator")));
}
public boolean previewPresent(){
return findElement(By.id("colorbox")).isDisplayed();
}
}