Subversion Repositories SoapBoxCore

Rev

Rev 7 | Rev 17 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7 Rev 12
Line 41... Line 41...
41
using System.IO;
41
using System.IO;
42
using System.Xml;
42
using System.Xml;
43
using System.Linq;
43
using System.Linq;
44
using System.Collections;
44
using System.Collections;
45
using System.Collections.Specialized;
45
using System.Collections.Specialized;
-
 
46
using System.Collections.ObjectModel;
46
 
47
 
47
namespace AvalonDock
48
namespace AvalonDock
48
{
49
{
49
 
50
 
50
    /// <summary>
51
    /// <summary>
Line 399... Line 400...
399
            }
400
            }
400
        }
401
        }
401
 
402
 
402
        void DocumentsSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
403
        void DocumentsSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
403
        {
404
        {
404
            if (e.Action == NotifyCollectionChangedAction.Reset)
405
                        if (e.Action == NotifyCollectionChangedAction.Reset)
405
            {
406
                        {
406
                DocumentContent[] docs = this.Documents;
407
                                DocumentContent[] docs = this.Documents;
-
 
408
                                ObservableCollection<DocumentContent> documentsToClose = new ObservableCollection<DocumentContent>();
407
 
409
 
408
                foreach (DocumentContent doc in docs)
410
                                foreach (DocumentContent doc in docs)
-
 
411
                                {
409
                    doc.Close();
412
                                        if (doc.Parent is DocumentPane)
-
 
413
                                        {
-
 
414
                                                if ((doc.Parent as DocumentPane).IsMainDocumentPane == false)
-
 
415
                                                {
-
 
416
                                                        documentsToClose.Add(doc);
410
            }
417
                                                }
-
 
418
                                        }
-
 
419
                                }
-
 
420
 
-
 
421
                                foreach (DocumentContent doc in documentsToClose)
-
 
422
                                {
-
 
423
                                        doc.InternalClose();
-
 
424
                                }
-
 
425
 
-
 
426
                                foreach (DocumentContent doc in docs)
-
 
427
                                        doc.InternalClose();
-
 
428
                        }
411
 
429
 
412
            if (MainDocumentPane == null)
430
            if (MainDocumentPane == null)
413
                return;
431
                return;
414
 
432
 
415
            if (e.Action == NotifyCollectionChangedAction.Remove ||
433
            if (e.Action == NotifyCollectionChangedAction.Remove ||
Line 457... Line 475...
457
        {
475
        {
458
            foreach (UIElement child in parentPanel.Children)
476
            foreach (UIElement child in parentPanel.Children)
459
            {
477
            {
460
                if (child is DocumentPane)
478
                if (child is DocumentPane)
461
                    return child as DocumentPane;
479
                    return child as DocumentPane;
462
                                if (child is DockablePane)
480
                //if (child is DockablePane)
463
                                {
481
                //{
464
                                        DocumentPane doc = new DocumentPane();
482
                //    DocumentPane doc = new DocumentPane();
465
                                        DockablePane dockablePane = child as DockablePane;
483
                //    DockablePane dockablePane = child as DockablePane;
466
                                        while (dockablePane.Items.Count > 0)
484
                //    while (dockablePane.Items.Count > 0)
467
                                        {
485
                //    {
468
                                                doc.Items.Add((dockablePane.Items[0] as DockableContent).DetachFromContainerPane());
486
                //        doc.Items.Add((dockablePane.Items[0] as DockableContent).DetachFromContainerPane());
469
                                        }
487
                //    }
470
                                        return doc;
488
                //    return doc;
471
                                }
489
                //}
472
                if (child is ResizingPanel)
490
                if (child is ResizingPanel)
473
                {
491
                {
474
                    DocumentPane foundDocPane = GetMainDocumentPane(child as ResizingPanel);
492
                    DocumentPane foundDocPane = GetMainDocumentPane(child as ResizingPanel);
475
                    if (foundDocPane != null)
493
                    if (foundDocPane != null)
476
                        return foundDocPane;
494
                        return foundDocPane;
Line 1966... Line 1984...
1966
                    ActiveContent = content;
1984
                    ActiveContent = content;
1967
                }
1985
                }
1968
                else if (desideredState == DockableContentState.DockableWindow ||
1986
                else if (desideredState == DockableContentState.DockableWindow ||
1969
                    desideredState == DockableContentState.FloatingWindow)
1987
                    desideredState == DockableContentState.FloatingWindow)
1970
                {
1988
                {
-
 
1989
                                        DockablePane newHostpane = null;
1971
                    DockablePane newHostpane = new DockablePane();
1990
                                        FloatingDockablePane prevHostpane = null;
-
 
1991
                                        if (content.SavedStateAndPosition != null && content.SavedStateAndPosition.ContainerPane != null && content.SavedStateAndPosition.ContainerPane is FloatingDockablePane)
-
 
1992
                                        {
-
 
1993
                                                prevHostpane = content.SavedStateAndPosition.ContainerPane as FloatingDockablePane;
-
 
1994
                                                if (!prevHostpane.Items.Contains(content))
1972
                    newHostpane.Items.Add(content);
1995
                                                        prevHostpane.Items.Add(content);
-
 
1996
                                        }
-
 
1997
                                        else
-
 
1998
                                        {
1973
                    content.SetStateToDock();
1999
                                                newHostpane = new DockablePane();
-
 
2000
                                                newHostpane.Items.Add(content);
-
 
2001
                                        }
1974
 
2002
 
1975
                    //ResizingPanel.SetResizeWidth(newHostpane, 200);
-
 
1976
                    //ResizingPanel.SetResizeWidth(newHostpane, 500);
2003
                                        content.SetStateToDock();
1977
 
2004
 
-
 
2005
                                        if (prevHostpane != null)
-
 
2006
                                        {
-
 
2007
                                                DockableFloatingWindow floatingWindow = new DockableFloatingWindow(this, content);
-
 
2008
                                                floatingWindow.WindowStartupLocation = WindowStartupLocation.Manual;
-
 
2009
                                                floatingWindow.Top = prevHostpane.FloatingWindow.Top;
-
 
2010
                                                floatingWindow.Left = prevHostpane.FloatingWindow.Left;
-
 
2011
                                                floatingWindow.Width = prevHostpane.FloatingWindow.Width;
-
 
2012
                                                floatingWindow.Height = prevHostpane.FloatingWindow.Height;
-
 
2013
                                                floatingWindow.Owner = Window.GetWindow(this);
-
 
2014
                                                RegisterFloatingWindow(floatingWindow);
-
 
2015
                                                floatingWindow.Show();
-
 
2016
                                        }
-
 
2017
                                        else if (newHostpane != null)
-
 
2018
                                        {
1978
                    DockableFloatingWindow floatingWindow = new DockableFloatingWindow(this, newHostpane);
2019
                                                DockableFloatingWindow floatingWindow = new DockableFloatingWindow(this, newHostpane);
1979
                    floatingWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
2020
                                                floatingWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen;
1980
                    floatingWindow.Width = 200;
2021
                                                floatingWindow.Width = 200;
1981
                    floatingWindow.Height = 500;
2022
                                                floatingWindow.Height = 500;
1982
                    floatingWindow.Owner = Window.GetWindow(this);
2023
                                                floatingWindow.Owner = Window.GetWindow(this);
1983
                    RegisterFloatingWindow(floatingWindow);
2024
                                                RegisterFloatingWindow(floatingWindow);
1984
                    floatingWindow.Show();
2025
                                                floatingWindow.Show();
-
 
2026
                                        }
1985
 
2027
 
1986
                }
2028
                }
1987
                else if (desideredState == DockableContentState.Document)
2029
                else if (desideredState == DockableContentState.Document)
1988
                {
2030
                {
1989
                    DocumentPane docPane = MainDocumentPane;
2031
                    DocumentPane docPane = MainDocumentPane;