public override void OnMultipleNodeDrop(object[] dataObjects, DragOperation operation, DropPosition pos) { DotNetProject p = (DotNetProject)CurrentNode.GetParentDataItem(typeof(Project), false); AddinData adata = p.GetAddinData(); ExtensionNodeInfo en = (ExtensionNodeInfo)CurrentNode.DataItem; foreach (ExtensionNodeInfo newNode in dataObjects) { if (newNode.Node.Parent is ExtensionNodeDescription) { ((ExtensionNodeDescription)newNode.Node.Parent).ChildNodes.Remove(en.Node); } else { ((Extension)newNode.Node.Parent).ExtensionNodes.Remove(newNode.Node); } InsertNode(adata, en, pos, newNode.Node); // Add all other nodes after the first node en = newNode; pos = DropPosition.After; } adata.CachedAddinManifest.Save(); adata.NotifyChanged(false); }
public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, ref string label, ref Pixbuf icon, ref Pixbuf closedIcon) { ExtensionNodeInfo ninfo = (ExtensionNodeInfo)dataObject; ExtensionNodeDescription node = ninfo.Node; label = GLib.Markup.EscapeText(node.NodeName); StringBuilder desc = new StringBuilder(); foreach (NodeAttribute at in node.Attributes) { if (desc.Length > 0) { desc.Append(" "); } desc.Append(at.Name).Append("=\"").Append(GLib.Markup.EscapeText(at.Value)).Append('"'); } if (desc.Length > 0) { label += "(<i>" + desc + "</i>)"; } icon = Context.GetIcon("md-extension-node"); if (treeBuilder.Options ["ShowExistingNodes"] && !ninfo.CanModify) { Gdk.Pixbuf gicon = Context.GetComposedIcon(icon, "fade"); if (gicon == null) { gicon = ImageService.MakeTransparent(icon, 0.5); Context.CacheComposedIcon(icon, "fade", gicon); } icon = gicon; } }
ExtensionNodeTypeCollection GetAllowedChildTypes() { ExtensionNodeInfo en = (ExtensionNodeInfo)CurrentNode.DataItem; object parent = en.Node.Parent; Extension ext = parent as Extension; if (ext != null) { return(ext.GetAllowedNodeTypes()); } else { ExtensionNodeDescription node = (ExtensionNodeDescription)parent; if (node != null) { ExtensionNodeType tn = node.GetNodeType(); if (tn != null) { return(tn.GetAllowedNodeTypes()); } } } return(new ExtensionNodeTypeCollection()); }
public override void BuildChildNodes(ITreeBuilder treeBuilder, object dataObject) { ExtensionNodeInfo en = (ExtensionNodeInfo)dataObject; foreach (ExtensionNodeInfo child in en.Expand()) { treeBuilder.AddChild(child); } }
ExtensionNodeDescription InsertNode(AddinData adata, ExtensionNodeInfo refNode, DropPosition pos, ExtensionNodeDescription newNode) { ExtensionNodeDescriptionCollection nodes = null; newNode.InsertBefore = ""; newNode.InsertAfter = ""; if (refNode.CanModify) { if (pos == DropPosition.Into) { nodes = refNode.Node.ChildNodes; } else if (refNode.Node.Parent is ExtensionNodeDescription) { nodes = ((ExtensionNodeDescription)refNode.Node.Parent).ChildNodes; } } else { if (pos == DropPosition.After) { newNode.InsertAfter = refNode.Node.Id; } else if (pos == DropPosition.Before) { newNode.InsertBefore = refNode.Node.Id; } } if (nodes == null) { string path = refNode.Node.GetParentPath(); if (pos == DropPosition.Into) { path += "/" + refNode.Node.Id; } Extension ext = adata.CachedAddinManifest.MainModule.GetExtension(path); nodes = ext.ExtensionNodes; } for (int n = 0; n < nodes.Count; n++) { ExtensionNodeDescription node = nodes [n]; if (node == refNode.Node) { if (pos == DropPosition.After) { n++; } nodes.Insert(n, newNode); return(newNode); } } nodes.Add(newNode); return(newNode); }
public override bool CanDeleteMultipleItems() { foreach (var nav in CurrentNodes) { ExtensionNodeInfo en = (ExtensionNodeInfo)nav.DataItem; if (!en.CanModify) { return(false); } } return(true); }
public override DragOperation CanDragNode() { ExtensionNodeInfo en = (ExtensionNodeInfo)CurrentNode.DataItem; if (en.CanModify) { return(DragOperation.Copy | DragOperation.Move); } else { return(DragOperation.None); } }
public void AddNodeBefore(object data) { DotNetProject p = (DotNetProject)CurrentNode.GetParentDataItem(typeof(Project), false); AddinData adata = p.GetAddinData(); ExtensionNodeInfo en = (ExtensionNodeInfo)CurrentNode.DataItem; ExtensionNodeType ntype = (ExtensionNodeType)data; ExtensionNodeDescription newNode = new ExtensionNodeDescription(ntype.NodeName); InsertNode(adata, en, DropPosition.Before, newNode); adata.CachedAddinManifest.Save(); adata.NotifyChanged(false); }
public override int CompareObjects(ITreeNavigator thisNode, ITreeNavigator otherNode) { ExtensionNodeInfo n1 = thisNode.DataItem as ExtensionNodeInfo; ExtensionNodeInfo n2 = otherNode.DataItem as ExtensionNodeInfo; if (n1 != null && n2 != null) { return(n1.Order.CompareTo(n2.Order)); } else { return(base.CompareObjects(thisNode, otherNode)); } }
public override void DeleteMultipleItems() { if (MessageService.Confirm(GettextCatalog.GetString("Are you sure you want to delete the selected nodes?"), AlertButton.Delete)) { foreach (var nav in CurrentNodes) { ExtensionNodeInfo en = (ExtensionNodeInfo)nav.DataItem; if (en.Node.Parent is Extension) { ((Extension)en.Node.Parent).ExtensionNodes.Remove(en.Node); } else if (en.Node.Parent is ExtensionNodeDescription) { ((ExtensionNodeDescription)en.Node.Parent).ChildNodes.Remove(en.Node); } } } DotNetProject p = (DotNetProject)CurrentNode.GetParentDataItem(typeof(Project), false); AddinData adata = p.GetAddinData(); adata.SaveAddinManifest(); adata.NotifyChanged(false); }
ExtensionNodeDescription InsertNode (AddinData adata, ExtensionNodeInfo refNode, DropPosition pos, ExtensionNodeDescription newNode) { ExtensionNodeDescriptionCollection nodes = null; newNode.InsertBefore = ""; newNode.InsertAfter = ""; if (refNode.CanModify) { if (pos == DropPosition.Into) nodes = refNode.Node.ChildNodes; else if (refNode.Node.Parent is ExtensionNodeDescription) nodes = ((ExtensionNodeDescription)refNode.Node.Parent).ChildNodes; } else { if (pos == DropPosition.After) newNode.InsertAfter = refNode.Node.Id; else if (pos == DropPosition.Before) newNode.InsertBefore = refNode.Node.Id; } if (nodes == null) { string path = refNode.Node.GetParentPath (); if (pos == DropPosition.Into) path += "/" + refNode.Node.Id; Extension ext = adata.CachedAddinManifest.MainModule.GetExtension (path); nodes = ext.ExtensionNodes; } for (int n = 0; n < nodes.Count; n++) { ExtensionNodeDescription node = nodes [n]; if (node == refNode.Node) { if (pos == DropPosition.After) n++; nodes.Insert (n, newNode); return newNode; } } nodes.Add (newNode); return newNode; }
public override string GetNodeName(ITreeNavigator thisNode, object dataObject) { ExtensionNodeInfo ep = (ExtensionNodeInfo)dataObject; return(ep.Node.Id); }
public override void OnNodeRemoved(object dataObject) { ExtensionNodeInfo en = (ExtensionNodeInfo)dataObject; en.Changed -= HandleNodeChanged; }
public override bool HasChildNodes(ITreeBuilder builder, object dataObject) { ExtensionNodeInfo en = (ExtensionNodeInfo)dataObject; return(en.HasChildren); }