Browse Source

fix #318: XmlDoc: Links should open MSDN documentation or go to definition

pull/343/merge
Siegfried Pammer 12 years ago
parent
commit
23133267d3
  1. 3
      data/resources/StringResources.de.resx
  2. 9
      data/resources/StringResources.resx
  3. 8
      src/Main/Base/Project/Editor/DocumentationUIBuilder.cs
  4. 9
      src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionPanelXaml.xaml
  5. 5
      src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionPanelXaml.xaml.cs
  6. 6
      src/Main/Base/Project/Src/Services/HelpProvider.cs
  7. 13
      src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs

3
data/resources/StringResources.de.resx

@ -3314,6 +3314,9 @@ Bitte einen anderen Dateinamen wählen.</value>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Spalte</value> <value>Spalte</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Inhalt</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Anzeige-Optionen</value> <value>Anzeige-Optionen</value>
</data> </data>

9
data/resources/StringResources.resx

@ -2039,6 +2039,15 @@ Do you want to add the new file to the project ${CurrentProjectName}?</value>
<value>Save</value> <value>Save</value>
<comment>Save *inputbox* items</comment> <comment>Save *inputbox* items</comment>
</data> </data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget" xml:space="preserve">
<value>Links in tooltips should go to</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDefinition" xml:space="preserve">
<value>Definition in code</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDocumentation" xml:space="preserve">
<value>Documentation (if available)</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Pre-select recently used members</value> <value>Pre-select recently used members</value>
</data> </data>

8
src/Main/Base/Project/Editor/DocumentationUIBuilder.cs

@ -371,8 +371,12 @@ namespace ICSharpCode.SharpDevelop.Editor
var model = referencedEntity.GetModel(); var model = referencedEntity.GetModel();
return delegate(object sender, RoutedEventArgs e) { return delegate(object sender, RoutedEventArgs e) {
IEntity resolvedEntity = model != null ? model.Resolve() : null; IEntity resolvedEntity = model != null ? model.Resolve() : null;
if (resolvedEntity != null) if (resolvedEntity != null) {
SharpDevelop.NavigationService.NavigateTo(resolvedEntity); bool shouldDisplayHelp = CodeCompletionOptions.TooltipLinkTarget == TooltipLinkTarget.Documentation
&& resolvedEntity.ParentAssembly.IsPartOfDotnetFramework();
if (!shouldDisplayHelp || !HelpProvider.ShowHelp(resolvedEntity))
NavigationService.NavigateTo(resolvedEntity);
}
e.Handled = true; e.Handled = true;
}; };
} }

9
src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionPanelXaml.xaml

@ -3,6 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core" xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui" xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui"
xmlns:sd="clr-namespace:ICSharpCode.SharpDevelop"
xmlns:widgets="clr-namespace:ICSharpCode.SharpDevelop.Widgets;assembly=ICSharpCode.SharpDevelop.Widgets"> xmlns:widgets="clr-namespace:ICSharpCode.SharpDevelop.Widgets;assembly=ICSharpCode.SharpDevelop.Widgets">
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -38,6 +39,7 @@
<RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<CheckBox Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache}" <CheckBox Content="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache}"
@ -75,7 +77,7 @@
</CheckBox> </CheckBox>
<TextBlock Grid.Row="4" Margin="0,3,0,13" <TextBlock Grid.Row="4" Margin="0,3,0,13"
Text="{Binding WrapText}" Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend}"
TextWrapping="Wrap"> TextWrapping="Wrap">
</TextBlock> </TextBlock>
@ -97,6 +99,11 @@
IsEnabled="{Binding UseInsight}"> IsEnabled="{Binding UseInsight}">
</CheckBox> </CheckBox>
<StackPanel Grid.Row="9" Orientation="Horizontal" Margin="0,10">
<TextBlock Text="{core:Localize Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget}" Margin="0,2,2,0" />
<ComboBox sd:EnumBinding.EnumType="{x:Type sd:TooltipLinkTarget}"
SelectedValue="{core:OptionBinding sd:CodeCompletionOptions.TooltipLinkTarget}" />
</StackPanel>
</Grid> </Grid>
</GroupBox> </GroupBox>
</Grid> </Grid>

5
src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionPanelXaml.xaml.cs

@ -32,7 +32,6 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = this; this.DataContext = this;
WrapText = StringParser.Parse("${res:Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend}");
} }
#region overrides #region overrides
@ -68,8 +67,6 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
#endregion #endregion
public string WrapText {get; private set;}
#region Properties #region Properties
private bool enableCodeCompletion; private bool enableCodeCompletion;
@ -119,7 +116,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
void Button_Click(object sender, RoutedEventArgs e) void Button_Click(object sender, RoutedEventArgs e)
{ {
ICSharpCode.SharpDevelop.Editor.CodeCompletion.CodeCompletionDataUsageCache.ResetCache(); CodeCompletionDataUsageCache.ResetCache();
} }
} }
} }

6
src/Main/Base/Project/Src/Services/HelpProvider.cs

@ -30,15 +30,15 @@ namespace ICSharpCode.SharpDevelop
return AddInTree.BuildItems<HelpProvider>("/SharpDevelop/Services/HelpProvider", null, false); return AddInTree.BuildItems<HelpProvider>("/SharpDevelop/Services/HelpProvider", null, false);
} }
public static void ShowHelp(IEntity c) public static bool ShowHelp(IEntity c)
{ {
if (c == null) if (c == null)
throw new ArgumentNullException("c"); throw new ArgumentNullException("c");
foreach (HelpProvider p in GetProviders()) { foreach (HelpProvider p in GetProviders()) {
if (p.TryShowHelp(c)) if (p.TryShowHelp(c))
return; return true;
} }
new HelpProvider().TryShowHelp(c); return new HelpProvider().TryShowHelp(c);
} }
public virtual bool TryShowHelp(IEntity c) public virtual bool TryShowHelp(IEntity c)

13
src/Main/Base/Project/Src/Services/ParserService/CodeCompletionOptions.cs

@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
using System; using System;
using System.ComponentModel;
using ICSharpCode.Core; using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop namespace ICSharpCode.SharpDevelop
@ -81,5 +82,17 @@ namespace ICSharpCode.SharpDevelop
get { return properties.Get("InsightRefreshOnComma", true); } get { return properties.Get("InsightRefreshOnComma", true); }
set { properties.Set("InsightRefreshOnComma", value); } set { properties.Set("InsightRefreshOnComma", value); }
} }
public static TooltipLinkTarget TooltipLinkTarget {
get { return properties.Get("TooltipLinkTarget", TooltipLinkTarget.Documentation); }
set { properties.Set("TooltipLinkTarget", value); }
}
}
public enum TooltipLinkTarget {
[Description("${res:Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDocumentation}")]
Documentation,
[Description("${res:Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDefinition}")]
Definition
} }
} }

Loading…
Cancel
Save