public BaseDockableContent(object rootModel, object view, DockArea dockArea, bool isDocument = false) { var dockableContent = view as BaseDockableContent; if (dockableContent != null) { Content = view; IsCloseable = dockableContent.IsCloseable; HideOnClose = dockableContent.HideOnClose; Model = dockableContent.Model; DockArea = dockableContent.DockArea; DockableStyle = DockableStyle.Dockable; //DockableStyle = dockableContent.DockableStyle; DataContext = rootModel; } else { var fe = view as FrameworkElement; if ((fe != null) && (fe.Parent != null)) { var parent = fe.Parent as BaseDockableContent; if (parent != null) { parent.Content = null; } } Content = view; IsCloseable = true; HideOnClose = false; Model = rootModel; DockArea = dockArea; DockableStyle = DockableStyle.Dockable; //DockableStyle = isDocument ? DockableStyle.Document : DockableStyle.Dockable; DataContext = rootModel; //dockableContent.IsCloseable = viewModel.CanClose; //Image img = new Image(); //img.Source = new BitmapImage(new Uri(@"Resources/Data.png", UriKind.Relative)); //dockableContent.Icon = img.Source; } }
public ContentArea(DockArea dockArea) { DockArea = dockArea; //DockingManager = new DockingManager { Name = dockArea.ToString() }; DockableContentList = new List <DockableContent>(); DockablePane = new DockablePane { Name = dockArea.ToString(), HorizontalAlignment = HorizontalAlignment.Stretch, HorizontalContentAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, VerticalContentAlignment = VerticalAlignment.Stretch, // ItemsSource = DockableContentList }; //DockableContentPane = new DockableContent { Content = DockablePane, Name = dockArea.ToString() }; //DockableContent = new ContainerDockableContent //{ // //Name = DockingManager.Name, // //Title = DockingManager.Name, // //Content = DockingManager, // Focusable = true, // DockableStyle = DockableStyle.Dockable, // HideOnClose = false, // DockArea = dockArea, // HorizontalAlignment = HorizontalAlignment.Stretch, // HorizontalContentAlignment = HorizontalAlignment.Stretch, // VerticalAlignment = VerticalAlignment.Stretch, // VerticalContentAlignment = VerticalAlignment.Stretch //}; DockablePane.SetValue(DockablePane.AnchorPropertyKey, AnchorStyle.Bottom); //DockablePane.Items.Add(DockableContent); }
public void ShowDockedWindow(object viewModel, DockArea dockArea, object context = null, bool selectWhenShown = true, DockSide dockSide = DockSide.Left, double startupVisibleWidth = -1, bool hideOnClose = false, bool isCloseable = true) { var dockingManager = GetDockingManager(); var anchor = GetAnchorStyle(dockSide); // TODO //if (anchor == AnchorStyle.Left && dockArea != DockArea.Master) //{ // var istview = IoC.Get<FacilitiesViewModel>(); // var instdockable = GetDockable(istview, null, DockArea.Master); // instdockable.Show(dockingManager, anchor); //} var dockableContent = GetDockable(viewModel, context, dockArea); dockableContent.HideOnClose = hideOnClose; dockableContent.IsCloseable = isCloseable; dockableContent.Show(dockingManager, anchor); if (startupVisibleWidth >= 0) { var width = new GridLength(startupVisibleWidth); ResizingPanel.SetResizeWidth(dockableContent.ContainerPane, width); } if (selectWhenShown) { dockableContent.Activate(); } //else // dockableContent.ToggleAutoHide(); }
public Vector4 GetArea( DockArea area ) { Vector4 dims = new Vector4(); int d = (int)area.MainArea; if( !_dockAreaList[d].ContainsValue( area ) ) { Debug.LogError( "Area '" + area.name + "' not registered." ); return dims; } int count = _dockAreaList[d].Count; if( area.MainArea == Dockable.Center ) { dims.x = Screen.width - ( _dockAreas[(int)Dockable.Left].TotalValue + _dockAreas[(int)Dockable.Right].TotalValue ); dims.y = Screen.height - ( _dockAreas[(int)Dockable.Top].TotalValue + _dockAreas[(int)Dockable.Bottom].TotalValue ); dims.z = ( _dockAreas[(int)Dockable.Left].TotalValue - _dockAreas[(int)Dockable.Right].TotalValue ) / 2.0f; dims.w = ( _dockAreas[(int)Dockable.Bottom].TotalValue - _dockAreas[(int)Dockable.Top].TotalValue ) / 2.0f; // TODO: Configure multiple docks in center } else if( area.MainArea == Dockable.Left || area.MainArea == Dockable.Right ) { dims.x = _dockAreas[(int)area.MainArea].TotalValue; dims.y = Screen.height - ( _dockAreas[(int)Dockable.Top].TotalValue + _dockAreas[(int)Dockable.Bottom].TotalValue ); if( area.MainArea == Dockable.Left ) dims.z = dims.x / 2; else if( area.MainArea == Dockable.Right ) dims.z = ( -dims.x ) / 2; dims.w = ( _dockAreas[(int)Dockable.Bottom].TotalValue - _dockAreas[(int)Dockable.Top].TotalValue ) / 2.0f; foreach( DockCorners dc in area.Corners ) { if( dc == DockCorners.TopLeft || dc == DockCorners.TopRight ) { dims.y += _dockAreas[(int)Dockable.Top].TotalValue; dims.w += _dockAreas[(int)Dockable.Top].TotalValue / 2; } else if( dc == DockCorners.BottomLeft || dc == DockCorners.BottomRight ) { dims.y += _dockAreas[(int)Dockable.Bottom].TotalValue; dims.w -= _dockAreas[(int)Dockable.Bottom].TotalValue / 2; } } dims.y /= count; dims.w += ( ( ( count / 2.0f ) - 0.5f ) - _dockAreaList[d].IndexOfValue( area ) ) * dims.y; } else if( area.MainArea == Dockable.Top || area.MainArea == Dockable.Bottom ) { dims.x = Screen.width - ( _dockAreas[(int)Dockable.Left].TotalValue + _dockAreas[(int)Dockable.Right].TotalValue ); dims.y = _dockAreas[(int)area.MainArea].TotalValue; if( area.MainArea == Dockable.Top ) dims.w = ( -dims.y ) / 2; else if( area.MainArea == Dockable.Bottom ) dims.w = dims.y / 2; dims.z = ( _dockAreas[(int)Dockable.Left].TotalValue - _dockAreas[(int)Dockable.Right].TotalValue ) / 2.0f; foreach( DockCorners dc in area.Corners ) { if( dc == DockCorners.TopLeft || dc == DockCorners.BottomLeft ) { dims.x += _dockAreas[(int)Dockable.Left].TotalValue; dims.z -= _dockAreas[(int)Dockable.Left].TotalValue / 2; } else if( dc == DockCorners.TopRight || dc == DockCorners.BottomRight ) { dims.x += _dockAreas[(int)Dockable.Right].TotalValue; dims.z += _dockAreas[(int)Dockable.Right].TotalValue / 2; } } dims.x /= count; dims.z += ( ( ( count / 2.0f ) - 0.5f ) - _dockAreaList[d].IndexOfValue( area ) ) * dims.x; } return dims; }
public void UnregisterArea( DockArea area ) { int d = (int)area.MainArea; if( _dockAreaList[d].ContainsValue( area ) ) _dockAreaList[d].RemoveAt( _dockAreaList[d].IndexOfValue( area ) ); }
public void RegisterArea( DockArea area ) { int d = (int)area.MainArea; if( !_dockAreaList[d].ContainsValue( area ) ) _dockAreaList[d].Add( area.Weight, area ); }
public void CheckAreas(DockingManager dockingManager) { if (dockingManager == null) { dockingManager = GetDockingManager(); } var newdocumentsarea = dockingManager.MainDocumentPane.HasItems ? dockingManager.MainDocumentPane.Items.Cast <BaseDockableContent>().First().DockArea : DockArea.Master; var docked = dockingManager.DockableContents.Cast <BaseDockableContent>() .Where(d => d.DockArea != DockArea.Master && d.DockArea != _documentArea) .Where(c => c.Title != "Jacket Navigation") .Select(s => s.DockArea) .Distinct() .ToList(); // nothing has changed if (_documentArea == newdocumentsarea && _openMenuItems.Count(m => m != DockArea.Master) == docked.Count) { return; } var prevjacketnav = _openMenuItems.Contains(DockArea.PrepareJackets); _documentArea = newdocumentsarea; if (_documentArea == DockArea.Master && docked.Any()) { _documentArea = docked.First(); //var tomove = dockingManager.DockableContents.Cast<BaseDockableContent>() // .Where(d => d.DockArea == _documentArea && // d.Title != "Jacket Navigation").ToList(); var tomove = dockingManager.DockableContents.Cast <BaseDockableContent>() .Where(d => d.DockArea == _documentArea) .ToList(); foreach (var dockableContent in tomove) { try { dockableContent.ShowAsDocument(dockingManager); } // see bug 3116 catch (InvalidOperationException ex) { if (ex.Message.Contains("Cannot set Visibility to Visible")) { continue; } throw; } } docked.Remove(_documentArea); } _openMenuItems.Clear(); _openMenuItems.Add(_documentArea); _openMenuItems.AddRange(docked); // TODO //if (prevjacketnav && !_openMenuItems.Contains(DockArea.PrepareJackets)) //{ // var jacketnavview = IoC.Get<JacketNavigationViewModel>(); // var dockablecontent = FindDockableContent(jacketnavview); // if (dockablecontent != null) // { // dockablecontent.IsCloseable = true; // dockablecontent.Close(); // } // var istview = IoC.Get<FacilitiesViewModel>(); // HideDockWindow(istview); //} //var eventAggregator = IoC.Get<IEventAggregator>(); //eventAggregator.PublishOnUIThread(new OpenMenuItemsChangedEvent(_openMenuItems)); }
public void ClearOpenMenuItems() { _openMenuItems.Clear(); _documentArea = DockArea.Master; }
//MEF constructor public DockWindowManager() { _documentArea = DockArea.Master; _openMenuItems = new List <DockArea>(); }
public void ShowDocumentWindow(object viewModel, object context = null, bool selectWhenShown = true, DockArea dockArea = DockArea.Master) { var dockingManager = GetDockingManager(); var dockableContent = GetDockable(viewModel, context, dockArea, true); ShowWindowInLocation(dockArea, dockingManager, dockableContent); }
void OnNodeSelected(object sender, SelectionChangedEventArgs e) { UpdateHistoryButtons(); IView[] newViews; if (e.Selection == null) { newViews = new IView[0]; } else if (!e.Selection.ShowViews) { return; } else { newViews = Views.LocateViews(e.Selection).ToArray(); } var newActualViews = new Dictionary <IView, DockContent>(); foreach (var view in newViews) { DockContent content; if (!currentViews.TryGetValue(view, out content)) { content = new DockContent { HideOnClose = true, CloseButtonVisible = false, CloseButton = false }; content.DockHandler.ActivateOnShow = false; view.ViewControl.Dock = DockStyle.Fill; UpdateViewContainer(e.Selection.Node, view, content); content.Controls.Add(view.ViewControl); Modules.Activate(); } newActualViews.Add(view, content); } DockArea.SuspendLayout(true); IDockContent activeView = null; if (currentViews.Count > 0) { activeView = currentViews.Values.First().PanelPane.ActiveContent; } if (!newActualViews.Values.Contains(activeView)) { activeView = null; } foreach (var view in newActualViews) { view.Key.Model = e.Selection; view.Value.Show(DockArea, DockState.Document); if (activeView == null) { activeView = view.Value; } } foreach (var prevView in currentViews) { if (!newActualViews.ContainsKey(prevView.Key)) { prevView.Value.Hide(); prevView.Key.Model = null; } else { UpdateViewContainer(e.Selection.Node, prevView.Key, prevView.Value); } } currentViews = newActualViews; if (activeView != null) { activeView.DockHandler.PanelPane.ActiveContent = activeView; } Modules.Activate(); DockArea.ResumeLayout(true, true); }
void MainFormFormClosing(object sender, FormClosingEventArgs e) { DockArea.SaveAsXml("LaserGRBL.Docking.xml"); Core.CloseCom(); }
public DockRegionState(DockArea area, Size size) : this(area) { Size = size; }
public DockRegionState(DockArea area) : this() { Area = area; }
public CrownDockTabArea(DockArea dockArea) { DockArea = dockArea; }
public ContentArea(DockingManager manager, DockArea dockArea) : this(dockArea) { DockingManager = manager; }