package biz.ganttproject.core.calendar; import java.util.Date; import java.util.List; import biz.ganttproject.core.time.TimeDuration; import biz.ganttproject.core.time.TimeUnit; public interface GPCalendarCalc extends GPCalendar { public static enum MoveDirection { FORWARD, BACKWARD } List<GPCalendarActivity> getActivities(Date startDate, Date endDate); List<GPCalendarActivity> getActivities(Date startDate, TimeUnit timeUnit, long l); /** * @return true when weekends are only shown and taken into account for the * task scheduling. */ public boolean getOnlyShowWeekends(); /** * @param onlyShowWeekends * must be set to true if weekends are only shown and not taken into * account for the task scheduling */ public void setOnlyShowWeekends(boolean onlyShowWeekends); Date findClosestWorkingTime(Date time); /** * Adds <code>shift</code> period to <code>input</code> date taking into * account this calendar working/non-working time If input date corresponds to * Friday midnight and this calendar if configured to have a weekend on * Saturday and Sunday then adding a shift of "1 day" will result to the * midnight of the next Monday */ Date shiftDate(Date input, TimeDuration shift); Date findClosest(Date time, TimeUnit timeUnit, MoveDirection direction, DayType dayType); Date findClosest(Date time, TimeUnit timeUnit, MoveDirection direction, DayType dayType, Date limit); GPCalendarCalc PLAIN = new AlwaysWorkingTimeCalendarImpl(); String EXTENSION_POINT_ID = "net.sourceforge.ganttproject.calendar"; public GPCalendarCalc copy(); }