using System.Drawing;
using System.Windows.Forms;
using FastReport.Utils;
namespace FastReport
{
partial class ContainerObject
{
#region Public Methods
///
public override void DrawSelection(FRPaintEventArgs e)
{
base.DrawSelection(e);
if (Report == null)
return;
float m = Report.Designer.DpiMultiplier();
e.Graphics.DrawImage(Report.Designer.GetImage(75), (int)(AbsLeft * e.ScaleX + 8 * m), (int)(AbsTop * e.ScaleY - 8 * m));
}
///
public override void HandleMouseDown(FRMouseEventArgs e)
{
HandleMouseHover(e);
if (e.handled)
e.mode = WorkspaceMode2.Move;
else
{
base.HandleMouseDown(e);
if (e.handled)
{
if (e.modifierKeys != Keys.Shift)
{
e.mode = WorkspaceMode2.SelectionRect;
e.activeObject = this;
}
}
}
}
///
public override void HandleMouseHover(FRMouseEventArgs e)
{
if (IsSelected)
{
float m = 1 / Report.Designer.Zoom;
if (new RectangleF(AbsLeft + 8 * m, AbsTop - 8 * m, 16 * m, 16 * m).Contains(new PointF(e.x, e.y)))
{
e.handled = true;
e.cursor = Cursors.SizeAll;
}
}
}
///
public override void HandleMouseUp(FRMouseEventArgs e)
{
base.HandleMouseUp(e);
if (e.activeObject == this && e.mode == WorkspaceMode2.SelectionRect)
{
ObjectCollection selectedList = new ObjectCollection();
// find objects inside the selection rect
foreach (ReportComponentBase c in Objects)
{
e.handled = false;
c.HandleMouseUp(e);
// object is inside
if (e.handled)
selectedList.Add(c);
}
if (selectedList.Count > 0)
selectedList.CopyTo(Report.Designer.SelectedObjects);
}
}
#endregion
}
}