예제 #1
0
    public TabInstance Create()
    {
        if (Bookmark.Type == null)
        {
            return(null);
        }

        if (!typeof(ITab).IsAssignableFrom(Bookmark.Type))
        {
            throw new Exception("Bookmark.Type must implement ITab");
        }

        var      call         = new Call();
        Bookmark bookmarkCopy = Bookmark.DeepClone(call, true);         // This will get modified as users navigate

        ITab tab = bookmarkCopy.TabBookmark.Tab;

        if (tab == null)
        {
            tab = (ITab)Activator.CreateInstance(bookmarkCopy.Type);
        }

        if (tab is IReload reloadable)
        {
            reloadable.Reload();
        }

        TabInstance tabInstance = tab.Create();

        tabInstance.Project = Project.Open(bookmarkCopy);
        tabInstance.iTab    = this;
        tabInstance.IsRoot  = true;
        tabInstance.SelectBookmark(bookmarkCopy.TabBookmark);
        return(tabInstance);
    }