From 12d559c90f911c63acf41cb027d67456cffe6033 Mon Sep 17 00:00:00 2001
From: Daniel Grunwald <daniel@danielgrunwald.de>
Date: Mon, 18 Jun 2007 14:16:51 +0000
Subject: [PATCH] Fixed forum-16247: Add Web Reference dialog missing URL on
 120 DPI

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2558 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
---
 .../ReferenceDialog/AddWebReferenceDialog.cs  | 50 ++++++++--------
 .../ReferenceDialog/WebServicesView.cs        | 60 ++++++++++---------
 2 files changed, 58 insertions(+), 52 deletions(-)

diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddWebReferenceDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddWebReferenceDialog.cs
index eda3b0850b..d255ba84a0 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddWebReferenceDialog.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddWebReferenceDialog.cs
@@ -25,8 +25,6 @@ namespace ICSharpCode.SharpDevelop.Gui
 	{
 		WebServiceDiscoveryClientProtocol discoveryClientProtocol;
 		CredentialCache credentialCache = new CredentialCache();
-		int initialFormWidth;
-		int initialUrlComboBoxWidth;
 		string namespacePrefix = String.Empty;
 		Uri discoveryUri;
 		IProject project;
@@ -42,13 +40,13 @@ namespace ICSharpCode.SharpDevelop.Gui
 			AddMruList();
 			AddImages();
 			AddStringResources();
-			initialFormWidth = Width;
-			initialUrlComboBoxWidth = urlComboBox.Width;
+			// fixes forum-16247: Add Web Reference dialog missing URL on 120 DPI
+			AddWebReferenceDialogResize(null, null);
 			this.project = project;
 		}
 		
 		/// <summary>
-		/// The prefix that will be added to the web service's namespace 
+		/// The prefix that will be added to the web service's namespace
 		/// (typically the project's namespace).
 		/// </summary>
 		public string NamespacePrefix {
@@ -348,7 +346,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		private System.Windows.Forms.ToolStripButton backButton;
 		private ICSharpCode.SharpDevelop.Gui.WebServicesView webServicesView;
 		#endregion
-	
+		
 		void AddMruList()
 		{
 			try {
@@ -374,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 				} else if (backButton.Selected && e.Modifiers == Keys.Shift) {
 					toolStrip.TabStop = true;
 				}
-			} 
+			}
 		}
 		
 		void ToolStripEnter(object sender, EventArgs e)
@@ -391,7 +389,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		{
 			try {
 				webBrowser.GoBack();
-			} catch (Exception) { }			
+			} catch (Exception) { }
 		}
 		
 		void ForwardButtonClick(object sender, System.EventArgs e)
@@ -405,7 +403,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		{
 			webBrowser.Stop();
 			StopDiscovery();
-			addButton.Enabled = false;		
+			addButton.Enabled = false;
 		}
 		
 		void RefreshButtonClick(object sender, System.EventArgs e)
@@ -438,7 +436,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		
 		void WebBrowserNavigated(object sender, WebBrowserNavigatedEventArgs e)
 		{
-			Cursor = Cursors.Default;	
+			Cursor = Cursors.Default;
 			stopButton.Enabled = false;
 			urlComboBox.Text = webBrowser.Url.ToString();
 			StartDiscovery(e.Url);
@@ -471,7 +469,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		{
 			if (discoveryUri != null) {
 				return discoveryUri.Host;
-			} 
+			}
 			return String.Empty;
 		}
 
@@ -493,7 +491,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 								break;
 							}
 						}
-					}					
+					}
 				}
 				
 				return valid;
@@ -505,7 +503,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 				if (referenceNameTextBox.Text.Length > 0) {
 					if (referenceNameTextBox.Text.IndexOf('\\') == -1) {
 						if (!ContainsInvalidDirectoryChar(referenceNameTextBox.Text)) {
-						    	return true;
+							return true;
 						}
 					}
 				}
@@ -552,7 +550,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		{
 			AsyncDiscoveryState state = (AsyncDiscoveryState)result.AsyncState;
 			WebServiceDiscoveryClientProtocol protocol = state.Protocol;
-					
+			
 			// Check that we are still waiting for this particular callback.
 			bool wanted = false;
 			lock (this) {
@@ -578,7 +576,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 						Invoke(handler, new object[] {null});
 					}
 				}
-			} 
+			}
 		}
 		
 		/// <summary>
@@ -593,7 +591,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 					} catch (NotImplementedException) {
 					} catch (ObjectDisposedException) {
 						// Receive this error if the url pointed to a file.
-						// The discovery client will already have closed the file 
+						// The discovery client will already have closed the file
 						// so the abort fails.
 					}
 					discoveryClientProtocol.Dispose();
@@ -619,7 +617,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 			protocol.ResolveOneLevel();
 			
 			foreach (DictionaryEntry entry in protocol.References) {
-				ContractReference contractRef = entry.Value as ContractReference;				
+				ContractReference contractRef = entry.Value as ContractReference;
 				if (contractRef != null) {
 					services.Add(contractRef.Contract);
 				}
@@ -628,7 +626,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		}
 		
 		void DiscoveredWebServices(DiscoveryClientProtocol protocol)
-		{			
+		{
 			if (protocol != null) {
 				addButton.Enabled = true;
 				namespaceTextBox.Text = GetDefaultNamespace();
@@ -656,8 +654,12 @@ namespace ICSharpCode.SharpDevelop.Gui
 		
 		void AddWebReferenceDialogResize(object sender, EventArgs e)
 		{
-			int widthChange = Width - initialFormWidth;
-			urlComboBox.Width = initialUrlComboBoxWidth + widthChange;	
+			int width = toolStrip.ClientSize.Width;
+			foreach (ToolStripItem item in toolStrip.Items) {
+				if (item != urlComboBox)
+					width -= item.Width + 8;
+			}
+			urlComboBox.Width = width;
 		}
 		
 		void AddButtonClick(object sender,EventArgs e)
@@ -665,14 +667,14 @@ namespace ICSharpCode.SharpDevelop.Gui
 			try {
 				if (!IsValidReferenceName) {
 					MessageService.ShowError(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidReferenceNameError}"));
-					return;					
+					return;
 				}
 				
 				if (!IsValidNamespace) {
 					MessageService.ShowError(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidNamespaceError}"));
-					return;										
+					return;
 				}
-											
+				
 				webReference.Name = referenceNameTextBox.Text;
 				webReference.ProxyNamespace = namespaceTextBox.Text;
 				
@@ -717,7 +719,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 			
 			stopButton.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.StopButtonTooltip}");
 			stopButton.ToolTipText = stopButton.Text;
-				
+			
 			webServicesTabPage.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.WebServicesTabPageTitle}");
 			webServicesTabPage.ToolTipText = webServicesTabPage.Text;
 		}
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebServicesView.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebServicesView.cs
index 1ce7fb3b7d..a0d03954e8 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebServicesView.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebServicesView.cs
@@ -99,8 +99,8 @@ namespace ICSharpCode.SharpDevelop.Gui
 			// webServicesListView
 			// 
 			this.webServicesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-									this.propertyColumnHeader,
-									this.valueColumnHeader});
+			                                          	this.propertyColumnHeader,
+			                                          	this.valueColumnHeader});
 			this.webServicesListView.Dock = System.Windows.Forms.DockStyle.Fill;
 			this.webServicesListView.Location = new System.Drawing.Point(0, 0);
 			this.webServicesListView.Name = "webServicesListView";
@@ -136,22 +136,22 @@ namespace ICSharpCode.SharpDevelop.Gui
 		private System.Windows.Forms.SplitContainer splitContainer;
 		
 		#endregion
-	
+		
 		void WebServicesTreeViewAfterSelect(object sender, TreeViewEventArgs e)
-		{						
-			ListViewItem item;		
+		{
+			ListViewItem item;
 			webServicesListView.Items.Clear();
-				
+			
 			if(e.Node.Tag is ServiceDescription) {
 				ServiceDescription desc = (ServiceDescription)e.Node.Tag;
-				item = new ListViewItem();				
+				item = new ListViewItem();
 				item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.RetrievalUriProperty}");
 				item.SubItems.Add(desc.RetrievalUrl);
 				webServicesListView.Items.Add(item);
 			}
 			else if(e.Node.Tag is Service) {
 				Service service = (Service)e.Node.Tag;
-				item = new ListViewItem();				
+				item = new ListViewItem();
 				item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}");
 				item.SubItems.Add(service.Documentation);
 				webServicesListView.Items.Add(item);
@@ -159,19 +159,19 @@ namespace ICSharpCode.SharpDevelop.Gui
 			else if(e.Node.Tag is Port) {
 				Port port = (Port)e.Node.Tag;
 
-				item = new ListViewItem();				
+				item = new ListViewItem();
 				item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}");
 				item.SubItems.Add(port.Documentation);
 				webServicesListView.Items.Add(item);
 				
-				item = new ListViewItem();				
+				item = new ListViewItem();
 				item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.BindingProperty}");
 				item.SubItems.Add(port.Binding.Name);
 				webServicesListView.Items.Add(item);
 				
-				item = new ListViewItem();				
+				item = new ListViewItem();
 				item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ServiceNameProperty}");
-				item.SubItems.Add(port.Service.Name);												
+				item.SubItems.Add(port.Service.Name);
 				webServicesListView.Items.Add(item);
 			}
 			else if(e.Node.Tag is Operation) {
@@ -190,7 +190,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		}
 		
 		void Add(ServiceDescription description)
-		{		
+		{
 			TreeNode rootNode = new TreeNode(GetName(description));
 			rootNode.Tag = description;
 			rootNode.ImageIndex = ServiceDescriptionImageIndex;
@@ -199,19 +199,19 @@ namespace ICSharpCode.SharpDevelop.Gui
 
 			foreach(Service service in description.Services) {
 				// Add a Service node
-				TreeNode serviceNode = new TreeNode(service.Name);				
+				TreeNode serviceNode = new TreeNode(service.Name);
 				serviceNode.Tag = service;
 				serviceNode.ImageIndex = ServiceImageIndex;
 				serviceNode.SelectedImageIndex = ServiceImageIndex;
 				rootNode.Nodes.Add(serviceNode);
-					
-				foreach(Port port in service.Ports) {					
+				
+				foreach(Port port in service.Ports) {
 					TreeNode portNode = new TreeNode(port.Name);
 					portNode.Tag = port;
 					portNode.ImageIndex = PortImageIndex;
 					portNode.SelectedImageIndex = PortImageIndex;
 					serviceNode.Nodes.Add(portNode);
-								
+					
 					// Get the operations
 					System.Web.Services.Description.Binding binding = description.Bindings[port.Binding.Name];
 					if (binding != null) {
@@ -223,12 +223,12 @@ namespace ICSharpCode.SharpDevelop.Gui
 								operationNode.ImageIndex = OperationImageIndex;
 								operationNode.SelectedImageIndex = OperationImageIndex;
 								portNode.Nodes.Add(operationNode);
-							}	
+							}
 						}
-					}			
-				}																										
+					}
+				}
 			}
-			webServicesTreeView.ExpandAll();	
+			webServicesTreeView.ExpandAll();
 		}
 		
 		string GetName(ServiceDescription description)
@@ -248,13 +248,17 @@ namespace ICSharpCode.SharpDevelop.Gui
 		
 		void AddImages()
 		{
-			ImageList imageList = new ImageList();
-			imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Library"));
-			imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Interface"));
-			imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class"));
-			imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Method"));
-			
-			webServicesTreeView.ImageList = imageList;
+			try {
+				ImageList imageList = new ImageList();
+				imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Library"));
+				imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Interface"));
+				imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class"));
+				imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Method"));
+				
+				webServicesTreeView.ImageList = imageList;
+			} catch (ResourceNotFoundException) {
+				// in design mode, the core is not initialized -> the resources cannot be found
+			}
 		}
 		
 		void AddStringResources()