Browse Source

Move IMenuItemBuilder into ICSharpCode.Core.

Changes ICustomizedCommands to [ViewContentService]
newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
64254d99a6
  1. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs
  2. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighter.cs
  3. 2
      src/Main/Base/Project/Editor/Search/SearchResultPadToolbarCommands.cs
  4. 4
      src/Main/Base/Project/Src/Commands/BuildCommands.cs
  5. 15
      src/Main/Base/Project/Src/Commands/FileCommands.cs
  6. 14
      src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
  7. 3
      src/Main/Base/Project/Workbench/ICustomizedCommands.cs
  8. 1
      src/Main/Core/Project/ICSharpCode.Core.csproj
  9. 6
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/IMenuItemBuilder.cs
  10. 2
      src/Main/Core/Project/Src/Services/ServiceSingleton.cs
  11. 1
      src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj
  12. 6
      src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs
  13. 2
      src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarService.cs
  14. 1
      src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj
  15. 13
      src/Main/ICSharpCode.Core.WinForms/Menu/ISubmenuBuilder.cs
  16. 5
      src/Main/ICSharpCode.Core.WinForms/Menu/Menu.cs
  17. 5
      src/Main/ICSharpCode.Core.WinForms/Menu/MenuService.cs
  18. 5
      src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarDropDownButton.cs
  19. 7
      src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs
  20. 8
      src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarSplitButton.cs
  21. 8
      src/Main/SharpDevelop/Workbench/SingleInstanceHelper.cs

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs

@ -34,7 +34,6 @@ namespace CSharpBinding @@ -34,7 +34,6 @@ namespace CSharpBinding
}
ITextEditor editor;
CSharpSemanticHighlighter semanticHighlighter;
IssueManager inspectionManager;
IList<IContextActionProvider> contextActionProviders;
@ -54,7 +53,6 @@ namespace CSharpBinding @@ -54,7 +53,6 @@ namespace CSharpBinding
public override void Detach()
{
//codeManipulation.Dispose();
IHighlighter highlighter = editor.GetService(typeof(IHighlighter)) as IHighlighter;
if (inspectionManager != null) {
inspectionManager.Dispose();
inspectionManager = null;

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighter.cs

@ -152,7 +152,7 @@ namespace CSharpBinding @@ -152,7 +152,7 @@ namespace CSharpBinding
void ParserService_ParseInformationUpdated(object sender, ParseInformationEventArgs e)
{
if (e.FileName == document.FileName && invalidLines.Count > 0) {
if (FileUtility.IsEqualFileName(e.FileName, document.FileName) && invalidLines.Count > 0) {
cachedLines.Clear();
foreach (IDocumentLine line in invalidLines) {
if (!line.IsDeleted) {

2
src/Main/Base/Project/Editor/Search/SearchResultPadToolbarCommands.cs

@ -13,7 +13,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Search @@ -13,7 +13,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Search
{
public class LastSearchResultsBuilder : IMenuItemBuilder
{
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
List<object> items = new List<object>();
foreach (ISearchResult searchResult in SearchResultsPad.Instance.LastSearches) {

4
src/Main/Base/Project/Src/Commands/BuildCommands.cs

@ -242,7 +242,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -242,7 +242,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public class SetConfigurationMenuBuilder : IMenuItemBuilder
{
public System.Collections.ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
if (ProjectService.OpenSolution == null)
return new MenuItem[0];
@ -270,7 +270,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -270,7 +270,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public class SetPlatformMenuBuilder : IMenuItemBuilder
{
public System.Collections.ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
if (ProjectService.OpenSolution == null)
return new MenuItem[0];

15
src/Main/Base/Project/Src/Commands/FileCommands.cs

@ -73,10 +73,9 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -73,10 +73,9 @@ namespace ICSharpCode.SharpDevelop.Commands
internal static void Save(IViewContent content)
{
if (content != null && content.IsDirty) {
if (content is ICustomizedCommands) {
if (((ICustomizedCommands)content).SaveCommand()) {
return;
}
var customizedCommands = content.GetService<ICustomizedCommands>();
if (customizedCommands != null && customizedCommands.SaveCommand()) {
return;
}
if (content.IsViewOnly) {
return;
@ -143,7 +142,8 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -143,7 +142,8 @@ namespace ICSharpCode.SharpDevelop.Commands
foreach (IViewContent content in window.ViewContents) {
// try to run customized Save As Command, exclude ViewContent if successful
if (content is ICustomizedCommands && (content as ICustomizedCommands).SaveAsCommand())
var customizedCommands = content.GetService<ICustomizedCommands>();
if (customizedCommands != null && customizedCommands.SaveAsCommand())
continue;
// exclude view only ViewContents
if (content.IsViewOnly)
@ -195,8 +195,9 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -195,8 +195,9 @@ namespace ICSharpCode.SharpDevelop.Commands
public static void SaveAll()
{
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
if (content is ICustomizedCommands && content.IsDirty) {
((ICustomizedCommands)content).SaveCommand();
var customizedCommands = content.GetService<ICustomizedCommands>();
if (customizedCommands != null && content.IsDirty) {
customizedCommands.SaveCommand();
}
}
foreach (OpenedFile file in SD.FileService.OpenedFiles) {

14
src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs

@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Commands
return items;
}
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
if (NavigationService.CanNavigateBack || NavigationService.CanNavigateForwards) {
ICollection<INavigationPoint> points = NavigationService.Points;
@ -135,7 +135,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -135,7 +135,7 @@ namespace ICSharpCode.SharpDevelop.Commands
public class RecentFilesMenuBuilder : IMenuItemBuilder
{
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
IRecentOpen recentOpen = SD.FileService.RecentOpen;
@ -165,7 +165,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -165,7 +165,7 @@ namespace ICSharpCode.SharpDevelop.Commands
public class RecentProjectsMenuBuilder : IMenuItemBuilder
{
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
IRecentOpen recentOpen = SD.FileService.RecentOpen;
@ -195,7 +195,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -195,7 +195,7 @@ namespace ICSharpCode.SharpDevelop.Commands
public class ToolMenuBuilder : IMenuItemBuilder
{
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
var items = new System.Windows.Controls.MenuItem[ToolLoader.Tool.Count];
for (int i = 0; i < ToolLoader.Tool.Count; ++i) {
@ -278,7 +278,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -278,7 +278,7 @@ namespace ICSharpCode.SharpDevelop.Commands
public class OpenContentsMenuBuilder : IMenuItemBuilder
{
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
int windowCount = WorkbenchSingleton.Workbench.WorkbenchWindowCollection.Count;
if (windowCount == 0) {
@ -452,9 +452,9 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -452,9 +452,9 @@ namespace ICSharpCode.SharpDevelop.Commands
get;
}
public ICollection BuildItems(Codon codon, object owner)
public IEnumerable<object> BuildItems(Codon codon, object owner)
{
ArrayList list = new ArrayList();
List<object> list = new List<object>();
foreach (PadDescriptor padContent in WorkbenchSingleton.Workbench.PadContentCollection) {
if (padContent.Category == Category) {
var item = new System.Windows.Controls.MenuItem();

3
src/Main/Base/Project/Workbench/ICustomizedCommands.cs

@ -5,11 +5,10 @@ using System; @@ -5,11 +5,10 @@ using System;
namespace ICSharpCode.SharpDevelop.Workbench
{
// TODO: change to [ViewContentService]
/// <summary>
/// Allows an IViewContent to handle the save command on its own instead of using OpenedFile.
/// </summary>
[ViewContentService]
public interface ICustomizedCommands
{
/// <summary>

1
src/Main/Core/Project/ICSharpCode.Core.csproj

@ -73,6 +73,7 @@ @@ -73,6 +73,7 @@
<Compile Include="Src\AddInTree\AddIn\ComplexCondition.cs" />
<Compile Include="Src\AddInTree\AddIn\Condition.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\MenuItem\ICheckableMenuCommand.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\MenuItem\IMenuItemBuilder.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\ServiceDoozer.cs" />
<Compile Include="Src\AddInTree\AddIn\ExtensionPath.cs" />
<Compile Include="Src\AddInTree\AddIn\IConditionEvaluator.cs" />

6
src/Main/ICSharpCode.Core.Presentation/Menu/IMenuItemBuilder.cs → src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/IMenuItemBuilder.cs

@ -2,15 +2,15 @@ @@ -2,15 +2,15 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections;
using System.Collections.Generic;
namespace ICSharpCode.Core.Presentation
namespace ICSharpCode.Core
{
/// <summary>
/// Used to include a dynamically built list of menu items.
/// </summary>
public interface IMenuItemBuilder
{
ICollection BuildItems(Codon codon, object owner);
IEnumerable<object> BuildItems(Codon codon, object parameter);
}
}

2
src/Main/Core/Project/Src/Services/ServiceSingleton.cs

@ -37,7 +37,7 @@ namespace ICSharpCode.Core @@ -37,7 +37,7 @@ namespace ICSharpCode.Core
}
/// <summary>
/// Retrieves the service of type <paramref name="serviceType"/> from the provider.
/// Retrieves the service of type <typeparamref name="T"/> from the provider.
/// If the service cannot be found, a <see cref="ServiceNotFoundException"/> will be thrown.
/// </summary>
public static T GetRequiredService<T>()

1
src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj

@ -85,7 +85,6 @@ @@ -85,7 +85,6 @@
<Compile Include="IStatusUpdate.cs" />
<Compile Include="LanguageChangeWeakEventManager.cs" />
<Compile Include="LocalizeExtension.cs" />
<Compile Include="Menu\IMenuItemBuilder.cs" />
<Compile Include="Menu\MenuCommand.cs" />
<Compile Include="Menu\MenuService.cs" />
<Compile Include="Menu\CoreMenuItem.cs" />

6
src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs

@ -146,7 +146,7 @@ namespace ICSharpCode.Core.Presentation @@ -146,7 +146,7 @@ namespace ICSharpCode.Core.Presentation
this.caller = caller;
}
public ICollection BuildItems()
public IEnumerable<object> BuildItems()
{
return builder.BuildItems(codon, caller);
}
@ -165,11 +165,11 @@ namespace ICSharpCode.Core.Presentation @@ -165,11 +165,11 @@ namespace ICSharpCode.Core.Presentation
static IList ExpandMenuBuilders(ICollection input, bool addDummyEntryIfMenuEmpty)
{
ArrayList result = new ArrayList(input.Count);
List<object> result = new List<object>(input.Count);
foreach (object o in input) {
MenuItemBuilderPlaceholder p = o as MenuItemBuilderPlaceholder;
if (p != null) {
ICollection c = p.BuildItems();
IEnumerable<object> c = p.BuildItems();
if (c != null)
result.AddRange(c);
} else {

2
src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarService.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.Core.Presentation @@ -31,7 +31,7 @@ namespace ICSharpCode.Core.Presentation
static IList CreateToolBarItems(UIElement inputBindingOwner, IEnumerable descriptors)
{
ArrayList result = new ArrayList();
List<object> result = new List<object>();
foreach (ToolbarItemDescriptor descriptor in descriptors) {
object item = CreateToolBarItemFromDescriptor(inputBindingOwner, descriptor);
IMenuItemBuilder submenuBuilder = item as IMenuItemBuilder;

1
src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj

@ -54,7 +54,6 @@ @@ -54,7 +54,6 @@
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Menu\IStatusUpdate.cs" />
<Compile Include="Menu\ISubmenuBuilder.cs" />
<Compile Include="Menu\Menu.cs" />
<Compile Include="Menu\MenuCheckBox.cs" />
<Compile Include="Menu\MenuCommand.cs" />

13
src/Main/ICSharpCode.Core.WinForms/Menu/ISubmenuBuilder.cs

@ -1,13 +0,0 @@ @@ -1,13 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows.Forms;
namespace ICSharpCode.Core.WinForms
{
public interface ISubmenuBuilder
{
ToolStripItem[] BuildSubmenu(Codon codon, object owner);
}
}

5
src/Main/ICSharpCode.Core.WinForms/Menu/Menu.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ICSharpCode.Core.WinForms
@ -46,8 +47,8 @@ namespace ICSharpCode.Core.WinForms @@ -46,8 +47,8 @@ namespace ICSharpCode.Core.WinForms
((IStatusUpdate)item).UpdateText();
}
} else {
ISubmenuBuilder submenuBuilder = (ISubmenuBuilder)item;
DropDownItems.AddRange(submenuBuilder.BuildSubmenu(codon, caller));
IMenuItemBuilder submenuBuilder = (IMenuItemBuilder)item;
DropDownItems.AddRange(submenuBuilder.BuildItems(codon, caller).Cast<ToolStripItem>().ToArray());
}
}
}

5
src/Main/ICSharpCode.Core.WinForms/Menu/MenuService.cs

@ -5,6 +5,7 @@ using System; @@ -5,6 +5,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace ICSharpCode.Core.WinForms
@ -25,8 +26,8 @@ namespace ICSharpCode.Core.WinForms @@ -25,8 +26,8 @@ namespace ICSharpCode.Core.WinForms
if (item is IStatusUpdate)
((IStatusUpdate)item).UpdateStatus();
} else {
ISubmenuBuilder submenuBuilder = (ISubmenuBuilder)item;
collection.AddRange(submenuBuilder.BuildSubmenu(descriptor.Codon, descriptor.Parameter));
IMenuItemBuilder submenuBuilder = (IMenuItemBuilder)item;
collection.AddRange(submenuBuilder.BuildItems(descriptor.Codon, descriptor.Parameter).Cast<ToolStripItem>().ToArray());
}
}
}

5
src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarDropDownButton.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Input;
@ -68,8 +69,8 @@ namespace ICSharpCode.Core.WinForms @@ -68,8 +69,8 @@ namespace ICSharpCode.Core.WinForms
}
else
{
ISubmenuBuilder submenuBuilder = (ISubmenuBuilder)item;
DropDownItems.AddRange(submenuBuilder.BuildSubmenu(codon, caller));
IMenuItemBuilder submenuBuilder = (IMenuItemBuilder)item;
DropDownItems.AddRange(submenuBuilder.BuildItems(codon, caller).Cast<ToolStripItem>().ToArray());
}
}
}

7
src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ICSharpCode.Core.WinForms
@ -23,9 +24,9 @@ namespace ICSharpCode.Core.WinForms @@ -23,9 +24,9 @@ namespace ICSharpCode.Core.WinForms
object item = CreateToolbarItemFromDescriptor(descriptor);
if (item is ToolStripItem) {
collection.Add((ToolStripItem)item);
} else if (item is ISubmenuBuilder) {
ISubmenuBuilder submenuBuilder = (ISubmenuBuilder)item;
collection.AddRange(submenuBuilder.BuildSubmenu(descriptor.Codon, owner));
} else if (item is IMenuItemBuilder) {
IMenuItemBuilder submenuBuilder = (IMenuItemBuilder)item;
collection.AddRange(submenuBuilder.BuildItems(descriptor.Codon, owner).Cast<ToolStripItem>().ToArray());
}
}

8
src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarSplitButton.cs

@ -5,6 +5,7 @@ using System; @@ -5,6 +5,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Input;
@ -65,11 +66,8 @@ namespace ICSharpCode.Core.WinForms @@ -65,11 +66,8 @@ namespace ICSharpCode.Core.WinForms
}
else
{
ISubmenuBuilder submenuBuilder = (ISubmenuBuilder)item;
itemsToAdd = submenuBuilder.BuildSubmenu(codon, caller);
if (itemsToAdd!=null) {
DropDownItems.AddRange(itemsToAdd);
}
IMenuItemBuilder submenuBuilder = (IMenuItemBuilder)item;
DropDownItems.AddRange(submenuBuilder.BuildItems(codon, caller).Cast<ToolStripItem>().ToArray());
}
}
}

8
src/Main/SharpDevelop/Workbench/SingleInstanceHelper.cs

@ -6,8 +6,8 @@ using System.Collections.Generic; @@ -6,8 +6,8 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Windows;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
@ -69,7 +69,11 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -69,7 +69,11 @@ namespace ICSharpCode.SharpDevelop.Workbench
} else {
try {
SD.MainThread.InvokeAsync(
delegate { NativeMethods.SetForegroundWindow(SD.Workbench.MainWin32Window.Handle); }
delegate {
var win32Window = PresentationSource.FromVisual(SD.Workbench.MainWindow) as System.Windows.Interop.IWin32Window;
if (win32Window != null)
NativeMethods.SetForegroundWindow(win32Window.Handle);
}
).FireAndForget();
string tempFileName = Path.Combine(Path.GetTempPath(), "sd" + fileNumber + ".tmp");
foreach (string file in File.ReadAllLines(tempFileName)) {

Loading…
Cancel
Save