Browse Source

Fixed SD2-580: Adding GAC reference to standard .NET assemblies adds full assembly name to project

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1096 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
1893856800
  1. 6
      src/AddIns/Misc/MonoAddIn/Project/Src/MonoGacReferencePanel.cs
  2. 2
      src/AddIns/Misc/MonoAddIn/Project/Src/SelectMonoReferenceDialog.cs
  3. 2
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AssemblyReferencePanel.cs
  4. 4
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/COMReferencePanel.cs
  5. 93
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs
  6. 4
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ProjectReferencePanel.cs
  7. 66
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs

6
src/AddIns/Misc/MonoAddIn/Project/Src/MonoGacReferencePanel.cs

@ -18,13 +18,15 @@ namespace ICSharpCode.MonoAddIn @@ -18,13 +18,15 @@ namespace ICSharpCode.MonoAddIn
{
}
protected override void PrintCache()
protected override List<ListViewItem> GetCacheContent()
{
List<ListViewItem> itemList = new List<ListViewItem>();
foreach (MonoAssemblyName assemblyName in MonoGlobalAssemblyCache.GetAssemblyNames()) {
ListViewItem item = new ListViewItem(new string[] {assemblyName.Name, assemblyName.Version.ToString(), assemblyName.Directory});
item.Tag = assemblyName.FullName;
Items.Add(item);
itemList.Add(item);
}
return itemList;
}
}
}

2
src/AddIns/Misc/MonoAddIn/Project/Src/SelectMonoReferenceDialog.cs

@ -107,7 +107,7 @@ namespace ICSharpCode.MonoAddIn @@ -107,7 +107,7 @@ namespace ICSharpCode.MonoAddIn
void SelectReference(object sender, EventArgs e)
{
IReferencePanel refPanel = (IReferencePanel)referenceTabControl.SelectedTab.Controls[0];
refPanel.AddReference(null, null);
refPanel.AddReference();
}
void RemoveReference(object sender, EventArgs e)

2
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AssemblyReferencePanel.cs

@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public void AddReference(object sender, EventArgs e)
public void AddReference()
{
SelectReferenceDialog(null, null);
}

4
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/COMReferencePanel.cs

@ -46,11 +46,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -46,11 +46,11 @@ namespace ICSharpCode.SharpDevelop.Gui
Dock = DockStyle.Fill;
FullRowSelect = true;
ItemActivate += new EventHandler(AddReference);
ItemActivate += delegate { AddReference(); };
PopulateListView();
}
public void AddReference(object sender, EventArgs e)
public void AddReference()
{
foreach (ListViewItem item in SelectedItems) {
TypeLibrary library = (TypeLibrary)item.Tag;

93
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs

@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using MSjogren.GacTool.FusionNative;
@ -18,10 +18,9 @@ using ICSharpCode.Core; @@ -18,10 +18,9 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Gui
{
public class GacReferencePanel : ListView, IReferencePanel
public class GacReferencePanel : UserControl, IReferencePanel
{
class ColumnSorter : IComparer
class ColumnSorter : System.Collections.IComparer
{
private int column = 0;
bool asc = true;
@ -49,72 +48,113 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -49,72 +48,113 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
protected ListView listView;
CheckBox chooseSpecificVersionCheckBox;
ISelectReferenceDialog selectDialog;
ColumnSorter sorter;
public GacReferencePanel(ISelectReferenceDialog selectDialog)
{
listView = new ListView();
sorter = new ColumnSorter();
this.ListViewItemSorter = sorter;
listView.ListViewItemSorter = sorter;
this.selectDialog = selectDialog;
ColumnHeader referenceHeader = new ColumnHeader();
referenceHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.GacReferencePanel.ReferenceHeader");
referenceHeader.Width = 160;
Columns.Add(referenceHeader);
referenceHeader.Width = 180;
listView.Columns.Add(referenceHeader);
Sorting = SortOrder.Ascending;
listView.Sorting = SortOrder.Ascending;
ColumnHeader versionHeader = new ColumnHeader();
versionHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.GacReferencePanel.VersionHeader");
versionHeader.Width = 70;
Columns.Add(versionHeader);
listView.Columns.Add(versionHeader);
ColumnHeader pathHeader = new ColumnHeader();
pathHeader.Text = ResourceService.GetString("Global.Path");
pathHeader.Width = 100;
Columns.Add(pathHeader);
listView.Columns.Add(pathHeader);
listView.View = View.Details;
listView.FullRowSelect = true;
listView.ItemActivate += delegate { AddReference(); };
listView.ColumnClick += new ColumnClickEventHandler(columnClick);
listView.Dock = DockStyle.Fill;
this.Dock = DockStyle.Fill;
this.Controls.Add(listView);
chooseSpecificVersionCheckBox = new CheckBox();
chooseSpecificVersionCheckBox.Dock = DockStyle.Top;
chooseSpecificVersionCheckBox.Text = StringParser.Parse("${res:Dialog.SelectReferenceDialog.GacReferencePanel.ChooseSpecificAssemblyVersion}");
this.Controls.Add(chooseSpecificVersionCheckBox);
chooseSpecificVersionCheckBox.CheckedChanged += delegate {
listView.Items.Clear();
if (chooseSpecificVersionCheckBox.Checked)
listView.Items.AddRange(fullItemList);
else
listView.Items.AddRange(shortItemList);
};
View = View.Details;
Dock = DockStyle.Fill;
FullRowSelect = true;
ItemActivate += new EventHandler(AddReference);
ColumnClick += new ColumnClickEventHandler(columnClick);
PrintCache();
}
void columnClick(object sender, ColumnClickEventArgs e)
{
if(e.Column < 2)
{
if(e.Column < 2) {
sorter.CurrentColumn = e.Column;
Sort();
listView.Sort();
}
}
public void AddReference(object sender, EventArgs e)
public void AddReference()
{
foreach (ListViewItem item in SelectedItems) {
foreach (ListViewItem item in listView.SelectedItems) {
selectDialog.AddReference(ReferenceType.Gac,
item.Text,
item.Tag.ToString(),
chooseSpecificVersionCheckBox.Checked ? item.Tag.ToString() : item.Text,
null);
}
}
}
ListViewItem[] fullItemList;
/// <summary>
/// Item list where older versions are filtered out.
/// </summary>
ListViewItem[] shortItemList;
protected virtual void PrintCache()
void PrintCache()
{
List<ListViewItem> itemList = GetCacheContent();
fullItemList = itemList.ToArray();
// Remove all items where a higher version exists
itemList.RemoveAll(delegate(ListViewItem item) {
return itemList.Exists(delegate(ListViewItem item2) {
return string.Equals(item.Text, item2.Text, StringComparison.OrdinalIgnoreCase)
&& new Version(item.SubItems[1].Text) < new Version(item2.SubItems[1].Text);
});
});
shortItemList = itemList.ToArray();
listView.Items.AddRange(shortItemList);
}
protected virtual List<ListViewItem> GetCacheContent()
{
IApplicationContext applicationContext = null;
IAssemblyEnum assemblyEnum = null;
IAssemblyName assemblyName = null;
List<ListViewItem> itemList = new List<ListViewItem>();
Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0);
while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) {
uint nChars = 0;
assemblyName.GetDisplayName(null, ref nChars, 0);
StringBuilder sb = new StringBuilder((int)nChars);
assemblyName.GetDisplayName(sb, ref nChars, 0);
@ -124,8 +164,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -124,8 +164,9 @@ namespace ICSharpCode.SharpDevelop.Gui
string aVersion = info[1].Substring(info[1].LastIndexOf('=') + 1);
ListViewItem item = new ListViewItem(new string[] {aName, aVersion});
item.Tag = sb.ToString();
Items.Add(item);
itemList.Add(item);
}
return itemList;
}
}
}

4
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ProjectReferencePanel.cs

@ -38,11 +38,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -38,11 +38,11 @@ namespace ICSharpCode.SharpDevelop.Gui
Dock = DockStyle.Fill;
FullRowSelect = true;
ItemActivate += new EventHandler(AddReference);
ItemActivate += delegate { AddReference(); };
PopulateListView();
}
public void AddReference(object sender, EventArgs e)
public void AddReference()
{
foreach (ListViewItem item in SelectedItems) {
IProject project = (IProject)item.Tag;

66
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -20,7 +20,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
public interface IReferencePanel
{
void AddReference(object sender, EventArgs e);
void AddReference();
}
public interface ISelectReferenceDialog
@ -95,27 +95,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -95,27 +95,6 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
// foreach (ProjectReference refInfo in configureProject.ProjectReferences) {
// if (refInfo.ReferenceType == referenceType) {
// switch (referenceType) {
// case ReferenceType.Typelib:
// case ReferenceType.Gac:
// case ReferenceType.Assembly:
// if (refInfo.Reference == referenceLocation) {
// return;
// }
// break;
// case ReferenceType.Project:
// if (refInfo.Reference == referenceName) {
// return;
// }
// break;
// default:
// System.Diagnostics.Debug.Assert(false, "Unknown reference type" + referenceType);
// break;
// }
// }
// }
ListViewItem newItem = new ListViewItem(new string[] {referenceName, referenceType.ToString(), referenceLocation});
switch (referenceType) {
case ReferenceType.Typelib:
@ -146,7 +125,14 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -146,7 +125,14 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectReference(object sender, EventArgs e)
{
IReferencePanel refPanel = (IReferencePanel)referenceTabControl.SelectedTab.Controls[0];
refPanel.AddReference(null, null);
refPanel.AddReference();
}
void OkButtonClick(object sender, EventArgs e)
{
if (referencesListView.Items.Count == 0) {
SelectReference(sender, e);
}
}
void RemoveReference(object sender, EventArgs e)
@ -201,11 +187,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -201,11 +187,11 @@ namespace ICSharpCode.SharpDevelop.Gui
// referenceTabControl
//
this.referenceTabControl.Controls.AddRange(new System.Windows.Forms.Control[] {
this.gacTabPage,
this.projectTabPage,
this.browserTabPage,
this.comTabPage
});
this.gacTabPage,
this.projectTabPage,
this.browserTabPage,
this.comTabPage
});
this.referenceTabControl.Location = new System.Drawing.Point(8, 8);
this.referenceTabControl.SelectedIndex = 0;
this.referenceTabControl.Size = new System.Drawing.Size(472, 224);
@ -214,9 +200,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -214,9 +200,9 @@ namespace ICSharpCode.SharpDevelop.Gui
// referencesListView
//
this.referencesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.referenceHeader,
this.typeHeader,
this.locationHeader});
this.referenceHeader,
this.typeHeader,
this.locationHeader});
this.referencesListView.Location = new System.Drawing.Point(8, 256);
this.referencesListView.Size = new System.Drawing.Size(472, 97);
this.referencesListView.TabIndex = 3;
@ -302,7 +288,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -302,7 +288,7 @@ namespace ICSharpCode.SharpDevelop.Gui
this.okButton.Location = new System.Drawing.Point(312, 368);
this.okButton.TabIndex = 5;
this.okButton.Text = ResourceService.GetString("Global.OKButtonText");
this.okButton.FlatStyle = FlatStyle.System;
this.okButton.Click += OkButtonClick;
//
// cancelButton
@ -329,14 +315,14 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -329,14 +315,14 @@ namespace ICSharpCode.SharpDevelop.Gui
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(570, 399);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.helpButton,
this.cancelButton,
this.okButton,
this.referencesLabel,
this.removeButton,
this.selectButton,
this.referencesListView,
this.referenceTabControl});
this.helpButton,
this.cancelButton,
this.okButton,
this.referencesLabel,
this.removeButton,
this.selectButton,
this.referencesListView,
this.referenceTabControl});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;

Loading…
Cancel
Save