using System;
using DelftTools.Utils;
namespace DelftTools.Controls.Swf.Charting
{
///
/// Basically (partial) example code for extending TimeNavigatableLabelFormatProvider.
///
public class QuarterNavigatableLabelFormatProvider : TimeNavigatableLabelFormatProvider
{
public override string GetLabel(DateTime labelValue, TimeSpan duration)
{
return GetQuarterStringForDateTime(labelValue); //always show just quarters, independent of duration
}
public override string GetRangeLabel(DateTime min, DateTime max)
{
if (min.Year == max.Year && GetQuarterNumber(min) == GetQuarterNumber(max))
{
return GetQuarterStringForDateTime(min);
}
return GetQuarterStringForDateTime(min) + " till " + GetQuarterStringForDateTime(max);
}
public override string GetUnits(TimeSpan duration)
{
return "qtr yyyy";
}
private static int GetQuarterNumber(DateTime min)
{
return ((min.Month - 1)/3)+1;
}
private static string GetQuarterStringForDateTime(DateTime labelValue)
{
switch (GetQuarterNumber(labelValue)) //localization is your own responsibility here
{
case 1:
return "1st Qtr " + labelValue.Year;
case 2:
return "2nd Qtr " + labelValue.Year;
case 3:
return "3rd Qtr " + labelValue.Year;
case 4:
return "4th Qtr " + labelValue.Year;
default:
return "";
}
}
}
}