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 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); } }