Пример #1
0
        private void Handler_ComponentRemoving(object theSender, ComponentEventArgs theArgs)
        {
            if (!(theArgs.Component is Page))
            {
                return;
            }
            MultiLayerPanel aCtl = DesignedControl;
            Page            aPg  = (Page)theArgs.Component;

            if (!aCtl.Controls.Contains(aPg))
            {
                return;
            }
            IDesignerHost aHost = (IDesignerHost)GetService(typeof(IDesignerHost));

            if (!inTransaction)
            {
                inTransaction = true;
                DesignerTransactionUtility.DoInTransaction
                (
                    aHost,
                    "MultiPaneControlRemoveComponent",
                    new TransactionAwareParammedMethod(Transaction_UpdateSelectedPage),
                    null
                );
                inTransaction = false;
            }
            else
            {
                Transaction_UpdateSelectedPage(aHost, null);
            }

            CheckVerbStatus();
        }
Пример #2
0
        private void Handler_RemovePage(object sender, EventArgs eevent)
        {
            MultiLayerPanel aCtl = DesignedControl;

            if (aCtl == null)
            {
                return;
            }
            else if (aCtl.Controls.Count < 1)
            {
                return;
            }
            IDesignerHost aHost = (IDesignerHost)GetService(typeof(IDesignerHost));

            if (aHost == null)
            {
                return;
            }
            inTransaction = true;
            DesignerTransactionUtility.DoInTransaction
            (
                aHost,
                "MultiPaneControlRemovePage",
                new TransactionAwareParammedMethod(Transaction_RemovePage),
                null
            );
            inTransaction = false;
        }
Пример #3
0
        public object CreateControlWithOnePage(IDesignerHost theHost, object theParam)
        {
            MultiLayerPanel aCtl = (MultiLayerPanel)theHost.CreateComponent(typeof(MultiLayerPanel));
            Page            aPg  = (Page)theHost.CreateComponent(typeof(Page));

            aCtl.Controls.Add(aPg);
            return(new IComponent[] { aCtl });
        }
Пример #4
0
        private object Transaction_SetSelectedPageAsConcrete(IDesignerHost theHost, object theParam)
        {
            MultiLayerPanel  aCtl = DesignedControl;
            MemberDescriptor aMember_SelectedPage = TypeDescriptor.GetProperties(aCtl)["SelectedPage"];

            RaiseComponentChanging(aMember_SelectedPage);
            aCtl.SelectedPage = (Page)theParam;
            RaiseComponentChanged(aMember_SelectedPage, null, null);
            return(null);
        }
Пример #5
0
        private object Transaction_AddPage(IDesignerHost host, object param)
        {
            MultiLayerPanel  ctl         = DesignedControl;
            Page             newPage     = (Page)host.CreateComponent(typeof(Page));
            MemberDescriptor memControls = TypeDescriptor.GetProperties(ctl)["Controls"];

            RaiseComponentChanging(memControls);
            ctl.Controls.Add(newPage);
            DesignerSelectedPage = newPage;
            RaiseComponentChanged(memControls, null, null);
            return(null);
        }
Пример #6
0
        private object Transaction_UpdateSelectedPage(IDesignerHost theHost, object theParam)
        {
            MultiLayerPanel aCtl      = DesignedControl;
            Page            aPgTemp   = selectedPage;
            int             aCurIndex = aCtl.Controls.IndexOf(selectedPage);

            if (selectedPage == aCtl.SelectedPage)
            {
                MemberDescriptor aMember_SelectedPage = TypeDescriptor.GetProperties(aCtl)["SelectedPage"];
                RaiseComponentChanging(aMember_SelectedPage);
                if (aCtl.Controls.Count > 1)
                {
                    if (aCurIndex == aCtl.Controls.Count - 1)
                    {
                        aCtl.SelectedPage = (Page)aCtl.Controls[aCurIndex - 1];
                    }
                    else
                    {
                        aCtl.SelectedPage = (Page)aCtl.Controls[aCurIndex + 1];
                    }
                }
                else
                {
                    aCtl.SelectedPage = null;
                }
                RaiseComponentChanged(aMember_SelectedPage, null, null);
            }
            else
            {
                if (aCtl.Controls.Count > 1)
                {
                    if (aCurIndex == aCtl.Controls.Count - 1)
                    {
                        DesignerSelectedPage = (Page)aCtl.Controls[aCurIndex - 1];
                    }
                    else
                    {
                        DesignerSelectedPage = (Page)aCtl.Controls[aCurIndex + 1];
                    }
                }
                else
                {
                    DesignerSelectedPage = null;
                }
            }
            return(null);
        }
Пример #7
0
        private object Transaction_RemovePage(IDesignerHost theHost, object theParam)
        {
            if (selectedPage == null)
            {
                return(null);
            }
            MultiLayerPanel  aCtl             = DesignedControl;
            MemberDescriptor aMember_Controls = TypeDescriptor.GetProperties(aCtl)["Controls"];

            RaiseComponentChanging(aMember_Controls);
            try
            {
                theHost.DestroyComponent(selectedPage);
            }
            catch { }
            RaiseComponentChanged(aMember_Controls, null, null);
            return(null);
        }
Пример #8
0
        protected override void FillTreeWithData(Selector theSel,
                                                 ITypeDescriptorContext theCtx, IServiceProvider theProvider)
        {
            base.FillTreeWithData(theSel, theCtx, theProvider);
            MultiLayerPanel aCtl = (MultiLayerPanel)theCtx.Instance;

            foreach (Page aIt in aCtl.Controls)
            {
                SelectorNode aNd = new SelectorNode(aIt.Name, aIt);

                theSel.Nodes.Add(aNd);

                if (aIt == aCtl.SelectedPage)
                {
                    theSel.SelectedNode = aNd;
                }
            }
        }
Пример #9
0
        protected override void OnDragOver(DragEventArgs theDragEvents)
        {
            MultiLayerPanel aCtl = DesignedControl;
            Point           pt   = aCtl.PointToClient(new Point(theDragEvents.X, theDragEvents.Y));

            if (!aCtl.DisplayRectangle.Contains(pt))
            {
                theDragEvents.Effect = DragDropEffects.None;
            }
            else
            {
                MultiPanePageDesigner aDsgn_Sel = GetSelectedPageDesigner();
                if (aDsgn_Sel != null)
                {
                    aDsgn_Sel.InternalOnDragOver(theDragEvents);
                }
            }
        }
Пример #10
0
        private void Handler_SelectionChanged(object sender, EventArgs e)
        {
            ISelectionService aSrv = (ISelectionService)GetService(typeof(ISelectionService));

            if (aSrv == null)
            {
                return;
            }
            ICollection     aSel = aSrv.GetSelectedComponents();
            MultiLayerPanel aCtl = DesignedControl;

            foreach (object aIt in aSel)
            {
                Page aPage = GetPageOfControl(aIt);
                if ((aPage != null) && (aPage.Parent == aCtl))
                {
                    DesignerSelectedPage = aPage;
                    break;
                }
            }
        }