971 lines
37 KiB
C#

#if FRAMEWORK20
using System;
using System.Text;
using System.Data;
using System.Drawing;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Rendering;
namespace DevComponents.Editors.DateTimeAdv
{
public class DayLabel : PopupItem
{
#region Private Variables
private ElementStyle _BackgroundStyle = new ElementStyle();
private Rectangle _ImageRenderBounds = Rectangle.Empty;
#endregion
#region Events
/// <summary>
/// Occurs when label is rendered and it allows you to override default rendering.
/// </summary>
public event DayPaintEventHandler PaintLabel;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the DayLabel class.
/// </summary>
public DayLabel()
{
_BackgroundStyle.StyleChanged += new EventHandler(BackgroundStyleChanged);
MouseUpNotification = true;
}
protected override void Dispose(bool disposing)
{
if (BarUtilities.DisposeItemImages && !this.DesignMode)
{
BarUtilities.DisposeImage(ref _Image);
}
_BackgroundStyle.StyleChanged -= BackgroundStyleChanged;
_BackgroundStyle.Dispose();
base.Dispose(disposing);
}
#endregion
#region Internal Implementation
public override void Paint(ItemPaintArgs p)
{
DayPaintEventArgs e = new DayPaintEventArgs(p, this);
OnPaintLabel(e);
if (e.RenderParts == eDayPaintParts.None) return;
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null)
{
month.OnPaintLabel(this, e);
}
if (e.RenderParts == eDayPaintParts.None) return;
if (this.Enabled && (e.RenderParts & eDayPaintParts.Background) == eDayPaintParts.Background)
PaintBackground(p);
if ((e.RenderParts & eDayPaintParts.Text) == eDayPaintParts.Text)
PaintText(p, null, Color.Empty, _TextAlign);
if ((e.RenderParts & eDayPaintParts.Image) == eDayPaintParts.Image)
PaintImage(p, _Image, _ImageAlign);
}
internal void PaintImage(ItemPaintArgs p, Image image, eLabelPartAlignment imageAlign)
{
if (image == null) return;
Graphics g = p.Graphics;
Rectangle imageRect = GetAlignedRect(this.DisplayRectangle, image.Size, imageAlign);
CompositeImage ci = new CompositeImage(image, false);
ci.DrawImage(g, imageRect);
ci.Dispose();
_ImageRenderBounds = imageRect;
}
private Rectangle GetAlignedRect(Rectangle bounds, Size innerSize, eLabelPartAlignment partAlign)
{
Rectangle innerRect = new Rectangle(bounds.Right - innerSize.Width, bounds.Y, innerSize.Width, innerSize.Height);
if (partAlign == eLabelPartAlignment.BottomCenter)
innerRect.Location = new Point(bounds.X + (bounds.Width - innerSize.Width) / 2, bounds.Bottom - innerSize.Height);
else if (partAlign == eLabelPartAlignment.BottomLeft)
innerRect.Location = new Point(bounds.X, bounds.Bottom - innerSize.Height);
else if (partAlign == eLabelPartAlignment.BottomRight)
innerRect.Location = new Point(bounds.Right - innerSize.Width, bounds.Bottom - innerSize.Height);
else if (partAlign == eLabelPartAlignment.MiddleCenter)
innerRect.Location = new Point(bounds.X + (bounds.Width - innerSize.Width) / 2, bounds.Y + (bounds.Height - innerSize.Height) / 2);
else if (partAlign == eLabelPartAlignment.MiddleLeft)
innerRect.Location = new Point(bounds.X, bounds.Y + (bounds.Height - innerSize.Height) / 2);
else if (partAlign == eLabelPartAlignment.MiddleRight)
innerRect.Location = new Point(bounds.Right - innerSize.Width, bounds.Y + (bounds.Height - innerSize.Height) / 2);
else if (partAlign == eLabelPartAlignment.TopCenter)
innerRect.Location = new Point(bounds.X + (bounds.Width - innerSize.Width) / 2, bounds.Y);
else if (partAlign == eLabelPartAlignment.TopLeft)
innerRect.Location = new Point(bounds.X, bounds.Y);
return innerRect;
}
/// <summary>
/// Raises the PaintLabel event.
/// </summary>
/// <param name="e">Provides event data.</param>
protected virtual void OnPaintLabel(DayPaintEventArgs e)
{
if (PaintLabel != null)
PaintLabel(this, e);
}
internal void PaintBackground(ItemPaintArgs p)
{
Graphics g = p.Graphics;
Rectangle r = this.DisplayRectangle;
Color backColor = Color.Empty, backColor2 = Color.Empty, borderColor = Color.Empty;
if (_BackgroundStyle.Custom && (!this.IsMouseOver && !this.IsMouseDown || !_TrackMouse))
{
_BackgroundStyle.SetColorScheme(p.Colors);
bool disposeStyle = false;
ElementStyle style = ElementStyleDisplay.GetElementStyle(_BackgroundStyle, out disposeStyle);
ElementStyleDisplay.Paint(new ElementStyleDisplayInfo(style, g, r));
if(disposeStyle) style.Dispose();
}
bool customColors = false;
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
MonthCalendarColors colors = null;
if (month != null) colors = month.GetColors();
if (this.IsMouseDown && _TrackMouse)
{
backColor = p.Colors.ItemPressedBackground;
backColor2 = p.Colors.ItemPressedBackground2;
borderColor = p.Colors.ItemPressedBorder;
}
else if (this.IsMouseOver && _TrackMouse)
{
backColor = p.Colors.ItemHotBackground;
backColor2 = p.Colors.ItemHotBackground2;
borderColor = p.Colors.ItemHotBorder;
}
else if (this.IsSelected)
{
backColor = p.Colors.ItemCheckedBackground;
if (colors != null && colors.Selection.IsCustomized)
{
if (!colors.Selection.BackColor.IsEmpty)
{
backColor = colors.Selection.BackColor;
if (!colors.Selection.BackColor2.IsEmpty)
backColor2 = colors.Selection.BackColor2;
}
if (!colors.Selection.BorderColor.IsEmpty)
borderColor = colors.Selection.BorderColor;
customColors = true;
}
}
else if (_IsToday)
{
borderColor = p.Colors.ItemCheckedBorder;
if (colors != null && colors.Today.IsCustomized)
{
if (!colors.Today.BorderColor.IsEmpty)
borderColor = colors.Today.BorderColor;
if (!colors.Today.BackColor.IsEmpty)
{
backColor = colors.Today.BackColor;
if (!colors.Today.BackColor2.IsEmpty)
backColor2 = colors.Today.BackColor2;
}
customColors = true;
}
}
else if (this.IsWeekOfYear)
{
backColor = Color.LightGray;
if (colors != null && colors.WeekOfYear.IsCustomized)
{
if (!colors.WeekOfYear.BorderColor.IsEmpty)
borderColor = colors.WeekOfYear.BorderColor;
if (!colors.WeekOfYear.BackColor.IsEmpty)
{
backColor = colors.WeekOfYear.BackColor;
if (!colors.WeekOfYear.BackColor2.IsEmpty)
backColor2 = colors.WeekOfYear.BackColor2;
}
customColors = true;
}
}
else if (this.IsTrailing)
{
if (colors != null && colors.TrailingDay.IsCustomized)
{
if (!colors.TrailingDay.BackColor.IsEmpty)
{
backColor = colors.TrailingDay.BackColor;
if (!colors.TrailingDay.BackColor2.IsEmpty)
backColor2 = colors.TrailingDay.BackColor2;
}
if (!colors.TrailingDay.BorderColor.IsEmpty)
borderColor = colors.TrailingDay.BorderColor;
customColors = true;
}
if (IsWeekend(Date) && colors != null && colors.TrailingWeekend.IsCustomized)
{
if (!colors.TrailingWeekend.BackColor.IsEmpty)
{
backColor = colors.TrailingWeekend.BackColor;
if (!colors.TrailingWeekend.BackColor2.IsEmpty)
backColor2 = colors.TrailingWeekend.BackColor2;
}
if (!colors.TrailingWeekend.BorderColor.IsEmpty)
borderColor = colors.TrailingWeekend.BorderColor;
customColors = true;
}
}
else if (this.IsDayLabel)
{
if (colors != null && colors.DayLabel.IsCustomized)
{
if (!colors.DayLabel.BackColor.IsEmpty)
{
backColor = colors.DayLabel.BackColor;
if (!colors.DayLabel.BackColor2.IsEmpty)
backColor2 = colors.DayLabel.BackColor2;
}
if (!colors.DayLabel.BorderColor.IsEmpty)
borderColor = colors.DayLabel.BorderColor;
customColors = true;
}
}
else if (this.Date != DateTime.MinValue)
{
if (colors != null && colors.Day.IsCustomized)
{
if (!colors.Day.BackColor.IsEmpty)
{
backColor = colors.Day.BackColor;
if (!colors.Day.BackColor2.IsEmpty)
backColor2 = colors.Day.BackColor2;
}
if (!colors.Day.BorderColor.IsEmpty)
borderColor = colors.Day.BorderColor;
customColors = true;
}
if (IsWeekend(Date) && colors != null && colors.Weekend.IsCustomized)
{
if (!colors.Weekend.BackColor.IsEmpty)
{
backColor = colors.Weekend.BackColor;
if (!colors.Weekend.BackColor2.IsEmpty)
backColor2 = colors.Weekend.BackColor2;
}
if (!colors.Weekend.BorderColor.IsEmpty)
borderColor = colors.Weekend.BorderColor;
customColors = true;
}
}
if (BarFunctions.IsOffice2007Style(EffectiveStyle) && !this.FlatOffice2007Style && !customColors)
{
Office2007ButtonItemStateColorTable ct = GetOffice2007StateColorTable(p);
if (ct != null)
{
Office2007ButtonItemPainter.PaintBackground(g, ct, r, RoundRectangleShapeDescriptor.RectangleShape);
backColor = Color.Empty;
backColor2 = Color.Empty;
borderColor = Color.Empty;
}
}
SmoothingMode sm = g.SmoothingMode;
g.SmoothingMode = SmoothingMode.None;
if (!backColor.IsEmpty)
DisplayHelp.FillRectangle(g, r, backColor, backColor2);
if (!borderColor.IsEmpty)
DisplayHelp.DrawRectangle(g, borderColor, r);
if (this.IsDayLabel)
{
borderColor = p.Colors.BarDockedBorder;
if (colors != null && !colors.DaysDividerBorderColors.IsEmpty)
borderColor = colors.DaysDividerBorderColors;
if (!borderColor.IsEmpty)
DisplayHelp.DrawLine(g, r.X, r.Bottom - 1, r.Right, r.Bottom - 1, borderColor, 1);
}
g.SmoothingMode = sm;
}
protected Office2007ButtonItemStateColorTable GetOffice2007StateColorTable(ItemPaintArgs p)
{
if (BarFunctions.IsOffice2007Style(EffectiveStyle) && !this.FlatOffice2007Style)
{
if (p.Renderer is Office2007Renderer)
{
Office2007ColorTable ct = ((Office2007Renderer)p.Renderer).ColorTable;
Office2007ButtonItemColorTable buttonColorTable = ct.ButtonItemColors[Enum.GetName(typeof(eButtonColor), eButtonColor.Orange)];
if (!this.Enabled)
return buttonColorTable.Disabled;
else if (this.IsMouseDown && _TrackMouse)
return buttonColorTable.Pressed;
else if (this.IsMouseOver && _TrackMouse)
return buttonColorTable.MouseOver;
else if (this.IsSelected)
return buttonColorTable.Checked;
}
}
return null;
}
internal static bool IsWeekend(DateTime d)
{
return d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday;
}
internal void PaintText(ItemPaintArgs p, Font textFont, Color textColor, eLabelPartAlignment textAlign)
{
Graphics g = p.Graphics;
string text = this.Text;
if (_Date != DateTime.MinValue)
text = _Date.Day.ToString();
bool isBold = _IsBold;
if (textColor.IsEmpty)
{
if (!_TextColor.IsEmpty)
textColor = _TextColor;
else if (!this.Enabled)
{
textColor = p.Colors.ItemDisabledText;
}
else
{
textColor = _IsTrailing ? p.Colors.ItemDisabledText : p.Colors.ItemText;
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
MonthCalendarColors colors = null;
if (month != null) colors = month.GetColors();
if (colors != null)
{
if (_Date != DateTime.MinValue)
{
if (_IsSelected && colors.Selection.IsCustomized)
{
if (!colors.Selection.TextColor.IsEmpty)
textColor = colors.Selection.TextColor;
if (colors.Selection.IsBold)
isBold = colors.Selection.IsBold;
}
else
{
if (_IsTrailing)
{
if (!colors.TrailingDay.TextColor.IsEmpty)
textColor = colors.TrailingDay.TextColor;
if (colors.TrailingDay.IsBold)
isBold = colors.TrailingDay.IsBold;
}
else if (colors.Day.IsCustomized)
{
if (!colors.Day.TextColor.IsEmpty)
textColor = colors.Day.TextColor;
if (colors.Day.IsBold)
isBold = colors.Day.IsBold;
}
if (IsWeekend(_Date))
{
if (_IsTrailing)
{
if (!colors.TrailingWeekend.TextColor.IsEmpty)
textColor = colors.TrailingWeekend.TextColor;
if (colors.TrailingWeekend.IsBold)
isBold = colors.TrailingWeekend.IsBold;
}
else
{
if (!colors.Weekend.TextColor.IsEmpty)
textColor = colors.Weekend.TextColor;
if (colors.Weekend.IsBold)
isBold = colors.Weekend.IsBold;
}
}
}
}
else if (IsWeekOfYear)
{
if (colors.WeekOfYear.IsCustomized)
{
if (!colors.WeekOfYear.TextColor.IsEmpty)
textColor = colors.WeekOfYear.TextColor;
if (colors.WeekOfYear.IsBold)
isBold = colors.WeekOfYear.IsBold;
}
}
else if (IsDayLabel)
{
if (!colors.DayLabel.TextColor.IsEmpty)
textColor = colors.DayLabel.TextColor;
if (colors.DayLabel.IsBold)
isBold = colors.DayLabel.IsBold;
}
}
}
}
if (_IsMouseOver && TrackMouse && StyleManager.IsMetro(EffectiveStyle))
{
textColor = p.Colors.ItemHotText;
}
bool disposeFont = false;
if (textFont == null)
{
if (isBold)
{
textFont = new Font(p.Font, FontStyle.Bold);
disposeFont = true;
}
else
textFont = p.Font;
}
if (_Date != DateTime.MinValue)
{
Size size = TextDrawing.MeasureString(g, "32", textFont);
Rectangle r = GetAlignedRect(this.DisplayRectangle, size, textAlign);
eTextFormat format = eTextFormat.Right | eTextFormat.VerticalCenter;
TextDrawing.DrawString(g, text, textFont, textColor,
r, format);
}
else
{
eTextFormat format = eTextFormat.HorizontalCenter | eTextFormat.VerticalCenter;
if (textAlign == eLabelPartAlignment.BottomCenter)
format = eTextFormat.Bottom | eTextFormat.HorizontalCenter;
else if (textAlign == eLabelPartAlignment.BottomLeft)
format = eTextFormat.Left | eTextFormat.Bottom;
else if (textAlign == eLabelPartAlignment.BottomRight)
format = eTextFormat.Bottom | eTextFormat.Right;
else if (textAlign == eLabelPartAlignment.MiddleLeft)
format = eTextFormat.Left | eTextFormat.VerticalCenter;
else if (textAlign == eLabelPartAlignment.MiddleRight)
format = eTextFormat.Right | eTextFormat.VerticalCenter;
else if (textAlign == eLabelPartAlignment.TopCenter)
format = eTextFormat.Top | eTextFormat.VerticalCenter;
else if (textAlign == eLabelPartAlignment.TopLeft)
format = eTextFormat.Top | eTextFormat.Left;
else if (textAlign == eLabelPartAlignment.TopRight)
format = eTextFormat.Top | eTextFormat.Right;
TextDrawing.DrawString(g, text, textFont, textColor,
this.Bounds, format);
}
if (disposeFont) textFont.Dispose();
}
public override void RecalcSize()
{
this.Bounds = new Rectangle(this.Bounds.Location, SingleMonthCalendar._DefaultDaySize);
base.RecalcSize();
}
/// <summary>
/// Returns copy of the item.
/// </summary>
public override BaseItem Copy()
{
DayLabel objCopy = new DayLabel();
this.CopyToItem(objCopy);
return objCopy;
}
/// <summary>
/// Copies the DayLabel specific properties to new instance of the item.
/// </summary>
/// <param name="c">New ButtonItem instance.</param>
protected override void CopyToItem(BaseItem c)
{
DayLabel copy = c as DayLabel;
base.CopyToItem(copy);
}
private DateTime _Date = DateTime.MinValue;
/// <summary>
/// Gets or sets the date represented by this label. DateTime.MinValue indicates that label is either used as textual day representation
/// or the week number as specified by the IsWeekOfYear property.
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DateTime Date
{
get { return _Date; }
set
{
if (_Date != value)
{
_Date = value;
}
}
}
private bool _IsDayLabel = false;
/// <summary>
/// Gets or sets whether this label is used as the label that displays the day name.
/// </summary>
[Browsable(false), DefaultValue(false)]
public bool IsDayLabel
{
get { return _IsDayLabel; }
set
{
if (_IsDayLabel != value)
{
_IsDayLabel = value;
this.Refresh();
}
}
}
private bool _IsWeekOfYear = false;
/// <summary>
/// Gets or sets whether this label is used as the week of year label.
/// </summary>
[Browsable(false), DefaultValue(false)]
public bool IsWeekOfYear
{
get { return _IsWeekOfYear; }
set
{
if (_IsWeekOfYear != value)
{
_IsWeekOfYear = value;
this.Refresh();
}
}
}
private bool _IsTrailing = false;
/// <summary>
/// Gets whether the label for date represents the trailing date, i.e. date that is from next or previous month for the month displayed.
/// </summary>
[Browsable(false), DefaultValue(false)]
public bool IsTrailing
{
get { return _IsTrailing; }
set
{
if (_IsTrailing != value)
{
_IsTrailing = value;
this.Refresh();
}
}
}
private bool _IsMouseOver = false;
/// <summary>
/// Gets or sets whether mouse is over the item.
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool IsMouseOver
{
get { return _IsMouseOver; }
set
{
_IsMouseOver = value;
this.Refresh();
}
}
private bool _IsMouseDown = false;
/// <summary>
/// Gets or sets whether left-mouse button is pressed over the item.
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool IsMouseDown
{
get { return _IsMouseDown; }
set
{
_IsMouseDown = value;
this.Refresh();
}
}
/// <summary>
/// Occurs when the mouse pointer enters the item. This is used by internal implementation only.
/// </summary>
public override void InternalMouseEnter()
{
this.IsMouseOver = true;
base.InternalMouseEnter();
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.OnLabelMouseEnter(this, new EventArgs());
}
/// <summary>
/// Occurs when the mouse pointer leaves the item. This is used by internal implementation only.
/// </summary>
public override void InternalMouseLeave()
{
this.IsMouseOver = false;
base.InternalMouseLeave();
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.OnLabelMouseLeave(this, new EventArgs());
}
/// <summary>
/// Occurs when the mouse pointer is over the item and a mouse button is pressed. This is used by internal implementation only.
/// </summary>
public override void InternalMouseDown(System.Windows.Forms.MouseEventArgs objArg)
{
if (objArg.Button == System.Windows.Forms.MouseButtons.Left)
this.IsMouseDown = true;
if (this.IsMouseDown && this.SubItems.Count > 0 && this.ShowSubItems &&
(_ImageRenderBounds.Contains(objArg.X, objArg.Y) || _ExpandOnMouseDown))
{
this.Expanded = !this.Expanded;
}
base.InternalMouseDown(objArg);
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.OnLabelMouseDown(this, objArg);
}
/// <summary>
/// Occurs when the mouse pointer is over the item and a mouse button is released. This is used by internal implementation only.
/// </summary>
public override void InternalMouseUp(System.Windows.Forms.MouseEventArgs objArg)
{
if (objArg.Button == System.Windows.Forms.MouseButtons.Left)
this.IsMouseDown = false;
base.InternalMouseUp(objArg);
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.OnLabelMouseUp(this, objArg);
}
protected override void OnClick()
{
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.DayLabelClick(this);
base.OnClick();
}
public override void InternalMouseMove(System.Windows.Forms.MouseEventArgs objArg)
{
base.InternalMouseMove(objArg);
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.OnLabelMouseMove(this, objArg);
}
public override void InternalMouseHover()
{
base.InternalMouseHover();
SingleMonthCalendar month = this.Parent as SingleMonthCalendar;
if (month != null) month.OnLabelMouseHover(this, new EventArgs());
}
private void BackgroundStyleChanged(object sender, EventArgs e)
{
this.OnAppearanceChanged();
}
/// <summary>
/// Specifies the item background style. Default value is an empty style which means that container does not display any background.
/// BeginGroup property set to true will override this style on some styles.
/// </summary>
[Browsable(true), DevCoBrowsable(true), Category("Style"), Description("Gets or sets container background style."), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ElementStyle BackgroundStyle
{
get { return _BackgroundStyle; }
}
private bool _IsSelected = false;
/// <summary>
/// Gets or sets whether label appears as selected.
/// </summary>
[DefaultValue(false), Browsable(false)]
public bool IsSelected
{
get { return _IsSelected; }
set
{
if (_IsSelected != value)
{
_IsSelected = value;
this.Refresh();
}
}
}
private bool _TrackMouse = true;
/// <summary>
/// Gets or sets whether label provides visual indicator when mouse is over the label or pressed while over the label. Default value is true.
/// </summary>
[DefaultValue(true), Description("Indicates whether label provides visual indicator when mouse is over the label or pressed while over the label.")]
public bool TrackMouse
{
get { return _TrackMouse; }
set
{
if (_TrackMouse != value)
{
_TrackMouse = value;
this.Refresh();
}
}
}
private bool _Selectable = true;
/// <summary>
/// Gets or sets whether label is selectable. IsSelected property returns whether label is selected. Default value is true.
/// </summary>
[DefaultValue(true), Description("Indicates whether label is selectable.")]
public bool Selectable
{
get { return _Selectable; }
set
{
if (_Selectable != value)
{
_Selectable = value;
this.Refresh();
}
}
}
private Color _TextColor = Color.Empty;
/// <summary>
/// Gets or sets the label text color. Default value is an empty color.
/// </summary>
[Category("Colors"), Description("Indicates label text color.")]
public Color TextColor
{
get { return _TextColor; }
set
{
_TextColor = value;
this.Refresh();
}
}
/// <summary>Gets whether property should be serialized. Provided for WinForms designer support.</summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeTextColor()
{
return !TextColor.IsEmpty;
}
/// <summary>Resets property to its default value. Provided for WinForms designer support.</summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public void ResetTextColor()
{
TextColor = Color.Empty;
}
private bool _IsBold = false;
/// <summary>
/// Gets or sets whether text is drawn using Bold font. Default value is false.
/// </summary>
[DefaultValue(false), Description("Indicates whether text is drawn using Bold font.")]
public bool IsBold
{
get { return _IsBold; }
set
{
if (_IsBold != value)
{
_IsBold = value;
this.Refresh();
}
}
}
//private Color _BorderColor = Color.Empty;
///// <summary>
///// Gets or sets the label border color. Default value is an empty color.
///// </summary>
//[Category("Colors"), Description("Indicates label border color.")]
//public Color BorderColor
//{
// get { return _BorderColor; }
// set
// {
// _BorderColor = value;
// this.Refresh();
// }
//}
///// <summary>Gets whether property should be serialized. Provided for WinForms designer support.</summary>
//[EditorBrowsable(EditorBrowsableState.Never)]
//public bool ShouldSerializeBorderColor()
//{
// return !BorderColor.IsEmpty;
//}
///// <summary>Resets property to its default value. Provided for WinForms designer support.</summary>
//[EditorBrowsable(EditorBrowsableState.Never)]
//public void ResetBorderColor()
//{
// BorderColor = Color.Empty;
//}
//private Color _BackColor = Color.Empty;
///// <summary>
///// Gets or sets the label back color.
///// </summary>
//[Category("Colors"), Description("Indicates label back color.")]
//public Color BackColor
//{
// get { return _BackColor; }
// set
// {
// _BackColor = value;
// this.Refresh();
// }
//}
///// <summary>Gets whether property should be serialized. Provided for WinForms designer support.</summary>
//[EditorBrowsable(EditorBrowsableState.Never)]
//public bool ShouldSerializeBackColor()
//{
// return !BackColor.IsEmpty;
//}
///// <summary>Resets property to its default value. Provided for WinForms designer support.</summary>
//[EditorBrowsable(EditorBrowsableState.Never)]
//public void ResetBackColor()
//{
// BackColor = Color.Empty;
//}
private eLabelPartAlignment _TextAlign = eLabelPartAlignment.MiddleCenter;
/// <summary>
/// Gets or sets the text alignment.
/// </summary>
[DefaultValue(eLabelPartAlignment.MiddleCenter), Description("Indicates text alignment.")]
public eLabelPartAlignment TextAlign
{
get { return _TextAlign; }
set
{
if (_TextAlign != value)
{
_TextAlign = value;
this.Refresh();
}
}
}
private eLabelPartAlignment _ImageAlign = eLabelPartAlignment.MiddleRight;
/// <summary>
/// Gets or sets the image alignment.
/// </summary>
[DefaultValue(eLabelPartAlignment.MiddleRight), Description("Indicates image alignment.")]
public eLabelPartAlignment ImageAlign
{
get { return _ImageAlign; }
set
{
if (_ImageAlign != value)
{
_ImageAlign = value;
this.Refresh();
}
}
}
private Image _Image = null;
/// <summary>
/// Gets or sets the image displayed on the label.
/// </summary>
[DefaultValue(null), Description("Indicates image displayed on the label.")]
public Image Image
{
get { return _Image; }
set
{
if (_Image != value)
{
_Image = value;
_ImageRenderBounds = Rectangle.Empty;
this.Refresh();
}
}
}
private bool _FlatOffice2007Style = false;
/// <summary>
/// Gets or sets whether flat Office 2007 style is used to render the item. Default value is false.
/// </summary>
[DefaultValue(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false)]
public bool FlatOffice2007Style
{
get { return _FlatOffice2007Style; }
set
{
_FlatOffice2007Style = value;
this.Refresh();
}
}
private bool _IsToday = false;
/// <summary>
/// Gets or sets whether date represented by label is marked as todays date.
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool IsToday
{
get { return _IsToday; }
set
{
if (_IsToday != value)
{
_IsToday = value;
this.Refresh();
}
}
}
private bool _ExpandOnMouseDown = false;
/// <summary>
/// Gets or sets whether popup is displayed when mouse is pressed anywhere over the item. Default value is false which indicates
/// that popup is displayed only if image assigned to the item and mouse is pressed over image.
/// </summary>
[DefaultValue(false), Description("Indicates whether popup is displayed when mouse is pressed anywhere over the item.")]
public bool ExpandOnMouseDown
{
get { return _ExpandOnMouseDown; }
set
{
if (_ExpandOnMouseDown != value)
{
_ExpandOnMouseDown = value;
}
}
}
#endregion
}
/// <summary>
/// Indicates the alignment of the DayLabel part like text or image.
/// </summary>
public enum eLabelPartAlignment
{
TopLeft,
TopCenter,
TopRight,
MiddleLeft,
MiddleCenter,
MiddleRight,
BottomLeft,
BottomCenter,
BottomRight
}
}
#endif