Exemplo n.º 1
0
        FileTabManager(IFileTabUIContextLocatorCreator fileTabUIContextLocatorCreator, FileTreeView fileTreeView, ITabManagerCreator tabManagerCreator, IFileTabContentFactoryManager fileTabContentFactoryManager, IFileTabManagerSettings fileTabManagerSettings, IWpfFocusManager wpfFocusManager, IDecompilationCache decompilationCache, [ImportMany] IEnumerable <Lazy <IReferenceFileTabContentCreator, IReferenceFileTabContentCreatorMetadata> > mefRefFactories)
        {
            this.fileTabManagerSettings         = fileTabManagerSettings;
            this.fileTabUIContextLocatorCreator = fileTabUIContextLocatorCreator;
            this.fileTabContentFactoryManager   = fileTabContentFactoryManager;
            this.wpfFocusManager    = wpfFocusManager;
            this.decompilationCache = decompilationCache;
            this.refFactories       = mefRefFactories.OrderBy(a => a.Metadata.Order).ToArray();
            var tvElem = fileTreeView.TreeView.UIObject as UIElement;

            Debug.Assert(tvElem != null);
            if (tvElem != null)
            {
                tvElem.IsVisibleChanged += TreeView_IsVisibleChanged;
                isTreeViewVisible        = tvElem.IsVisible;
            }
            this.fileTreeView = fileTreeView;
            this.fileTreeView.FileManager.CollectionChanged += FileManager_CollectionChanged;
            this.fileTreeView.SelectionChanged     += FileTreeView_SelectionChanged;
            this.fileTreeView.NodesTextChanged     += FileTreeView_NodesTextChanged;
            this.fileTreeView.NodeActivated        += FileTreeView_NodeActivated;
            this.fileTreeView.TreeView.NodeRemoved += TreeView_NodeRemoved;
            this.tabManager      = tabManagerCreator.Create();
            this.tabGroupManager = this.tabManager.Create(new TabGroupManagerOptions(MenuConstants.GUIDOBJ_FILES_TABCONTROL_GUID));
            this.tabGroupManager.TabSelectionChanged      += TabGroupManager_TabSelectionChanged;
            this.tabGroupManager.TabGroupSelectionChanged += TabGroupManager_TabGroupSelectionChanged;
        }
Exemplo n.º 2
0
        public IEnumerable <object> Restore(FileTabManager fileTabManager, IFileTabContentFactoryManager fileTabContentFactoryManager, ITabGroupManager mgr)
        {
            mgr.IsHorizontal = IsHorizontal;
            for (int i = 0; i < TabGroups.Count; i++)
            {
                var stg = TabGroups[i];
                var g   = i == 0 ? mgr.ActiveTabGroup ?? mgr.Create() : mgr.Create();
                yield return(null);

                foreach (var o in stg.Restore(fileTabManager, fileTabContentFactoryManager, g))
                {
                    yield return(o);
                }
            }

            if (StackedContentState != null)
            {
                ((TabGroupManager)mgr).StackedContentState = StackedContentState;
            }

            var ary = mgr.TabGroups.ToArray();

            if ((uint)Index < (uint)ary.Length)
            {
                mgr.ActiveTabGroup = ary[Index];
            }
            yield return(null);
        }
Exemplo n.º 3
0
        public static SerializedTab TryCreate(IFileTabContentFactoryManager fileTabContentFactoryManager, IFileTab tab)
        {
            var contentSect = new SettingsSection(CONTENT_SECTION);
            var guid        = fileTabContentFactoryManager.Serialize(tab.Content, contentSect);

            if (guid == null)
            {
                return(null);
            }
            contentSect.Attribute(CONTENT_GUID_ATTR, guid.Value);

            var uiSect = new SettingsSection(UI_SECTION);

            tab.UIContext.SaveSerialized(uiSect, tab.UIContext.Serialize());

            var tabUISect = new SettingsSection(TAB_UI_SECTION);

            tab.SerializeUI(tabUISect);

            var paths = new List <SerializedPath>();

            foreach (var node in tab.Content.Nodes)
            {
                paths.Add(SerializedPath.Create(node));
            }

            var autoLoadedFiles = new List <DnSpyFileInfo>();

            foreach (var f in GetAutoLoadedFiles(tab.Content.Nodes))
            {
                autoLoadedFiles.Add(f);
            }

            return(new SerializedTab(contentSect, tabUISect, uiSect, paths, autoLoadedFiles));
        }
Exemplo n.º 4
0
		public IEnumerable<object> Restore(FileTabManager fileTabManager, IFileTabContentFactoryManager creator, ITabGroup g) {
			foreach (var st in Tabs) {
				foreach (var o in st.TryRestore(fileTabManager, creator, g))
					yield return o;
			}
			var ary = g.TabContents.ToArray();
			if ((uint)Index < (uint)ary.Length)
				g.ActiveTabContent = ary[Index];
			yield return null;
		}
Exemplo n.º 5
0
		public static SerializedTabGroupWindow Create(IFileTabContentFactoryManager creator, ITabGroupManager tabGroupManager, string name) {
			int index = tabGroupManager.TabGroups.ToList().IndexOf(tabGroupManager.ActiveTabGroup);
			var stackedContentState = ((TabGroupManager)tabGroupManager).StackedContentState;
			var tgw = new SerializedTabGroupWindow(name, index, tabGroupManager.IsHorizontal, stackedContentState);

			foreach (var g in tabGroupManager.TabGroups)
				tgw.TabGroups.Add(SerializedTabGroup.Create(creator, g));

			return tgw;
		}
Exemplo n.º 6
0
		public static SerializedTabGroup Create(IFileTabContentFactoryManager creator, ITabGroup g) {
			int index = g.TabContents.ToList().IndexOf(g.ActiveTabContent);
			var tg = new SerializedTabGroup(index);

			foreach (IFileTab tab in g.TabContents) {
				var t = SerializedTab.TryCreate(creator, tab);
				if (t != null)
					tg.Tabs.Add(t);
			}

			return tg;
		}
Exemplo n.º 7
0
		public IEnumerable<object> TryRestore(FileTabManager fileTabManager, IFileTabContentFactoryManager creator, ITabGroup g) {
			var guid = Content.Attribute<Guid?>(CONTENT_GUID_ATTR);
			if (guid == null)
				yield break;
			var ctx = new GetNodesContext();
			foreach (var o in GetNodes(ctx, fileTabManager.FileTreeView))
				yield return o;
			if (ctx.Nodes == null)
				yield break;
			var tabContent = creator.Deserialize(guid.Value, Content, ctx.Nodes);
			yield return null;
			if (tabContent == null)
				yield break;
			fileTabManager.Add(g, tabContent, null, a => {
				if (a.Success) {
					var uiContext = tabContent.FileTab.UIContext;
					tabContent.FileTab.DeserializeUI(TabUI);
					var obj = uiContext.CreateSerialized(UI);
					uiContext.Deserialize(obj);
				}
			});
			yield return null;
		}
Exemplo n.º 8
0
        public IEnumerable <object> TryRestore(FileTabManager fileTabManager, IFileTabContentFactoryManager fileTabContentFactoryManager, ITabGroup g)
        {
            var guid = Content.Attribute <Guid?>(CONTENT_GUID_ATTR);

            if (guid == null)
            {
                yield break;
            }
            var ctx = new GetNodesContext();

            foreach (var o in GetNodes(ctx, fileTabManager.FileTreeView))
            {
                yield return(o);
            }
            if (ctx.Nodes == null)
            {
                yield break;
            }
            var tabContent = fileTabContentFactoryManager.Deserialize(guid.Value, Content, ctx.Nodes);

            yield return(null);

            if (tabContent == null)
            {
                yield break;
            }
            fileTabManager.Add(g, tabContent, null, (Action <ShowTabContentEventArgs>)(a => {
                if (a.Success)
                {
                    var uiContext = tabContent.FileTab.UIContext;
                    tabContent.FileTab.DeserializeUI((ISettingsSection)this.TabUI);
                    var obj = uiContext.CreateSerialized(UI);
                    uiContext.Deserialize(obj);
                }
            }));
            yield return(null);
        }
Exemplo n.º 9
0
        public static SerializedTabGroup Create(IFileTabContentFactoryManager creator, ITabGroup g)
        {
            int index = g.TabContents.ToList().IndexOf(g.ActiveTabContent);
            var tg = new SerializedTabGroup(index);

            foreach (IFileTab tab in g.TabContents) {
                var t = SerializedTab.TryCreate(creator, tab);
                if (t != null)
                    tg.Tabs.Add(t);
            }

            return tg;
        }
Exemplo n.º 10
0
        public static SerializedTab TryCreate(IFileTabContentFactoryManager creator, IFileTab tab)
        {
            var contentSect = new SettingsSection(CONTENT_SECTION);
            var guid = creator.Serialize(tab.Content, contentSect);
            if (guid == null)
                return null;
            contentSect.Attribute(CONTENT_GUID_ATTR, guid.Value);

            var uiSect = new SettingsSection(UI_SECTION);
            tab.UIContext.SaveSerialized(uiSect, tab.UIContext.Serialize());

            var tabUISect = new SettingsSection(TAB_UI_SECTION);
            tab.SerializeUI(tabUISect);

            var paths = new List<SerializedPath>();
            foreach (var node in tab.Content.Nodes)
                paths.Add(SerializedPath.Create(node));

            var autoLoadedFiles = new List<DnSpyFileInfo>();
            foreach (var f in GetAutoLoadedFiles(tab.Content.Nodes))
                autoLoadedFiles.Add(f);

            return new SerializedTab(contentSect, tabUISect, uiSect, paths, autoLoadedFiles);
        }
 NodeReferenceFileTabContentCreator(IFileTabContentFactoryManager fileTabContentFactoryManager, IFileTreeView fileTreeView)
 {
     this.fileTabContentFactoryManager = fileTabContentFactoryManager;
     this.fileTreeView = fileTreeView;
 }
Exemplo n.º 12
0
 public IEnumerable<object> Restore(FileTabManager fileTabManager, IFileTabContentFactoryManager creator, ITabGroup g)
 {
     foreach (var st in Tabs) {
         foreach (var o in st.TryRestore(fileTabManager, creator, g))
             yield return o;
     }
     var ary = g.TabContents.ToArray();
     if ((uint)Index < (uint)ary.Length)
         g.ActiveTabContent = ary[Index];
     yield return null;
 }
 NodeReferenceFileTabContentCreator(IFileTabContentFactoryManager fileTabContentFactoryManager, IFileTreeView fileTreeView)
 {
     this.fileTabContentFactoryManager = fileTabContentFactoryManager;
     this.fileTreeView = fileTreeView;
 }
Exemplo n.º 14
0
        public static SerializedTabGroupWindow Create(IFileTabContentFactoryManager creator, ITabGroupManager tabGroupManager, string name)
        {
            int index = tabGroupManager.TabGroups.ToList().IndexOf(tabGroupManager.ActiveTabGroup);
            var stackedContentState = ((TabGroupManager)tabGroupManager).StackedContentState;
            var tgw = new SerializedTabGroupWindow(name, index, tabGroupManager.IsHorizontal, stackedContentState);

            foreach (var g in tabGroupManager.TabGroups)
                tgw.TabGroups.Add(SerializedTabGroup.Create(creator, g));

            return tgw;
        }
Exemplo n.º 15
0
        public IEnumerable<object> Restore(FileTabManager fileTabManager, IFileTabContentFactoryManager creator, ITabGroupManager mgr)
        {
            mgr.IsHorizontal = IsHorizontal;
            for (int i = 0; i < TabGroups.Count; i++) {
                var stg = TabGroups[i];
                var g = i == 0 ? mgr.ActiveTabGroup ?? mgr.Create() : mgr.Create();
                yield return null;
                foreach (var o in stg.Restore(fileTabManager, creator, g))
                    yield return o;
            }

            if (StackedContentState != null)
                ((TabGroupManager)mgr).StackedContentState = StackedContentState;

            var ary = mgr.TabGroups.ToArray();
            if ((uint)Index < (uint)ary.Length)
                mgr.ActiveTabGroup = ary[Index];
            yield return null;
        }
Exemplo n.º 16
0
 FileTabSerializer(IFileTabContentFactoryManager fileTabContentFactoryManager, FileTabManager fileTabManager)
 {
     this.fileTabContentFactoryManager = fileTabContentFactoryManager;
     this.fileTabManager = fileTabManager;
 }
Exemplo n.º 17
0
 DefaultFileTabContentProvider(IFileTabContentFactoryManager fileTabContentFactoryManager)
 {
     this.fileTabContentFactoryManager = fileTabContentFactoryManager;
 }
Exemplo n.º 18
0
 public IEnumerable<object> TryRestore(FileTabManager fileTabManager, IFileTabContentFactoryManager creator, ITabGroup g)
 {
     var guid = Content.Attribute<Guid?>(CONTENT_GUID_ATTR);
     if (guid == null)
         yield break;
     var ctx = new GetNodesContext();
     foreach (var o in GetNodes(ctx, fileTabManager.FileTreeView))
         yield return o;
     if (ctx.Nodes == null)
         yield break;
     var tabContent = creator.Deserialize(guid.Value, Content, ctx.Nodes);
     yield return null;
     if (tabContent == null)
         yield break;
     fileTabManager.Add(g, tabContent, null, a => {
         if (a.Success) {
             var uiContext = tabContent.FileTab.UIContext;
             tabContent.FileTab.DeserializeUI(TabUI);
             var obj = uiContext.CreateSerialized(UI);
             uiContext.Deserialize(obj);
         }
     });
     yield return null;
 }
Exemplo n.º 19
0
 FileTabSerializer(IFileTabContentFactoryManager fileTabContentFactoryManager, FileTabManager fileTabManager)
 {
     this.fileTabContentFactoryManager = fileTabContentFactoryManager;
     this.fileTabManager = fileTabManager;
 }