/*******************************************************************************
* Copyright (c) 2006 The Pampered Chef and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* The Pampered Chef - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.compositetable.day;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.eclipse.nebula.widgets.compositetable.day.CalendarableModel_TimedFindMethodsTest.Event;
import org.eclipse.nebula.widgets.compositetable.timeeditor.CalendarableItem;
import org.eclipse.nebula.widgets.compositetable.timeeditor.EventContentProvider;
import org.eclipse.nebula.widgets.compositetable.timeeditor.EventCountProvider;
/**
* Fixture for testing CalendarableModel
*/
public class CMTimedEventFixture {
private CalendarableModel_TimedFindMethodsTest.Event[][] data;
/**
* Hard-code a start date that's easy to do arithmetic with
*/
public final Date startDate;
public CMTimedEventFixture(Event[][] data) {
this.data = data;
GregorianCalendar gc = new GregorianCalendar();
gc.set(Calendar.MONTH, 1);
gc.set(Calendar.YEAR, 2006);
gc.set(Calendar.DATE, 1);
startDate = gc.getTime();
}
private int getOffset(Date day) {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(day);
return gc.get(Calendar.DATE) - 1;
}
/**
*/
private class ECTP extends EventCountProvider {
public int getNumberOfEventsInDay(Date day) {
return data[getOffset(day)].length;
}
}
/**
*/
private class ECNP extends EventContentProvider {
public void refresh(Date day, CalendarableItem[] controls) {
if (controls.length != data[getOffset(day)].length) {
throw new RuntimeException("Number of elements to fill != amount of data we've got");
}
int dateOffset = getOffset(day);
for (int i = 0; i < controls.length; i++) {
controls[i].setText(data[dateOffset][i].text);
controls[i].setAllDayEvent(data[dateOffset][i].allDay);
controls[i].setStartTime(data[dateOffset][i].startTime);
controls[i].setEndTime(data[dateOffset][i].endTime);
}
}
}
/**
*/
public ECTP eventCountProvider = new ECTP();
/**
*/
public ECNP eventContentProvider = new ECNP();
/**
*/
public int getNumberOfDays() {
return data.length;
}
}