package com.algocrafts.calendar;
import com.algocrafts.conditions.IsEquals;
import com.algocrafts.converters.Filter;
import com.algocrafts.converters.FirstItem;
import com.algocrafts.decorators.AbstractPage;
import com.algocrafts.decorators.Element;
import com.algocrafts.locators.ElementLocator;
import com.algocrafts.locators.ElementTryLocator;
import com.algocrafts.locators.ElementsLocator;
import com.algocrafts.locators.Locator;
import static com.algocrafts.conditions.ElementFunction.CLICK_IF_NOT_NULL;
import static com.algocrafts.conditions.PageCondition.CALENDAR_NOT_DISPLAYED;
import static com.algocrafts.converters.GetText.TEXT;
import static com.algocrafts.converters.Ordinal.ORDINAL;
import static com.algocrafts.converters.StringToInt.PARSE_INT;
import static com.algocrafts.converters.ToMonth.TO_MONTH;
import static com.algocrafts.searchmethods.ByClassName.*;
import static com.algocrafts.searchmethods.ById.UI_DATEPICKER_DIV;
import static com.algocrafts.searchmethods.ByTagName.TD;
/**
* This is the reference implementation of the Calendar interface which can be
* operated by a DatePicker.
* The location of the date picker is here,
* http://jqueryui.com/datepicker/
*
* @author Yujun Liang
* @since 0.1
*/
public class JQueryCalendar implements Calendar {
private final AbstractPage page;
private final Locator<AbstractPage, Element> trigger;
/**
* Constructor of the JQueryCalendar, an active page and a search
* criteria of the trigger element.
*
* @param page
* @param trigger
*/
public JQueryCalendar(AbstractPage page, Locator<AbstractPage, Element> trigger) {
this.page = page;
this.trigger = trigger;
}
@Override
public void show() {
trigger.and(CLICK_IF_NOT_NULL).apply(page);
}
@Override
public int currentYear() {
return new ElementLocator<AbstractPage>(UI_DATEPICKER_DIV)
.and(new ElementLocator<>(UI_DATEPICKER_HEADER))
.and(new ElementLocator<>(UI_DATEPICKER_YEAR))
.and(TEXT)
.and(PARSE_INT)
.apply(page);
}
@Override
public int currentMonth() {
return new ElementLocator<AbstractPage>(UI_DATEPICKER_DIV)
.and(new ElementLocator<>(UI_DATEPICKER_MONTH))
.and(TEXT)
.and(TO_MONTH)
.and(ORDINAL)
.apply(page);
}
@Override
public void previousMonth() {
new ElementLocator<AbstractPage>(UI_DATEPICKER_DIV)
.and(new ElementLocator<>(UI_DATEPICKER_PREV))
.and(CLICK_IF_NOT_NULL)
.apply(page);
}
@Override
public void nextMonth() {
new ElementLocator<AbstractPage>(UI_DATEPICKER_DIV)
.and(new ElementLocator<>(UI_DATEPICKER_NEXT))
.and(CLICK_IF_NOT_NULL)
.apply(page);
}
@Override
public void pickDay(int day) {
new ElementLocator<AbstractPage>(UI_DATEPICKER_DIV)
.and(new ElementLocator<>(UI_DATEPICKER_CALENDAR))
.and(new ElementsLocator<>(TD))
.and(new Filter<>(new IsEquals(TEXT, day)))
.and(new FirstItem<>())
.and(CLICK_IF_NOT_NULL)
.apply(page);
new ElementLocator<AbstractPage>(UI_DATEPICKER_DIV)
.and(new ElementTryLocator<>(UI_DATEPICKER_CLOSE))
.and(CLICK_IF_NOT_NULL)
.apply(page);
page.until(CALENDAR_NOT_DISPLAYED);
}
}
Sunday, May 18, 2014
jquery calendar in java 8
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment