public IDockable?DeserializeDockable(SerializedDock serializedDock) { switch (serializedDock.DockableType) { case SerializedDockableType.ProportionalDock: // simplify if need if (serializedDock.Children.Count == 1 && serializedDock.Children[0].DockableType == SerializedDockableType.ProportionalDock) { return(DeserializeDockable(serializedDock.Children[0])); } IProportionalDock proportionalDock = dockFactory.CreateProportionalDock(); proportionalDock.Orientation = serializedDock.Horizontal ? Orientation.Horizontal : Orientation.Vertical; proportionalDock.Proportion = serializedDock.Proportion; DeserializeChildren(proportionalDock, serializedDock); return(proportionalDock); case SerializedDockableType.DocumentDock: IDocumentDock documentDock = dockFactory.CreateDocumentDock(); documentDock.Proportion = serializedDock.Proportion; documentDock.IsCollapsable = serializedDock.IsCollapsable; return(documentDock); case SerializedDockableType.Splitter: return(dockFactory.CreateProportionalDockSplitter()); case SerializedDockableType.ToolDock: if (serializedDock.Children.Count == 0) { return(null); } IToolDock toolDock = dockFactory.CreateToolDock(); toolDock.Proportion = serializedDock.Proportion; DeserializeChildren(toolDock, serializedDock); return(toolDock); case SerializedDockableType.Tool: var tool = layoutViewModelResolver.ResolveTool(serializedDock.UniqueId); return(tool); case SerializedDockableType.RootDock: IRootDock rootDock = dockFactory.CreateRootDock(); rootDock.Proportion = serializedDock.Proportion; DeserializeChildren(rootDock, serializedDock); if (rootDock.VisibleDockables?.Count > 0) { rootDock.ActiveDockable = rootDock.VisibleDockables[0]; rootDock.DefaultDockable = rootDock.VisibleDockables[0]; } return(rootDock); default: throw new ArgumentOutOfRangeException(); } }
public IRootDock?Deserialize(SerializedDock serializedDock) { if (serializedDock.DockableType != SerializedDockableType.RootDock) { return(null); } return(DeserializeDockable(serializedDock) as IRootDock); }
private void DeserializeChildren(IDock dock, SerializedDock serializedDock) { dock.VisibleDockables = dockFactory.CreateList <IDockable>(); if (serializedDock.Children == null) { return; } foreach (var dockable in serializedDock.Children) { var deserialized = DeserializeDockable(dockable); if (deserialized != null) { dock.VisibleDockables.Add(deserialized); } } }