Browse Source

UserControl for Add Service Reference

pull/23/head
PeterForstmeier 14 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 @@ @@ -309,11 +309,17 @@
label = "${res:ProjectComponent.ContextMenu.AddWebReference}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddWebReferenceToProject"/>
<!--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">
<MenuItem id = "AddServiceReference"
label = "Add Service Reference"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddServiceReferenceToProject"/>
</Condition>
</Condition>-->
<MenuItem id = "AddSeparator" type = "Separator"/>
</Condition>

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

@ -249,6 +249,11 @@ @@ -249,6 +249,11 @@
<Compile Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\WebProjectOptions\WebProjectOptionsPanel.xaml.cs">
<DependentUpon>WebProjectOptionsPanel.xaml</DependentUpon>
</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.Designer.cs">
<DependentUpon>ToolNotFoundDialog.cs</DependentUpon>
@ -829,6 +834,7 @@ @@ -829,6 +834,7 @@
<DependentUpon>ProjectOptionPanel.cs</DependentUpon>
</Page>
<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\ContextActionsControl.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 @@ -79,6 +79,14 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
}
}
public override bool StorePanelContents()
{
// SaveWpfSettings();
return base.StorePanelContents();
}
void UpdateEnabledStates(object sender, EventArgs e)
{
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 @@ @@ -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 @@ @@ -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; @@ -8,8 +8,10 @@ using System.Web.Services.Discovery;
using System.Windows.Forms;
using System.Xml;
using Gui.Dialogs.ReferenceDialog;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Gui.OptionPanels;
namespace ICSharpCode.SharpDevelop.Project.Commands
{
@ -178,44 +180,94 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -178,44 +180,94 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
public class AddServiceReferenceToProject: AbstractMenuCommand
public class ShowServiceInBrowser: AbstractMenuCommand
{
private static string NodePath = "//system.serviceModel//client//endpoint";
public override void Run()
{
// hack try url fvoid = LoadConfigDocument(f);
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
var f = CompilableProject.GetAppConfigFile(node.Project,false);
var configFile = LoadConfigDocument(f);
if (!String.IsNullOrEmpty(f))
{
var configFile = LoadConfigDocument(f);
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");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = endPoint;
Process.Start(startInfo);
} else
{
MessageService.ShowError("No app.config File found");
}
}
static XmlDocument LoadConfigDocument(string fileName)
{
XmlDocument doc = null;
try
{
doc = new XmlDocument();
doc.Load(fileName);
return doc;
}
catch (System.IO.FileNotFoundException e)
{
throw new Exception("No configuration file found.", e);
}
}
{
XmlDocument doc = null;
try
{
doc = new XmlDocument();
doc.Load(fileName);
return doc;
}
catch (System.IO.FileNotFoundException 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

Loading…
Cancel
Save