示例#1
0
        /// <exclude/>
        public static IContentReplaceableView AsContentReplaceableViewOrLastActivatedView(ICommandTarget target)
        {
            if (target == null)
            {
                return(null);
            }
            IContentReplaceableViewSite view = (IContentReplaceableViewSite)target.GetAdapter(typeof(IContentReplaceableViewSite));

            if (view != null)
            {
                return(view.CurrentContentReplaceableView); //成功
            }
            else
            {
                IContentReplaceableView view2 = (IContentReplaceableView)target.GetAdapter(typeof(IContentReplaceableView));
                if (view2 != null)
                {
                    return(view2);
                }
                else
                {
                    IPoderosaMainWindow window = AsWindow(target);
                    if (window != null)
                    {
                        return(window.LastActivatedView);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
        }
示例#2
0
        public SplittableViewPane(SplittableViewManager parent, IPoderosaView content)
        {
            _parent = parent;
            Debug.Assert(content != null);
            _content = content;
            IContentReplaceableViewSite site = (IContentReplaceableViewSite)_content.GetAdapter(typeof(IContentReplaceableViewSite));

            if (site != null)
            {
                site.CurrentContentReplaceableView = this;
            }
        }
示例#3
0
        private static IPoderosaView AdjustToOuterView(IPoderosaView view)
        {
            //ContentReplaceableSiteがあればその親を使用する
            IContentReplaceableViewSite s = (IContentReplaceableViewSite)view.GetAdapter(typeof(IContentReplaceableViewSite));

            if (s != null)
            {
                return(s.CurrentContentReplaceableView);
            }
            else
            {
                return(view);
            }
        }
示例#4
0
        public IPoderosaView AssureViewClass(Type viewclass)
        {
            if (viewclass == _content.GetType())
            {
                return(_content);                              //ダイナミックな置換は不要、OK!
            }
            IContentReplaceableViewSite site = (IContentReplaceableViewSite)_content.GetAdapter(typeof(IContentReplaceableViewSite));

            Control p = _content.AsControl().Parent;

            p.SuspendLayout();
            if (site != null)
            {
                site.CurrentContentReplaceableView = null;            //IContentReplaceableViewSiteが取れるかどうかはオプショナル
            }
            Debug.WriteLineIf(DebugOpt.ViewManagement, String.Format("Replace ViewClass {0} => {1}", _content.GetType().Name, viewclass.Name));
            IPoderosaView newview = CreateView(viewclass);

            UIUtil.ReplaceControl(p, _content.AsControl(), newview.AsControl());
            //旧コントロールにドキュメントがくっついていたら、それを外さないと不整合生じる
            if (_content.Document != null)
            {
                SessionManagerPlugin.Instance.FindDocumentHost(_content.Document).DetachView();
            }

            _content.AsControl().Dispose();
            _content = newview;
            site     = (IContentReplaceableViewSite)newview.GetAdapter(typeof(IContentReplaceableViewSite));
            if (site != null)
            {
                site.CurrentContentReplaceableView = this;
            }

            p.ResumeLayout(true);
            return(newview);
        }
        private IContentReplaceableView AsControlReplaceableView()
        {
            IContentReplaceableViewSite site = (IContentReplaceableViewSite)this.GetAdapter(typeof(IContentReplaceableViewSite));

            return(site == null ? null : site.CurrentContentReplaceableView);
        }