private void SaveAsConfig(object sender, ExecutedRoutedEventArgs e)
 {
     try
     {
         SaveFileWindow saveWindow = new SaveFileWindow(settings.RemoteSetup.DirectoryName);
         saveWindow.Owner = this;
         if (saveWindow.ShowDialog() == true)
         {
             batch.FilePath        = saveWindow.ConfigFileName;
             batch.Target.Elements = BatchSetupUtils.ConvertToGenericElements(processUnits);
             bool savedConfig = BatchSetupUtils.SaveBatchConfig(batch);
             bool savedBatch  = BatchSetupUtils.CreateBatchFile(batch.FilePath, settings);
             if (savedConfig && savedBatch)
             {
                 statusLable.Text = System.IO.Path.GetFileNameWithoutExtension(batch.FilePath);
                 isEditing        = false;
                 MessageBox.Show("Batch configuration files are successfully saved!!", "Batch Configuration Saved", MessageBoxButton.OK, MessageBoxImage.Information);
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("Failed to save the configuration file in a different location.\n" + ex.Message, "Save As Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
 private void NewConfig(object sender, ExecutedRoutedEventArgs e)
 {
     try
     {
         if (isEditing)
         {
             MessageBoxResult result = MessageBox.Show("Would you like to save the curent configuration file?", "Save File", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
             if (result == MessageBoxResult.Yes || result == MessageBoxResult.No)
             {
                 if (result == MessageBoxResult.Yes)
                 {
                     SaveConfig();
                 }
                 batch        = new Batch();
                 processUnits = BatchSetupUtils.ExtractProcessUnits(batch);
                 DisplayConfig();
                 statusLable.Text = "Ready";
                 isEditing        = false;
             }
         }
         else
         {
             batch        = new Batch();
             processUnits = BatchSetupUtils.ExtractProcessUnits(batch);
             DisplayConfig();
             statusLable.Text = "Ready";
             isEditing        = false;
         }
     }
     catch (Exception ex)
     {
         string message = ex.Message;
     }
 }
 private void OpenConfig(object sender, ExecutedRoutedEventArgs e)
 {
     try
     {
         OpenFileDialog openDialog = new OpenFileDialog();
         openDialog.Filter           = "Batch Configuration File (*.xml)|*.xml";
         openDialog.Title            = "Open Batch Configuration File";
         openDialog.InitialDirectory = settings.RemoteSetup.DirectoryName;
         openDialog.Multiselect      = false;
         if (openDialog.ShowDialog() == true)
         {
             string xmlFile = openDialog.FileName;
             bool   read    = BatchSetupUtils.ReadBatchConfig(xmlFile, out batch);
             if (read)
             {
                 processUnits = BatchSetupUtils.ExtractProcessUnits(batch);
                 DisplayConfig();
                 isEditing = false;
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("Failed to open configuration file.\n" + ex.Message, "Open Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
        private void Window_Drop(object sender, DragEventArgs e)
        {
            try
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    int           unitIndex    = dataGridTasks.SelectedIndex;
                    string[]      files        = (string[])e.Data.GetData(DataFormats.FileDrop);
                    string        xmlFile      = "";
                    List <string> solibriFiles = new List <string>();
                    List <string> ifcFiles     = new List <string>();
                    List <string> rulesetFiles = new List <string>();

                    foreach (string file in files)
                    {
                        string extension = System.IO.Path.GetExtension(file).ToLower();
                        switch (extension)
                        {
                        case ".smc":
                            solibriFiles.Add(file);
                            break;

                        case ".xml":
                            xmlFile = file;
                            break;

                        case ".ifc":
                            ifcFiles.Add(file);
                            break;

                        case ".zip":
                            ifcFiles.Add(file);
                            break;

                        case ".dwg":
                            ifcFiles.Add(file);
                            break;

                        case ".ifczip":
                            ifcFiles.Add(file);
                            break;

                        case ".cset":
                            rulesetFiles.Add(file);
                            break;
                        }
                    }

                    if (!string.IsNullOrEmpty(xmlFile))
                    {
                        bool read = BatchSetupUtils.ReadBatchConfig(xmlFile, out batch);
                        if (read)
                        {
                            processUnits = BatchSetupUtils.ExtractProcessUnits(batch);
                            DisplayConfig();
                        }
                    }
                    else if (unitIndex > -1)
                    {
                        if (solibriFiles.Count > 0)
                        {
                            processUnits[unitIndex].OpenSolibri = new OpenModel(solibriFiles.First());
                            isEditing = true;
                        }

                        if (rulesetFiles.Count > 0)
                        {
                            foreach (string ruleset in rulesetFiles)
                            {
                                processUnits[unitIndex].Rulesets.Add(new OpenRuleset(ruleset));
                            }
                            isEditing = true;
                        }
                        if (ifcFiles.Count > 0)
                        {
                            foreach (string ifcFile in ifcFiles)
                            {
                                processUnits[unitIndex].Models.Add(new InputModel(ifcFile));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to drop files.\n" + ex.Message, "File Drop", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        private void Window_Drop(object sender, DragEventArgs e)
        {
            try
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    string[]      files        = (string[])e.Data.GetData(DataFormats.FileDrop);
                    string        xmlFile      = "";
                    List <string> solibriFiles = new List <string>();
                    List <string> ifcFiles     = new List <string>();
                    List <string> rulesetFiles = new List <string>();
                    foreach (string file in files)
                    {
                        if (System.IO.Path.GetExtension(file).Contains("smc"))
                        {
                            solibriFiles.Add(file);
                        }
                        if (System.IO.Path.GetExtension(file).Contains("xml"))
                        {
                            xmlFile = file; break;
                        }
                        if (System.IO.Path.GetExtension(file).Contains("ifc"))
                        {
                            ifcFiles.Add(file);
                        }
                        if (System.IO.Path.GetExtension(file).Contains("cset"))
                        {
                            rulesetFiles.Add(file);
                        }
                    }

                    if (!string.IsNullOrEmpty(xmlFile))
                    {
                        bool read = BatchSetupUtils.ReadBatchConfig(xmlFile, out batch);
                        if (read)
                        {
                            processUnits   = BatchSetupUtils.ExtractProcessUnits(batch);
                            commonRuleSets = BatchSetupUtils.ExtractRulesets(batch);
                            DisplayConfig();
                        }
                    }
                    else
                    {
                        if (solibriFiles.Count > 0)
                        {
                            foreach (string sfile in solibriFiles)
                            {
                                ProcessUnit pUnit = new ProcessUnit();
                                pUnit.OpenSolibri = new OpenModel(sfile);
                                pUnit             = ApplySettings(pUnit);
                                processUnits.Add(pUnit);
                            }
                            dataGridOpenSolibri.SelectedIndex = processUnits.Count - 1;
                            isEditing = true;
                        }

                        if (rulesetFiles.Count > 0)
                        {
                            bool updateBCF = false;
                            if (commonRuleSets.Count == 0)
                            {
                                updateBCF = true;
                            }

                            foreach (string ruleset in rulesetFiles)
                            {
                                commonRuleSets.Add(new OpenRuleset(ruleset));
                            }
                            if (updateBCF)
                            {
                                UpdateSettings();
                            }
                            isEditing = true;
                        }
                        if (ifcFiles.Count > 0)
                        {
                            ProcessUnit pUnit = new ProcessUnit();
                            foreach (string ifcFile in ifcFiles)
                            {
                                pUnit.IfcFiles.Add(new OpenModel(ifcFile));
                            }
                            IFCWindow ifcWindow = new IFCWindow(pUnit);
                            if (ifcWindow.ShowDialog() == true)
                            {
                                pUnit = ifcWindow.Unit;
                                pUnit = ApplySettings(pUnit);
                                processUnits.Add(pUnit);
                                dataGridOpenSolibri.SelectedIndex = processUnits.Count - 1;
                                isEditing = true;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to drop files.\n" + ex.Message, "File Drop", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }