示例#1
0
		public void Fill (Extension ext, ITreeNavigator nav)
		{
			labelName.Markup = "<small>Extension</small>\n<big><b>" + GLib.Markup.EscapeText (Util.GetDisplayName (ext)) + "</b></big>";
			object parent = ext.GetExtendedObject ();
			
			if (parent is ExtensionPoint) {
				ExtensionPoint ep = (ExtensionPoint) parent;
				string txt = "<small>Extension Point</small>\n<b>" + GLib.Markup.EscapeText (Util.GetDisplayName (ep)) + "</b>";
				if (!string.IsNullOrEmpty (ep.Description))
					txt += "\n" + GLib.Markup.EscapeText (ep.Description);
				Gtk.Label lab = new Gtk.Label ();
				lab.Xalign = lab.Yalign = 0;
				lab.Markup = txt;
				lab.WidthRequest = 400;
				lab.Wrap = true;
				Gtk.Image img = new Gtk.Image (ImageService.GetPixbuf ("md-extension-point", Gtk.IconSize.Menu));
				img.Yalign = 0;
				Gtk.HBox box = new Gtk.HBox (false, 6);
				box.PackStart (img, false, false, 0);
				box.PackStart (lab, true, true, 0);
				buttonExt.Add (box);
				buttonExt.ShowAll ();
				buttonExt.Clicked += delegate {
					if (nav.MoveToObject (ext)) {
						nav.MoveToParent (typeof(Solution));
						nav.Expanded = true;
						if (nav.MoveToObject (ep.ParentAddinDescription)) {
							nav.Expanded = true;
							if (nav.MoveToObject (ep))
								nav.Selected = true;
						}
					}
				};
			}
		}
示例#2
0
        public void Fill(Extension ext, ITreeNavigator nav)
        {
            labelName.Markup = "<small>Extension</small>\n<big><b>" + GLib.Markup.EscapeText(Util.GetDisplayName(ext)) + "</b></big>";
            object parent = ext.GetExtendedObject();

            if (parent is ExtensionPoint)
            {
                ExtensionPoint ep  = (ExtensionPoint)parent;
                string         txt = "<small>Extension Point</small>\n<b>" + GLib.Markup.EscapeText(Util.GetDisplayName(ep)) + "</b>";
                if (!string.IsNullOrEmpty(ep.Description))
                {
                    txt += "\n" + GLib.Markup.EscapeText(ep.Description);
                }
                Gtk.Label lab = new Gtk.Label();
                lab.Xalign       = lab.Yalign = 0;
                lab.Markup       = txt;
                lab.WidthRequest = 400;
                lab.Wrap         = true;
                Gtk.Image img = new Gtk.Image(ImageService.GetPixbuf("md-extension-point", Gtk.IconSize.Menu));
                img.Yalign = 0;
                Gtk.HBox box = new Gtk.HBox(false, 6);
                box.PackStart(img, false, false, 0);
                box.PackStart(lab, true, true, 0);
                buttonExt.Add(box);
                buttonExt.ShowAll();
                buttonExt.Clicked += delegate {
                    if (nav.MoveToObject(ext))
                    {
                        nav.MoveToParent(typeof(Solution));
                        nav.Expanded = true;
                        if (nav.MoveToObject(ep.ParentAddinDescription))
                        {
                            nav.Expanded = true;
                            if (nav.MoveToObject(ep))
                            {
                                nav.Selected = true;
                            }
                        }
                    }
                };
            }
        }
        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);
        }
        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);
        }
        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);
                }
            }
        }
        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);
            }
        }