/**
*
*/
package org.xmind.ui.datepicker;
import static java.util.Calendar.DATE;
import static java.util.Calendar.MONTH;
import java.util.Calendar;
import java.util.List;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.geometry.Rectangle;
class NextMonthAnimation extends CalendarAnimation {
private int newRows = 0;
public NextMonthAnimation(IAnimationAdvisor advisor) {
super(advisor);
}
@Override
protected void oldDayInNewMonth(DayFigure dayFigure, Calendar date,
int month, int index) {
newDays.add(dayFigure);
if (date.get(DATE) == 1) {
newRows = index / 7;
}
}
@Override
protected void createNewDays() {
List oldDayFigures = advisor.getPanel().getChildren();
Calendar date = ((DayFigure) oldDayFigures
.get(oldDayFigures.size() - 1)).getDate();
for (int r = 0; r < newRows; r++) {
for (int i = 0; i < 7; i++) {
date = (Calendar) date.clone();
date.add(DATE, 1);
DayFigure dayFigure = new DayFigure();
dayFigure.setDate(date);
advisor.initNewDay(dayFigure);
newPanel.add(dayFigure);
if (date.get(MONTH) == advisor.getNewMonth()) {
newDays.add(dayFigure);
}
}
}
}
@Override
protected Rectangle createOldInitConstraint() {
int oldRows = 6;
Rectangle constraint = new Rectangle();
constraint.width = oldSize.width;
constraint.height = oldSize.height * (oldRows + newRows) / oldRows;
return constraint;
}
@Override
protected Rectangle createOldFinalConstraint() {
return new Rectangle(0, oldSize.height - oldInitConstraint.height,
oldInitConstraint.width, oldInitConstraint.height);
}
@Override
protected void removeOldDays() {
IFigure oldPanel = advisor.getPanel();
while (oldPanel.getChildren().size() > DatePicker.TOTAL_DAYS) {
oldPanel.remove((IFigure) oldPanel.getChildren().get(0));
}
}
@Override
protected void updateJobs() {
advisor.addMonthsToRoll(-1);
}
}