예제 #1
0
        /// <summary>
        /// Dock the new content next to content</summary>
        /// <param name="nextTo">Dock content to add new content next to</param>
        /// <param name="newContent">New content to be docked</param>
        /// <param name="dockTo">Side of nextTo content where new content should be docked</param>
        public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
        {
            TabLayout tabLayout = newContent as TabLayout;

            if (tabLayout != null)
            {
                IEnumerator <DockContent> contentEnumerator = tabLayout.Children.GetEnumerator();
                while (contentEnumerator.MoveNext())
                {
                    DockContent content = contentEnumerator.Current;
                    tabLayout.RemoveItem(content);
                    AddOneItem((DockContent)nextTo, content);
                    contentEnumerator = tabLayout.Children.GetEnumerator();
                }
            }
            else
            {
                AddOneItem((DockContent)nextTo, newContent as DockContent);
            }
            Focus();
            UpdateLayout();
        }
예제 #2
0
        /// <summary>
        /// Constructor used when window is created as consequence to user interaction.
        /// </summary>
        /// <param name="root">Parent dock panel</param>
        /// <param name="content">Content to host</param>
        /// <param name="origin">Origin, position on screen</param>
        /// <param name="size">Size of window</param>
        public FloatingWindow(DockPanel root, IDockContent content, Point origin, Size size)
            : this(root)
        {
            Left = origin.X;
            Top = origin.Y;
            Width = size.Width;
            Height = size.Height;
            if (content is TabLayout)
            {
                DockedContent = (TabLayout)content;
            }
            else
            {
                DockedContent = new TabLayout(Root);
                DockedContent.Dock(null, content, DockTo.Center);
            }
            foreach (DockContent subContent in DockedContent.Children)
            {
                subContent.Settings.DockState = DockState.Floating;				
            }
            Content = DockedContent;

            Binding b = new Binding("Header");
            b.Source = DockedContent;
            SetBinding(Window.TitleProperty, b);
        }
예제 #3
0
파일: DockedWindow.cs 프로젝트: GeertVL/ATF
 /// <summary>
 /// Generate object from its XML representation</summary>
 /// <param name="reader">XmlReader stream from which object is deserialized</param>
 public void ReadXml(System.Xml.XmlReader reader)
 {
     if (reader.ReadToFollowing(this.GetType().Name))
     {
         reader.ReadStartElement();
         if (reader.LocalName == typeof(TabLayout).Name || reader.LocalName == "MultiContent") // MultiContent is old name and is used here for compatibility with old saved layouts
         {
             DockedContent = new TabLayout(Root, reader.ReadSubtree());
             Content = DockedContent;
             reader.ReadEndElement();
         }
         reader.ReadEndElement();
     }
 }
예제 #4
0
        public void ReadXml(System.Xml.XmlReader reader)
        {
            if (reader.ReadToFollowing(this.GetType().Name))
            {
                reader.ReadStartElement(this.GetType().Name);
                if (reader.LocalName == typeof(TabLayout).Name || reader.LocalName == "MultiContent") // MultiContent is old name and is used here for compatibility with old saved layouts
                {
                    DockedContent = new TabLayout(Root, reader.ReadSubtree());
                    if (DockedContent.Children.Count > 0)
                    {
                        ContentSettings contentSettings = DockedContent.Children[0].Settings;
                        Left = contentSettings.Location.X;
                        Top = contentSettings.Location.Y;
                        Width = contentSettings.Size.Width;
                        Height = contentSettings.Size.Height;

                        Left = Math.Max(0, Math.Min(Left, SystemParameters.VirtualScreenWidth - Width));
                        Top = Math.Max(0, Math.Min(Top, SystemParameters.VirtualScreenHeight - Height));
                        Width = Math.Max(Math.Min(Width, SystemParameters.VirtualScreenWidth - Left), 100);
                        Height = Math.Max(Math.Min(Height, SystemParameters.VirtualScreenHeight - Top), 100);

                        reader.ReadEndElement();
                    }
                }
                reader.ReadEndElement();
            }	
        }
예제 #5
0
파일: DockedWindow.cs 프로젝트: GeertVL/ATF
 /// <summary>
 /// Constructor used when the window is created as a consequence of user interaction with the UI</summary>
 /// <param name="dockPanel">Parent dockpanel</param>
 /// <param name="content">Dockable content</param>
 public DockedWindow(DockPanel dockPanel, IDockContent content)
 {
     Root = dockPanel;
     DockedContent = content as TabLayout;
     if (DockedContent == null)
     {
         DockedContent = new TabLayout(Root);
         DockedContent.Dock(null, content, DockTo.Center);
     }
     Content = DockedContent;
     ShowIcon = (DockedContent.Icon != null && ((Root.IconVisibility & IconVisibility.Header) == IconVisibility.Header));
     DockedContent.Closing += Content_Closing;
     
     PreviewMouseDown += DockedWindow_PreviewMouseDown;
     Focused = ((IDockContent)DockedContent).IsFocused;
 }