Browse Source

Fixed SD2-688: Selecting GAC list items in the Add Components dialog

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1183 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
4dbfac0f4e
  1. 58
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/AddComponentsDialog.cs

58
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/AddComponentsDialog.cs

@ -25,6 +25,7 @@ namespace ICSharpCode.FormsDesigner.Gui
public class AddComponentsDialog : BaseSharpDevelopForm public class AddComponentsDialog : BaseSharpDevelopForm
{ {
ArrayList selectedComponents; ArrayList selectedComponents;
ListView componentListView;
public ArrayList SelectedComponents { public ArrayList SelectedComponents {
get { get {
@ -36,6 +37,8 @@ namespace ICSharpCode.FormsDesigner.Gui
{ {
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("ICSharpCode.FormsDesigner.Resources.AddSidebarComponentsDialog.xfrm")); SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("ICSharpCode.FormsDesigner.Resources.AddSidebarComponentsDialog.xfrm"));
componentListView = (ListView)ControlDictionary["componentListView"];
Icon = null; Icon = null;
PrintGACCache(); PrintGACCache();
@ -53,11 +56,11 @@ namespace ICSharpCode.FormsDesigner.Gui
IAssemblyName assemblyName = null; IAssemblyName assemblyName = null;
Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0); Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0);
while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) { while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) {
uint nChars = 0; uint nChars = 0;
assemblyName.GetDisplayName(null, ref nChars, 0); assemblyName.GetDisplayName(null, ref nChars, 0);
StringBuilder sb = new StringBuilder((int)nChars); StringBuilder sb = new StringBuilder((int)nChars);
assemblyName.GetDisplayName(sb, ref nChars, 0); assemblyName.GetDisplayName(sb, ref nChars, 0);
@ -74,8 +77,9 @@ namespace ICSharpCode.FormsDesigner.Gui
void FillComponents(Assembly assembly, string loadPath) void FillComponents(Assembly assembly, string loadPath)
{ {
((ListView)ControlDictionary["componentListView"]).BeginUpdate(); componentListView.BeginUpdate();
((ListView)ControlDictionary["componentListView"]).Items.Clear(); componentListView.Items.Clear();
componentListView.Controls.Clear();
if (assembly != null) { if (assembly != null) {
Hashtable images = new Hashtable(); Hashtable images = new Hashtable();
@ -92,7 +96,7 @@ namespace ICSharpCode.FormsDesigner.Gui
} catch {} } catch {}
} }
try { try {
((ListView)ControlDictionary["componentListView"]).SmallImageList = il; componentListView.SmallImageList = il;
foreach (Type t in assembly.GetExportedTypes()) { foreach (Type t in assembly.GetExportedTypes()) {
if (!t.IsAbstract) { if (!t.IsAbstract) {
if (t.IsDefined(typeof(ToolboxItemFilterAttribute), true) || t.IsDefined(typeof(ToolboxItemAttribute), true) || typeof(System.ComponentModel.IComponent).IsAssignableFrom(t)) { if (t.IsDefined(typeof(ToolboxItemFilterAttribute), true) || t.IsDefined(typeof(ToolboxItemAttribute), true) || typeof(System.ComponentModel.IComponent).IsAssignableFrom(t)) {
@ -131,41 +135,49 @@ namespace ICSharpCode.FormsDesigner.Gui
ToolComponent toolComponent = new ToolComponent(t.FullName, new ComponentAssembly(assembly.FullName, loadPath)); ToolComponent toolComponent = new ToolComponent(t.FullName, new ComponentAssembly(assembly.FullName, loadPath));
toolComponent.IsEnabled = true; toolComponent.IsEnabled = true;
newItem.Tag = toolComponent; newItem.Tag = toolComponent;
((ListView)ControlDictionary["componentListView"]).Items.Add(newItem); componentListView.Items.Add(newItem);
ToolboxItem item = new ToolboxItem(t); ToolboxItem item = new ToolboxItem(t);
skip:; skip:;
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
MessageService.ShowError(e); ClearComponentsList(e.Message);
}
if (componentListView.Items.Count == 0) {
if (componentListView.Controls.Count == 0) {
ClearComponentsList(StringParser.Parse("${res:ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.NoComponentsFound}", new string[,] {{"Name", assembly.FullName}}));
}
} }
} }
((ListView)ControlDictionary["componentListView"]).EndUpdate(); componentListView.EndUpdate();
} }
/* changed this unexpected behaviour -- added a load button, G.B. void gacListViewSelectedIndexChanged(object sender, System.EventArgs e)
void fileNameTextBoxTextChanged(object sender, System.EventArgs e)
{ {
if (File.Exists(this.fileNameTextBox.Text)) { if (((ListView)ControlDictionary["gacListView"]).SelectedItems != null && ((ListView)ControlDictionary["gacListView"]).SelectedItems.Count == 1) {
string assemblyName = ((ListView)ControlDictionary["gacListView"]).SelectedItems[0].Tag.ToString();
try { try {
FillComponents(Assembly.LoadFrom(this.fileNameTextBox.Text)); Assembly asm = Assembly.Load(assemblyName);
FillComponents(asm, null);
} catch (Exception ex) { } catch (Exception ex) {
ClearComponentsList(ex.Message);
MessageService.ShowError(ex);
} }
} else {
ClearComponentsList(null);
} }
} }
*/
void gacListViewSelectedIndexChanged(object sender, System.EventArgs e) void ClearComponentsList(string message)
{ {
if (((ListView)ControlDictionary["gacListView"]).SelectedItems != null && ((ListView)ControlDictionary["gacListView"]).SelectedItems.Count == 1) { componentListView.Items.Clear();
string assemblyName = ((ListView)ControlDictionary["gacListView"]).SelectedItems[0].Tag.ToString(); componentListView.Controls.Clear();
Assembly asm = Assembly.Load(assemblyName); if (message != null) {
FillComponents(asm, null); Label lbl = new Label();
} else { lbl.BackColor = SystemColors.Window;
FillComponents(null, null); lbl.Text = StringParser.Parse(message);
lbl.Dock = DockStyle.Fill;
componentListView.Controls.Add(lbl);
} }
} }
@ -189,7 +201,7 @@ namespace ICSharpCode.FormsDesigner.Gui
void buttonClick(object sender, System.EventArgs e) void buttonClick(object sender, System.EventArgs e)
{ {
selectedComponents = new ArrayList(); selectedComponents = new ArrayList();
foreach (ListViewItem item in ((ListView)ControlDictionary["componentListView"]).Items) { foreach (ListViewItem item in componentListView.Items) {
if (item.Checked) { if (item.Checked) {
selectedComponents.Add((ToolComponent)item.Tag); selectedComponents.Add((ToolComponent)item.Tag);
} }

Loading…
Cancel
Save