public void UpdatePages() { PreviewPages.Clear(); if (FLayoutLocked) { return; } for (int i = 0; i < PreparedPages.Count; i++) { SizeF pageSize = PreparedPages.GetPageSize(i); PreviewPages.AddPage(pageSize, Zoom); } PreviewPages.LayoutPages(Width - SystemInformation.VerticalScrollBarWidth); FLocked = false; UpdatePageNumbers(); Size maxSize = PreviewPages.GetMaxSize(); if (maxSize.Width > Width) { maxSize.Height += SystemInformation.HorizontalScrollBarHeight; } if (maxSize.Height > Height) { maxSize.Width += SystemInformation.VerticalScrollBarWidth; } AutoScrollMinSize = maxSize; SetPageNo(PageNo, false); Refresh(); }
public Dictionary(PreparedPages preparedPages) { this.preparedPages = preparedPages; names = new SortedList <string, DictionaryItem>(); //FNames = new SortedDictionary<string, DictionaryItem>(); baseNames = new Hashtable(); }
public void PositionTo(int pageNo, PointF point) { if (Disabled) { return; } RectangleF pageBounds = PreviewPages.GetPageBounds(pageNo - 1); ReportPage page = PreparedPages.GetCachedPage(pageNo - 1); Offset = new Point((int)Math.Round(pageBounds.Left + (page.LeftMargin * Units.Millimeters + point.X) * Zoom), (int)Math.Round(pageBounds.Top + (page.TopMargin * Units.Millimeters + point.Y) * Zoom) - 10); SetPageNo(pageNo, false); }
public PreviewTab(PreviewControl preview, PreparedPages preparedPages, string text) { FPreview = preview; FPreparedPages = preparedPages; FWorkspace = new PreviewWorkspace(this); FWorkspace.Dock = DockStyle.Fill; AttachedControl = FWorkspace; Text = text; Zoom = preview.Zoom; Style = preview.UIStyle; First(); }
public void RefreshReport() { FLocked = true; try { PreviewPages.Clear(); PreparedPages.ClearPageCache(); Report.InternalRefresh(); } finally { FLocked = false; } UpdatePages(); }
private void DrawPages(Graphics g) { if (Disabled) { return; } // draw visible pages int firstVisible = PreviewPages.FindFirstVisiblePage(Offset.Y); int lastVisible = PreviewPages.FindLastVisiblePage(Offset.Y + ClientSize.Height); for (int i = firstVisible; i <= lastVisible; i++) { Rectangle pageBounds = PreviewPages.GetPageBounds(i); pageBounds.Offset(-Offset.X, -Offset.Y); ReportPage page = PreparedPages.GetCachedPage(i); // draw shadow around page ShadowPaintInfo pi = new ShadowPaintInfo(); pi.Graphics = g; pi.Rectangle = new Rectangle(pageBounds.Left - 4, pageBounds.Top - 4, pageBounds.Width + 4, pageBounds.Height + 4); pi.Size = 5; ShadowPainter.Paint2(pi); // shift the origin because page.Draw draws at 0, 0 g.TranslateTransform((int)pageBounds.Left, (int)pageBounds.Top); FRPaintEventArgs e = new FRPaintEventArgs(g, Zoom, Zoom, GraphicCache); // draw page page.Draw(e); // draw search highlight if (SearchInfo != null && SearchInfo.Visible && SearchInfo.PageNo == i + 1) { page.DrawSearchHighlight(e, SearchInfo.ObjNo, SearchInfo.Ranges[SearchInfo.RangeNo]); } g.ResetTransform(); // draw border around active page if (i == PageNo - 1) { Pen borderPen = GraphicCache.GetPen(Preview.ActivePageBorderColor, 2, DashStyle.Solid); pageBounds.Inflate(-1, -1); g.DrawRectangle(borderPen, pageBounds); } } }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (Disabled) { return; } int pageNo = PreviewPages.FindPage(Offset.X + e.X, Offset.Y + e.Y); ReportPage page = PreparedPages.GetCachedPage(pageNo); Rectangle pageBounds = PreviewPages.GetPageBounds(pageNo); SetPageNo(pageNo + 1, false); Cursor = curHandMove; FLastMousePoint = e.Location; // reset page's NeedRefresh flag page.NeedRefresh = false; page.NeedModify = false; // generate mousedown event if (FActiveObject != null) { FActiveObject.OnMouseDown(new MouseEventArgs(e.Button, e.Clicks, (int)Math.Round((Offset.X + e.X - pageBounds.X) / Zoom - page.LeftMargin * Units.Millimeters - FActiveObject.AbsLeft), (int)Math.Round((Offset.Y + e.Y - pageBounds.Y) / Zoom - page.TopMargin * Units.Millimeters - FActiveObject.AbsTop), e.Delta)); } // reset search highlight if (SearchInfo != null && SearchInfo.Visible) { SearchInfo.Visible = false; Refresh(); } // modify and refresh the page if requested in the object's script if (page.NeedModify) { PreparedPages.ModifyPage(pageNo, page); } if (page.NeedRefresh) { Refresh(); } }
public PreparedPage(ReportPage page, PreparedPages preparedPages) { FPreparedPages = preparedPages; FXmlItem = new XmlItem(); // page == null when we load prepared report from a file if (page != null) { using (FRWriter writer = new FRWriter(FXmlItem)) { writer.SerializeTo = SerializeTo.Preview; writer.SaveChildren = false; writer.Write(page); } FPageSize = new SizeF(page.PaperWidth * Units.Millimeters, page.PaperHeight * Units.Millimeters); } }
public PreparedPage(ReportPage page, PreparedPages preparedPages) { this.preparedPages = preparedPages; xmlItem = new XmlItem(); // page == null when we load prepared report from a file if (page != null) { using (FRWriter writer = new FRWriter(xmlItem)) { writer.SerializeTo = SerializeTo.Preview; writer.SaveChildren = false; writer.Write(page); } pageSize = new SizeF(page.WidthInPixels, page.HeightInPixels); } }
internal void AddPreviewTab(PreparedPages pages, string text) { PreviewTab tab = new PreviewTab(this, pages, text); FDocuments.Add(tab); pages.ClearPageCache(); OutlineVisible = !pages.Outline.IsEmpty; tab.AddToTabControl(tabControl); tab.UnlockLayout(); UpdateTabsVisible(); tab.UpdatePages(); // do not stole the focus tabControl.TabStrip.AutoSelectAttachedControl = false; tabControl.SelectedTab = tab; tabControl.TabStrip.AutoSelectAttachedControl = true; if (FDocuments.Count == 2 && FDocuments[0].Fake) { DeleteTab(FDocuments[0]); } }
public PageCache(PreparedPages preparedPages) { this.preparedPages = preparedPages; pages = new List <CacheItem>(); }
public Dictionary(PreparedPages preparedPages) { FPreparedPages = preparedPages; FNames = new SortedList <string, DictionaryItem>(); FBaseNames = new Hashtable(); }
public SourcePages(PreparedPages preparedPages) { this.preparedPages = preparedPages; pages = new List <ReportPage>(); }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (Disabled) { return; } // find an object under mouse int pageNo = PreviewPages.FindPage(Offset.X + e.X, Offset.Y + e.Y); ReportPage page = PreparedPages.GetCachedPage(pageNo); Rectangle pageBounds = PreviewPages.GetPageBounds(pageNo); ReportComponentBase obj = page.HitTest(new PointF((Offset.X + e.X - pageBounds.X) / Zoom, (Offset.Y + e.Y - pageBounds.Y) / Zoom)); // reset page's NeedRefresh flag page.NeedRefresh = false; // generate mouse enter, mouseleave events if (obj != FActiveObject) { if (FActiveObject != null) { FActiveObject.OnMouseLeave(EventArgs.Empty); } if (obj != null) { obj.OnMouseEnter(EventArgs.Empty); } } FActiveObject = obj; // generate mousemove event if (FActiveObject != null) { FActiveObject.OnMouseMove(new MouseEventArgs(e.Button, e.Clicks, (int)Math.Round((Offset.X + e.X - pageBounds.X) / Zoom - page.LeftMargin * Units.Millimeters - FActiveObject.AbsLeft), (int)Math.Round((Offset.Y + e.Y - pageBounds.Y) / Zoom - page.TopMargin * Units.Millimeters - FActiveObject.AbsTop), e.Delta)); } string url = ""; Cursor cursor = Cursors.Default; if (obj != null) { cursor = obj.Cursor; url = obj.Hyperlink.Value; } Cursor = cursor == Cursors.Default ? (e.Button == MouseButtons.Left ? curHandMove : curHand) : cursor; Preview.UpdateUrl(url); if (e.Button == MouseButtons.Left) { Offset = new Point(Offset.X - (e.X - FLastMousePoint.X), Offset.Y - (e.Y - FLastMousePoint.Y)); FLastMousePoint = e.Location; } // refresh page if requested in the object's script if (page.NeedRefresh) { Refresh(); } }
public SourcePages(PreparedPages preparedPages) { FPreparedPages = preparedPages; FPages = new List <ReportPage>(); }
public PageCache(PreparedPages preparedPages) { FPreparedPages = preparedPages; FPages = new List <CacheItem>(); }
protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (Disabled) { return; } Cursor = curHand; // find object under mouse to invoke its PreviewClick event int pageNo = PreviewPages.FindPage(Offset.X + e.X, Offset.Y + e.Y); ReportPage page = PreparedPages.GetCachedPage(pageNo); Rectangle pageBounds = PreviewPages.GetPageBounds(pageNo); // reset NeedRefresh flag page.NeedRefresh = false; page.NeedModify = false; Report.NeedRefresh = false; // generate mouseup event if (FActiveObject != null) { FActiveObject.OnMouseUp(new MouseEventArgs(e.Button, e.Clicks, (int)Math.Round((Offset.X + e.X - pageBounds.X) / Zoom - page.LeftMargin * Units.Millimeters - FActiveObject.AbsLeft), (int)Math.Round((Offset.Y + e.Y - pageBounds.Y) / Zoom - page.TopMargin * Units.Millimeters - FActiveObject.AbsTop), e.Delta)); Hyperlink hyperlink = FActiveObject.Hyperlink; switch (hyperlink.Kind) { case HyperlinkKind.URL: try { Process.Start(hyperlink.Value); } catch { } break; case HyperlinkKind.PageNumber: PageNo = int.Parse(hyperlink.Value); break; case HyperlinkKind.Bookmark: Bookmarks.BookmarkItem bookmark = PreparedPages.Bookmarks.Find(hyperlink.Value); if (bookmark != null) { PositionTo(bookmark.PageNo + 1, new PointF(0, bookmark.OffsetY)); } break; case HyperlinkKind.DetailReport: // if detail report name is empty, refresh this report if (String.IsNullOrEmpty(hyperlink.DetailReportName)) { hyperlink.SetParameters(Report); Report.NeedRefresh = true; } else { // open a new report. check if such tab is opened already if (!Preview.SwitchToTab(hyperlink.Value)) { FLocked = true; try { using (Report report = hyperlink.GetReport(true)) { report.Prepare(); Preview.AddPreviewTab(report.PreparedPages, hyperlink.Value); report.SetPreparedPages(null); } } finally { FLocked = false; } } } break; case HyperlinkKind.DetailPage: ReportPage reportPage = Report.FindObject(hyperlink.DetailPageName) as ReportPage; if (reportPage != null) { hyperlink.SetParameters(Report); // check if such tab is opened already if (!Preview.SwitchToTab(hyperlink.Value)) { FLocked = true; Preview.Lock(); PreparedPages pages = new PreparedPages(Report); try { Report.SetPreparedPages(pages); Report.PreparePage(reportPage); } finally { FLocked = false; Preview.Unlock(); Preview.AddPreviewTab(pages, hyperlink.Value); } } } break; } FActiveObject.OnClick(EventArgs.Empty); } // modify and refresh the page if requested in the object's script if (page.NeedModify) { PreparedPages.ModifyPage(pageNo, page); } if (page.NeedRefresh) { Refresh(); } if (Report.NeedRefresh) { bool saveShowProgress = Config.ReportSettings.ShowProgress; Config.ReportSettings.ShowProgress = false; RefreshReport(); Config.ReportSettings.ShowProgress = saveShowProgress; } }