public void Apply(AlignUnitsCollection units) { Padding padding = new Padding(0); for (int i = 0; i < units.RowCount; i++) { AlignUnit maxUnitInRow = units.GetMaxUnitInRow(i); if (maxUnitInRow == null) { padding = new Padding(0); } else { AlignUnit minUnitInRow = units.GetMinUnitInRow(i); Padding padding2 = maxUnitInRow.CompareMargin - minUnitInRow.CompareMargin; padding2 = ((padding2.Vertical > maxUnitInRow.InlinedMargin.Vertical) ? padding2 : maxUnitInRow.InlinedMargin); foreach (AlignUnit alignUnit in units.GetAlignUnitsInRow(i)) { alignUnit.ResultMargin = maxUnitInRow.CompareMargin - alignUnit.CompareMargin; } units.RowDeltaValue[i] = units.RowDeltaValue[i] - padding.Bottom - padding2.Top; if (units.RowDeltaValue[i] < DefaultAlignRule.MinimalVertical) { units.RowDeltaValue[i] = DefaultAlignRule.MinimalVertical; } padding = padding2; } } if (units.RowCount > 0) { units.RowDeltaValue[0] = 0; } }
private bool IsTypeMatch(Type type, AlignUnit unit) { if (!(type == null)) { return(unit != null && type.IsAssignableFrom(unit.Control.GetType())); } return(unit == null); }
private bool IsTypeMatch(AlignUnit unit) { foreach (Type type in this.includedTypes) { if (type.IsAssignableFrom(unit.Control.GetType())) { return(true); } } return(false); }
private bool Match(AlignUnit unit, AlignUnitsCollection collection) { foreach (Type type in this.excludedTypes) { if (type.IsAssignableFrom(unit.Control.GetType())) { return(false); } } return(true); }
private bool Match(AlignUnit unit, AlignUnitsCollection collection) { foreach (RelativeControlAlignRule.Condition condition in this.conditionsList) { AlignUnit offsetUnit = collection.GetOffsetUnit(unit, condition.OffsetRow, condition.OffSetColumn); if (!this.IsConditionMatch(condition, offsetUnit)) { return(false); } } return(true); }
public AlignUnit GetOffsetUnit(AlignUnit unit, int row, int col) { if (row > 0) { row += unit.RowSpan - 1; } if (col > 0) { col += unit.ColumnSpan - 1; } return(this.GetUnitFromPosition(unit.Row + row, unit.Column + col)); }
public AlignUnit GetMinUnitInRow(int row) { AlignUnit alignUnit = null; foreach (AlignUnit alignUnit2 in this.GetAlignUnitsInRow(row)) { if (alignUnit == null || alignUnit2.CompareMargin.Vertical < alignUnit.CompareMargin.Vertical) { alignUnit = alignUnit2; } } return(alignUnit); }
private bool IsConditionMatch(RelativeControlAlignRule.Condition condition, AlignUnit unit) { foreach (Type type in condition.ExcludedTypes) { if (this.IsTypeMatch(type, unit)) { return(false); } } foreach (Type type2 in condition.IncludedTypes) { if (this.IsTypeMatch(type2, unit)) { return(true); } } return(condition.IncludedTypes.Count == 0); }
protected virtual void SetControlStyle(AlignUnit unit) { Control control = unit.Control; control.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right); if (control is Label && !(control is AutoHeightLabel)) { (control as Label).UseCompatibleTextRendering = (control is LinkLabel); ((Label)control).AutoSize = true; return; } if (control is AutoHeightLabel) { AutoHeightLabel autoHeightLabel = (AutoHeightLabel)control; autoHeightLabel.UseCompatibleTextRendering = false; autoHeightLabel.AutoSize = false; autoHeightLabel.ShowDivider = true; return; } if (control is ButtonBase) { ButtonBase buttonBase = control as ButtonBase; buttonBase.UseCompatibleTextRendering = false; buttonBase.AutoSize = true; return; } if (control is AutoSizePanel && control.Controls.Count == 1 && control.Controls[0] is TextBox && ((TextBox)control.Controls[0]).Multiline && (((TextBox)control.Controls[0]).ScrollBars == ScrollBars.Vertical || ((TextBox)control.Controls[0]).ScrollBars == ScrollBars.Both)) { control.BackColor = SystemColors.Window; ((AutoSizePanel)control).BorderStyle = BorderStyle.None; control.Controls[0].Dock = DockStyle.Fill; control.Controls[0].Location = new Point(0, 0); control.Controls[0].Margin = new Padding(0); unit.ResultMargin = new Padding(3, 0, 0, 0); return; } if (control is ExchangeUserControl && this.NeedAutoSizeUserControl(control as UserControl)) { (control as UserControl).AutoSize = true; (control as UserControl).AutoSizeMode = AutoSizeMode.GrowAndShrink; } }
private AlignUnitsCollection(TableLayoutPanel panel) { IDictionary <int, int> rowsMapping = this.GetRowsMapping(panel); this.unitsCollection = new AlignUnit[rowsMapping.Count, panel.ColumnCount]; this.RowDeltaValue = new int[rowsMapping.Count]; foreach (object obj in panel.Controls) { Control control = (Control)obj; int row = panel.GetRow(control); int column = panel.GetColumn(control); if (this.GetControlVisible(control) && row >= 0 && column >= 0) { int num = rowsMapping[row]; int num2 = column; AlignUnit alignUnit = new AlignUnit(control, panel.GetRowSpan(control), panel.GetColumnSpan(control), num, num2); for (int i = 0; i < alignUnit.ColumnSpan; i++) { this.unitsCollection[num, num2 + i] = alignUnit; } this.unitsList.Add(alignUnit); if (!this.rowUnitsDictionary.ContainsKey(num)) { this.rowUnitsDictionary[num] = new List <AlignUnit>(); } this.rowUnitsDictionary[num].Add(alignUnit); } } for (int j = 0; j < this.RowCount; j++) { if (!this.rowUnitsDictionary.ContainsKey(j)) { this.rowUnitsDictionary[j] = new List <AlignUnit>(); } else { this.rowUnitsDictionary[j].Sort(); } this.RowDeltaValue[j] = AlignSettings.DefaultVertical; } this.UpdateCompareMargin(); }
public void Apply(AlignUnitsCollection collection) { int num = collection.ColumnCount; for (int i = 0; i < collection.RowCount; i++) { IList <AlignUnit> alignUnitsInRow = collection.GetAlignUnitsInRow(i); if (alignUnitsInRow.Count > 0) { AlignUnit alignUnit = alignUnitsInRow[0]; if (alignUnit.Column < num && this.IsTypeMatch(alignUnit)) { num = alignUnit.Column; } if (alignUnit.Column > num && collection.RowDeltaValue[i] > 8) { collection.RowDeltaValue[i] = 8; } } } }
public IList <AlignUnit> GetOffsetUnits(AlignUnit unit, int row, int col) { List <AlignUnit> list = new List <AlignUnit>(); if (row > 0) { row += unit.RowSpan - 1; } if (col > 0) { col += unit.ColumnSpan - 1; } for (int i = 0; i < unit.ColumnSpan; i++) { AlignUnit unitFromPosition = this.GetUnitFromPosition(unit.Row + row, unit.Column + col + i); if (unitFromPosition != null && !list.Contains(unitFromPosition)) { list.Add(unitFromPosition); } } return(list); }