Esempio n. 1
0
		public override XamlTypeFinder Clone()
		{
			MyTypeFinder copy = new MyTypeFinder();
			copy.file = this.file;
			copy.ImportFrom(this);
			return copy;
		}
Esempio n. 2
0
        public static MyTypeFinder Create(OpenedFile file)
        {
            MyTypeFinder f = new MyTypeFinder();

            f.file = file;
            f.ImportFrom(CreateWpfTypeFinder());

            // DO NOT USE Assembly.LoadFrom!
            // use the special handling logic defined in TypeResolutionService!
            var compilation = SD.ParserService.GetCompilationForFile(file.FileName);

            foreach (var referencedAssembly in compilation.ReferencedAssemblies)
            {
                try {
                    var assembly = f.typeResolutionService.LoadAssembly(referencedAssembly);
                    if (assembly != null)
                    {
                        f.RegisterAssembly(assembly);
                    }
                } catch (Exception ex) {
                    ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex);
                }
            }
            return(f);
        }
Esempio n. 3
0
		public static MyTypeFinder Create(OpenedFile file)
		{
			MyTypeFinder f = new MyTypeFinder();
			f.file = file;
			f.ImportFrom(CreateWpfTypeFinder());
			return f;
		}
Esempio n. 4
0
		public static MyTypeFinder Create(OpenedFile file)
		{
			MyTypeFinder f = new MyTypeFinder();
			f.file = file;
			f.ImportFrom(CreateWpfTypeFinder());
			
			var pc = MyTypeFinder.GetProjectContent(file);
			foreach (var referencedProjectContent in pc.ThreadSafeGetReferencedContents()) {
				string fileName = null;
				try{
					if (referencedProjectContent is ParseProjectContent)
					{
						var prj = ((ParseProjectContent)referencedProjectContent).Project as AbstractProject;
						if (prj != null)
							fileName = prj.OutputAssemblyFullPath;
					}
					else if (referencedProjectContent is ReflectionProjectContent)
					{
						fileName = ((ReflectionProjectContent) referencedProjectContent).AssemblyLocation;
					}
					var assembly = Assembly.LoadFrom(fileName);
					f.RegisterAssembly(assembly);
				}
				catch (Exception ex) {
					ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : "+ (fileName ?? ""), ex);
				}
			}
			return f;
		}
Esempio n. 5
0
        public static MyTypeFinder Create(OpenedFile file)
        {
            MyTypeFinder f = new MyTypeFinder();

            f.file = file;
            f.ImportFrom(CreateWpfTypeFinder());

            var pc = MyTypeFinder.GetProjectContent(file);

            foreach (var referencedProjectContent in pc.ThreadSafeGetReferencedContents())
            {
                string fileName = null;
                try{
                    if (referencedProjectContent is ParseProjectContent)
                    {
                        var prj = ((ParseProjectContent)referencedProjectContent).Project as AbstractProject;
                        if (prj != null)
                        {
                            fileName = prj.OutputAssemblyFullPath;
                        }
                    }
                    else if (referencedProjectContent is ReflectionProjectContent)
                    {
                        fileName = ((ReflectionProjectContent)referencedProjectContent).AssemblyLocation;
                    }
                    var assembly = Assembly.LoadFrom(fileName);
                    f.RegisterAssembly(assembly);
                }
                catch (Exception ex) {
                    ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + (fileName ?? ""), ex);
                }
            }
            return(f);
        }
Esempio n. 6
0
        public object GetDescription(DesignItemProperty property)
        {
            IProjectContent pc = MyTypeFinder.GetProjectContent(file);

            if (pc != null)
            {
                // For attached Properties
                if (property.DependencyFullName != null && property.Name.Contains("."))
                {
                    IClass c = pc.GetClassByReflectionName(property.DependencyProperty.OwnerType.FullName, true);
                    if (c != null)
                    {
                        IMember m = DefaultProjectContent.GetMemberByReflectionName(c, property.DependencyProperty.Name + "Property");
                        if (m != null)
                        {
                            return(CodeCompletionItem.ConvertDocumentation(m.Documentation));
                        }
                    }
                }
                else
                {
                    IClass c = pc.GetClassByReflectionName(property.DeclaringType.FullName, true);
                    if (c != null)
                    {
                        IMember m = DefaultProjectContent.GetMemberByReflectionName(c, property.Name);
                        if (m != null)
                        {
                            return(CodeCompletionItem.ConvertDocumentation(m.Documentation));
                        }
                    }
                }
            }
            return(null);
        }
Esempio n. 7
0
        public override XamlTypeFinder Clone()
        {
            MyTypeFinder copy = new MyTypeFinder();

            copy.file = this.file;
            copy.ImportFrom(this);
            return(copy);
        }
Esempio n. 8
0
        public static MyTypeFinder Create(OpenedFile file)
        {
            MyTypeFinder f = new MyTypeFinder();

            f.file = file;
            f.ImportFrom(CreateWpfTypeFinder());
            return(f);
        }
        public void AddProjectDlls(OpenedFile file)
        {
            var pc = MyTypeFinder.GetProjectContent(file);

            foreach (var referencedProjectContent in pc.ThreadSafeGetReferencedContents())
            {
                string f = null;
                if (referencedProjectContent is ParseProjectContent)
                {
                    var prj = ((ParseProjectContent)referencedProjectContent).Project as AbstractProject;
                    if (prj != null)
                    {
                        f = prj.OutputAssemblyFullPath;
                    }
                }
                else if (referencedProjectContent is ReflectionProjectContent)
                {
                    f = ((ReflectionProjectContent)referencedProjectContent).AssemblyLocation;
                }

                if (f != null && !addedAssemblys.Contains(f))
                {
                    try
                    {
                        var assembly = Assembly.LoadFrom(f);

                        SideTab sideTab = new SideTab(sideBar, assembly.FullName.Split(new[] { ',' })[0]);
                        sideTab.DisplayName         = StringParser.Parse(sideTab.Name);
                        sideTab.CanBeDeleted        = false;
                        sideTab.ChoosedItemChanged += OnChoosedItemChanged;

                        sideTab.Items.Add(new WpfSideTabItem());

                        foreach (var t in assembly.GetExportedTypes())
                        {
                            if (IsControl(t))
                            {
                                sideTab.Items.Add(new WpfSideTabItem(t));
                            }
                        }

                        if (sideTab.Items.Count > 1)
                        {
                            sideBar.Tabs.Add(sideTab);
                        }

                        addedAssemblys.Add(f);
                    }
                    catch (Exception ex)
                    {
                        WpfViewContent.DllLoadErrors.Add(
                            new Task(new BuildError(f, ex.Message)));
                    }
                }
            }
        }
Esempio n. 10
0
        protected override void LoadInternal(OpenedFile file, System.IO.Stream stream)
        {
            wasChangedInDesigner = false;
            Debug.Assert(file == this.PrimaryFile);
            SD.AnalyticsMonitor.TrackFeature(typeof(WpfViewContent), "Load");

            _stream = new MemoryStream();
            stream.CopyTo(_stream);
            stream.Position = 0;

            if (designer == null)
            {
                // initialize designer on first load
                designer         = new DesignSurface();
                this.UserContent = designer;
                InitPropertyEditor();
                InitWpfToolbox();
            }
            this.UserContent = designer;
            if (outline != null)
            {
                outline.Root = null;
            }
            using (XmlTextReader r = new XmlTextReader(stream)) {
                XamlLoadSettings settings = new XamlLoadSettings();
                settings.DesignerAssemblies.Add(typeof(WpfViewContent).Assembly);
                settings.CustomServiceRegisterFunctions.Add(
                    delegate(XamlDesignContext context) {
                    context.Services.AddService(typeof(IUriContext), new FileUriContext(this.PrimaryFile));
                    context.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile));
                    context.Services.AddService(typeof(IEventHandlerService), new SharpDevelopEventHandlerService(this));
                    context.Services.AddService(typeof(ITopLevelWindowService), new WpfAndWinFormsTopLevelWindowService());
                    context.Services.AddService(typeof(ChooseClassServiceBase), new IdeChooseClassService());
                });
                settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile);
                try {
                    settings.ReportErrors = UpdateTasks;
                    designer.LoadDesigner(r, settings);

                    designer.ContextMenuOpening += (sender, e) => MenuService.ShowContextMenu(e.OriginalSource as UIElement, designer, "/AddIns/WpfDesign/Designer/ContextMenu");

                    if (outline != null && designer.DesignContext != null && designer.DesignContext.RootItem != null)
                    {
                        outline.Root = OutlineNode.Create(designer.DesignContext.RootItem);
                    }

                    propertyGridView.PropertyGrid.SelectedItems = null;
                    designer.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
                    designer.DesignContext.Services.GetService <UndoService>().UndoStackChanged += OnUndoStackChanged;
                } catch (Exception e) {
                    this.UserContent = new WpfDocumentError(e);
                }
            }
        }
Esempio n. 11
0
		public static MyTypeFinder Create(OpenedFile file)
		{
			MyTypeFinder f = new MyTypeFinder();
			f.file = file;
			f.ImportFrom(CreateWpfTypeFinder());
			
			var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
			foreach (var referencedAssembly in compilation.ReferencedAssemblies) {
				try {
					var assembly = Assembly.LoadFrom(referencedAssembly.GetReferenceAssemblyLocation());
					f.RegisterAssembly(assembly);
				} catch (Exception ex) {
					ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex);
				}
			}
			return f;
		}
Esempio n. 12
0
		public static MyTypeFinder Create(OpenedFile file)
		{
			MyTypeFinder f = new MyTypeFinder();
			f.file = file;
			f.ImportFrom(CreateWpfTypeFinder());
			
			// DO NOT USE Assembly.LoadFrom!
			// use the special handling logic defined in TypeResolutionService!
			var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
			foreach (var referencedAssembly in compilation.ReferencedAssemblies) {
				try {
					var assembly = f.typeResolutionService.LoadAssembly(referencedAssembly);
					if (assembly != null)
						f.RegisterAssembly(assembly);
				} catch (Exception ex) {
					ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex);
				}
			}
			return f;
		}
Esempio n. 13
0
        protected override void LoadInternal(OpenedFile file, System.IO.Stream stream)
        {
            wasChangedInDesigner = false;
            Debug.Assert(file == this.PrimaryFile);
            SD.AnalyticsMonitor.TrackFeature(typeof(WpfViewContent), "Load");

            _stream = new MemoryStream();
            stream.CopyTo(_stream);
            stream.Position = 0;

            if (designer == null)
            {
                // initialize designer on first load
                designer         = new DesignSurface();
                this.UserContent = designer;
                InitPropertyEditor();
                InitWpfToolbox();
            }
            this.UserContent = designer;
            if (outline != null)
            {
                outline.Root = null;
            }


            using (XmlTextReader r = new XmlTextReader(stream)) {
                XamlLoadSettings settings = new XamlLoadSettings();
                settings.DesignerAssemblies.Add(typeof(WpfViewContent).Assembly);
                settings.CustomServiceRegisterFunctions.Add(
                    delegate(XamlDesignContext context) {
                    context.Services.AddService(typeof(IUriContext), new FileUriContext(this.PrimaryFile));
                    context.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile));
                    context.Services.AddService(typeof(IEventHandlerService), new SharpDevelopEventHandlerService(this));
                    context.Services.AddService(typeof(ITopLevelWindowService), new WpfAndWinFormsTopLevelWindowService());
                    context.Services.AddService(typeof(ChooseClassServiceBase), new IdeChooseClassService());
                });
                settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile);
                try {
                    settings.ReportErrors = UpdateTasks;
                    designer.LoadDesigner(r, settings);

                    designer.DesignPanel.ContextMenuHandler = (contextMenu) => {
                        var newContextmenu     = new ContextMenu();
                        var sdContextMenuItems = MenuService.CreateMenuItems(newContextmenu, designer, "/AddIns/WpfDesign/Designer/ContextMenu", "ContextMenu");
                        foreach (var entry in sdContextMenuItems)
                        {
                            newContextmenu.Items.Add(entry);
                        }
                        newContextmenu.Items.Add(new Separator());

                        var items = contextMenu.Items.Cast <Object>().ToList();
                        contextMenu.Items.Clear();
                        foreach (var entry in items)
                        {
                            newContextmenu.Items.Add(entry);
                        }

                        designer.DesignPanel.ContextMenu = newContextmenu;
                    };

                    if (outline != null && designer.DesignContext != null && designer.DesignContext.RootItem != null)
                    {
                        outline.Root = OutlineNode.Create(designer.DesignContext.RootItem);
                    }

                    propertyGridView.PropertyGrid.SelectedItems = null;
                    designer.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
                    designer.DesignContext.Services.GetService <UndoService>().UndoStackChanged += OnUndoStackChanged;
                } catch (Exception e) {
                    this.UserContent = new WpfDocumentError(e);
                }

                try{
                    var appXaml = SD.ProjectService.CurrentProject.Items.FirstOrDefault(x => x.FileName.GetFileName().ToLower() == ("app.xaml"));
                    if (appXaml != null)
                    {
                        var        f = appXaml as FileProjectItem;
                        OpenedFile a = SD.FileService.GetOrCreateOpenedFile(f.FileName);

                        var xml = XmlReader.Create(a.OpenRead());
                        var doc = new XmlDocument();
                        doc.Load(xml);
                        var node = doc.FirstChild.ChildNodes.Cast <XmlNode>().FirstOrDefault(x => x.Name == "Application.Resources");

                        foreach (XmlAttribute att in doc.FirstChild.Attributes.Cast <XmlAttribute>().ToList())
                        {
                            if (att.Name.StartsWith("xmlns"))
                            {
                                node.Attributes.Append(att);
                            }
                        }

                        var appXamlXml = XmlReader.Create(new StringReader(node.InnerXml));
                        var parsed     = XamlParser.Parse(appXamlXml, ((XamlDesignContext)designer.DesignContext).ParserSettings);
                        var dict       = (ResourceDictionary)parsed.RootInstance;
                        designer.DesignPanel.Resources.MergedDictionaries.Add(dict);
                    }
                } catch (Exception ex) {
                    LoggingService.Error("Error in loading app.xaml", ex);
                }
            }
        }