123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- using FastReport.Design;
- using FastReport.Utils;
- using FastReport.Table;
- using FastReport.Forms;
- namespace FastReport.AdvMatrix
- {
- internal class MatrixCellMenuBase : TableMenuBase
- {
- private AdvMatrixObject matrix;
- private SelectedObjectCollection selection;
- public ContextMenuItem miEdit;
- public ContextMenuItem miFormat;
- public ContextMenuItem miHyperlink;
- public ContextMenuItem miClear;
- public ContextMenuItem miMergeSplit;
- public ContextMenuItem miCollapseButton;
- public ContextMenuItem miSortButton;
- public AdvMatrixObject Matrix
- {
- get { return matrix; }
- }
- public TableCell Cell
- {
- get { return selection[0] as TableCell; }
- }
- private void miEdit_Click(object sender, EventArgs e)
- {
- Matrix.HandleCellDoubleClick(Cell);
- }
- private void miFormat_Click(object sender, EventArgs e)
- {
- using (FormatEditorForm form = new FormatEditorForm())
- {
- form.TextObject = Cell;
- if (form.ShowDialog() == DialogResult.OK)
- {
- SelectedTextBaseObjects components = new SelectedTextBaseObjects(Designer);
- components.Update();
- components.SetFormat(form.Formats);
- Change();
- }
- }
- }
- private void miHyperlink_Click(object sender, EventArgs e)
- {
- using (HyperlinkEditorForm form = new HyperlinkEditorForm())
- {
- form.ReportComponent = Cell;
- if (Cell.GetMatrixElement() == MatrixElement.Cell)
- form.IsMatrixHyperlink = true;
- if (form.ShowDialog() == DialogResult.OK)
- {
- SelectedReportComponents components = new SelectedReportComponents(Designer);
- components.Update();
- components.SetHyperlink(form.Hyperlink, form.ModifyAppearance, false);
- Change();
- }
- }
- }
- private void miCollapseButton_Click(object sender, EventArgs e)
- {
- if (miCollapseButton.Checked)
- Cell.AddCollapseButton();
- else
- Cell.GetCollapseButton().Dispose();
- Change();
- }
- private void miSortButton_Click(object sender, EventArgs e)
- {
- if (miSortButton.Checked)
- Cell.AddSortButton();
- else
- Cell.GetSortButton().Dispose();
- Change();
- }
- private void miClear_Click(object sender, EventArgs e)
- {
- foreach (Base c in Designer.SelectedObjects)
- {
- if (c is TableCell)
- (c as TableCell).Text = "";
- }
- Change();
- }
- private void miMergeSplit_Click(object sender, EventArgs e)
- {
- TableCell topCell = Cell;
- if (miMergeSplit.Checked)
- {
- Rectangle rect = matrix.GetSelectionRect();
- // reset spans inside selection
- for (int x = 0; x < rect.Width; x++)
- {
- for (int y = 0; y < rect.Height; y++)
- {
- TableCell cell = matrix[x + rect.X, y + rect.Y];
- cell.ColSpan = 1;
- cell.RowSpan = 1;
- }
- }
- topCell.ColSpan = rect.Width;
- topCell.RowSpan = rect.Height;
- selection.Clear();
- selection.Add(topCell);
- }
- else
- {
- topCell.ColSpan = 1;
- topCell.RowSpan = 1;
- }
- Change();
- }
- protected override void Change()
- {
- if (!Designer.IsPreviewPageDesigner)
- {
- Matrix.BuildTemplate();
- Designer.ActiveReportTab.ActivePageDesigner.FillObjects(false);
- Matrix.FixParentHeight();
- }
- Designer.SetModified(Matrix, "Change");
- }
- public MatrixCellMenuBase(AdvMatrixObject matrix) : base(matrix.Report.Designer)
- {
- this.matrix = matrix;
- selection = Designer.SelectedObjects;
- miEdit = CreateMenuItem(68, Res.Get("ComponentMenu,Component,Edit"), miEdit_Click);
- miFormat = CreateMenuItem(168, Res.Get("ComponentMenu,TextObject,Format"), miFormat_Click);
- miHyperlink = CreateMenuItem(167, Res.Get("ComponentMenu,ReportComponent,Hyperlink"), miHyperlink_Click);
- miCollapseButton = CreateMenuItem(Res.Get("ComponentMenu,AdvMatrixHeader,CollapseButton"), miCollapseButton_Click);
- miCollapseButton.BeginGroup = true;
- miCollapseButton.CheckOnClick = true;
- miSortButton = CreateMenuItem(Res.Get("ComponentMenu,AdvMatrixHeader,SortButton"), miSortButton_Click);
- miSortButton.CheckOnClick = true;
- miClear = CreateMenuItem(82, Res.Get("ComponentMenu,TextObject,Clear"), miClear_Click);
- miClear.BeginGroup = true;
- miMergeSplit = CreateMenuItem(217, Res.Get("ComponentMenu,TableCell,Merge"), miMergeSplit_Click);
- miMergeSplit.CheckOnClick = true;
- Items.AddRange(new ContextMenuItem[] { miEdit, miFormat, miHyperlink, miCollapseButton, miSortButton, miClear, miMergeSplit });
- miEdit.Enabled = selection.Count == 1;
- miCollapseButton.Enabled = miEdit.Enabled && Cell.GetMatrixElement() != MatrixElement.Corner;
- miCollapseButton.Checked = Cell.GetCollapseButton() != null;
- miSortButton.Enabled = miEdit.Enabled;
- miSortButton.Checked = Cell.GetSortButton() != null;
- bool canJoin = selection.Count > 1;
- bool canSplit = selection.Count == 1 && (Cell.ColSpan > 1 || Cell.RowSpan > 1);
- miMergeSplit.Enabled = canJoin || canSplit;
- miMergeSplit.Checked = canSplit;
- if (miMergeSplit.Checked)
- miMergeSplit.Text = Res.Get("ComponentMenu,TableCell,Split");
- }
- }
- }
|