From 77dbb0ecd517b7db7017f8b516c776321719ab26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Wed, 5 Jan 2005 13:05:37 +0000 Subject: [PATCH] Worked on #Develop. Search & Replace panel now has 2 different view modes. ExtTreeView drawing is now more smooth. Fixed some issues. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@18 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/ResourceEditor.csproj | 5 +- .../Src/ResourceEdit/ResourceItemHashtable.cs | 321 ------------------ .../Project/Src/ResourceEdit/ResourceList.cs | 15 +- .../Project/Src/Gui/CodonListPanel.cs | 2 +- .../Misc/NUnitPad/Project/NUnitPad.csproj | 21 +- .../Project/Src/Gui/NUnitPadContent.cs | 3 - .../Project/ICSharpCode.SharpDevelop.csproj | 1 - .../Gui/Components/ExtTreeView/ExtTreeNode.cs | 6 +- .../Gui/Components/ExtTreeView/ExtTreeView.cs | 28 +- .../IDEOptions/SelectStylePanel.cs | 2 +- .../ProjectBrowser/ProjectBrowserControl.cs | 6 - .../ProjectBrowser/TreeNodes/ReferenceNode.cs | 3 +- .../Internal/Erbauer/DialogPanelErbauer.cs | 6 +- .../Src/Project/Solution/AbstractProject.cs | 3 - .../Base/Project/Src/Services/IconService.cs | 2 +- .../LanguageBindingDescriptor.cs | 2 +- .../CaseSensitiveProjectContent.cs | 1 - .../ParserService/Erbauer/ParserDescriptor.cs | 2 +- .../TextEditor/Codons/EditActionErbauer.cs | 2 - .../Gui/Editor/SharpDevelopTextAreaControl.cs | 1 - .../Pad/Nodes/SearchResultNode.cs | 40 ++- .../SearchAndReplace/Pad/SearchResultPanel.cs | 79 ++++- .../Pad/SearchResultPanelToolbarCommands.cs | 38 ++- .../Core/Project/Src/AddInTree/AddIn/Codon.cs | 2 +- .../Src/AddInTree/AddIn/ExtensionPath.cs | 2 +- .../StandardErbauer/Icon/IconDescriptor.cs | 4 +- .../MenuItem/Gui/MenuCheckBox.cs | 2 +- .../MenuItem/Gui/MenuCommand.cs | 2 +- .../ToolBarItem/Gui/ToolBarCheckBox.cs | 2 +- .../Project/Src/AddInTree/AddInTreeNode.cs | 14 +- src/Main/StartUp/Project/StartUp.csproj | 2 + 31 files changed, 217 insertions(+), 402 deletions(-) delete mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj index a4bd8bc115..c8df9b82a9 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj @@ -55,10 +55,11 @@ UserControl - - + + True + diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs deleted file mode 100644 index 4596397430..0000000000 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs +++ /dev/null @@ -1,321 +0,0 @@ -using System; -using System.Collections; - -namespace ResourceEditor -{ - public class ResourceItemHashtable : IDictionary, ICollection, IEnumerable, ICloneable - { - protected Hashtable innerHash; - - #region "Constructors" - public ResourceItemHashtable() - { - innerHash = new Hashtable(); - } - - public ResourceItemHashtable(ResourceItemHashtable original) - { - innerHash = new Hashtable (original.innerHash); - } - - public ResourceItemHashtable(IDictionary dictionary) - { - innerHash = new Hashtable (dictionary); - } - - public ResourceItemHashtable(int capacity) - { - innerHash = new Hashtable(capacity); - } - - public ResourceItemHashtable(IDictionary dictionary, float loadFactor) - { - innerHash = new Hashtable(dictionary, loadFactor); - } - - public ResourceItemHashtable(IHashCodeProvider codeProvider, IComparer comparer) - { - innerHash = new Hashtable (codeProvider, comparer); - } - - public ResourceItemHashtable(int capacity, int loadFactor) - { - innerHash = new Hashtable(capacity, loadFactor); - } - - public ResourceItemHashtable(IDictionary dictionary, IHashCodeProvider codeProvider, IComparer comparer) - { - innerHash = new Hashtable (dictionary, codeProvider, comparer); - } - - public ResourceItemHashtable(int capacity, IHashCodeProvider codeProvider, IComparer comparer) - { - innerHash = new Hashtable (capacity, codeProvider, comparer); - } - - public ResourceItemHashtable(IDictionary dictionary, float loadFactor, IHashCodeProvider codeProvider, IComparer comparer) - { - innerHash = new Hashtable (dictionary, loadFactor, codeProvider, comparer); - } - - public ResourceItemHashtable(int capacity, float loadFactor, IHashCodeProvider codeProvider, IComparer comparer) - { - innerHash = new Hashtable (capacity, loadFactor, codeProvider, comparer); - } - #endregion - - #region Implementation of IDictionary - public ResourceItemHashtableEnumerator GetEnumerator() - { - return new ResourceItemHashtableEnumerator(this); - } - - System.Collections.IDictionaryEnumerator IDictionary.GetEnumerator() - { - return new ResourceItemHashtableEnumerator(this); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public void Remove(string key) - { - innerHash.Remove (key); - } - - void IDictionary.Remove(object key) - { - Remove ((string)key); - } - - public bool Contains(string key) - { - return innerHash.Contains(key); - } - - bool IDictionary.Contains(object key) - { - return Contains((string)key); - } - - public void Clear() - { - innerHash.Clear(); - } - - public void Add(string key, ResourceItem value) - { - innerHash.Add (key, value); - } - - void IDictionary.Add(object key, object value) - { - Add ((string)key, (ResourceItem)value); - } - - public bool IsReadOnly - { - get - { - return innerHash.IsReadOnly; - } - } - - public ResourceItem this[string key] - { - get - { - return (ResourceItem) innerHash[key]; - } - set - { - innerHash[key] = value; - } - } - - object IDictionary.this[object key] - { - get - { - return this[(string)key]; - } - set - { - this[(string)key] = (ResourceItem)value; - } - } - - public System.Collections.ICollection Values - { - get - { - return innerHash.Values; - } - } - - public System.Collections.ICollection Keys - { - get - { - return innerHash.Keys; - } - } - - public bool IsFixedSize - { - get - { - return innerHash.IsFixedSize; - } - } - #endregion - - #region Implementation of ICollection - public void CopyTo(System.Array array, int index) - { - innerHash.CopyTo (array, index); - } - - public bool IsSynchronized - { - get - { - return innerHash.IsSynchronized; - } - } - - public int Count - { - get - { - return innerHash.Count; - } - } - - public object SyncRoot - { - get - { - return innerHash.SyncRoot; - } - } - #endregion - - #region Implementation of ICloneable - public ResourceItemHashtable Clone() - { - ResourceItemHashtable clone = new ResourceItemHashtable(); - clone.innerHash = (Hashtable) innerHash.Clone(); - - return clone; - } - - object ICloneable.Clone() - { - return Clone(); - } - #endregion - - #region "HashTable Methods" - public bool ContainsKey (string key) - { - return innerHash.ContainsKey(key); - } - - public bool ContainsValue (ResourceItem value) - { - return innerHash.ContainsValue(value); - } - - public static ResourceItemHashtable Synchronized(ResourceItemHashtable nonSync) - { - ResourceItemHashtable sync = new ResourceItemHashtable(); - sync.innerHash = Hashtable.Synchronized(nonSync.innerHash); - - return sync; - } - #endregion - - internal Hashtable InnerHash - { - get - { - return innerHash; - } - } - } - - public class ResourceItemHashtableEnumerator : IDictionaryEnumerator - { - private IDictionaryEnumerator innerEnumerator; - - internal ResourceItemHashtableEnumerator (ResourceItemHashtable enumerable) - { - innerEnumerator = enumerable.InnerHash.GetEnumerator(); - } - - #region Implementation of IDictionaryEnumerator - public string Key - { - get - { - return (string)innerEnumerator.Key; - } - } - - object IDictionaryEnumerator.Key - { - get - { - return Key; - } - } - - public ResourceItem Value - { - get - { - return (ResourceItem)innerEnumerator.Value; - } - } - - object IDictionaryEnumerator.Value - { - get - { - return Value; - } - } - - public System.Collections.DictionaryEntry Entry - { - get - { - return innerEnumerator.Entry; - } - } - #endregion - - #region Implementation of IEnumerator - public void Reset() - { - innerEnumerator.Reset(); - } - - public bool MoveNext() - { - return innerEnumerator.MoveNext(); - } - - public object Current - { - get - { - return innerEnumerator.Current; - } - } - #endregion - } -} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs index e06862a401..99dc6d8d19 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs @@ -13,6 +13,7 @@ using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections; +using System.Collections.Generic; using System.Resources; using System.Runtime.Serialization.Formatters.Binary; @@ -33,7 +34,7 @@ namespace ResourceEditor ColumnHeader type = new ColumnHeader(); ColumnHeader content = new ColumnHeader(); - ResourceItemHashtable resources = new ResourceItemHashtable(); + Dictionary resources = new Dictionary(); ImageList images = new ImageList(); UndoStack undoStack = null; @@ -51,7 +52,7 @@ namespace ResourceEditor } } - public ResourceItemHashtable Resources + public Dictionary Resources { get { return resources; @@ -158,9 +159,9 @@ namespace ResourceEditor // write XML resource case ".RESX": ResXResourceWriter rxw = new ResXResourceWriter(filename); - foreach (DictionaryEntry entry in resources) { + foreach (KeyValuePair entry in resources) { if (entry.Value != null) { - ResourceItem item = (ResourceItem)entry.Value; + ResourceItem item = entry.Value; rxw.AddResource(item.Name, item.ResourceValue); } } @@ -171,7 +172,7 @@ namespace ResourceEditor // write default resource default: ResourceWriter rw = new ResourceWriter(filename); - foreach (DictionaryEntry entry in resources) { + foreach (KeyValuePair entry in resources) { ResourceItem item = (ResourceItem)entry.Value; rw.AddResource(item.Name, item.ResourceValue); } @@ -230,8 +231,8 @@ namespace ResourceEditor BeginUpdate(); Items.Clear(); - foreach (DictionaryEntry entry in resources) { - ResourceItem item = (ResourceItem)entry.Value; + foreach (KeyValuePair entry in resources) { + ResourceItem item = entry.Value; string tmp = item.ToString(); string type = item.ResourceValue.GetType().FullName; diff --git a/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs b/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs index 7ebc5305b4..9afb5966d3 100644 --- a/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs +++ b/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs @@ -82,7 +82,7 @@ namespace AddInScout foreach (Codon c in node.Codons) { ListViewItem lvi = new ListViewItem(c.Name); lvi.Tag = c; - lvi.SubItems.Add(c.ID); + lvi.SubItems.Add(c.Id); lvi.SubItems.Add(c.Properties.Contains("class") ? c.Properties["class"] : ""); diff --git a/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj b/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj index 1f3600d9c6..4e1c8deb84 100644 --- a/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj +++ b/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj @@ -31,15 +31,6 @@ False - - ..\..\..\..\..\bin\nunit.core.dll - - - ..\..\..\..\..\bin\nunit.extensions.dll - - - ..\..\..\..\..\bin\nunit.framework.dll - @@ -69,6 +60,18 @@ ICSharpCode.Core False + + {98B10E98-003C-45A0-9587-119142E39986} + nunit.extensions.dll + + + {EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} + nunit.core.dll + + + {83DD7E12-A705-4DBA-9D71-09C8973D9382} + nunit.framework.dll + \ No newline at end of file diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs index 258564295c..8cf17b3cba 100644 --- a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs +++ b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs @@ -134,11 +134,8 @@ namespace ICSharpCode.NUnitPad void AddNUnitReference(object sender, EventArgs e) { if (ProjectService.CurrentProject != null) { - Console.WriteLine("Add reference!"); ProjectService.AddReference(ProjectService.CurrentProject, new ReferenceProjectItem(ProjectService.CurrentProject, "nunit.framework")); ProjectService.CurrentProject.Save(); - } else { - Console.WriteLine("prj == null"); } } diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index e14114dc55..9a787e2508 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -13,7 +13,6 @@ True Resources\ICSharpCode.SharpDevelop.snk File - True diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs index e5007c5b26..7b1824bfbf 100644 --- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs +++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs @@ -287,9 +287,9 @@ namespace ICSharpCode.SharpDevelop.Gui boldFont = new Font("Tahoma", 9, FontStyle.Bold); italicFont = new Font("Tahoma", 9, FontStyle.Italic); - monospacedFont = new Font("Courier New", 10); - boldMonospacedFont = new Font("Courier New", 10, FontStyle.Bold); - italicMonospacedFont = new Font("Courier New", 10, FontStyle.Italic); + monospacedFont = new Font("Courier New", 10); + boldMonospacedFont = new Font("Courier New", 10, FontStyle.Bold); + italicMonospacedFont = new Font("Courier New", 10, FontStyle.Italic); } #endregion diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs index 2c37dc9826..2bfcf46e1d 100644 --- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs +++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs @@ -36,7 +36,6 @@ namespace ICSharpCode.SharpDevelop.Gui HideSelection = false; AllowDrop = true; this.TreeViewNodeSorter = new ExtTreeViewComparer(); - DoubleBuffered = true; ImageList newImageList = new ImageList(); newImageList.ImageSize = new Size(16, 16); newImageList.ColorDepth = ColorDepth.Depth32Bit; @@ -132,16 +131,26 @@ namespace ICSharpCode.SharpDevelop.Gui SortNodes(e.Node.Parent); } #endregion - + bool inRefresh = false; protected override void OnBeforeExpand(TreeViewCancelEventArgs e) { base.OnBeforeExpand(e); + inRefresh = true; + BeginUpdate(); if (e.Node is ExtTreeNode) { ((ExtTreeNode)e.Node).Expanding(); } SortNodes(e.Node); } + protected override void OnAfterExpand(TreeViewEventArgs e) + { + base.OnAfterExpand(e); + inRefresh = false; + EndUpdate(); + } + + protected override void OnBeforeCollapse(TreeViewCancelEventArgs e) { base.OnBeforeCollapse(e); @@ -198,12 +207,16 @@ namespace ICSharpCode.SharpDevelop.Gui protected override void OnDrawNode(DrawTreeNodeEventArgs e) { - ExtTreeNode node = e.Node as ExtTreeNode; - if (node != null && !node.DrawDefault) { - node.Draw(e); - e.DrawDefault = false; + if (!inRefresh) { + ExtTreeNode node = e.Node as ExtTreeNode; + if (node != null && !node.DrawDefault) { + node.Draw(e); + e.DrawDefault = false; + } else { + e.DrawDefault = true; + } } else { - e.DrawDefault = true; + e.DrawDefault = false; } base.OnDrawNode(e); } @@ -266,7 +279,6 @@ namespace ICSharpCode.SharpDevelop.Gui string imageKey = performCutBitmap ? (image + "_ghost") : image; if (!imageIndexTable.ContainsKey(imageKey)) { ImageList.Images.Add(performCutBitmap ? IconService.GetGhostBitmap(image) : IconService.GetBitmap(image)); - Console.WriteLine("Add image : " + image); imageIndexTable[imageKey] = ImageList.Images.Count - 1; return ImageList.Images.Count - 1; } diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SelectStylePanel.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SelectStylePanel.cs index cbc3d619d2..8caafd5772 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SelectStylePanel.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SelectStylePanel.cs @@ -28,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels AddInTreeNode treeNode = AddInTree.GetTreeNode("/SharpDevelop/Workbench/Ambiences"); foreach (Codon codon in treeNode.Codons) { - ((ComboBox)ControlDictionary["selectAmbienceComboBox"]).Items.Add(codon.ID); + ((ComboBox)ControlDictionary["selectAmbienceComboBox"]).Items.Add(codon.Id); } ((ComboBox)ControlDictionary["selectAmbienceComboBox"]).Text = PropertyService.Get("SharpDevelop.UI.CurrentAmbience", "C#"); diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs index 7c789c7c26..dee8e9a699 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs @@ -68,9 +68,7 @@ namespace ICSharpCode.SharpDevelop.Project } void ProjectServiceSolutionFolderRemoved(object sender, SolutionFolderEventArgs e) { - Console.WriteLine("projectbrowser: Solution folder remove!!!"); CallVisitor(new SolutionFolderRemoveVisitor(e.SolutionFolder)); - Console.WriteLine("projectbrowser: Solution folder remove done.!!!"); } void ProjectServiceReferenceAdded(object sender, ProjectReferenceEventArgs e) { @@ -79,16 +77,12 @@ namespace ICSharpCode.SharpDevelop.Project void FileServiceFileRemoving(object sender, FileEventArgs e) { - Console.WriteLine("projectbrowser: Solution file removing!!!"); CallVisitor(new FileRemoveTreeNodeVisitor(e.FileName)); - Console.WriteLine("projectbrowser: Solution file removing!!!"); } void FileServiceFileRenaming(object sender, FileRenameEventArgs e) { - Console.WriteLine("projectbrowser: Solution file renaming!!!"); CallVisitor(new FileRenameTreeNodeVisitor(e.SourceFile, e.TargetFile)); - Console.WriteLine("projectbrowser: Solution file renaming!!!"); } void SelectFile(ProjectNode projectNode, string fileName) diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs index e38b146d54..d5ef058d3f 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs @@ -33,11 +33,12 @@ namespace ICSharpCode.SharpDevelop.Project public override void Delete() { + IProject project = Project; referenceProjectItem.Project.Items.Remove(referenceProjectItem); Debug.Assert(Parent != null); Debug.Assert(Parent is ReferenceFolder); ((ReferenceFolder)Parent).ShowReferences(); - Project.Save(); + project.Save(); } #endregion diff --git a/src/Main/Base/Project/Src/Internal/Erbauer/DialogPanelErbauer.cs b/src/Main/Base/Project/Src/Internal/Erbauer/DialogPanelErbauer.cs index 562a3947ed..0ee9b6f3ba 100644 --- a/src/Main/Base/Project/Src/Internal/Erbauer/DialogPanelErbauer.cs +++ b/src/Main/Base/Project/Src/Internal/Erbauer/DialogPanelErbauer.cs @@ -23,13 +23,13 @@ namespace ICSharpCode.Core if (subItems == null || subItems.Count == 0) { if (codon.Properties.Contains("class")) { - return new DefaultDialogPanelDescriptor(codon.ID, StringParser.Parse(label), (IDialogPanel)codon.AddIn.CreateObject(codon.Properties["class"])); + return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label), (IDialogPanel)codon.AddIn.CreateObject(codon.Properties["class"])); } else { - return new DefaultDialogPanelDescriptor(codon.ID, StringParser.Parse(label)); + return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label)); } } - return new DefaultDialogPanelDescriptor(codon.ID, StringParser.Parse(label), subItems); + return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label), subItems); } } } diff --git a/src/Main/Base/Project/Src/Project/Solution/AbstractProject.cs b/src/Main/Base/Project/Src/Project/Solution/AbstractProject.cs index 4e671b74cc..d3036a3f15 100644 --- a/src/Main/Base/Project/Src/Project/Solution/AbstractProject.cs +++ b/src/Main/Base/Project/Src/Project/Solution/AbstractProject.cs @@ -272,16 +272,13 @@ namespace ICSharpCode.SharpDevelop.Project public virtual void Dispose() { configurations.Clear(); - configurations = null; foreach (ProjectItem item in items) { item.Dispose(); } items.Clear(); - items = null; imports.Clear(); - imports = null; } #endregion diff --git a/src/Main/Base/Project/Src/Services/IconService.cs b/src/Main/Base/Project/Src/Services/IconService.cs index 096165b4b8..ae9cb05f6f 100644 --- a/src/Main/Base/Project/Src/Services/IconService.cs +++ b/src/Main/Base/Project/Src/Services/IconService.cs @@ -113,7 +113,7 @@ namespace ICSharpCode.Core IconDescriptor[] icons = (IconDescriptor[])treeNode.BuildChildItems(null).ToArray(typeof(IconDescriptor)); for (int i = 0; i < icons.Length; ++i) { IconDescriptor iconCodon = icons[i]; - string imageName = iconCodon.Resource != null ? iconCodon.Resource : iconCodon.ID; + string imageName = iconCodon.Resource != null ? iconCodon.Resource : iconCodon.Id; if (iconCodon.Extensions != null) { foreach (string ext in iconCodon.Extensions) { diff --git a/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs b/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs index f9623985d5..f2e676e301 100644 --- a/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs +++ b/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs @@ -49,7 +49,7 @@ namespace ICSharpCode.Core public string Language { get { - return codon.ID; + return codon.Id; } } diff --git a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs index 5205005b64..0735206792 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs @@ -36,7 +36,6 @@ namespace ICSharpCode.Core public static IProjectContent Create(IProject project) { - Console.WriteLine("CREATE : " + project); CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent(); newProjectContent.references.Add(typeof(object).Assembly); foreach (ProjectItem item in project.Items) { diff --git a/src/Main/Base/Project/Src/Services/ParserService/Erbauer/ParserDescriptor.cs b/src/Main/Base/Project/Src/Services/ParserService/Erbauer/ParserDescriptor.cs index 4ba55a6cec..9def659ad7 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/Erbauer/ParserDescriptor.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/Erbauer/ParserDescriptor.cs @@ -39,7 +39,7 @@ namespace ICSharpCode.Core public string Language { get { - return codon.ID; + return codon.Id; } } diff --git a/src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs b/src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs index 7804815af9..86f20d444c 100644 --- a/src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs +++ b/src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs @@ -22,9 +22,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons { public object BuildItem(object caller, Codon codon, ArrayList subItems) { - Console.WriteLine("Try to create '{0}'", codon.Properties["class"]); IEditAction editAction = (IEditAction)codon.AddIn.CreateObject(codon.Properties["class"]); - Console.WriteLine("Action : " + editAction); string[] keys = codon.Properties["keys"].Split(','); Keys[] actionKeys = new Keys[keys.Length]; diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs index 5a6faa0745..16f4c13a79 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs @@ -448,7 +448,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor public void InitializeFormatter() { string formatterPath = formatingStrategyPath + "/" + Document.HighlightingStrategy.Name; - Console.WriteLine("try to get formatter: " + formatterPath); if (AddInTree.ExistsTreeNode(formatterPath)) { IFormattingStrategy[] formatter = (IFormattingStrategy[])(AddInTree.GetTreeNode(formatterPath).BuildChildItems(this)).ToArray(typeof(IFormattingStrategy)); if (formatter != null && formatter.Length > 0) { diff --git a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchResultNode.cs b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchResultNode.cs index 190cb3a2d8..c819d7c39b 100644 --- a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchResultNode.cs +++ b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchResultNode.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Drawing; using System.Collections.Generic; using System.Windows.Forms; @@ -24,7 +25,26 @@ namespace SearchAndReplace Point startPosition; Point endPosition; string positionText; + bool showFileName = false; + public bool ShowFileName { + get { + return showFileName; + } + set { + showFileName = value; + if (showFileName) { + Text = positionText + document.GetText(line) + FileNameText; + } else { + Text = positionText + document.GetText(line); + } + } + } + string FileNameText { + get { + return " in " + Path.GetFileName(result.FileName) + "(" + Path.GetDirectoryName(result.FileName) +")"; + } + } public SearchResultNode(IDocument document, SearchResult result) { drawDefault = false; @@ -43,6 +63,9 @@ namespace SearchAndReplace Graphics g = e.Graphics; int x = MeasureTextWidth(g, positionText, BoldMonospacedFont); x += MeasureTextWidth(g, document.GetText(line).Replace("\t", " "), BoldMonospacedFont); + if (ShowFileName) { + x += MeasureTextWidth(g, FileNameText, ItalicFont); + } return x; } protected override void DrawForeground(DrawTreeNodeEventArgs e) @@ -53,7 +76,8 @@ namespace SearchAndReplace spaceSize = g.MeasureString("-", Font, new PointF(0, 0), StringFormat.GenericTypographic); - DrawLine(g, line, e.Bounds.Y, x); + x += DrawLine(g, line, e.Bounds.Y, x); + } public override void ActivateItem() @@ -75,7 +99,7 @@ namespace SearchAndReplace sf); return wordSize.Width; } - void DrawLine(Graphics g, LineSegment line, float yPos, float xPos) + float DrawLine(Graphics g, LineSegment line, float yPos, float xPos) { int logicalX = 0; if (line.Words != null) { @@ -119,14 +143,22 @@ namespace SearchAndReplace } } } else { - DrawDocumentWord(g, + xPos += DrawDocumentWord(g, document.GetText(line), new PointF(xPos, yPos), MonospacedFont, Color.Black ); } - + if (ShowFileName) { + xPos += DrawDocumentWord(g, + FileNameText, + new PointF(xPos, yPos), + ItalicMonospacedFont, + Color.Gray + ); + } + return xPos; } } } diff --git a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs index b000045acf..9f730137e9 100644 --- a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs +++ b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs @@ -22,6 +22,12 @@ using ICSharpCode.SharpDevelop.Gui; namespace SearchAndReplace { + public enum SearchResultPanelViewMode { + Flat, + PerFile, + Structural + } + public class SearchResultPanel : AbstractPadContent { static SearchResultPanel instance; @@ -32,15 +38,27 @@ namespace SearchAndReplace } } - Panel myPanel = new Panel(); - ExtTreeView resultTreeView = new ExtTreeView(); + Panel myPanel = new Panel(); + ExtTreeView resultTreeView = new ExtTreeView(); + + string curPattern = null; + List curResults = null; public override Control Control { get { return myPanel; } } - + + public SearchResultPanelViewMode ViewMode { + get { + return PropertyService.Get("SearchAndReplace.SearchResultPanelViewMode", SearchResultPanelViewMode.Flat); + } + set { + PropertyService.Set("SearchAndReplace.SearchResultPanelViewMode", value); + ShowSearchResults(curPattern, curResults); + } + } public void ExpandAll() { @@ -76,27 +94,72 @@ namespace SearchAndReplace } } - public void ShowSearchResults(string pattern, List results) + void ShowSearchResultsPerFile() { Dictionary folderNodes = new Dictionary(); - foreach (SearchResult result in results) { - TreeNode newResult = new TreeNode(); + foreach (SearchResult result in curResults) { if (!folderNodes.ContainsKey(result.FileName)) { folderNodes[result.FileName] = new SearchFolderNode(result.FileName); } folderNodes[result.FileName].Results.Add(result); } - SearchRootNode searchRootNode = new SearchRootNode(pattern, results); + SearchRootNode searchRootNode = new SearchRootNode(curPattern, curResults); foreach (SearchFolderNode folderNode in folderNodes.Values) { folderNode.SetText(); searchRootNode.Nodes.Add(folderNode); } - resultTreeView.Nodes.Clear(); + + resultTreeView.Nodes.Add(searchRootNode); + searchRootNode.Expand(); + } + + void ShowSearchResultsFlat() + { + Dictionary folderNodes = new Dictionary(); + foreach (SearchResult result in curResults) { + if (!folderNodes.ContainsKey(result.FileName)) { + folderNodes[result.FileName] = new SearchFolderNode(result.FileName); + } + folderNodes[result.FileName].Results.Add(result); + } + + SearchRootNode searchRootNode = new SearchRootNode(curPattern, curResults); + foreach (SearchFolderNode folderNode in folderNodes.Values) { + folderNode.PerformInitialization(); + foreach (SearchResultNode node in folderNode.Nodes) { + node.ShowFileName = true; + searchRootNode.Nodes.Add(node); + } + } + resultTreeView.Nodes.Add(searchRootNode); searchRootNode.Expand(); } + public void ShowSearchResults(string pattern, List results) + { + this.curPattern = pattern; + this.curResults = results; + if (results == null) { + return; + } + resultTreeView.BeginUpdate(); + resultTreeView.Nodes.Clear(); + + switch (ViewMode) { + case SearchResultPanelViewMode.PerFile: + ShowSearchResultsPerFile(); + break; + case SearchResultPanelViewMode.Flat: + ShowSearchResultsFlat(); + break; + } + + + resultTreeView.EndUpdate(); + } + public SearchResultPanel() { instance = this; diff --git a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanelToolbarCommands.cs b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanelToolbarCommands.cs index 41419e97f7..220e4d2711 100644 --- a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanelToolbarCommands.cs +++ b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanelToolbarCommands.cs @@ -99,11 +99,47 @@ namespace SearchAndReplace } } - public class ToggleTreeList : AbstractMenuCommand + public class SelectViewMode : AbstractMenuCommand { + ToolBarDropDownButton dropDownButton; + public override void Run() { } + + void SetViewMode(object sender, EventArgs e) + { + PadDescriptor searchResultPanel = WorkbenchSingleton.Workbench.GetPad(typeof(SearchResultPanel)); + if (searchResultPanel != null) { + searchResultPanel.BringPadToFront(); + SearchResultPanel.Instance.ViewMode = (SearchResultPanelViewMode)((ToolStripItem)sender).Tag; + } else { + MessageService.ShowError("SearchResultPanel can't be found."); + } + } + + void GenerateDropDownItems() + { + ToolStripItem newItem = new ToolStripMenuItem(); + newItem.Text = "Per file"; + newItem.Tag = SearchResultPanelViewMode.PerFile; + newItem.Click += new EventHandler(SetViewMode); + dropDownButton.DropDownItems.Add(newItem); + + newItem = new ToolStripMenuItem(); + newItem.Text = "Flat"; + newItem.Tag = SearchResultPanelViewMode.Flat; + newItem.Click += new EventHandler(SetViewMode); + dropDownButton.DropDownItems.Add(newItem); + } + + protected override void OnOwnerChanged(EventArgs e) + { + base.OnOwnerChanged(e); + dropDownButton = (ToolBarDropDownButton)Owner; + GenerateDropDownItems(); + } } + } diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/Codon.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/Codon.cs index 93a18f426d..2cb33ad8be 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/Codon.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/Codon.cs @@ -27,7 +27,7 @@ namespace ICSharpCode.Core } } - public string ID { + public string Id { get { return properties["id"]; } diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/ExtensionPath.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/ExtensionPath.cs index 969f59189f..b701eebfe5 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/ExtensionPath.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/ExtensionPath.cs @@ -60,7 +60,7 @@ namespace ICSharpCode.Core Codon newCodon = new Codon(extensionPath.AddIn, elementName, Properties.ReadFromAttributes(reader), extensionPath.conditionStack.ToArray()); extensionPath.codons.Add(newCodon); if (!reader.IsEmptyElement) { - ExtensionPath subPath = extensionPath.AddIn.GetExtensionPath(extensionPath.Name + "/" + newCodon.ID); + ExtensionPath subPath = extensionPath.AddIn.GetExtensionPath(extensionPath.Name + "/" + newCodon.Id); foreach (ICondition condition in extensionPath.conditionStack) { subPath.conditionStack.Push(condition); } diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/Icon/IconDescriptor.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/Icon/IconDescriptor.cs index 5e326aa04e..246ae11a5d 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/Icon/IconDescriptor.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/Icon/IconDescriptor.cs @@ -16,9 +16,9 @@ namespace ICSharpCode.Core { Codon codon; - public string ID { + public string Id { get { - return codon.ID; + return codon.Id; } } diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCheckBox.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCheckBox.cs index 96433199a3..e77b093e1d 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCheckBox.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCheckBox.cs @@ -27,7 +27,7 @@ namespace ICSharpCode.Core try { menuCommand = (ICheckableMenuCommand)codon.AddIn.CreateObject(codon.Properties["class"]); } catch (Exception e) { - MessageService.ShowError(e, "Can't create menu command : " + codon.ID); + MessageService.ShowError(e, "Can't create menu command : " + codon.Id); } } return menuCommand; diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs index 2db60b2d40..bc3121e056 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs @@ -45,7 +45,7 @@ namespace ICSharpCode.Core try { menuCommand = (ICommand)codon.AddIn.CreateObject(codon.Properties["class"]); } catch (Exception e) { - MessageService.ShowError(e, "Can't create menu command : " + codon.ID); + MessageService.ShowError(e, "Can't create menu command : " + codon.Id); } } diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarCheckBox.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarCheckBox.cs index d719e57383..9ee6cb79b5 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarCheckBox.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarCheckBox.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.Core } catch (Exception) { } if (menuCommand == null) { - MessageService.ShowError("Can't create toolbar checkbox : " + codon.ID); + MessageService.ShowError("Can't create toolbar checkbox : " + codon.Id); } if (Image == null && codon.Properties.Contains("icon")) { diff --git a/src/Main/Core/Project/Src/AddInTree/AddInTreeNode.cs b/src/Main/Core/Project/Src/AddInTree/AddInTreeNode.cs index 4b684ef467..0563c3454d 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddInTreeNode.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddInTreeNode.cs @@ -13,6 +13,7 @@ namespace ICSharpCode.Core Dictionary childNodes = new Dictionary(); List codons = new List(); bool isSorted = false; + public Dictionary ChildNodes { get { return childNodes; @@ -63,7 +64,7 @@ namespace ICSharpCode.Core // initialize visited to false and fill the indexOfName dictionary for (int i = 0; i < node.codons.Count; ++i) { visited[i] = false; - indexOfName[node.codons[i].ID] = i; + indexOfName[node.codons[i].Id] = i; } } @@ -76,9 +77,9 @@ namespace ICSharpCode.Core if (indexOfName.ContainsKey(before)) { string after = node.codons[indexOfName[before]].InsertAfter; if (after == null || after == "") { - node.codons[indexOfName[before]].InsertAfter = node.codons[i].ID; + node.codons[indexOfName[before]].InsertAfter = node.codons[i].Id; } else { - after += ',' + node.codons[i].ID; + after += ',' + node.codons[i].Id; } } else { Console.WriteLine("Codon ({0}) specified in the insertbefore of the {1} codon does not exist!", before, node.codons[i]); @@ -89,6 +90,7 @@ namespace ICSharpCode.Core public void Execute() { + InsertEdges(); // Visit all codons @@ -128,8 +130,8 @@ namespace ICSharpCode.Core } foreach (Codon codon in codons) { ArrayList subItems = null; - if (childNodes.ContainsKey(codon.ID)) { - subItems = childNodes[codon.ID].BuildChildItems(caller); + if (childNodes.ContainsKey(codon.Id)) { + subItems = childNodes[codon.Id].BuildChildItems(caller); } items.Add(codon.BuildItem(caller, subItems)); } @@ -139,7 +141,7 @@ namespace ICSharpCode.Core public object BuildChildItem(string childItemID, object caller) { foreach (Codon codon in codons) { - if (codon.ID == childItemID) { + if (codon.Id == childItemID) { return codon.BuildItem(caller, null); } } diff --git a/src/Main/StartUp/Project/StartUp.csproj b/src/Main/StartUp/Project/StartUp.csproj index 3d0c27029f..6fd6ee6e13 100644 --- a/src/Main/StartUp/Project/StartUp.csproj +++ b/src/Main/StartUp/Project/StartUp.csproj @@ -13,6 +13,8 @@ OnSuccessfulBuild true Resources\StartUp.snk + Exe + C:\Dokumente und Einstellungen\Omnibrain.DIABLO\Eigene Dateien\trunk\SharpDevelop\src\Main\StartUp\Project\Resources\SharpDevelop.ico True