/*
*
*/
package ext.egantt.model.drawing.granularity;
import com.egantt.model.drawing.DrawingGranularity;
import com.egantt.model.drawing.DrawingTransform;
import com.egantt.model.drawing.granularity.iterator.ArrayIterator;
import ext.egantt.model.drawing.granularity.iterator.CalendarIterator;
import java.util.*;
public class BasicCalendarGranularity
implements DrawingGranularity
{
public BasicCalendarGranularity(int step, Object granularities[])
{
this(step, true, granularities);
}
protected BasicCalendarGranularity(int step, boolean round, Object granularities[])
{
this.granularities = granularities;
this.round = round;
this.step = step;
}
public long width(Object granularity, DrawingTransform transform, long width)
{
long start = ((Long)transform.inverseTransform(0L, width)).longValue();
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(start));
cal.add(((Integer)granularity).intValue(), step);
return (long)transform.transform(new Long(cal.getTime().getTime()), width);
}
public Iterator keys()
{
return new ArrayIterator(granularities, 1);
}
public Iterator values(Object granularity, DrawingTransform transform, long width)
{
return new CalendarIterator(transform, ((Integer)granularity).intValue(), step, width, round);
}
protected final Object granularities[];
protected final boolean round;
protected final int step;
}