void GenerateMenuItemContent(VsDevExpressMenuItem menu, NavigateItem item, string relativePath, Action <VsDevExpressMenuItem, NavigateItem> addClickHandler)
        {
            int startIndex = 0;

            relativePath = ReduceRelativePath(relativePath);
            while (startIndex > -1)
            {
                int index = GetDirectorySeparatorIndex(relativePath, startIndex + 1);
                if (index < 0)
                {
                    break;
                }
                string name = relativePath.Substring(startIndex, Math.Max(0, index - startIndex));
                name = name.Replace(Path.DirectorySeparatorChar.ToString(), string.Empty);
                name = name.Replace(Path.AltDirectorySeparatorChar.ToString(), string.Empty);
                if (string.IsNullOrEmpty(name))
                {
                    continue;
                }
                startIndex = index;

                if (string.IsNullOrEmpty(name))
                {
                    continue;
                }
                menu = menu.CreateOrGetItem(name, true);
            }
            var menuItem = menu.CreateOrGetItem(item.Name);

            addClickHandler(menuItem, item);
        }
Beispiel #2
0
        private void NavigateBack()
        {
            NavigateItem thisItem = _history.Pop();
            NavigateItem lastItem = _history.Pop();

            switch (lastItem.ViewMode)
            {
            case ViewMode.ViewSource:

                ListLoad();
                break;

            case ViewMode.ViewType:

                ListLoad(lastItem.Argument as ResourceType);
                break;

            case ViewMode.ViewName:

                ListLoad(lastItem.Argument as ResourceName);
                break;

            case ViewMode.ViewLangData:

                DataLoad(lastItem.Argument as ResourceLang);
                break;
            }

            NavigateUpdateUI();
        }
Beispiel #3
0
        /// <summary>Pushes the current view to the top of the history stack and updates the Navigation UI</summary>
        private void NavigateAdd()
        {
            var item = new NavigateItem();

            item.ViewMode = _currentViewMode;
            switch (item.ViewMode)
            {
            case ViewMode.ViewSource:
                // don't reference the current source, we don't want to lose memory from the GC
//					item.Argument = CurrentSource;
                break;

            case ViewMode.ViewType:
                item.Argument = _viewList.CurrentObject as ResourceType;
                break;

            case ViewMode.ViewName:
                item.Argument = _viewList.CurrentObject as ResourceName;
                break;

            case ViewMode.ViewLangData:
                item.Argument = _viewData.CurrentData.Lang;
                break;
            }

            _history.Push(item);

            NavigateUpdateUI();
        }
        void RootMenuItemClick(object sender, EventArgs e)
        {
            VsDevExpressMenuItem menuItem = (VsDevExpressMenuItem)sender;
            NavigateItem         item     = (NavigateItem)menuItem.Tag;

            package.ToolWindowViewModel.NavigateToSolution(item.Path);
        }
        bool ProjectTypeMatch(NavigateItem item)
        {
            DteWrapper  wrapper = new DteWrapper(dte);
            ProjectType type    = wrapper.GetProjectType();

            return(!type.Conflicts(item.ProjectType));
        }
Beispiel #6
0
        bool ProjectTypeMatch(NavigateItem item)
        {
            DteWrapper  wrapper = new DteWrapper(dte);
            ProjectType type    = wrapper.GetProjectType();

            return((type != ProjectType.NoPlatform || type != ProjectType.Unknown) && wrapper.GetProjectType() == item.ProjectType);
        }
        public string GetRelativePath(NavigateItem item)
        {
            string path     = item.Path;
            string rootPath = FindRootPath(item.Path);
            string replace  = "$" + Path.GetFileName(rootPath);

            return(path.Replace(rootPath, replace));
        }
        void AddProjectReferenceMenuItemClick(object sender, EventArgs e)
        {
            VsDevExpressMenuItem menuItem = (VsDevExpressMenuItem)sender;
            NavigateItem         item     = (NavigateItem)menuItem.Tag;
            AddReferenceHelper   helper   = new AddReferenceHelper();

            helper.AddProjectReferences(new DteWrapper(dte), item);
        }
        NavigateTreeItem GetUniqueItem(string parentKey, string key, NavigateItem item)
        {
            var root = new NavigateTreeItem(parentKey, key, item);

            if (nodesCache.ContainsKey(root))
            {
                return(null);
            }
            nodesCache.Add(root, root);
            return(root);
        }
Beispiel #10
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = "详细信息",
                Tooltip = "详细信息"
            };

            return(items);
        }
 public List<NavigateItem> GetLeftMenuItems()
 {
     List<NavigateItem> items = new List<NavigateItem>();
     NavigateItem item = new NavigateItem
     {
         Title = Utility.GetResourceStr("InfoDetail"),
         Tooltip = Utility.GetResourceStr("InfoDetail")
     };
     items.Add(item);
     return items;
 }
Beispiel #12
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = "角色权限",
                Tooltip = "角色权限信息"
            };

            items.Add(item);
            return(items);
        }
Beispiel #13
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = Utility.GetResourceStr("DETAILINFO"),
                Tooltip = Utility.GetResourceStr("DETAILINFO")
            };

            items.Add(item);
            return(items);
        }
Beispiel #14
0
 public void AddReferences(IDteWrapper dte, NavigateItem item)
 {
     try {
         BusyIndicator.Show();
         dte.ClearReferences();
         SolutionParser parser = new SolutionParser(item.Path);
         foreach (var assembly in parser.GetReferencedAssemblies(true))
         {
             dte.AddReference(assembly);
         }
     }
     finally {
         BusyIndicator.Close();
     }
 }
Beispiel #15
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = "详细信息A",
                Tooltip = "详细信息A"
            };

            items.Add(item);
            //item = new NavigateItem
            //{
            //    Title = "详细信息B",
            //    Tooltip = "详细信息B"
            //};
            //items.Add(item);
            return(items);
        }
Beispiel #16
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = "详细信息",
                Tooltip = "详细信息"
            };

            items.Add(item);
            //item = new NavigateItem
            //{
            //    Title = "员工资料",
            //    Tooltip = "员工详细",
            //    Url = "/Personnel/Employee"
            //};
            //items.Add(item);
            return(items);
        }
Beispiel #17
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = "详细信息",
                Tooltip = "详细信息"
            };

            items.Add(item);
            //item = new NavigateItem
            //{
            //    Title = "薪资标准",
            //    Tooltip = "薪资标准",
            //    Url = "/Salary/SalaryStandard.xaml"
            //};
            //items.Add(item);
            return(items);
        }
Beispiel #18
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = "角色",
                Tooltip = "员工角色"
            };

            items.Add(item);
            item = new NavigateItem
            {
                Title   = "员工信息",
                Tooltip = "详细信息",
                Url     = "/SysUserInfoPage.xaml?userid=" + tmpUser.SYSUSERID
            };
            items.Add(item);

            return(items);
        }
Beispiel #19
0
        public List <NavigateItem> GetLeftMenuItems()
        {
            List <NavigateItem> items = new List <NavigateItem>();
            NavigateItem        item  = new NavigateItem
            {
                Title   = Utility.GetResourceStr("BASEINFO"),
                Tooltip = Utility.GetResourceStr("BASEINFO")
            };

            items.Add(item);

            //item = new NavigateItem
            //{
            //    Title = Utility.GetResourceStr("SALARYARCHIVE"),
            //    Tooltip = Utility.GetResourceStr("SALARYARCHIVE"),
            //    Url = "/Salary/SalaryArchive"
            //};
            //items.Add(item);

            return(items);
        }
        IEnumerable <NavigateTreeItem> GetHierarchy(NavigateItem item)
        {
            string rootPath = FindRootPath(item.Path);

            if (string.IsNullOrEmpty(rootPath) || !item.Path.StartsWith(rootPath))
            {
                yield break;
            }
            yield return(GetUniqueItem(null, rootPath, null));

            string path = Path.GetDirectoryName(item.Path);

            yield return(GetUniqueItem(path, item.Path, item));

            while (path != rootPath)
            {
                string next = Path.GetDirectoryName(path);
                yield return(GetUniqueItem(next, path, null));

                path = next;
            }
        }
        void GenerateAddReferenceMenuItem(NavigateItem item, Func <NavigateItem, string> getRelativePath)
        {
            string relativePath = getRelativePath(item);

            if (string.IsNullOrEmpty(relativePath) || !relativePath.StartsWith("$"))
            {
                return;
            }
            int index = GetDirectorySeparatorIndex(relativePath);

            if (index < 0)
            {
                return;
            }
            string menuName = GetRootMenuName(relativePath);
            var    rootMenu = GetRootAddReferenceMenu(string.Format(addReferenceFormat, menuName));

            relativePath = relativePath.Substring(index, relativePath.Length - index);
            GenerateMenuItemContent(rootMenu, item, relativePath, (menuItem, navItem) => {
                menuItem.Tag    = navItem;
                menuItem.Click += AddReferenceMenuItemClick;
            });
        }
 bool ShouldGenerateMenuItem(NavigateItem item)
 {
     return(item.UsedForAddReference && ProjectTypeMatch(item));
 }
Beispiel #23
0
 public void AddReferences(IDteWrapper dte, NavigateItem item)
 {
     AddReferencesImpl(dte, item, false);
 }
Beispiel #24
0
 public void AddProjectReferences(IDteWrapper dte, NavigateItem item)
 {
     AddReferencesImpl(dte, item, true);
 }
Beispiel #25
0
        public void AddReferencesImpl(IDteWrapper dte, NavigateItem item, bool addAsProjectReference)
        {
            dte.LockCurrentProject();
            try {
                BusyIndicator.Show();

                string         path        = item.Path;
                SolutionParser parser      = new SolutionParser(path);
                var            projectType = parser.GetProjectType();

                var newAssemblies = parser.GetReferencedAssemblies(!addAsProjectReference).Select(x => new MultiReference(x));
                var newVersion    = newAssemblies.Select(x => x.AssemblySource).FirstOrDefault(DXControlsVersionHelper.HasDXVersionInfo).With(DXControlsVersionHelper.GetDXVersionString);

                BusyIndicator.UpdateText("Search for references...");

                var cache = SerializeHelper.DeserializeAddReferenceHelperCache();
                var updatedReferenceCachedItem = cache.GetItem(path);
                IEnumerable <MultiReference> updatedReferences = null;
                if (updatedReferenceCachedItem != null)
                {
                    updatedReferences = updatedReferenceCachedItem.References.Select(x => new MultiReference(x)).ToList();
                }
                else
                {
                    updatedReferences = ChangeVersion(dte, projectType, newVersion).ToList();
                    cache.AddItem(new AddReferenceHelperItem()
                    {
                        Solution = path, References = updatedReferences.Where(x => x.ReferenceSource != null).Select(x => x.ReferenceSource).ToList()
                    });
                    SerializeHelper.SerializeAddReferenceHelperCache(cache);
                }

                BusyIndicator.UpdateText("Preparing project...");

                dte.ClearReferences();
                dte.ClearProjectReferences();

                var actualReferences = Concat(newAssemblies, updatedReferences);
                if (addAsProjectReference)
                {
                    actualReferences = Concat(actualReferences, parser.GetProjectPathes().Select(x => new MultiReference(x, MultiReferenceType.Project)));
                }
                foreach (var reference in actualReferences)
                {
                    try {
                        if (reference.Type == MultiReferenceType.Assembly)
                        {
                            var assembly = projectType == ProjectType.SL ? reference.FullAssemblySource : reference.AssemblySource;
                            BusyIndicator.UpdateText("Add reference: " + assembly);
                            dte.AddReference(assembly);
                        }
                        else
                        {
                            var project = reference.ProjectSource;
                            BusyIndicator.UpdateText("Add project: " + project);
                            dte.AddProjectReference(reference.ProjectSource);
                        }
                    } catch { }
                }
            }
            finally {
                BusyIndicator.Close();
                dte.UnlockCurrentProject();
                dte.ActivateConfiguration("DebugTest");
            }
        }