コード例 #1
0
ファイル: Filter.cs プロジェクト: garyhertel/Atlas
    public TabBookmark FindMatches(IList list)
    {
        TabModel    tabModel     = TabModel.Create("", list);
        TabBookmark bookmarkNode = tabModel.FindMatches(Filter, Filter.Depth);

        return(bookmarkNode);
    }
コード例 #2
0
        public override void GetBookmark(TabBookmark tabBookmark)
        {
            base.GetBookmark(tabBookmark);

            foreach (var child in tabBookmark.ChildBookmarks.Values)
            {
                child.IsRoot = true;
            }
        }
コード例 #3
0
ファイル: TabViewer.cs プロジェクト: garyhertel/Atlas
 public void SelectBookmark(TabBookmark tabBookmark, bool reload)
 {
     if (reload)
     {
         ScrollViewer.Offset = new Vector(0, 0);
         TabView.Focus();
     }
     TabView.Instance.SelectBookmark(tabBookmark, reload);
 }
コード例 #4
0
ファイル: Filter.cs プロジェクト: garyhertel/Atlas
    public bool IsMatch(object obj)
    {
        if (Filter == null || Filter.FilterText.IsNullOrEmpty())
        {
            return(true);
        }

        TabModel    tabModel     = TabModel.Create("Search", obj);
        TabBookmark bookmarkNode = tabModel.FindMatches(Filter, Filter.Depth);

        return(bookmarkNode.SelectedObjects.Count > 0);
    }
コード例 #5
0
ファイル: TabViewer.cs プロジェクト: garyhertel/Atlas
    private async Task LinkAsync(Call call)
    {
        Bookmark    bookmark = TabView.Instance.CreateBookmark();
        TabBookmark leafNode = bookmark.TabBookmark.GetLeaf();         // Get the shallowest root node

        if (leafNode != bookmark.TabBookmark)
        {
            bookmark.Name         = leafNode.Tab?.ToString();
            bookmark.TabBookmark  = leafNode;
            bookmark.BookmarkType = BookmarkType.Leaf;
        }
        else
        {
            bookmark.BookmarkType = BookmarkType.Full;
        }
        string uri = Project.Linker.GetLinkUri(call, bookmark);
        await ClipBoardUtils.SetTextAsync(uri);
    }
コード例 #6
0
ファイル: TabCreator.cs プロジェクト: garyhertel/Atlas
    public static Control CreateChildControl(TabInstance parentTabInstance, object obj, string label = null, ITabSelector tabControl = null)
    {
        object value = obj.GetInnerValue();

        if (value == null || value is bool)
        {
            return(null);
        }

        if (label == null)
        {
            // use object? or inner value?
            label = obj.Formatted();
            if (label.IsNullOrEmpty())
            {
                label = "(" + obj.GetType().Name + ")";
            }
        }

        TabBookmark tabBookmark = null;         // Also assigned to child TabView's, tabView.tabInstance.tabBookmark = tabBookmark;

        if (parentTabInstance.TabBookmark != null && parentTabInstance.TabBookmark.ChildBookmarks != null)
        {
            if (parentTabInstance.TabBookmark.ChildBookmarks.TryGetValue(label, out tabBookmark))
            {
                // FindMatches only
                if (tabBookmark.TabModel != null)
                {
                    value = tabBookmark.TabModel;
                }
            }
        }

        string labelOverride = null;

        if (value is Exception)
        {
        }
        else if (parentTabInstance is ITabCreator parentTabCreator)
        {
            value = parentTabCreator.CreateControl(value, out labelOverride);
        }
        else if (tabControl is ITabCreator tabCreator)
        {
            value = tabCreator.CreateControl(value, out labelOverride);
        }
        if (value == null)
        {
            return(null);
        }

        if (labelOverride != null)
        {
            label = labelOverride;
        }

        Type type = value.GetType();

        if (value is string || value is decimal || type.IsPrimitive)
        {
            value = new TabText(value.ToString());             // create an ITab
        }

        /*else if (value is Uri uri)
         * {
         *      var tabWebBrowser = new TabWebBrowser(uri);
         *      value = tabWebBrowser;
         * }*/

        if (value is ILoadAsync loadAsync)
        {
            var childTabInstance = new TabInstanceLoadAsync(loadAsync)
            {
                Project     = parentTabInstance.Project,
                TabBookmark = tabBookmark,
            };
            childTabInstance.Model.Name = label;
            value = new TabView(childTabInstance);
        }

        if (value is ITabCreatorAsync creatorAsync)
        {
            //value = new TabCreatorAsync(creatorAsync);
            // todo: move elsewhere, we shouldn't be blocking during creation
            value = Task.Run(() => creatorAsync.CreateAsync(new Call())).GetAwaiter().GetResult();
        }

        if (value is ITab iTab)
        {
            // Custom controls implement ITab
            TabInstance childTabInstance = parentTabInstance.CreateChildTab(iTab);
            if (childTabInstance == null)
            {
                return(null);
            }

            childTabInstance.TabBookmark ??= tabBookmark;
            //childTabInstance.Reintialize(); // todo: fix, called in TabView
            childTabInstance.Model.Name = label;
            var tabView = new TabView(childTabInstance);
            tabView.Load();
            return(tabView);
        }
        else if (value is TabView tabView)
        {
            tabView.Instance.ParentTabInstance = parentTabInstance;
            tabView.Instance.TabBookmark       = tabBookmark ?? tabView.Instance.TabBookmark;
            tabView.Label = label;
            tabView.Load();
            return(tabView);
        }
        else if (value is Control control)
        {
            return(control);
        }

        /*else if (value is FilePath filePath)
         * {
         *      var tabAvalonEdit = new TabAvalonEdit(name);
         *      tabAvalonEdit.Load(filePath.path);
         *      return tabAvalonEdit;
         * }*/
        else
        {
            if (value is Enum && parentTabInstance.Model.Object.GetType().IsEnum)
            {
                return(null);
            }

            TabModel childTabModel;
            if (value is TabModel tabModel)
            {
                childTabModel      = tabModel;
                childTabModel.Name = label;
            }
            else
            {
                childTabModel = TabModel.Create(label, value);
                if (childTabModel == null)
                {
                    return(null);
                }
            }
            childTabModel.Editing = parentTabInstance.Model.Editing;

            TabInstance childTabInstance = parentTabInstance.CreateChild(childTabModel);
            childTabInstance.Label = label;

            var tabModelView = new TabView(childTabInstance);
            tabModelView.Load();
            return(tabModelView);
        }
    }