using System.Windows.Forms; using FastReport.Controls; using FastReport.Utils; namespace FastReport.Design.RibbonDesigner { internal class RibbonLayoutGroup : RibbonGroup { #region Fields private WrappedPanel Panel1 { get; } private StackedPanel Panel2 { get; } private WrappedPanel alignPanel { get; } private WrappedPanel sizePanel { get; } private WrappedPanel intervalPanel { get; } private ToolbarLabel lblAlign; private ToolbarLabel lblSize; private ToolbarLabel lblInterval; public ToolbarButton btnAlignToGrid; public ToolbarButton btnLeft; public ToolbarButton btnCenter; public ToolbarButton btnRight; public ToolbarButton btnTop; public ToolbarButton btnMiddle; public ToolbarButton btnBottom; public ToolbarButton btnSameWidth; public ToolbarButton btnSameHeight; public ToolbarButton btnSameSize; public ToolbarButton btnSizeToGrid; public ToolbarButton btnSpaceHorizontally; public ToolbarButton btnIncreaseHorizontalSpacing; public ToolbarButton btnDecreaseHorizontalSpacing; public ToolbarButton btnRemoveHorizontalSpacing; public ToolbarButton btnSpaceVertically; public ToolbarButton btnIncreaseVerticalSpacing; public ToolbarButton btnDecreaseVerticalSpacing; public ToolbarButton btnRemoveVerticalSpacing; public ToolbarButton btnCenterHorizontally; public ToolbarButton btnCenterVertically; public ToolbarButton btnBringToFront; public ToolbarButton btnSendToBack; public ToolbarButton btnGroup; public ToolbarButton btnUngroup; #endregion #region Private Methods private void UpdateControls() { bool oneObjSelected = Designer.SelectedComponents.Count > 0; bool threeObjSelected = Designer.SelectedComponents.Count >= 3; bool severalObjSelected = Designer.SelectedComponents.Count > 1; bool canChangeOrder = Designer.SelectedComponents.Count > 0 && Designer.SelectedComponents.First.HasFlag(Flags.CanChangeOrder); bool canMove = Designer.SelectedComponents.Count > 0 && Designer.SelectedComponents.First.HasFlag(Flags.CanMove); bool canResize = Designer.SelectedComponents.Count > 0 && Designer.SelectedComponents.First.HasFlag(Flags.CanResize); btnAlignToGrid.Enabled = oneObjSelected && canMove; btnLeft.Enabled = severalObjSelected && canMove; btnCenter.Enabled = severalObjSelected && canMove; btnRight.Enabled = severalObjSelected && canMove; btnTop.Enabled = severalObjSelected && canMove; btnMiddle.Enabled = severalObjSelected && canMove; btnBottom.Enabled = severalObjSelected && canMove; btnSameWidth.Enabled = severalObjSelected && canResize; btnSameHeight.Enabled = severalObjSelected && canResize; btnSameSize.Enabled = severalObjSelected && canResize; btnSizeToGrid.Enabled = oneObjSelected && canResize; btnSpaceHorizontally.Enabled = threeObjSelected && canMove; btnIncreaseHorizontalSpacing.Enabled = severalObjSelected && canMove; btnDecreaseHorizontalSpacing.Enabled = severalObjSelected && canMove; btnRemoveHorizontalSpacing.Enabled = severalObjSelected && canMove; btnSpaceVertically.Enabled = threeObjSelected && canMove; btnIncreaseVerticalSpacing.Enabled = severalObjSelected && canMove; btnDecreaseVerticalSpacing.Enabled = severalObjSelected && canMove; btnRemoveVerticalSpacing.Enabled = severalObjSelected && canMove; btnCenterHorizontally.Enabled = oneObjSelected && canMove; btnCenterVertically.Enabled = oneObjSelected && canMove; btnBringToFront.Enabled = canChangeOrder; btnSendToBack.Enabled = canChangeOrder; btnGroup.Enabled = Designer.cmdGroup.Enabled; btnUngroup.Enabled = Designer.cmdUngroup.Enabled; } #endregion #region Public Methods public override void SelectionChanged() { base.SelectionChanged(); Throttle.Execute(UpdateControls); } public override void UpdateContent() { base.UpdateContent(); Throttle.Execute(UpdateControls); } public override void Localize() { base.Localize(); MyRes res = new MyRes("Designer,Toolbar,Layout"); Text = res.Get(""); SetItemText(btnAlignToGrid, res.Get("AlignToGrid")); SetItemText(btnLeft, res.Get("Left")); SetItemText(btnCenter, res.Get("Center")); SetItemText(btnRight, res.Get("Right")); SetItemText(btnTop, res.Get("Top")); SetItemText(btnMiddle, res.Get("Middle")); SetItemText(btnBottom, res.Get("Bottom")); SetItemText(btnSameWidth, res.Get("SameWidth")); SetItemText(btnSameHeight, res.Get("SameHeight")); SetItemText(btnSameSize, res.Get("SameSize")); SetItemText(btnSizeToGrid, res.Get("SizeToGrid")); SetItemText(btnSpaceHorizontally, res.Get("SpaceHorizontally")); SetItemText(btnIncreaseHorizontalSpacing, res.Get("IncreaseHorizontalSpacing")); SetItemText(btnDecreaseHorizontalSpacing, res.Get("DecreaseHorizontalSpacing")); SetItemText(btnRemoveHorizontalSpacing, res.Get("RemoveHorizontalSpacing")); SetItemText(btnSpaceVertically, res.Get("SpaceVertically")); SetItemText(btnIncreaseVerticalSpacing, res.Get("IncreaseVerticalSpacing")); SetItemText(btnDecreaseVerticalSpacing, res.Get("DecreaseVerticalSpacing")); SetItemText(btnRemoveVerticalSpacing, res.Get("RemoveVerticalSpacing")); SetItemText(btnCenterHorizontally, res.Get("CenterHorizontally")); SetItemText(btnCenterVertically, res.Get("CenterVertically")); SetItemText(btnBringToFront, res.Get("BringToFront")); SetItemText(btnSendToBack, res.Get("SendToBack")); res = new MyRes("Designer,Toolbar,Standard"); SetItemText(btnGroup, res.Get("Group")); SetItemText(btnUngroup, res.Get("Ungroup")); res = new MyRes("Designer,Ribbon"); lblAlign.Text = res.Get("Alignment"); lblSize.Text = res.Get("Size"); lblInterval.Text = res.Get("Spacing"); } public override void UpdateDpiDependencies() { if (State == GroupState.Collapsed) return; base.UpdateDpiDependencies(); Panel1.MaxWidth = 50; Panel1.UpdateDpiDependencies(); sizePanel.MaxWidth = 80; sizePanel.UpdateDpiDependencies(); alignPanel.MaxWidth = 110; alignPanel.UpdateDpiDependencies(); intervalPanel.MaxWidth = 100; intervalPanel.UpdateDpiDependencies(); } public override void UpdateState() { // do nothing } #endregion public RibbonLayoutGroup(Designer designer) : base(designer) { Name = "LayoutToolbar"; CollapsedImageName = "Ribbon.AlignMenu.png"; CollapsedButton.MakeBig(100); btnAlignToGrid = new ToolbarButton("btnLayoutAlignToGrid", 98, Designer.SelectedComponents.AlignToGrid); btnSizeToGrid = new ToolbarButton("btnLayoutSizeToGrid", 57, Designer.SelectedComponents.SizeToGrid); btnLeft = new ToolbarButton("btnLayoutLeft", 41, Designer.SelectedComponents.AlignLeft); btnCenter = new ToolbarButton("btnLayoutCenter", 42, Designer.SelectedComponents.AlignCenter); btnRight = new ToolbarButton("btnLayoutRight", 45, Designer.SelectedComponents.AlignRight); btnTop = new ToolbarButton("btnLayoutTop", 46, Designer.SelectedComponents.AlignTop); btnMiddle = new ToolbarButton("btnLayoutMiddle", 47, Designer.SelectedComponents.AlignMiddle); btnBottom = new ToolbarButton("btnLayoutBottom", 50, Designer.SelectedComponents.AlignBottom); btnSameWidth = new ToolbarButton("btnLayoutSameWidth", 83, Designer.SelectedComponents.SameWidth); btnSameHeight = new ToolbarButton("btnLayoutSameHeight", 84, Designer.SelectedComponents.SameHeight); btnSameSize = new ToolbarButton("btnLayoutSameSize", 91, Designer.SelectedComponents.SameSize); btnSpaceHorizontally = new ToolbarButton("btnLayoutSpaceHorizontally", 44, Designer.SelectedComponents.SpaceHorizontally); btnIncreaseHorizontalSpacing = new ToolbarButton("btnLayoutIncreaseHorizontalSpacing", 92, Designer.SelectedComponents.IncreaseHorizontalSpacing); btnDecreaseHorizontalSpacing = new ToolbarButton("btnLayoutDecreaseHorizontalSpacing", 93, Designer.SelectedComponents.DecreaseHorizontalSpacing); btnRemoveHorizontalSpacing = new ToolbarButton("btnLayoutRemoveHorizontalSpacing", 94, Designer.SelectedComponents.RemoveHorizontalSpacing); btnSpaceVertically = new ToolbarButton("btnLayoutSpaceVertically", 49, Designer.SelectedComponents.SpaceVertically); btnIncreaseVerticalSpacing = new ToolbarButton("btnLayoutIncreaseVerticalSpacing", 95, Designer.SelectedComponents.IncreaseVerticalSpacing); btnDecreaseVerticalSpacing = new ToolbarButton("btnLayoutDecreaseVerticalSpacing", 96, Designer.SelectedComponents.DecreaseVerticalSpacing); btnRemoveVerticalSpacing = new ToolbarButton("btnLayoutRemoveVerticalSpacing", 97, Designer.SelectedComponents.RemoveVerticalSpacing); btnCenterHorizontally = new ToolbarButton("btnLayoutCenterHorizontally", 43, Designer.SelectedComponents.CenterHorizontally); btnCenterHorizontally.BeginGroup = true; btnCenterVertically = new ToolbarButton("btnLayoutCenterVertically", 48, Designer.SelectedComponents.CenterVertically); btnCenterVertically.BeginGroup = true; btnBringToFront = new ToolbarButton("btnLayoutBringToFront", 14, Designer.cmdBringToFront.Invoke); btnSendToBack = new ToolbarButton("btnLayoutSendToBack", 15, Designer.cmdSendToBack.Invoke); btnGroup = new ToolbarButton("btnStdGroup", 17, Designer.cmdGroup.Invoke); btnUngroup = new ToolbarButton("btnStdUngroup", 16, Designer.cmdUngroup.Invoke); Panel1 = new WrappedPanel() { Margin = new Padding(0, 0, 0, 2) }; Panel1.AddItems( btnAlignToGrid, btnSizeToGrid, btnBringToFront, btnSendToBack, btnGroup, btnUngroup); Panel2 = new StackedPanel() { Vertical = false }; var panel = new StackedPanel(); lblSize = new ToolbarLabel(); sizePanel = new WrappedPanel() { Margin = new Padding(0, 3, 0, 3) }; sizePanel.AddItems( btnSameWidth, btnSameHeight, btnSameSize); panel.Controls.Add(lblSize); panel.Controls.Add(sizePanel); Panel2.Controls.Add(panel); Panel2.Controls.Add(new ToolStripSeparator(true)); panel = new StackedPanel(); lblAlign = new ToolbarLabel(); alignPanel = new WrappedPanel() { Margin = new Padding(0, 3, 0, 3) }; alignPanel.AddItems( btnLeft, btnCenter, btnRight, btnCenterHorizontally, btnTop, btnMiddle, btnBottom, btnCenterVertically); panel.Controls.Add(lblAlign); panel.Controls.Add(alignPanel); Panel2.Controls.Add(panel); Panel2.Controls.Add(new ToolStripSeparator(true)); panel = new StackedPanel(); lblInterval = new ToolbarLabel(); intervalPanel = new WrappedPanel() { Margin = new Padding(0, 3, 0, 3) }; intervalPanel.AddItems( btnSpaceHorizontally, btnIncreaseHorizontalSpacing, btnDecreaseHorizontalSpacing, btnRemoveHorizontalSpacing, btnSpaceVertically, btnIncreaseVerticalSpacing, btnDecreaseVerticalSpacing, btnRemoveVerticalSpacing); panel.Controls.Add(lblInterval); panel.Controls.Add(intervalPanel); Panel2.Controls.Add(panel); Panel.Controls.AddRange(new Control[] { Panel1, new ToolStripSeparator(true), Panel2 }); Panel.CollapseTo(CollapsedButton); Localize(); UpdateDpiDependencies(); } } }