From ea4459b6ceadc1d21c6c96a62a5738ce90b75857 Mon Sep 17 00:00:00 2001 From: Justin Dearing Date: Tue, 8 Jul 2008 09:41:11 +0000 Subject: [PATCH] snk files now have an icon when displayed in the IDE. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3192 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- AddIns/ICSharpCode.SharpDevelop.addin | 5 +- .../Src/TreeModel/Adapters/TreeViewVarNode.cs | 91 ++++++++++++++++++ .../Resources/BitmapResources.resources | Bin 560332 -> 561767 bytes 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index 44c6a3be9b..a5589fd8d9 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -2099,9 +2099,12 @@ extensions = ".txt,.doc" resource = "Icons.16x16.TextFileIcon"/> - + diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs index a40d097413..8029c61985 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs @@ -11,6 +11,7 @@ using System.Drawing; using System.Windows.Forms; using Aga.Controls.Tree; +using Aga.Controls.Tree.NodeControls; using Debugger.Util; @@ -19,6 +20,96 @@ using ICSharpCode.SharpDevelop.Gui.Pads; namespace Debugger.AddIn.TreeModel { + public sealed class ItemIcon: NodeIcon { + protected override System.Drawing.Image GetIcon(TreeNodeAdv node) + { + return ((TreeViewVarNode)node).Content.Image; + } + } + + public sealed class ItemName: NodeTextBox { + protected override bool CanEdit(TreeNodeAdv node) + { + return false; + } + public override object GetValue(TreeNodeAdv node) + { + if (node is TreeViewVarNode) { + return ((TreeViewVarNode)node).Content.Name; + } else { + // Happens during incremental search + return base.GetValue(node); + } + } + } + + public sealed class ItemText: NodeTextBox { + public ItemText() + { + this.EditEnabled = true; + this.EditOnClick = true; + } + protected override bool CanEdit(TreeNodeAdv node) + { + AbstractNode content = ((TreeViewVarNode)node).Content; + return (content is ISetText) && ((ISetText)content).CanSetText; + } + public override object GetValue(TreeNodeAdv node) + { + if (node is TreeViewVarNode) { + return ((TreeViewVarNode)node).Content.Text; + } else { + // Happens during incremental search + return base.GetValue(node); + } + } + public override void SetValue(TreeNodeAdv node, object value) + { + ISetText content = (ISetText)((TreeViewVarNode)node).Content; + if (content.CanSetText) { + content.SetText(value.ToString()); + } + } + protected override void OnDrawText(DrawEventArgs args) + { + AbstractNode content = ((TreeViewVarNode)args.Node).Content; + if (content is ErrorNode) { + args.TextColor = Color.Red; + } else if (((TreeViewVarNode)args.Node).TextChanged) { + args.TextColor = Color.Blue; + } + base.OnDrawText(args); + } + public override void MouseDown(TreeNodeAdvMouseEventArgs args) + { + AbstractNode content = ((TreeViewVarNode)args.Node).Content; + if (content is IContextMenu && args.Button == MouseButtons.Right) { + ContextMenuStrip menu = ((IContextMenu)content).GetContextMenu(); + if (menu != null) { + menu.Show(args.Node.Tree, args.Location); + } + } else { + base.MouseDown(args); + } + } + } + + public sealed class ItemType: NodeTextBox { + protected override bool CanEdit(TreeNodeAdv node) + { + return false; + } + public override object GetValue(TreeNodeAdv node) + { + if (node is TreeViewVarNode) { + return ((TreeViewVarNode)node).Content.Type; + } else { + // Happens during incremental search + return base.GetValue(node); + } + } + } + /// /// A child class of TreeNodeAdv that displays exceptions. /// diff --git a/src/Main/StartUp/Project/Resources/BitmapResources.resources b/src/Main/StartUp/Project/Resources/BitmapResources.resources index ece178e41932b85305f9c4f35e3e320c66e475f7..b056e21f183e041d4456ea85ff9f841579fe78d3 100644 GIT binary patch delta 13500 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 g`f|t9hcgUsa4HF}7?yIOUzu