コード例 #1
0
ファイル: ZPairWindow.cs プロジェクト: jtmueller/NZag
        public ZPairWindow(
            ZWindowManager manager,
            FontAndColorService fontAndColorService,
            ZWindow child1,
            ZWindow child2,
            ZWindowPosition child2Position,
            GridLength child2Size)
            : base(manager, fontAndColorService)
        {
            this.child1 = child1;
            this.child2 = child2;

            switch (child2Position)
            {
            case ZWindowPosition.Left:
                this.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = child2Size
                });
                this.ColumnDefinitions.Add(new ColumnDefinition());
                SetColumn(this.child1, 1);
                SetColumn(this.child2, 0);
                break;

            case ZWindowPosition.Right:
                this.ColumnDefinitions.Add(new ColumnDefinition());
                this.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = child2Size
                });
                SetColumn(this.child1, 0);
                SetColumn(this.child2, 1);
                break;

            case ZWindowPosition.Above:
                this.RowDefinitions.Add(new RowDefinition {
                    Height = child2Size
                });
                this.RowDefinitions.Add(new RowDefinition());
                SetRow(this.child1, 1);
                SetRow(this.child2, 0);
                break;

            case ZWindowPosition.Below:
                this.RowDefinitions.Add(new RowDefinition());
                this.RowDefinitions.Add(new RowDefinition {
                    Height = child2Size
                });
                SetRow(this.child1, 0);
                SetRow(this.child2, 1);
                break;
            }

            child1.SetParentWindow(this);
            child2.SetParentWindow(this);

            this.Children.Add(child1);
            this.Children.Add(child2);
        }
コード例 #2
0
        private bool IsVertical(ZWindowPosition position)
        {
            switch (position)
            {
            case ZWindowPosition.Above:
            case ZWindowPosition.Below:
                return(true);

            case ZWindowPosition.Left:
            case ZWindowPosition.Right:
                return(false);

            default:
                throw new InvalidOperationException("Invalid window position: " + position.ToString());
            }
        }
コード例 #3
0
ファイル: ZPairWindow.cs プロジェクト: modulexcite/NZag
        public ZPairWindow(
            ZWindowManager manager,
            FontAndColorService fontAndColorService,
            ZWindow child1,
            ZWindow child2,
            ZWindowPosition child2Position,
            GridLength child2Size)
            : base(manager, fontAndColorService)
        {
            this.child1 = child1;
            this.child2 = child2;

            switch (child2Position)
            {
                case ZWindowPosition.Left:
                    this.ColumnDefinitions.Add(new ColumnDefinition { Width = child2Size });
                    this.ColumnDefinitions.Add(new ColumnDefinition());
                    SetColumn(this.child1, 1);
                    SetColumn(this.child2, 0);
                    break;
                case ZWindowPosition.Right:
                    this.ColumnDefinitions.Add(new ColumnDefinition());
                    this.ColumnDefinitions.Add(new ColumnDefinition { Width = child2Size });
                    SetColumn(this.child1, 0);
                    SetColumn(this.child2, 1);
                    break;
                case ZWindowPosition.Above:
                    this.RowDefinitions.Add(new RowDefinition { Height = child2Size });
                    this.RowDefinitions.Add(new RowDefinition());
                    SetRow(this.child1, 1);
                    SetRow(this.child2, 0);
                    break;
                case ZWindowPosition.Below:
                    this.RowDefinitions.Add(new RowDefinition());
                    this.RowDefinitions.Add(new RowDefinition { Height = child2Size });
                    SetRow(this.child1, 0);
                    SetRow(this.child2, 1);
                    break;
            }

            child1.SetParentWindow(this);
            child2.SetParentWindow(this);

            this.Children.Add(child1);
            this.Children.Add(child2);
        }
コード例 #4
0
        internal ZPairWindow(ZWindowManager manager, ZWindow child1, ZWindow child2, ZWindowPosition child2Position, GridLength child2Size)
            : base(manager)
        {
            if (child1 == null)
            {
                throw new ArgumentNullException("child1");
            }

            if (child2 == null)
            {
                throw new ArgumentNullException("child2");
            }

            this.child1 = child1;
            this.child2 = child2;

            switch (child2Position)
            {
            case ZWindowPosition.Left:
            {
                var col1 = new ColumnDefinition();
                col1.Width = child2Size;
                var col2 = new ColumnDefinition();
                this.ColumnDefinitions.Add(col1);
                this.ColumnDefinitions.Add(col2);
                Grid.SetColumn(child2, 0);
                Grid.SetColumn(child1, 1);
                break;
            }

            case ZWindowPosition.Right:
            {
                var col1 = new ColumnDefinition();
                var col2 = new ColumnDefinition();
                col2.Width = child2Size;
                this.ColumnDefinitions.Add(col1);
                this.ColumnDefinitions.Add(col2);
                Grid.SetColumn(child1, 0);
                Grid.SetColumn(child2, 1);
                break;
            }

            case ZWindowPosition.Above:
            {
                var row1 = new RowDefinition();
                row1.Height = child2Size;
                var row2 = new RowDefinition();
                this.RowDefinitions.Add(row1);
                this.RowDefinitions.Add(row2);
                Grid.SetRow(child2, 0);
                Grid.SetRow(child1, 1);
                break;
            }

            case ZWindowPosition.Below:
            {
                var row1 = new RowDefinition();
                var row2 = new RowDefinition();
                row2.Height = child2Size;
                this.RowDefinitions.Add(row1);
                this.RowDefinitions.Add(row2);
                Grid.SetRow(child1, 0);
                Grid.SetRow(child2, 1);
                break;
            }

            default:
                throw new ArgumentException("Invalid ZWindowPosition: " + child2Position, "child2Position");
            }

            child1.SetWindowParent(this);
            child2.SetWindowParent(this);

            this.Children.Add(child1);
            this.Children.Add(child2);
        }
コード例 #5
0
        public ZWindow Open(
            ZWindowType windowType,
            ZWindow split            = null,
            ZWindowPosition position = ZWindowPosition.Left,
            ZWindowSizeType sizeType = ZWindowSizeType.Fixed,
            int size = 0)
        {
            if (windowType == ZWindowType.Pair)
            {
                throw new InvalidOperationException("ZWindows of type Pair cannot be created directly.");
            }

            if (root == null)
            {
                if (split != null)
                {
                    throw new ArgumentException("'split' must be null if Root has not yet been created.", "split");
                }

                root = CreateNewWindow(windowType);
                return(root);
            }
            else
            {
                if (split == null)
                {
                    throw new ArgumentNullException("split", "'split' cannot be null if the Root has already been created.");
                }

                var newWindow = CreateNewWindow(windowType);

                var parent = split.WindowParent;

                GridLength splitSize;
                switch (sizeType)
                {
                case ZWindowSizeType.Fixed:
                    var pixels = position == ZWindowPosition.Above || position == ZWindowPosition.Below
                            ? size * newWindow.RowHeight
                            : size * newWindow.ColumnWidth;
                    splitSize = new GridLength(pixels, GridUnitType.Pixel);
                    break;

                case ZWindowSizeType.Proportional:
                    splitSize = new GridLength((double)size / 100, GridUnitType.Star);
                    break;

                default:
                    throw new ArgumentException("Invalid ZWindowSizeType: " + sizeType, "sizeType");
                }

                var parentGrid = (Grid)split.Parent;
                parentGrid.Children.Remove(split);

                var newPair = new ZPairWindow(this, split, newWindow, position, splitSize);

                if (parent != null)
                {
                    parent.Replace(split, newPair);
                }
                else
                {
                    root = newPair;
                }

                parentGrid.Children.Add(newPair);

                return(newWindow);
            }
        }
コード例 #6
0
        public ZWindow OpenWindow(
            ZWindowKind kind,
            ZWindow splitWindow      = null,
            ZWindowPosition position = ZWindowPosition.Left,
            ZWindowSizeKind sizeKind = ZWindowSizeKind.Fixed,
            int size = 0)
        {
            if (kind == ZWindowKind.Pair)
            {
                throw new InvalidOperationException("ZPairWindows can't be creatted directly");
            }

            if (rootWindow == null && splitWindow != null)
            {
                throw new InvalidOperationException("Cannot open a split window if the root window has not yet been created.");
            }

            if (rootWindow != null && splitWindow == null)
            {
                throw new InvalidOperationException("Cannot open a new root window if the root window has already bee created.");
            }

            var newWindow = CreateNewWindow(kind);

            if (rootWindow == null)
            {
                rootWindow = newWindow;
            }
            else
            {
                GridLength splitSize;
                switch (sizeKind)
                {
                case ZWindowSizeKind.Fixed:
                    var pixels = IsVertical(position)
                            ? size * newWindow.RowHeight
                            : size * newWindow.ColumnWidth;
                    splitSize = new GridLength(pixels, GridUnitType.Pixel);
                    break;

                case ZWindowSizeKind.Proportional:
                    splitSize = new GridLength(size / 100.0, GridUnitType.Star);
                    break;

                default:
                    throw new InvalidOperationException("Invalid size kind: " + sizeKind.ToString());
                }

                Debug.Assert(splitWindow != null, "splitWindow != null");

                var parentGrid = (Grid)splitWindow.Parent;
                parentGrid.Children.Remove(splitWindow);

                var oldParentWindow = splitWindow.ParentWindow as ZPairWindow;
                var newParentWindow = new ZPairWindow(this, this.fontAndColorService, splitWindow, newWindow, position, splitSize);

                if (oldParentWindow != null)
                {
                    oldParentWindow.Replace(splitWindow, newParentWindow);
                }
                else
                {
                    rootWindow = newParentWindow;
                }

                parentGrid.Children.Add(newParentWindow);
            }

            return(newWindow);
        }
コード例 #7
0
ファイル: ZWindowManager.cs プロジェクト: modulexcite/NZag
        public ZWindow OpenWindow(
            ZWindowKind kind,
            ZWindow splitWindow = null,
            ZWindowPosition position = ZWindowPosition.Left,
            ZWindowSizeKind sizeKind = ZWindowSizeKind.Fixed,
            int size = 0)
        {
            if (kind == ZWindowKind.Pair)
            {
                throw new InvalidOperationException("ZPairWindows can't be creatted directly");
            }

            if (rootWindow == null && splitWindow != null)
            {
                throw new InvalidOperationException("Cannot open a split window if the root window has not yet been created.");
            }

            if (rootWindow != null && splitWindow == null)
            {
                throw new InvalidOperationException("Cannot open a new root window if the root window has already bee created.");
            }

            var newWindow = CreateNewWindow(kind);

            if (rootWindow == null)
            {
                rootWindow = newWindow;
            }
            else
            {
                GridLength splitSize;
                switch (sizeKind)
                {
                    case ZWindowSizeKind.Fixed:
                        var pixels = IsVertical(position)
                            ? size * newWindow.RowHeight
                            : size * newWindow.ColumnWidth;
                        splitSize = new GridLength(pixels, GridUnitType.Pixel);
                        break;
                    case ZWindowSizeKind.Proportional:
                        splitSize = new GridLength(size / 100.0, GridUnitType.Star);
                        break;
                    default:
                        throw new InvalidOperationException("Invalid size kind: " + sizeKind.ToString());
                }

                Debug.Assert(splitWindow != null, "splitWindow != null");

                var parentGrid = (Grid)splitWindow.Parent;
                parentGrid.Children.Remove(splitWindow);

                var oldParentWindow = splitWindow.ParentWindow as ZPairWindow;
                var newParentWindow = new ZPairWindow(this, this.fontAndColorService, splitWindow, newWindow, position, splitSize);

                if (oldParentWindow != null)
                {
                    oldParentWindow.Replace(splitWindow, newParentWindow);
                }
                else
                {
                    rootWindow = newParentWindow;
                }

                parentGrid.Children.Add(newParentWindow);
            }

            return newWindow;
        }
コード例 #8
0
ファイル: ZWindowManager.cs プロジェクト: modulexcite/NZag
 private bool IsVertical(ZWindowPosition position)
 {
     switch (position)
     {
         case ZWindowPosition.Above:
         case ZWindowPosition.Below:
             return true;
         case ZWindowPosition.Left:
         case ZWindowPosition.Right:
             return false;
         default:
             throw new InvalidOperationException("Invalid window position: " + position.ToString());
     }
 }