package de.ppi.samples.fuwesta.selophane.fragment;
import java.util.List;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.support.FindBy;
import org.selophane.elements.base.Fragment;
import org.selophane.elements.base.UniqueElementLocator;
import de.ppi.samples.fuwesta.selophane.widget.PaginatingBarButton;
/**
* Implementation for {@link PaginatingBar}.
*
*/
public class PaginatingBarImpl extends Fragment implements PaginatingBar {
/**
* List of all paginating-buttons.
*/
@FindBy(tagName = "li")
private List<PaginatingBarButton> buttons;
/**
* Initiates an object of type PaginatingBarImpl.
*
* @param elementLocator the locator of the webelement.
*/
public PaginatingBarImpl(final UniqueElementLocator elementLocator) {
super(elementLocator);
}
/**
* {@inheritDoc}
*/
@Override
public PaginatingBarButton getFirst() {
return buttons.get(0);
}
/**
* {@inheritDoc}
*/
@Override
public PaginatingBarButton getLast() {
return buttons.get(buttons.size() - 1);
}
/**
* {@inheritDoc}
*/
@Override
public PaginatingBarButton getNext() {
return buttons.get(buttons.size() - 2);
}
/**
* {@inheritDoc}
*/
@Override
public PaginatingBarButton getPrevious() {
return buttons.get(1);
}
/**
* {@inheritDoc}
*/
@Override
public int getNrOfButtons() {
return buttons.size();
}
/**
* {@inheritDoc}
*/
@Override
public PaginatingBarButton getButton(String text) {
for (PaginatingBarButton webElement : buttons) {
if (text.equals(webElement.getText())) {
return webElement;
}
}
throw new NoSuchElementException("No button with text " + text
+ " can be found.");
}
/**
* {@inheritDoc}
*/
@Override
public List<PaginatingBarButton> getAllButtons() {
return buttons;
}
}