private void btnAddFile_Click(object sender, RoutedEventArgs e)
        {
            if (!string.IsNullOrEmpty(txbFilePath.Text) && cbPackageName.SelectedIndex != -1 && cbPackageName.SelectedIndex != 0)
            {
                if (!Directory.Exists(ConfigurationManager.AppSettings["XmlDestination"] + "/" + cbPackageName.SelectedValue.ToString()))  // if it doesn't exist, create
                    Directory.CreateDirectory(ConfigurationManager.AppSettings["XmlDestination"] + "/" + cbPackageName.SelectedValue.ToString());


                if (!Directory.Exists(ConfigurationManager.AppSettings["XmlDestination"] + "/" + cbPackageName.SelectedValue.ToString() + "/Temp/" + cbFileTypes.SelectedValue.ToString()))  // if it doesn't exist, create
                    Directory.CreateDirectory(ConfigurationManager.AppSettings["XmlDestination"] + "/" + cbPackageName.SelectedValue.ToString() + "/Temp/" + cbFileTypes.SelectedValue.ToString());

                File.Copy(txbFilePath.Text, ConfigurationManager.AppSettings["XmlDestination"] + cbPackageName.SelectedValue.ToString() + "\\Temp\\" + cbFileTypes.SelectedValue.ToString() + "\\" + Path.GetFileName(txbFilePath.Text), true);

                Attachment fileAttachment = new Attachment();
                fileAttachment.Type = cbFileTypes.SelectedValue.ToString();
                fileAttachment.Name = Path.GetFileName(txbFilePath.Text);
                fileAttachment.Comments = txbComments.Text;

                if (dsAttachments.Where(n => n.Type == fileAttachment.Type && n.Name == fileAttachment.Name).Count() == 0)
                    dsAttachments.Add(fileAttachment);
                else
                {
                    Attachment existingItem = dsAttachments.Where(n => n.Type == fileAttachment.Type && n.Name == fileAttachment.Name).FirstOrDefault();
                    int fileIndex = dsAttachments.IndexOf(existingItem);

                    dsAttachments.RemoveAt(fileIndex);

                    dsAttachments.Insert(fileIndex, fileAttachment);
                }

                cbFileTypes.SelectedIndex = 0;
                txbFilePath.Text = "";
                txbComments.Text = "";

                RefreshTree();
            }
            else
                MessageBox.Show("File path / Package Name must be entered.");
        }
        public static ObservableCollection<Attachment> GetAttachmentListFromXml(IEnumerable<XElement> xmlAttachments)
        {
            ObservableCollection<Attachment> attachmentList = new ObservableCollection<Attachment>();

            foreach(XElement file in xmlAttachments.Elements())
            {
                Attachment attachment = new Attachment();
                attachment.Type = file.Element("Type").Value.ToString();
                attachment.Name = file.Element("Name").Value.ToString();
                attachment.Comments = (file.Element("Comments") == null ? "" : file.Element("Comments").Value.ToString());

                attachmentList.Add(attachment);
            }

            return attachmentList;
        }