123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using FastReport.Design;
- using FastReport.Utils;
- using FastReport.Table;
- using FastReport.Forms;
- using System.Drawing;
- namespace FastReport.Matrix
- {
- internal class MatrixCellMenuBase : TableMenuBase
- {
- private MatrixObject matrix;
- private MatrixElement element;
- private MatrixDescriptor descriptor;
- private SelectedObjectCollection selection;
- private TableCell topCell;
- public ContextMenuItem miEdit;
- public ContextMenuItem miFormat;
- public ContextMenuItem miHyperlink;
- public ContextMenuItem miClear;
- public ContextMenuItem miMergeSplit;
- public ContextMenuItem miDelete;
- public MatrixObject Matrix
- {
- get { return matrix; }
- }
- public MatrixElement Element
- {
- get { return element; }
- }
- public MatrixDescriptor Descriptor
- {
- get { return descriptor; }
- }
- 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 (Element == 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 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)
- {
- 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();
- }
- private void miDelete_Click(object sender, EventArgs e)
- {
- if ((Element == MatrixElement.Column || Element == MatrixElement.Row) &&
- (Descriptor as MatrixHeaderDescriptor).TemplateTotalCell == Cell)
- {
- (Descriptor as MatrixHeaderDescriptor).Totals = false;
- }
- else
- {
- switch (Element)
- {
- case MatrixElement.Column:
- Matrix.Data.Columns.Remove(Descriptor as MatrixHeaderDescriptor);
- break;
- case MatrixElement.Row:
- Matrix.Data.Rows.Remove(Descriptor as MatrixHeaderDescriptor);
- break;
- case MatrixElement.Cell:
- Matrix.Data.Cells.Remove(Descriptor as MatrixCellDescriptor);
- break;
- }
- }
- Change();
- }
- protected override void Change()
- {
- Matrix.BuildTemplate();
- Designer.SetModified(Matrix, "Change");
- }
- public MatrixCellMenuBase(MatrixObject matrix, MatrixElement element, MatrixDescriptor descriptor) :
- base(matrix.Report.Designer)
- {
- this.matrix = matrix;
- this.element = element;
- this.descriptor = descriptor;
- selection = Designer.SelectedObjects;
- topCell = Cell;
- miEdit = CreateMenuItem(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);
- miDelete = CreateMenuItem(51, Res.Get("Designer,Menu,Edit,Delete"), miDelete_Click);
- miDelete.BeginGroup = true;
- miClear = CreateMenuItem(82, Res.Get("ComponentMenu,TextObject,Clear"), miClear_Click);
- miMergeSplit = CreateMenuItem(217, Res.Get("ComponentMenu,TableCell,Merge"), miMergeSplit_Click);
- miMergeSplit.CheckOnClick = true;
- Items.AddRange(new ContextMenuItem[] { miEdit, miFormat, miHyperlink, miDelete, miClear, miMergeSplit });
- bool enabled = selection.Count == 1;
- miEdit.Enabled = enabled;
- miDelete.Enabled = enabled && descriptor != null && !matrix.IsAncestor;
- bool canJoin = selection.Count > 1;
- bool canSplit = selection.Count == 1 && topCell != null && (topCell.ColSpan > 1 || topCell.RowSpan > 1);
- miMergeSplit.Enabled = canJoin || canSplit;
- miMergeSplit.Checked = canSplit;
- if (miMergeSplit.Checked)
- miMergeSplit.Text = Res.Get("ComponentMenu,TableCell,Split");
- }
- }
- }
|