/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.selenium.pageobjects.concrete;
import org.eclipse.skalli.selenium.pageobjects.SearchAndNavigationbarPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
/**
* This page object contains the {@link org.openqa.selenium.WebElement}s for the add project to JIRA page
*
* The add project to JIRA page is a page with search field, navigation bar and the
* add project to JIRA page specific elements (open JIRA dialog on JIRA server link,
* JIRA project key, checkboxes like use to track bugs and use as a scrum backlog
* and buttons like save and cancel)
*/
public class AddProjectToJiraPage extends SearchAndNavigationbarPage {
private static final String ADD_PROJECT_TO_JIRA_CAPTION = "Add Project to JIRA";
@FindBy(how = How.XPATH, using = "//div[@class=\'projectarearight\']/h3")
private WebElement caption;
@FindBy(how = How.PARTIAL_LINK_TEXT, using = "Follow this link to open a JIRA dialog on JIRA server")
private WebElement jiraDialogOnJiraServerLink;
@FindBy(how = How.ID, using = "jiraprojectkey")
private WebElement jiraProjectKeyField;
@FindBy(how = How.XPATH, using = "//form[@id='jiraform']/table/tbody/tr[2]/td[2]/input[1]")
private WebElement projectUsedToTrackBugsCheckBox;
@FindBy(how = How.XPATH, using = "//form[@id='jiraform']/table/tbody/tr[2]/td[2]/input[3]")
private WebElement projectUsedAsAScrumBacklogCheckBox;
@FindBy(how = How.XPATH, using = "//input[@class=\'searchsubmit\'][@value=\'Save\']")
private WebElement saveButton;
@FindBy(how = How.XPATH, using = "//input[@class=\'searchsubmit\'][@value=\'Cancel\']")
private WebElement cancelButton;
public AddProjectToJiraPage(WebDriver driver) {
super(driver);
}
@Override
public boolean isDisplayed() {
return super.isDisplayed() && getCaption().isDisplayed()
&& getCaption().getText().contains(ADD_PROJECT_TO_JIRA_CAPTION)
&& getJiraDialogOnJiraServerLink().isDisplayed() && getJiraProjectKeyField().isDisplayed()
&& getProjectUsedToTrackBugsCheckBox().isDisplayed()
&& getProjectUsedAsAScrumBacklogCheckBox().isDisplayed()
&& getSaveButton().isDisplayed() && getCancelButton().isDisplayed();
}
public void clickJiraDialogOnJiraServerLink() {
getJiraDialogOnJiraServerLink().click();
}
public void sendKeysToJiraProjectKeyField(String text) {
getJiraProjectKeyField().sendKeys(text);
}
public void checkProjectUsedToTrackBugsCheckBox(boolean checked) {
if (checked && !getProjectUsedToTrackBugsCheckBox().isSelected()) {
getProjectUsedToTrackBugsCheckBox().click();
}
if (!checked && getProjectUsedToTrackBugsCheckBox().isSelected()) {
getProjectUsedToTrackBugsCheckBox().click();
}
}
public void checkProjectUsedAsAScrumBacklogCheckBox(boolean checked) {
if (checked && !getProjectUsedAsAScrumBacklogCheckBox().isSelected()) {
getProjectUsedAsAScrumBacklogCheckBox().click();
}
if (!checked && getProjectUsedAsAScrumBacklogCheckBox().isSelected()) {
getProjectUsedAsAScrumBacklogCheckBox().click();
}
}
public void clickSaveButton() {
getSaveButton().click();
}
public void clickCancelButton() {
getCancelButton().click();
}
protected WebElement getCaption() {
return caption;
}
protected WebElement getJiraDialogOnJiraServerLink() {
return jiraDialogOnJiraServerLink;
}
protected WebElement getJiraProjectKeyField() {
return jiraProjectKeyField;
}
protected WebElement getProjectUsedToTrackBugsCheckBox() {
return projectUsedToTrackBugsCheckBox;
}
protected WebElement getProjectUsedAsAScrumBacklogCheckBox() {
return projectUsedAsAScrumBacklogCheckBox;
}
protected WebElement getSaveButton() {
return saveButton;
}
protected WebElement getCancelButton() {
return cancelButton;
}
}