169 lines
3.0 KiB
C#
169 lines
3.0 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using CPF.Drawing;
|
|
using CPF.ReoGrid.Events;
|
|
|
|
namespace CPF.ReoGrid
|
|
{
|
|
public class ColumnHeader : ReoGridHeader
|
|
{
|
|
internal ColumnHeader(Worksheet sheet) : base(sheet)
|
|
{
|
|
}
|
|
|
|
public int Left { get; internal set; }
|
|
|
|
internal ushort InnerWidth { get; set; }
|
|
|
|
public ushort Width
|
|
{
|
|
get
|
|
{
|
|
return this.InnerWidth;
|
|
}
|
|
set
|
|
{
|
|
this.VerifyWorksheet();
|
|
base.Worksheet.SetColumnsWidth(this.Col, 1, value);
|
|
}
|
|
}
|
|
|
|
internal ushort LastWidth { get; set; }
|
|
|
|
internal int Col { get; set; }
|
|
|
|
public override int Index
|
|
{
|
|
get
|
|
{
|
|
return this.Col;
|
|
}
|
|
}
|
|
|
|
internal string RenderText { get; set; }
|
|
|
|
public string Text
|
|
{
|
|
get
|
|
{
|
|
return this.text;
|
|
}
|
|
set
|
|
{
|
|
this.text = value;
|
|
this.RenderText = ((value == null) ? RGUtility.GetAlphaChar((long)this.Col) : value);
|
|
bool flag = base.Worksheet != null;
|
|
if (flag)
|
|
{
|
|
base.Worksheet.RequestInvalidate();
|
|
}
|
|
}
|
|
}
|
|
|
|
public int Right
|
|
{
|
|
get
|
|
{
|
|
return this.Left + (int)this.InnerWidth;
|
|
}
|
|
internal set
|
|
{
|
|
int num = value - this.Left;
|
|
bool flag = num < 0;
|
|
if (flag)
|
|
{
|
|
num = 0;
|
|
}
|
|
this.InnerWidth = (ushort)num;
|
|
}
|
|
}
|
|
|
|
internal WorksheetRangeStyle InnerStyle { get; set; }
|
|
|
|
public ColumnHeaderStyle Style
|
|
{
|
|
get
|
|
{
|
|
bool flag = this.refStyle == null;
|
|
if (flag)
|
|
{
|
|
this.refStyle = new ColumnHeaderStyle(base.Worksheet, this);
|
|
}
|
|
return this.refStyle;
|
|
}
|
|
}
|
|
|
|
public bool IsAutoWidth { get; set; }
|
|
|
|
public override bool IsVisible
|
|
{
|
|
get
|
|
{
|
|
return this.InnerWidth > 0;
|
|
}
|
|
set
|
|
{
|
|
this.VerifyWorksheet();
|
|
if (value)
|
|
{
|
|
base.Worksheet.ShowColumns(this.Col, 1);
|
|
}
|
|
else
|
|
{
|
|
base.Worksheet.HideColumns(this.Col, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void VerifyWorksheet()
|
|
{
|
|
bool flag = base.Worksheet == null;
|
|
if (flag)
|
|
{
|
|
throw new Exception("Column header must be associated to worksheet instance.");
|
|
}
|
|
}
|
|
|
|
public Color? TextColor { get; set; }
|
|
|
|
public void FitWidthToCells(bool byAction = false)
|
|
{
|
|
base.Worksheet.AutoFitColumnWidth(this.Col, byAction);
|
|
}
|
|
|
|
internal ColumnHeader Clone(Worksheet newSheet)
|
|
{
|
|
return new ColumnHeader(newSheet)
|
|
{
|
|
Left = this.Left,
|
|
InnerWidth = this.InnerWidth,
|
|
InnerStyle = ((this.InnerStyle == null) ? null : new WorksheetRangeStyle(this.InnerStyle)),
|
|
IsAutoWidth = this.IsAutoWidth,
|
|
TextColor = this.TextColor,
|
|
text = this.text,
|
|
RenderText = this.RenderText,
|
|
Body = base.Body,
|
|
DefaultCellBody = base.DefaultCellBody,
|
|
Col = this.Col,
|
|
LastWidth = this.LastWidth
|
|
};
|
|
}
|
|
|
|
//[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
public event EventHandler<ColumnsWidthChangedEventArgs> WidthChanged;
|
|
|
|
internal void RaiseWidthChangedEvent()
|
|
{
|
|
bool flag = this.WidthChanged != null;
|
|
if (flag)
|
|
{
|
|
this.WidthChanged(this, new ColumnsWidthChangedEventArgs(this.Col, 1, (int)this.InnerWidth));
|
|
}
|
|
}
|
|
|
|
private string text = null;
|
|
|
|
private ColumnHeaderStyle refStyle;
|
|
}
|
|
}
|