public AddinRegistry GetRegistry (ITreeNavigator nav)
		{
			Solution sol = (Solution) nav.GetParentDataItem (typeof(Solution), true);
			if (sol != null)
				return sol.GetAddinData ().Registry;
			RegistryInfo reg = (RegistryInfo) nav.GetParentDataItem (typeof(RegistryInfo), true);
			if (reg != null)
				return reg.CachedRegistry;
			return null;
		}
        protected override void OnSelectionChanged(object sender, EventArgs args)
        {
            base.OnSelectionChanged(sender, args);
            ITreeNavigator nav = treeView.GetSelectedNode();

            if (nav != null)
            {
                WorkspaceItem c = (WorkspaceItem)nav.GetParentDataItem(typeof(WorkspaceItem), true);
                IdeApp.ProjectOperations.CurrentSelectedWorkspaceItem = c;
                SolutionItem ce = (SolutionItem)nav.GetParentDataItem(typeof(SolutionItem), true);
                IdeApp.ProjectOperations.CurrentSelectedSolutionItem = ce;
                IdeApp.ProjectOperations.CurrentSelectedItem         = nav.DataItem;
            }
        }
        public static void MoveCopyFile(Project project, ITreeNavigator nav, string filename, bool move, bool alreadyInPlace)
        {
            if (Runtime.FileUtilityService.IsDirectory (filename))
                return;

            ProjectFolder folder = nav.GetParentDataItem (typeof(ProjectFolder), true) as ProjectFolder;

            string name = System.IO.Path.GetFileName (filename);
            string baseDirectory = folder != null ? folder.Path : project.BaseDirectory;
            string newfilename = alreadyInPlace ? filename : Path.Combine (baseDirectory, name);

            if (filename != newfilename) {
                if (File.Exists (newfilename)) {
                    if (!Runtime.MessageService.AskQuestion (string.Format (GettextCatalog.GetString ("The file '{0}' already exists. Do you want to replace it?"), newfilename), "MonoDevelop"))
                        return;
                }
                File.Copy (filename, newfilename, true);
                if (move)
                    Runtime.FileService.RemoveFile (filename);
            }

            if (project.IsCompileable (newfilename)) {
                project.AddFile (newfilename, BuildAction.Compile);
            } else {
                project.AddFile (newfilename, BuildAction.Nothing);
            }

            Runtime.ProjectService.SaveCombine();
        }
		public AddinData GetAddinData (ITreeNavigator nav)
		{
			DotNetProject p = (DotNetProject) nav.GetParentDataItem (typeof(DotNetProject), true);
			if (p == null)
				return null;
			return p.GetAddinData ();
		}
Ejemplo n.º 5
0
        public AddinRegistry GetRegistry(ITreeNavigator nav)
        {
            Solution sol = (Solution)nav.GetParentDataItem(typeof(Solution), true);

            if (sol != null)
            {
                return(sol.GetAddinData().Registry);
            }
            RegistryInfo reg = (RegistryInfo)nav.GetParentDataItem(typeof(RegistryInfo), true);

            if (reg != null)
            {
                return(reg.CachedRegistry);
            }
            return(null);
        }
Ejemplo n.º 6
0
        public AddinData GetAddinData(ITreeNavigator nav)
        {
            DotNetProject p = (DotNetProject)nav.GetParentDataItem(typeof(DotNetProject), true);

            if (p == null)
            {
                return(null);
            }
            return(p.GetAddinData());
        }
        protected IUnresolvedAssembly GetMainAssembly(ITreeNavigator treeBuilder)
        {
            var loader = (AssemblyLoader)treeBuilder.GetParentDataItem(typeof(AssemblyLoader), true);

            if (loader != null)
            {
                return(loader.UnresolvedAssembly);
            }
            return(null);
        }
Ejemplo n.º 8
0
        public override void GetNodeAttributes(ITreeNavigator parentNode, object dataObject, ref NodeAttributes attributes)
        {
            // Hide References folder if the project is a SDK style project.
            var project = (DotNetProject)parentNode.GetParentDataItem(typeof(DotNetProject), true);

            if (project.HasFlavor <SdkProjectExtension> ())
            {
                attributes |= NodeAttributes.Hidden;
            }
        }
		public CachedModelData GetCachedModelData (ITreeNavigator nav)
		{
			Project p = (Project) nav.GetParentDataItem (typeof(Project), true);
			if (p == null)
				return new CachedModelData ();
			CachedModelData data = (CachedModelData) p.ExtendedProperties [typeof(CachedModelData)];
			if (data == null) {
				data = new CachedModelData ();
				p.ExtendedProperties [typeof(CachedModelData)] = data;
			}
			return data;
		}
Ejemplo n.º 10
0
        internal static void PrintDeclaringType(StringBuilder result, ITreeNavigator navigator)
        {
            var type = (IType)navigator.GetParentDataItem(typeof(IType), false);

            if (type == null)
            {
                return;
            }

            result.Append(GettextCatalog.GetString("<b>Declaring Type:</b>\t{0}", type.FullName));
            result.AppendLine();
        }
        public override void OnNodeDrop(object dataObject, DragOperation operation)
        {
            List <IWorkspaceFileObject> toSave = new List <IWorkspaceFileObject> ();

            if (dataObject is Package)
            {
                Package        package = (Package)dataObject;
                ITreeNavigator nav     = CurrentNode;

                CProject dest = nav.GetParentDataItem(typeof(CProject), true) as CProject;
                nav.MoveToObject(dataObject);
                CProject source = nav.GetParentDataItem(typeof(CProject), true) as CProject;

                dest.Packages.Add(package);
                toSave.Add(dest);

                if (operation == DragOperation.Move)
                {
                    source.Packages.Remove(package);
                    toSave.Add(source);
                }
            }
            else if (dataObject is CProject)
            {
                CProject draggedProject = (CProject)dataObject;
                CProject destProject    = (CurrentNode.DataItem as ProjectPackageCollection).Project;

                draggedProject.WriteMDPkgPackage(IdeApp.Workspace.ActiveConfiguration);

                Package package = new Package(draggedProject);

                if (!destProject.Packages.Contains(package))
                {
                    destProject.Packages.Add(package);
                    toSave.Add(destProject);
                }
            }
            IdeApp.ProjectOperations.SaveAsync(toSave);
        }
Ejemplo n.º 12
0
        internal static void PrintAssembly(StringBuilder result, ITreeNavigator navigator)
        {
            var assemblyDefinition = (AssemblyDefinition)navigator.GetParentDataItem(typeof(AssemblyDefinition), false);

            if (assemblyDefinition == null)
            {
                return;
            }

            result.Append(String.Format(GettextCatalog.GetString("<b>Assembly:</b>\t{0}, Version={1}"),
                                        assemblyDefinition.Name.Name,
                                        assemblyDefinition.Name.Version));
            result.AppendLine();
        }
        protected ITypeResolveContext GetContext(ITreeNavigator treeBuilder)
        {
            var mainAssembly = GetMainAssembly(treeBuilder);

            if (mainAssembly != null)
            {
                var simpleCompilation = new SimpleCompilation(mainAssembly);
                return(new SimpleTypeResolveContext(simpleCompilation.MainAssembly));
            }
            var project     = (Project)treeBuilder.GetParentDataItem(typeof(Project), true);
            var compilation = TypeSystemService.GetCompilation(project);

            return(new SimpleTypeResolveContext(compilation.MainAssembly));
        }
        protected IType Resolve(ITreeNavigator treeBuilder, IUnresolvedTypeDefinition type)
        {
            var mainAssembly = GetMainAssembly(treeBuilder);

            if (mainAssembly != null)
            {
                var simpleCompilation = new SimpleCompilation(mainAssembly);
                return(type.Resolve(new SimpleTypeResolveContext(simpleCompilation.MainAssembly)));
            }
            var project = (Project)treeBuilder.GetParentDataItem(typeof(Project), true);
            var ctx     = TypeSystemService.GetCompilation(project);

            return(ctx.MainAssembly.GetTypeDefinition(type.Namespace, type.Name, type.TypeParameters.Count));
        }
        public override void OnNodeDrop(object dataObject, DragOperation operation)
        {
            if (dataObject is ProjectPackage)
            {
                ProjectPackage package = (ProjectPackage)dataObject;
                ITreeNavigator nav     = CurrentNode;

                CProject dest = nav.GetParentDataItem(typeof(CProject), true) as CProject;
                nav.MoveToObject(dataObject);
                CProject source = nav.GetParentDataItem(typeof(CProject), true) as CProject;

                dest.Packages.Add(package);
                IdeApp.ProjectOperations.SaveProject(dest);

                if (operation == DragOperation.Move)
                {
                    source.Packages.Remove(package);
                    IdeApp.ProjectOperations.SaveProject(source);
                }
            }
            else if (dataObject is CProject)
            {
                CProject draggedProject = (CProject)dataObject;
                CProject destProject    = (CurrentNode.DataItem as ProjectPackageCollection).Project;

                draggedProject.WriteMDPkgPackage();

                ProjectPackage package = new ProjectPackage(draggedProject);

                if (!destProject.Packages.Contains(package))
                {
                    destProject.Packages.Add(package);
                    IdeApp.ProjectOperations.SaveProject(destProject);
                }
            }
        }
Ejemplo n.º 16
0
        public void OnChanged(object obj)
        {
            // Don't use the CurrentNode property here since it may not be properly initialized when the event is fired.
            ITreeNavigator nav = Tree.GetNodeAtObject(obj);

            if (nav != null)
            {
                IWorkspaceFileObject ce = (IWorkspaceFileObject)nav.GetParentDataItem(typeof(IWorkspaceFileObject), true);
                if (ce != null)
                {
                    IdeApp.ProjectOperations.Save(ce);
                    return;
                }
            }
        }
		public override void GetNodeAttributes (ITreeNavigator parentNode, object dataObject, ref NodeAttributes attributes)
		{
			base.GetNodeAttributes (parentNode, dataObject, ref attributes);
			if (dataObject is ProjectFile) {
				string fname = ((ProjectFile)dataObject).Name;
				if (fname.EndsWith (".addin.xml", StringComparison.Ordinal) || fname.EndsWith (".addin", StringComparison.Ordinal)) {
					if (!(parentNode.DataItem is AddinData)) {
						DotNetProject dp = (DotNetProject) parentNode.GetParentDataItem (typeof(DotNetProject), true);
						if (dp != null && dp.GetAddinData () != null) {
							// Hide the manifest
							attributes |= NodeAttributes.Hidden;
						}
					}
				}
			}
		}
Ejemplo n.º 18
0
        public CachedModelData GetCachedModelData(ITreeNavigator nav)
        {
            Project p = (Project)nav.GetParentDataItem(typeof(Project), true);

            if (p == null)
            {
                return(new CachedModelData());
            }
            CachedModelData data = (CachedModelData)p.ExtendedProperties [typeof(CachedModelData)];

            if (data == null)
            {
                data = new CachedModelData();
                p.ExtendedProperties [typeof(CachedModelData)] = data;
            }
            return(data);
        }
        void ShowDocumentation(object ob)
        {
            if (docView != null)
            {
                paned.Remove(docView);
                docView.Destroy();
                docView = null;
            }

            ITreeNavigator nav     = tree.GetSelectedNode();
            RegistryInfo   regInfo = (RegistryInfo)nav.GetParentDataItem(typeof(RegistryInfo), true);
            AddinRegistry  reg     = regInfo.CachedRegistry;

            if (ob is AddinDescription)
            {
                AddinView view = new AddinView();
                view.Fill((AddinDescription)ob);
                docView = view;
            }
            else if (ob is ExtensionPoint)
            {
                ExtensionPointView view = new ExtensionPointView();
                view.Fill((ExtensionPoint)ob, reg);
                docView = view;
            }
            else if (ob is Extension)
            {
                ExtensionView view = new ExtensionView();
                view.Fill((Extension)ob, nav);
                docView = view;
            }
            else if (ob is ExtensionNodeInfo)
            {
                ExtensionNodeView view = new ExtensionNodeView();
                view.Fill(((ExtensionNodeInfo)ob).Node);
                docView = view;
            }

            if (docView == null)
            {
                docView = new Gtk.Label();
            }

            docView.ShowAll();
            paned.Add2(docView);
        }
 public override void GetNodeAttributes(ITreeNavigator parentNode, object dataObject, ref NodeAttributes attributes)
 {
     base.GetNodeAttributes(parentNode, dataObject, ref attributes);
     if (dataObject is ProjectFile)
     {
         string fname = ((ProjectFile)dataObject).Name;
         if (fname.EndsWith(".addin.xml", StringComparison.Ordinal) || fname.EndsWith(".addin", StringComparison.Ordinal))
         {
             if (!(parentNode.DataItem is AddinData))
             {
                 DotNetProject dp = (DotNetProject)parentNode.GetParentDataItem(typeof(DotNetProject), true);
                 if (dp != null && dp.GetAddinData() != null)
                 {
                     // Hide the manifest
                     attributes |= NodeAttributes.Hidden;
                 }
             }
         }
     }
 }
        public override bool CanDropNode(object dataObject, DragOperation operation, DropPosition pos)
        {
            object parent1 = CurrentNode.GetParentDataItem(typeof(Extension), false);

            if (parent1 == null)
            {
                parent1 = CurrentNode.GetParentDataItem(typeof(ExtensionPoint), false);
            }

            ITreeNavigator nav = CurrentNode.Clone();

            if (!nav.MoveToObject(dataObject))
            {
                return(false);
            }
            object parent2 = nav.GetParentDataItem(parent1.GetType(), false);

            if (parent2 != parent1)
            {
                return(false);
            }

            return(true);
        }
		protected IUnresolvedAssembly GetMainAssembly (ITreeNavigator treeBuilder)
		{
			var loader = (AssemblyLoader)treeBuilder.GetParentDataItem (typeof(AssemblyLoader), true);
			if (loader != null)
				return loader.UnresolvedAssembly;
			return null;
		}
		internal static void PrintAssembly (StringBuilder result, ITreeNavigator navigator)
		{
			AssemblyDefinition assemblyDefinition = (AssemblyDefinition)navigator.GetParentDataItem (typeof (AssemblyDefinition), false);
			if (assemblyDefinition == null)
				return;
			
			result.Append (String.Format (GettextCatalog.GetString ("<b>Assembly:</b>\t{0}, Version={1}"),
			                              assemblyDefinition.Name.Name,
			                              assemblyDefinition.Name.Version));
			result.AppendLine ();
		}
        static Project GetProject(ITreeNavigator node)
        {
            Project project = null;

            if (node.DataItem is Project)
                project = (Project) node.DataItem;
            else if (node.DataItem is ProjectFolder)
                project = ((ProjectFolder) node.DataItem).Project;
            else if (node.DataItem is ProjectFile)
                project = ((ProjectFile) node.DataItem).Project;
            else if (node.DataItem is NamespaceData)
                project = (Project) node.GetParentDataItem (typeof (Project), false);
            else if (node.DataItem is ClassData)
                project = (Project) node.GetParentDataItem (typeof (Project), false);

            return project;
        }
 protected static bool IsFromAssembly(ITreeNavigator treeBuilder)
 {
     return(treeBuilder.GetParentDataItem(typeof(AssemblyLoader), true) != null);
 }
		protected static bool IsFromAssembly (ITreeNavigator treeBuilder)
		{
			return treeBuilder.GetParentDataItem (typeof(AssemblyLoader), true) != null;
		}
		protected IType Resolve (ITreeNavigator treeBuilder, IUnresolvedTypeDefinition type)
		{
			var mainAssembly = GetMainAssembly (treeBuilder);
			if (mainAssembly != null) {
				var simpleCompilation = new SimpleCompilation (mainAssembly);
				return type.Resolve (new SimpleTypeResolveContext (simpleCompilation.MainAssembly));
			}
			var project = (Project)treeBuilder.GetParentDataItem (typeof(Project), true);
			var ctx = TypeSystemService.GetCompilation (project);
			return ctx.MainAssembly.GetTypeDefinition (type.Namespace, type.Name, type.TypeParameters.Count);
		}
		protected ITypeResolveContext GetContext (ITreeNavigator treeBuilder)
		{
			var mainAssembly = GetMainAssembly (treeBuilder);
			if (mainAssembly != null) {
				var simpleCompilation = new SimpleCompilation (mainAssembly);
				return new SimpleTypeResolveContext (simpleCompilation.MainAssembly);
			}
			var project = (Project)treeBuilder.GetParentDataItem (typeof(Project), true);
			var ctx = TypeSystemService.GetCompilation (project);
			return ctx.TypeResolveContext;
		}
 internal AssemblyLoader GetCecilLoader(ITreeNavigator navigator)
 {
     return(navigator.GetParentDataItem <AssemblyLoader> (false));
 }
		internal static void PrintDeclaringType (StringBuilder result, ITreeNavigator navigator)
		{
			var type = (IType)navigator.GetParentDataItem (typeof (IType), false);
			if (type == null)
				return;
			
			result.Append (String.Format (GettextCatalog.GetString ("<b>Declaring Type:</b>\t{0}"), type.FullName));
			result.AppendLine ();
		}
        public override void OnNodeDrop(object dataObject, DragOperation operation)
        {
            // It allows dropping either project references or projects.
            // Dropping a project creates a new project reference to that project

            DotNetProject project = dataObject as DotNetProject;

            if (project != null)
            {
                ProjectReference pr = new ProjectReference(project);
                DotNetProject    p  = CurrentNode.GetParentDataItem(typeof(DotNetProject), false) as DotNetProject;
                if (ProjectReferencesProject(project, p.Name))
                {
                    return;
                }
                p.References.Add(pr);
                IdeApp.ProjectOperations.Save(p);
                return;
            }

            // It's dropping a ProjectReference object.

            ProjectReference pref = dataObject as ProjectReference;
            ITreeNavigator   nav  = CurrentNode;

            if (operation == DragOperation.Move)
            {
                NodePosition pos = nav.CurrentPosition;
                nav.MoveToObject(dataObject);
                DotNetProject p = nav.GetParentDataItem(typeof(DotNetProject), true) as DotNetProject;
                nav.MoveToPosition(pos);
                DotNetProject p2 = nav.GetParentDataItem(typeof(DotNetProject), true) as DotNetProject;

                p.References.Remove(pref);

                // Check if there is a cyclic reference after removing from the source project
                if (pref.ReferenceType == ReferenceType.Project)
                {
                    DotNetProject pdest = p.ParentSolution.FindProjectByName(pref.Reference) as DotNetProject;
                    if (pdest == null || ProjectReferencesProject(pdest, p2.Name))
                    {
                        // Restore the dep
                        p.References.Add(pref);
                        return;
                    }
                }

                p2.References.Add(pref);
                IdeApp.ProjectOperations.Save(p);
                IdeApp.ProjectOperations.Save(p2);
            }
            else
            {
                nav.MoveToParent(typeof(DotNetProject));
                DotNetProject p = nav.DataItem as DotNetProject;

                // Check for cyclic referencies
                if (pref.ReferenceType == ReferenceType.Project)
                {
                    DotNetProject pdest = p.ParentSolution.FindProjectByName(pref.Reference) as DotNetProject;
                    if (pdest == null || ProjectReferencesProject(pdest, p.Name))
                    {
                        return;
                    }
                }
                p.References.Add((ProjectReference)pref.Clone());
                IdeApp.ProjectOperations.Save(p);
            }
        }
		internal CecilLoader GetCecilLoader (ITreeNavigator navigator)
		{
			return navigator.GetParentDataItem<AssemblyLoader> (false).CecilLoader;
		}