public void ShowPackageDetails ()
		{
			ProjectPackage package = (ProjectPackage)CurrentNode.DataItem;
			
			// package.ParsePackage ();
			
			PackageDetails details = new PackageDetails (package);
			details.Show ();
		}
 /// <summary>
 /// This drops any data from the object that isn't minimally neccessary for 
 /// the smooth running of the package manager.
 /// </summary>
 internal void DropDetails() {
     // drop the package details. If it's needed again, there should be a delegate to grab it 
     // from the MSI or Feed.
     _packageDetails = null;
     Cache<PackageDetails>.Value.Clear(CanonicalName);
 }
 public void PackageDetails(CanonicalName canonicalName, PackageDetails details)
 {
     var result = Package.GetPackage(canonicalName);
     result.PackageDetails = details;
     result.IsPackageDetailsStale = false;
 }
        public async Task<IDictionary<string, PackageDetails>> GetPackageDetails()
        {
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                connection.Open();

                SqlCommand command = new SqlCommand(@"
                    SELECT StagePackage.[Id], StagePackage.[Version]
                    FROM StagePackage
                    INNER JOIN Stage ON StagePackage.StageKey = Stage.[Key]
                    INNER JOIN StageOwner ON Stage.[Key] = StageOwner.StageKey
                    INNER JOIN Owner ON Owner.[Key] = StageOwner.OwnerKey
                    WHERE Owner.Name = @OwnerName
                      AND Stage.Name = @StageName
                ", connection);

                command.Parameters.AddWithValue("OwnerName", OwnerName);
                command.Parameters.AddWithValue("StageName", StageName);

                SqlDataReader reader = await command.ExecuteReaderAsync();

                IDictionary<string, PackageDetails> result = new Dictionary<string, PackageDetails>(StringComparer.OrdinalIgnoreCase);

                while (reader.Read())
                {
                    string id = reader.GetString(0);
                    string version = reader.GetString(1);

                    PackageDetails packageDetails;
                    if (!result.TryGetValue(id, out packageDetails))
                    {
                        packageDetails = new PackageDetails(id);
                        result.Add(id, packageDetails);
                    }

                    packageDetails.Versions.Add(version);
                }

                return result;
            }
        }