1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
6
using System.Web.Services.Description;
8
using System.Windows.Controls;
9
using ICSharpCode.Core;
10
using ICSharpCode.SharpDevelop.Project;
12
namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
14
public partial class WebProjectOptionsPanel : UserControl
16
private readonly DebugOptions parentPanel;
18
public WebProjectOptionsPanel(DebugOptions parentPanel)
20
InitializeComponent();
22
this.parentPanel = parentPanel;
24
if (CurrentProjectDebugData == null)
25
CurrentProjectDebugData = new WebProjectDebugData();
30
void OnLoaded(object sender, RoutedEventArgs e)
32
if (!WebProjectService.IsIISInstalled) {
33
StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
37
switch (CurrentProjectDebugData.WebServer)
39
case WebServer.IISExpress:
40
if (WebProjectService.IISVersion == IISVersion.IISExpress) {
41
UseIISExpress.IsChecked = true;
42
PortTextBox.Text = CurrentProjectDebugData.Port ?? "8080";
48
if (WebProjectService.IISVersion == IISVersion.IIS5 ||
49
WebProjectService.IISVersion == IISVersion.IIS6 ||
50
WebProjectService.IISVersion == IISVersion.IIS7 ||
51
WebProjectService.IISVersion == IISVersion.IIS_Future) {
52
UseLocalIIS.IsChecked = true;
53
ProjectUrl.Text = CurrentProjectDebugData.ProjectUrl ?? string.Empty;
64
WebProjectDebugData CurrentProjectDebugData {
66
var data = WebProjectsOptions.Instance.GetWebProjectOptions(ProjectService.CurrentProject.Name);
73
WebProjectOptions data;
76
data = new WebProjectOptions() {
77
ProjectName = ProjectService.CurrentProject.Name,
82
data = new WebProjectOptions();
84
WebProjectsOptions.Instance.SetWebProjectOptions(ProjectService.CurrentProject.Name, data);
88
void CreateVirtualDirectory_Click(object sender, RoutedEventArgs e)
90
string error = WebProjectService.CreateVirtualDirectory(ProjectService.CurrentProject.Name,
91
Path.GetDirectoryName(ProjectService.CurrentProject.FileName));
93
if (!string.IsNullOrEmpty(error))
94
MessageService.ShowError(error);
96
MessageService.ShowMessage(ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.VirtualDirCreated"));
100
void UseIISExpress_Click(object sender, RoutedEventArgs e)
105
void SelectIISExpress()
107
WebProjectDebugData data = new WebProjectDebugData();
108
data.WebServer = WebServer.IISExpress;
109
data.Port = PortTextBox.Text;
110
data.ProjectUrl = string.Format(@"http://localhost:{0}/" + ProjectService.CurrentProject.Name, PortTextBox.Text);
111
bool isIISExpressInstalled = WebProjectService.IISVersion == IISVersion.IISExpress;
113
if (!isIISExpressInstalled) {
114
UseIISExpress.IsChecked = false;
115
data.WebServer = WebServer.None;
116
StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
117
data.ProjectUrl = string.Empty;
120
StatusLabel.Text = string.Empty;
122
IISExpressGroup.IsEnabled = CreateVirtualDirectoryButton.IsEnabled = isIISExpressInstalled;
123
LocalIISGroup.IsEnabled = false;
124
CurrentProjectDebugData = data;
127
void UseLocalIIS_Click(object sender, RoutedEventArgs e)
132
void SelectLocalIIS()
134
WebProjectDebugData data = new WebProjectDebugData();
135
data.WebServer = WebServer.IIS;
136
data.Port = string.Empty;
137
bool isIISInstalled = WebProjectService.IISVersion == IISVersion.IIS5 ||
138
WebProjectService.IISVersion == IISVersion.IIS6 ||
139
WebProjectService.IISVersion == IISVersion.IIS7;
141
if (!isIISInstalled) {
142
StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
143
ProjectUrl.Text = string.Empty;
144
data.WebServer = WebServer.None;
145
UseLocalIIS.IsChecked = false;
148
StatusLabel.Text = string.Empty;
149
ProjectUrl.Text = @"http://localhost/" + ProjectService.CurrentProject.Name;
152
data.ProjectUrl = ProjectUrl.Text;
153
LocalIISGroup.IsEnabled = CreateVirtualDirectoryButton.IsEnabled = isIISInstalled;
154
IISExpressGroup.IsEnabled = false;
155
CurrentProjectDebugData = data;
158
void ProjectUrl_TextChanged(object sender, TextChangedEventArgs e)
160
WebProjectDebugData data = new WebProjectDebugData();
161
data.WebServer = WebServer.IIS;
162
data.ProjectUrl = ProjectUrl.Text;
163
CurrentProjectDebugData = data;
166
void ClearWebServerButton_Click(object sender, RoutedEventArgs e)
168
UseIISExpress.IsChecked = false;
169
UseLocalIIS.IsChecked = false;
170
CreateVirtualDirectoryButton.IsEnabled = false;
171
ProjectUrl.Text = string.Empty;
172
LocalIISGroup.IsEnabled = false;
173
IISExpressGroup.IsEnabled = false;
175
WebProjectDebugData data = new WebProjectDebugData();
176
data.WebServer = WebServer.None;
177
data.ProjectUrl = string.Empty;
179
CurrentProjectDebugData = data;
182
bool AreAllValidNumericChars(string str)
184
foreach(char c in str)
186
if(!Char.IsNumber(c)) return false;
192
void PortTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
194
e.Handled = !AreAllValidNumericChars(e.Text);
195
base.OnPreviewTextInput(e);
198
void PortTextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
200
WebProjectDebugData data = new WebProjectDebugData();
201
data.WebServer = WebServer.IISExpress;
202
data.Port = PortTextBox.Text;
203
data.ProjectUrl = string.Format(@"http://localhost:{0}/" + ProjectService.CurrentProject.Name, PortTextBox.Text);
204
CurrentProjectDebugData = data;
b'\\ No newline at end of file'