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);
 }
Exemple #3
0
 private bool IsTypeMatch(AlignUnit unit)
 {
     foreach (Type type in this.includedTypes)
     {
         if (type.IsAssignableFrom(unit.Control.GetType()))
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #4
0
 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);
 }
Exemple #9
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();
        }
Exemple #11
0
        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);
        }