Esempio n. 1
0
        private static IEditor RestoreEditorStructure(
            TransferContentTreeNode content, Externalizer externalizer, IControllerFactory factory
            )
        {
            var editor    = RestoreEditorOnly(content, externalizer, factory);
            var container = editor.Controller as IContainerController;

            if (container == null)
            {
                return(editor);
            }

            var tmpParent = default(object);

            if (externalizer.ExtendedData.ContainsKey(EditorConsts.RestoreEditorStructureParentModel))
            {
                tmpParent = externalizer.ExtendedData[EditorConsts.RestoreEditorStructureParentModel];
            }
            externalizer.ExtendedData[EditorConsts.RestoreEditorStructureParentModel] = editor.Model;
            foreach (var childContent in content.Children)
            {
                var childEditor = RestoreEditorStructure(childContent, externalizer, factory);
                if (container.CanContainChild(childEditor.Controller.ModelDescriptor))
                {
                    editor.AddChildEditor(childEditor);
                    container.InsertChild(childEditor.Model, container.ChildCount);
                }
            }
            if (tmpParent != null)
            {
                externalizer.ExtendedData[EditorConsts.RestoreEditorStructureParentModel] = tmpParent;
            }

            return(editor);
        }
Esempio n. 2
0
        // ------------------------------
        // private
        // ------------------------------
        /// <summary>
        /// prototypeのFigureを複製してmodelCloneをModelとする複製を返す.
        /// 子孫は複製しない.
        /// </summary>
        //private static Editor CloneEditorOnly(IEditor prototype, object modelClone) {
        //    var clone = new Editor();

        //    var ctrlClone = prototype.Site.ControllerFactory.CreateController(modelClone);

        //    var figClone = prototype.Figure.CloneFigureOnly();
        //    foreach (var childfig in prototype.Figure.Children) {
        //        /// editor parts figure (= editor figureでないfigure)のみ追加
        //        if (childfig.GetRole() != EditorConsts.EditorFigureFigureRole) {
        //            figClone.Children.Add(childfig.CloneFigure(null));
        //        }
        //    }

        //    clone.Model = modelClone;
        //    clone._Figure = figClone;
        //    clone._Controller = ctrlClone;
        //    ctrlClone.ConfigureEditor(clone);

        //    return clone;
        //}

        private static TransferContentTreeNode CreateTransferContentNode(IEditor editor, Externalizer externalizer)
        {
            var content = CreateTransferContentOnly(editor, externalizer);
            var ret     = new TransferContentTreeNode(content);

            foreach (var child in editor.Children)
            {
                ret.Children.Add(CreateTransferContentNode(child, externalizer));
            }

            return(ret);
        }
Esempio n. 3
0
        private static IEditor RestoreEditorOnly(
            TransferContentTreeNode content, Externalizer externalizer, IControllerFactory factory
            )
        {
            /// var type = content.Value.Item1; // restoreには使わない
            var modelMem = content.Value.ModelMemento;
            var figMem   = content.Value.FigureMemento;

            var model = externalizer.Load(modelMem);
            var fig   = externalizer.Load(figMem) as IFigure;

            var ret = CreateEditorWithFigure(model, fig, factory);

            if (content.Value.Initializer != null)
            {
                content.Value.Initializer(ret, content.Value.TransferInitArgs);
            }
            return(ret);
        }
Esempio n. 4
0
 public TransferContentTree(TransferContentTreeNode root) : base(root)
 {
 }