using FastReport.Design.ToolWindows; using FastReport.DevComponents.DotNetBar; using FastReport.Utils; using System; using System.Drawing; using System.Windows.Forms; namespace FastReport.Design { public partial class Designer { private DotNetBarManager dotNetBarManager; private DockSite bottomDockSite; private DockSite leftDockSite; private DockSite rightDockSite; private DockSite topDockSite; private DockSite tbLeftDockSite; private DockSite tbRightDockSite; private DockSite tbTopDockSite; private DockSite tbBottomDockSite; private FastReport.DevComponents.DotNetBar.TabControl tabs; internal DotNetBarManager DotNetBarManager { get { return dotNetBarManager; } } private void UpdateDpiDependenciesInternal() { } private void LocalizeInternal() { } private void UpdateUIStyleInternal() { switch (UIStyle) { case UIStyle.Office2003: case UIStyle.Office2007Blue: case UIStyle.Office2010Blue: StyleManager.ChangeStyle(eStyle.Office2010Blue, Color.Empty); break; case UIStyle.Office2007Silver: case UIStyle.Office2010Silver: StyleManager.ChangeStyle(eStyle.Office2010Silver, Color.Empty); break; case UIStyle.Office2007Black: case UIStyle.Office2010Black: StyleManager.ChangeStyle(eStyle.Office2010Black, Color.Empty); break; case UIStyle.Office2013: StyleManager.ChangeStyle(eStyle.Office2013, Color.Empty); break; case UIStyle.VisualStudio2005: case UIStyle.VisualStudio2010: StyleManager.ChangeStyle(eStyle.VisualStudio2010Blue, Color.Empty); break; case UIStyle.VisualStudio2012Light: StyleManager.ChangeStyle(eStyle.VisualStudio2012Light, Color.Empty); break; case UIStyle.VistaGlass: StyleManager.ChangeStyle(eStyle.Windows7Blue, Color.Empty); break; } dotNetBarManager.Style = UIStyleUtils.GetDotNetBarStyle(UIStyle); } private void InitPluginsInternal() { SuspendLayout(); InitPlugins(); foreach (Type pluginType in DesignerPlugins.Plugins) { IDesignerPlugin plugin = plugins.Add(pluginType); if (plugin is ToolWindowBase) (plugin as ToolWindowBase).DoDefaultDock(); } ResumeLayout(); } private void UpdateMdiMode() { tabs.TabsVisible = mdiMode; if (mdiMode) AddStartPageTab(); else if (StartPage != null) StartPage.Close(); } private void FTabs_SelectedTabChanged(object sender, TabStripTabChangedEventArgs e) { if (e.NewTab is DocumentWindow) { if (e.NewTab is StartPageTab) ActiveReportTab = null; else ActiveReportTab = e.NewTab as ReportTab; } } private void FTabs_TabItemClose(object sender, TabStripActionEventArgs e) { if (tabs.SelectedTab is ReportTab) { ReportTab tab = tabs.SelectedTab as ReportTab; if (!CloseDocument(tab)) { return; } } else if (tabs.SelectedTab is StartPageTab) { StartPageTab tab = tabs.SelectedTab as StartPageTab; if (!CloseDocument(tab)) { return; } } if (Documents.Count > 0) { Documents[Documents.Count - 1].Activate(); } else { ClearSelection(); } } private void InitRightToLeft() { RightToLeft = Config.RightToLeft ? RightToLeft.Yes : RightToLeft.No; objectsToolbar.DockSide = Config.RightToLeft ? eDockSide.Right : eDockSide.Left; } private void InitTools() { BarUtilities.UseTextRenderer = true; // docking tabs = new FastReport.DevComponents.DotNetBar.TabControl(); tabs.Dock = DockStyle.Fill; tabs.TabLayoutType = eTabLayoutType.FixedWithNavigationBox; tabs.AutoHideSystemBox = false; tabs.CloseButtonOnTabsVisible = true; tabs.ControlTabNavigationEnabled = false; tabs.SelectedTabChanged += new TabStrip.SelectedTabChangedEventHandler(FTabs_SelectedTabChanged); tabs.TabItemClose += new TabStrip.UserActionEventHandler(FTabs_TabItemClose); Controls.Add(tabs); dotNetBarManager = new DotNetBarManager(); leftDockSite = new DockSite(); rightDockSite = new DockSite(); topDockSite = new DockSite(); bottomDockSite = new DockSite(); tbLeftDockSite = new DockSite(); tbRightDockSite = new DockSite(); tbTopDockSite = new DockSite(); tbBottomDockSite = new DockSite(); // // dotNetBarManager // dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.F1); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.CtrlC); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.CtrlA); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.CtrlV); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.CtrlX); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.CtrlZ); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.CtrlY); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.Del); dotNetBarManager.AutoDispatchShortcuts.Add(eShortcut.Ins); dotNetBarManager.DefinitionName = ""; dotNetBarManager.EnableFullSizeDock = false; dotNetBarManager.ShowCustomizeContextMenu = false; dotNetBarManager.LeftDockSite = leftDockSite; dotNetBarManager.RightDockSite = rightDockSite; dotNetBarManager.TopDockSite = topDockSite; dotNetBarManager.BottomDockSite = bottomDockSite; dotNetBarManager.ToolbarLeftDockSite = tbLeftDockSite; dotNetBarManager.ToolbarRightDockSite = tbRightDockSite; dotNetBarManager.ToolbarTopDockSite = tbTopDockSite; dotNetBarManager.ToolbarBottomDockSite = tbBottomDockSite; // // leftDockSite // leftDockSite.Dock = DockStyle.Left; leftDockSite.DocumentDockContainer = new DocumentDockContainer(); leftDockSite.Name = "leftDockSite"; // // rightDockSite // rightDockSite.Dock = DockStyle.Right; rightDockSite.DocumentDockContainer = new DocumentDockContainer(); rightDockSite.Name = "rightDockSite"; // // topDockSite // topDockSite.Dock = DockStyle.Top; topDockSite.DocumentDockContainer = new DocumentDockContainer(); topDockSite.Name = "topDockSite"; // // bottomDockSite // bottomDockSite.Dock = DockStyle.Bottom; bottomDockSite.DocumentDockContainer = new DocumentDockContainer(); bottomDockSite.Name = "bottomDockSite"; // // tbLeftDockSite // tbLeftDockSite.Dock = DockStyle.Left; tbLeftDockSite.Name = "tbLeftDockSite"; // // tbRightDockSite // tbRightDockSite.Dock = DockStyle.Right; tbRightDockSite.Name = "tbRightDockSite"; // // tbTopDockSite // tbTopDockSite.Dock = DockStyle.Top; tbTopDockSite.Name = "tbTopDockSite"; // // tbBottomDockSite // tbBottomDockSite.Dock = DockStyle.Bottom; tbBottomDockSite.Name = "tbBottomDockSite"; Controls.Add(leftDockSite); Controls.Add(rightDockSite); Controls.Add(topDockSite); Controls.Add(bottomDockSite); Controls.Add(tbLeftDockSite); Controls.Add(tbRightDockSite); Controls.Add(tbTopDockSite); Controls.Add(tbBottomDockSite); // create tools objectsToolbar = new ObjectsToolbar(this); dataWindow = new DictionaryWindow(this); propertiesWindow = new PropertiesWindow(this); reportTreeWindow = new ReportTreeWindow(this); messagesWindow = new MessagesWindow(this); // do default layout dataWindow.DockTo(rightDockSite); reportTreeWindow.DockTo(dataWindow); propertiesWindow.DockTo(rightDockSite, dataWindow, eDockSide.Bottom); messagesWindow.DockTo(bottomDockSite); messagesWindow.Bar.AutoHide = true; messagesWindow.Hide(); rightDockSite.Width = 250; leftDockSite.MouseUp += dockSite_MouseUp; rightDockSite.MouseUp += dockSite_MouseUp; topDockSite.MouseUp += dockSite_MouseUp; bottomDockSite.MouseUp += dockSite_MouseUp; dotNetBarManager.AutoHideChanged += LayoutChanged; dotNetBarManager.BarDock += LayoutChanged; dataWindow.VisibleChanged += LayoutChanged; propertiesWindow.VisibleChanged += LayoutChanged; reportTreeWindow.VisibleChanged += LayoutChanged; messagesWindow.VisibleChanged += LayoutChanged; } /// protected override void OnParentChanged(EventArgs e) { base.OnParentChanged(e); dotNetBarManager.ParentForm = FindForm(); if (DesignMode) DisableFloatingBars(); } private void SaveDockState(XmlItem root) { XmlItem xi = root.FindItem("Designer").FindItem("DockRibbon"); xi.SetProp("Text", dotNetBarManager.LayoutDefinition); } private void RestoreDockState(XmlItem root) { XmlItem xi = root.FindItem("Designer").FindItem("DockRibbon"); string s = xi.GetProp("Text"); if (s != "") { // clear toolbar's DockLine property to restore position correctly foreach (Bar bar in dotNetBarManager.Bars) { if (bar.BarType == eBarType.Toolbar) bar.DockLine = 0; } dotNetBarManager.LayoutDefinition = s; foreach (Bar bar in dotNetBarManager.Bars) { // fix issue with ReportTree window (wrong font scaling when undocked from DataTree) bar.Font = null; } } } private void DisableFloatingBars() { foreach (Bar bar in dotNetBarManager.Bars) { bar.CanUndock = false; } } private void dockSite_MouseUp(object sender, MouseEventArgs e) { LayoutChanged(sender, EventArgs.Empty); } internal void LayoutChanged(object sender, EventArgs e) { if (DesignMode && !initFlag) { if (LayoutChangedEvent != null) LayoutChangedEvent(this, EventArgs.Empty); } } } }