~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)
 
3
 
 
4
using System;
 
5
using System.IO;
 
6
using System.Web.Services.Description;
 
7
using System.Windows;
 
8
using System.Windows.Controls;
 
9
using ICSharpCode.Core;
 
10
using ICSharpCode.SharpDevelop.Project;
 
11
 
 
12
namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
 
13
{
 
14
        public partial class WebProjectOptionsPanel : UserControl
 
15
        {
 
16
                private readonly DebugOptions parentPanel;
 
17
                
 
18
                public WebProjectOptionsPanel(DebugOptions parentPanel)
 
19
                {
 
20
                        InitializeComponent();
 
21
                        
 
22
                        this.parentPanel = parentPanel;
 
23
                        
 
24
                        if (CurrentProjectDebugData == null)
 
25
                                CurrentProjectDebugData = new WebProjectDebugData();
 
26
                        
 
27
                        Loaded += OnLoaded;
 
28
                }
 
29
 
 
30
                void OnLoaded(object sender, RoutedEventArgs e)
 
31
                {
 
32
                        if (!WebProjectService.IsIISInstalled) {
 
33
                                StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
 
34
                                return;
 
35
                        }
 
36
                        
 
37
                        switch (CurrentProjectDebugData.WebServer)
 
38
                        {
 
39
                                case WebServer.IISExpress:
 
40
                                        if (WebProjectService.IISVersion == IISVersion.IISExpress) {
 
41
                                                UseIISExpress.IsChecked = true;
 
42
                                                PortTextBox.Text = CurrentProjectDebugData.Port ?? "8080";
 
43
                                                
 
44
                                                SelectIISExpress();
 
45
                                        }
 
46
                                        break;
 
47
                                case WebServer.IIS:
 
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;
 
54
                                                
 
55
                                                SelectLocalIIS();
 
56
                                        }
 
57
                                        break;
 
58
                                default:
 
59
                                        // do nothing
 
60
                                        break;
 
61
                        }
 
62
                }
 
63
                
 
64
                WebProjectDebugData CurrentProjectDebugData {
 
65
                        get {
 
66
                                var data = WebProjectsOptions.Instance.GetWebProjectOptions(ProjectService.CurrentProject.Name);
 
67
                                if (data != null)
 
68
                                        return data.Data;
 
69
                                
 
70
                                return null;
 
71
                        }
 
72
                        set {
 
73
                                WebProjectOptions data;
 
74
                                if (value != null)
 
75
                                {
 
76
                                        data = new WebProjectOptions() {
 
77
                                                ProjectName = ProjectService.CurrentProject.Name,
 
78
                                                Data = value
 
79
                                        };
 
80
                                }
 
81
                                else
 
82
                                        data = new WebProjectOptions();
 
83
                                
 
84
                                WebProjectsOptions.Instance.SetWebProjectOptions(ProjectService.CurrentProject.Name, data);
 
85
                        }
 
86
                }
 
87
                
 
88
                void CreateVirtualDirectory_Click(object sender, RoutedEventArgs e)
 
89
                {
 
90
                        string error = WebProjectService.CreateVirtualDirectory(ProjectService.CurrentProject.Name,
 
91
                                                                                Path.GetDirectoryName(ProjectService.CurrentProject.FileName));
 
92
                        
 
93
                        if (!string.IsNullOrEmpty(error))
 
94
                                MessageService.ShowError(error);
 
95
                        else {
 
96
                                MessageService.ShowMessage(ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.VirtualDirCreated"));
 
97
                        }
 
98
                }
 
99
                
 
100
                void UseIISExpress_Click(object sender, RoutedEventArgs e)
 
101
                {
 
102
                        SelectIISExpress();
 
103
                }
 
104
                
 
105
                void SelectIISExpress()
 
106
                {
 
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;
 
112
                        
 
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;
 
118
                        }
 
119
                        else
 
120
                                StatusLabel.Text = string.Empty;
 
121
                        
 
122
                        IISExpressGroup.IsEnabled = CreateVirtualDirectoryButton.IsEnabled = isIISExpressInstalled;
 
123
                        LocalIISGroup.IsEnabled = false;
 
124
                        CurrentProjectDebugData = data;
 
125
                }
 
126
                
 
127
                void UseLocalIIS_Click(object sender, RoutedEventArgs e)
 
128
                {
 
129
                        SelectLocalIIS();
 
130
                }
 
131
                
 
132
                void SelectLocalIIS()
 
133
                {
 
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;
 
140
                        
 
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;
 
146
                        }
 
147
                        else {
 
148
                                StatusLabel.Text = string.Empty;
 
149
                                ProjectUrl.Text = @"http://localhost/" + ProjectService.CurrentProject.Name;
 
150
                        }
 
151
                        
 
152
                        data.ProjectUrl = ProjectUrl.Text;
 
153
                        LocalIISGroup.IsEnabled = CreateVirtualDirectoryButton.IsEnabled = isIISInstalled;
 
154
                        IISExpressGroup.IsEnabled = false;
 
155
                        CurrentProjectDebugData = data;
 
156
                }
 
157
                
 
158
                void ProjectUrl_TextChanged(object sender, TextChangedEventArgs e)
 
159
                {
 
160
                        WebProjectDebugData data = new WebProjectDebugData();
 
161
                        data.WebServer = WebServer.IIS;
 
162
                        data.ProjectUrl = ProjectUrl.Text;
 
163
                        CurrentProjectDebugData = data;
 
164
                }
 
165
                
 
166
                void ClearWebServerButton_Click(object sender, RoutedEventArgs e)
 
167
                {
 
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;
 
174
                        
 
175
                        WebProjectDebugData data = new WebProjectDebugData();
 
176
                        data.WebServer = WebServer.None;
 
177
                        data.ProjectUrl = string.Empty;
 
178
                        
 
179
                        CurrentProjectDebugData = data;
 
180
                }
 
181
                
 
182
                bool AreAllValidNumericChars(string str)
 
183
                {
 
184
                        foreach(char c in str)
 
185
                        {
 
186
                                if(!Char.IsNumber(c)) return false;
 
187
                        }
 
188
 
 
189
                        return true;
 
190
                }
 
191
                
 
192
                void PortTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
 
193
                {
 
194
                        e.Handled = !AreAllValidNumericChars(e.Text);
 
195
                        base.OnPreviewTextInput(e);
 
196
                }
 
197
                
 
198
                void PortTextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
 
199
                {
 
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;
 
205
                }
 
206
        }
 
207
}
 
 
b'\\ No newline at end of file'