/** * */ package org.xmind.ui.datepicker; import static java.util.Calendar.DATE; import static java.util.Calendar.MONTH; import java.util.Calendar; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Rectangle; class LastMonthAnimation extends CalendarAnimation { private int newRows; public LastMonthAnimation(IAnimationAdvisor advisor) { super(advisor); } @Override protected void oldDayInNewMonth(DayFigure dayFigure, Calendar date, int month, int index) { newDays.add(dayFigure); } @Override protected void createNewDays() { newRows = 0; Calendar date = ((DayFigure) advisor.getPanel().getChildren() .get(0)).getDate(); boolean head = false; while (!head) { 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, 0); if (date.get(MONTH) == advisor.getNewMonth()) newDays.add(0, dayFigure); if (date.get(DATE) == 1) { head = true; } } newRows++; } } @Override protected Rectangle createOldInitConstraint() { int oldRows = 6; Rectangle constraint = new Rectangle(); constraint.width = oldSize.width; constraint.height = oldSize.height * (oldRows + newRows) / oldRows; constraint.y = oldSize.height - constraint.height; return constraint; } @Override protected Rectangle createOldFinalConstraint() { return new Rectangle(0, 0, 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( oldPanel.getChildren().size() - 1)); } } @Override protected void updateJobs() { advisor.addMonthsToRoll(1); } }