A collection of EditItem objects.
 public void LoadCollection()
 {
     try
     {
         using (System.IO.StreamReader reader = new System.IO.StreamReader(filename))
         {
             XmlSerializer serializer = new XmlSerializer(typeof(EditCollection));
             edcoll = (EditCollection)serializer.Deserialize(reader);
         }
     }
     catch (InvalidOperationException) //invalid operation is what happens when the xml can't be parsed into the objects correctly
     {
         //FUTURE: do we want a message box here or just throw the exception up to studio????
         string caption = PluginResources.EditSettingsErrorCaption;
         string message = string.Format(PluginResources.EditSettingsXmlErrorMessage, Path.GetFileName(filename));
         MessageBox.Show(new MtWindowWrapper(getHandle()), message, caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         throw new Exception(message);
     }
     catch (Exception exp) //catch-all for any other kind of error...passes up a general message with the error description
     {
         //FUTURE: do we want a message box here or just throw the exception up to studio????
         string caption = PluginResources.EditSettingsErrorCaption;
         string message = PluginResources.EditSettingsGenericErrorMessage + " " + exp.Message;
         MessageBox.Show(new MtWindowWrapper(getHandle()), message, caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         throw new Exception(message); //throwing exception aborts the segment lookup
     }
 }
        private string BrowseEditFile()
        {
            //Note: The current thread culture will not affect the language of message boxes and other dialogs
            //there seem to be some tricky workarounds out there involving win32 API hooks...but that might be a bit much
            //for now the message boxes and other system dialogs will be in language set for Windows, no matter the language set for Studio (i.e. the language of the current thread);
            //another option could be to make a custom message box as a form, but custom file dialogs could be a pain
            //FUTURE: consider possibly making the plugin localized to the system settings and not the current thread set by Studio

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                try //a simple way to check for the proper xml format is to try and deserialize it
                {
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(openFile.FileName))
                    {
                        XmlSerializer  serializer = new XmlSerializer(typeof(EditCollection));
                        EditCollection edcoll     = (EditCollection)serializer.Deserialize(reader);
                        edcoll = null;
                        return(openFile.FileName);
                    }
                }
                catch (InvalidOperationException) //invalid operation is what happens when the xml can't be parsed into the objects correctly
                {
                    string caption = MtProviderConfDialogResources.lookupFileStructureCheckErrorCaption;
                    string message = string.Format(MtProviderConfDialogResources.lookupFileStructureCheckXmlProblemErrorMessage, System.IO.Path.GetFileName(openFile.FileName));
                    MessageBox.Show(this, message, caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(null);
                }
                catch (Exception exp) //catch-all for any other kind of error...passes up a general message with the error description
                {
                    string caption = MtProviderConfDialogResources.lookupFileStructureCheckErrorCaption;
                    string message = MtProviderConfDialogResources.lookupFileStructureCheckGenericErrorMessage + " " + exp.Message;
                    MessageBox.Show(this, message, caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
        public void LoadCollection()
        {
            try
            {
                using (System.IO.StreamReader reader = new System.IO.StreamReader(filename))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(EditCollection));
                    edcoll = (EditCollection)serializer.Deserialize(reader);
                }
            }
            catch (InvalidOperationException) //invalid operation is what happens when the xml can't be parsed into the objects correctly
            {
                //FUTURE: do we want a message box here or just throw the exception up to studio????
                string caption = PluginResources.EditSettingsErrorCaption;
                string message = string.Format(PluginResources.EditSettingsXmlErrorMessage, Path.GetFileName(filename));
                MessageBox.Show(new MtWindowWrapper(getHandle()), message, caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                throw new Exception(message);
            }
            catch (Exception exp) //catch-all for any other kind of error...passes up a general message with the error description
            {
                //FUTURE: do we want a message box here or just throw the exception up to studio????
                string caption = PluginResources.EditSettingsErrorCaption;
                string message = PluginResources.EditSettingsGenericErrorMessage + " " + exp.Message;
                MessageBox.Show(new MtWindowWrapper(getHandle()), message, caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                throw new Exception(message); //throwing exception aborts the segment lookup

            }
        }