/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="view">Parent view.</param>
        /// <param name="buttonsPanel">Buttons parent element.</param>
        public ViewButtonsMarginUpdater(DockableContent view, FrameworkElement buttonsPanel)
        {
            _view = view;
            _buttonsPanel = buttonsPanel;

            view.LayoutUpdated += new EventHandler(_ViewLayoutUpdated);

            _defaultMargin = (Thickness)App.Current.FindResource(VIEW_BUTTONS_STACK_MARGIN_RESOURCE);
        }
        /// <summary>
        /// Create overlay dockable pane
        /// </summary>
        /// <param name="dockManager">Dock manager</param>
        /// <param name="content">Content to manage</param>
        public OverlayDockablePane(DockableContent content)
            : base(content)
        {
            _contentReferenced = content;

            Show();

            _state = PaneState.Hidden;
        }
        /// <summary>
        /// Set content
        /// </summary>
        /// <param name="content">New content</param>
        private void _SetContent(DockableContent content)
        {
            Debug.Assert(null != content);
            Debug.Assert(null == _content);

            if (null == _content)
                StoreFloatingWindowDimensions(content);

            content.DockManager.Add(content);
            content.ContainerPane = this;
            _content = content;
        }
        /// <summary>
        /// Create pane with content
        /// </summary>
        /// <param name="content">Content</param>
        public DockablePane(DockableContent content)
        {
            InitializeComponent();

            Debug.Assert(null != content);

            _SetContent(content);
        }
 /// <summary>
 /// Remove a dockable content from internal contents list.
 /// </summary>
 /// <param name="content">Content to remove.</param>
 public void Remove(DockableContent content)
 {
     _contents.Remove(content);
 }
 ///////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////
 /// <summary>
 /// Add dockable content to layout management.
 /// </summary>
 /// <param name="content">Content to manage.</param>
 public void Add(DockableContent content)
 {
     if (!_contents.Contains(content))
         _contents.Add(content);
 }
Exemple #7
0
        private void CreateOrUnhideDockableContent(ContentTypes contentType, string title, string viewPropertyName, object parent)
        {
            if (!this.dockableContents.Keys.Contains(contentType))
            {
                DockableContent dockableContent = new DockableContent();

                ContentControl contentControl = new ContentControl();

                dockableContent.IsCloseable = true;
                dockableContent.HideOnClose = false;

                dockableContent.Title = title;

                dockableContent.Content = contentControl;

                if (parent is ResizingPanel)
                {
                    DockablePane dockablePane = new DockablePane();
                    dockablePane.Items.Add(dockableContent);
                    ResizingPanel resizingPanel = parent as ResizingPanel;

                    switch (contentType)
                    {
                    case ContentTypes.PropertyInspector:
                        resizingPanel.Children.Add(dockablePane);
                        ResizingPanel.SetResizeWidth(dockablePane, new GridLength(300));
                        break;

                    case ContentTypes.Outline:
                        resizingPanel.Children.Insert(1, dockablePane);
                        ResizingPanel.SetResizeWidth(dockablePane, new GridLength(250));
                        break;

                    case ContentTypes.Toolbox:
                        resizingPanel.Children.Insert(0, dockablePane);
                        ResizingPanel.SetResizeWidth(dockablePane, new GridLength(250));
                        break;
                    }
                }
                else if (parent is DockablePane)
                {
                    DockablePane dockablePane = parent as DockablePane;
                    dockablePane.Items.Add(dockableContent);
                    if (dockablePane.Parent == null)
                    {
                        this.verticalResizingPanel.Children.Add(dockablePane);
                    }
                }

                Binding dataContextBinding = new Binding(viewPropertyName);
                dockableContent.SetBinding(DockableContent.DataContextProperty, dataContextBinding);

                Binding contentBinding = new Binding(".");
                contentControl.SetBinding(ContentControl.ContentProperty, contentBinding);

                this.dockableContents[contentType] = dockableContent;

                dockableContent.Closed += delegate(object sender, EventArgs args)
                {
                    contentControl.Content = null;
                    this.dockableContents[contentType].DataContext = null;
                    this.dockableContents.Remove(contentType);
                };
            }
            else
            {
                if (this.dockableContents[contentType].State == DockableContentState.Hidden)
                {
                    this.dockableContents[contentType].Show();
                }
            }
        }