Browse Source

UserControl for Add Service Reference

pull/23/head
PeterForstmeier 15 years ago
parent
commit
076e16958e
  1. 8
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  2. 6
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  3. 8
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/DebugOptions.cs
  4. 63
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceDialog.xaml
  5. 121
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceViewModel.cs
  6. 100
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ReferenceFolderNodeCommands.cs

8
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -309,11 +309,17 @@
label = "${res:ProjectComponent.ContextMenu.AddWebReference}" label = "${res:ProjectComponent.ContextMenu.AddWebReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/> class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/>
<!--label = "${res:ProjectComponent.ContextMenu.AddWebReference}" --> <!--label = "${res:ProjectComponent.ContextMenu.AddWebReference}" -->
<Condition name = "WriteableProject">
<MenuItem id = "ShowServiceinBrowser"
label = "Show Service in Browser"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowServiceInBrowser"/>
</Condition>
<!--
<Condition name = "WriteableProject"> <Condition name = "WriteableProject">
<MenuItem id = "AddServiceReference" <MenuItem id = "AddServiceReference"
label = "Add Service Reference" label = "Add Service Reference"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddServiceReferenceToProject"/> class = "ICSharpCode.SharpDevelop.Project.Commands.AddServiceReferenceToProject"/>
</Condition> </Condition>-->
<MenuItem id = "AddSeparator" type = "Separator"/> <MenuItem id = "AddSeparator" type = "Separator"/>
</Condition> </Condition>

6
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -249,6 +249,11 @@
<Compile Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\WebProjectOptions\WebProjectOptionsPanel.xaml.cs"> <Compile Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\WebProjectOptions\WebProjectOptionsPanel.xaml.cs">
<DependentUpon>WebProjectOptionsPanel.xaml</DependentUpon> <DependentUpon>WebProjectOptionsPanel.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Src\Gui\Dialogs\ReferenceDialog\AddServiceReferenceDialog.xaml.cs">
<DependentUpon>AddServiceReferenceDialog.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Gui\Dialogs\ReferenceDialog\AddServiceReferenceViewModel.cs" />
<Compile Include="Src\Gui\Dialogs\ToolNotFoundDialog.cs" /> <Compile Include="Src\Gui\Dialogs\ToolNotFoundDialog.cs" />
<Compile Include="Src\Gui\Dialogs\ToolNotFoundDialog.Designer.cs"> <Compile Include="Src\Gui\Dialogs\ToolNotFoundDialog.Designer.cs">
<DependentUpon>ToolNotFoundDialog.cs</DependentUpon> <DependentUpon>ToolNotFoundDialog.cs</DependentUpon>
@ -829,6 +834,7 @@
<DependentUpon>ProjectOptionPanel.cs</DependentUpon> <DependentUpon>ProjectOptionPanel.cs</DependentUpon>
</Page> </Page>
<Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\WebProjectOptions\WebProjectOptionsPanel.xaml" /> <Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\WebProjectOptions\WebProjectOptionsPanel.xaml" />
<Page Include="Src\Gui\Dialogs\ReferenceDialog\AddServiceReferenceDialog.xaml" />
<Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsBulbControl.xaml" /> <Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsBulbControl.xaml" />
<Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsControl.xaml" /> <Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsControl.xaml" />
<Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsHeaderedControl.xaml" /> <Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsHeaderedControl.xaml" />

8
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/DebugOptions.cs

@ -79,6 +79,14 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
} }
} }
public override bool StorePanelContents()
{
// SaveWpfSettings();
return base.StorePanelContents();
}
void UpdateEnabledStates(object sender, EventArgs e) void UpdateEnabledStates(object sender, EventArgs e)
{ {
Get<TextBox>("startExternalProgram").Enabled = Get<Button>("startExternalProgramBrowse").Enabled = Get<RadioButton>("startExternalProgram").Checked; Get<TextBox>("startExternalProgram").Enabled = Get<Button>("startExternalProgramBrowse").Enabled = Get<RadioButton>("startExternalProgram").Checked;

63
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceDialog.xaml

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Window
x:Class="Gui.Dialogs.ReferenceDialog.AddServiceReferenceDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:src="clr-namespace:Gui.Dialogs.ReferenceDialog"
WindowStartupLocation="CenterOwner"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
Height="425"
Width="500"
Title="{Binding Title}">
<Grid Name="grid">
<Grid.RowDefinitions>
<RowDefinition
Height="1*" />
<RowDefinition
Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="Bla bla bla"></TextBox>
<Grid Grid.Row="1" ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Background="Yellow" Margin="2,4,2,4"></TextBox>
<widgets:UniformGridWithSpacing Columns="2" Grid.Column="1" HorizontalAlignment="Center">
<Button
Content="Go"
Style="{x:Static core:GlobalStyles.ButtonStyle}" />
<Button
Content="Discover"
Style="{x:Static core:GlobalStyles.ButtonStyle}" />
</widgets:UniformGridWithSpacing>
</Grid>
</Grid>
<widgets:UniformGridWithSpacing Columns="2" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" Margin="0,4,12,12">
<Button
Content="{core:Localize Global.OKButtonText}"
IsDefault="True"
Name="okButton"
Style="{x:Static core:GlobalStyles.ButtonStyle}"
Click="okButtonClick" />
<Button
Content="{core:Localize Global.CancelButtonText}"
IsCancel="True"
Name="cancelButton"
Style="{x:Static core:GlobalStyles.ButtonStyle}"
Click="cancelButtonClick" />
</widgets:UniformGridWithSpacing>
</Grid>
</Window>

121
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceViewModel.cs

@ -0,0 +1,121 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 12.10.2011
* Time: 20:05
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Reflection;
using ICSharpCode.SharpDevelop.Project;
namespace Gui.Dialogs.ReferenceDialog
{
/// <summary>
/// Description of AddServiceReferenceViewModel.
/// </summary>
public class AddServiceReferenceViewModel:ViewModelBase
{
public AddServiceReferenceViewModel(IProject project)
{
Project = project;
title = "Add Service Reference to <" + Project.Name +">";
discoverButtonContend = "Disvover";
}
private string title;
public string Title
{
get {return title;}
set {title = value;
base.RaisePropertyChanged(() =>Title);
}
}
private string discoverButtonContend;
public string DiscoverButtonContend {
get { return discoverButtonContend; }
set { discoverButtonContend = value;
base.RaisePropertyChanged(() =>DiscoverButtonContend);}
}
private IProject project;
public IProject Project
{
get {return project;}
set {project = value;
base.RaisePropertyChanged(() =>Project);
}
}
}
public class ViewModelBase:INotifyPropertyChanged
{
public ViewModelBase()
{
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, e);
}
}
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpresssion)
{
var propertyName = ExtractPropertyName(propertyExpresssion);
this.RaisePropertyChanged(propertyName);
}
protected void RaisePropertyChanged(String propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
private static String ExtractPropertyName<T>(Expression<Func<T>> propertyExpresssion)
{
if (propertyExpresssion == null)
{
throw new ArgumentNullException("propertyExpresssion");
}
var memberExpression = propertyExpresssion.Body as MemberExpression;
if (memberExpression == null)
{
throw new ArgumentException("The expression is not a member access expression.", "propertyExpresssion");
}
var property = memberExpression.Member as PropertyInfo;
if (property == null)
{
throw new ArgumentException("The member access expression does not access a property.", "propertyExpresssion");
}
var getMethod = property.GetGetMethod(true);
if (getMethod.IsStatic)
{
throw new ArgumentException("The referenced property is a static property.", "propertyExpresssion");
}
return memberExpression.Member.Name;
}
}
}

100
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ReferenceFolderNodeCommands.cs

@ -8,8 +8,10 @@ using System.Web.Services.Discovery;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml; using System.Xml;
using Gui.Dialogs.ReferenceDialog;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Gui.OptionPanels;
namespace ICSharpCode.SharpDevelop.Project.Commands namespace ICSharpCode.SharpDevelop.Project.Commands
{ {
@ -178,44 +180,94 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
} }
public class ShowServiceInBrowser: AbstractMenuCommand
public class AddServiceReferenceToProject: AbstractMenuCommand
{ {
private static string NodePath = "//system.serviceModel//client//endpoint"; private static string NodePath = "//system.serviceModel//client//endpoint";
public override void Run() public override void Run()
{ {
// hack try url fvoid = LoadConfigDocument(f);
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode; AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
var f = CompilableProject.GetAppConfigFile(node.Project,false); var f = CompilableProject.GetAppConfigFile(node.Project,false);
if (!String.IsNullOrEmpty(f))
var configFile = LoadConfigDocument(f); {
var configFile = LoadConfigDocument(f);
var endPoint = configFile.SelectSingleNode(NodePath).Attributes["address"].Value; var endPoint = configFile.SelectSingleNode(NodePath).Attributes["address"].Value;
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = endPoint;
Process.Start(startInfo);
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe"); } else
startInfo.WindowStyle = ProcessWindowStyle.Normal; {
startInfo.Arguments = endPoint; MessageService.ShowError("No app.config File found");
Process.Start(startInfo); }
} }
static XmlDocument LoadConfigDocument(string fileName) static XmlDocument LoadConfigDocument(string fileName)
{ {
XmlDocument doc = null; XmlDocument doc = null;
try try
{ {
doc = new XmlDocument(); doc = new XmlDocument();
doc.Load(fileName); doc.Load(fileName);
return doc; return doc;
} }
catch (System.IO.FileNotFoundException e) catch (System.IO.FileNotFoundException e)
{ {
throw new Exception("No configuration file found.", e); throw new Exception("No configuration file found.", e);
} }
} }
} }
public class AddServiceReferenceToProject: AbstractMenuCommand
{
// private static string NodePath = "//system.serviceModel//client//endpoint";
public override void Run()
{
AbstractProjectBrowserTreeNode node = Owner as AbstractProjectBrowserTreeNode;
IProject project = (node != null) ? node.Project : ProjectService.CurrentProject;
if (project == null) {
return;
}
var vm = new AddServiceReferenceViewModel(project);
AddServiceReferenceDialog o = new AddServiceReferenceDialog();
o.DataContext = vm;
o.Owner = WorkbenchSingleton.MainWindow;
var b = o.ShowDialog();
if (b == true) {
/*
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
var f = CompilableProject.GetAppConfigFile(node.Project,false);
// IProject project = (node != null) ? node.Project : ProjectService.CurrentProject;
CompilableProject project = ProjectService.CurrentProject as CompilableProject;
var wpo = WebProjectsOptions.Instance.GetWebProjectOptions(ProjectService.CurrentProject.Name);
var s1 = project.AssemblyName;
var s2 = project.CreateStartInfo();
var ss = s1 + s2;
*/
}
}
}
public class RefreshReference : AbstractMenuCommand public class RefreshReference : AbstractMenuCommand

Loading…
Cancel
Save