private void RunCategoryActionItems(Guid docId, UpdaterData data, Element element)
        {
            try
            {
                ReportingElementInfo reportingInfo = null;
                var infoFound = from info in reportingElements where info.DocId == docId && info.ReportingUniqueId == element.UniqueId select info;
                if (infoFound.Count() > 0)
                {
                    reportingInfo = infoFound.First();
                }

                BuiltInCategory bltCategory = (BuiltInCategory)element.Category.Id.IntegerValue;
                switch (bltCategory)
                {
                case BuiltInCategory.OST_Grids:
                    Grid grid = element as Grid;
                    if (GridUtils.ExtentGeometryChanged(docId, grid.Id, grid.GetExtents()))
                    {
                        if (null != reportingInfo)
                        {
                            ReportFailure(reportingInfo);
                        }
                    }
                    else if (GridUtils.gridParameters.ContainsKey(docId))
                    {
                        foreach (ElementId paramId in GridUtils.gridParameters[docId])
                        {
                            if (data.IsChangeTriggered(grid.Id, Element.GetChangeTypeParameter(paramId)))
                            {
                                if (null != reportingInfo)
                                {
                                    ReportFailure(reportingInfo);
                                }
                            }
                        }
                    }
                    break;

                default:
                    if (null != reportingInfo)
                    {
                        ReportFailure(reportingInfo);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to run category action items.\n" + ex.Message, "DTM Updater", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
 private void ReportFailure(ReportingElementInfo eInfo)
 {
     try
     {
         AppCommand.Instance.IsElementChanged = true;
         AppCommand.Instance.ReportingInfo    = eInfo;
     }
     catch (Exception ex)
     {
         string message = ex.Message;
         MessageBox.Show("Failed to report failure.\n" + ex.Message, "DTM Updater", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
 private void AddElementToStorage(Guid docId, Element element)
 {
     try
     {
         string categoryName = element.Category.Name;
         var    triggerFound = from trigger in registeredUpdaters[docId].CategoryTriggers where trigger.CategoryName == categoryName select trigger;
         if (triggerFound.Count() > 0)
         {
             CategoryTrigger      trigger = triggerFound.First();
             ReportingElementInfo eInfo   = new ReportingElementInfo(docId, trigger._id, trigger.CategoryName, element.Id, element.UniqueId);
             reportingElements.Add(eInfo);
         }
     }
     catch (Exception ex)
     {
         string message = ex.Message;
         MessageBox.Show("Failed to add element.\n" + ex.Message, "DTM Updater", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
Exemple #4
0
 public WarningWindow(ReportingElementInfo info)
 {
     reportingInfo   = info;
     descriptionText = reportingInfo.CategoryName + " are locked.";
     InitializeComponent();
 }
        internal void RefreshTriggers(Document doc, ProjectUpdater pUpdater)
        {
            try
            {
                Guid docId = DataStorageUtil.GetProjectFileId(doc);
                UpdaterRegistry.RemoveDocumentTriggers(updaterId, doc);

                var elementsToDelete = from eInfo in reportingElements where eInfo.DocId == docId select eInfo;
                if (elementsToDelete.Count() > 0)
                {
                    List <ReportingElementInfo> elementsInfo = elementsToDelete.ToList();
                    foreach (ReportingElementInfo eInfo in elementsInfo)
                    {
                        reportingElements.Remove(eInfo);
                    }
                }

                foreach (CategoryTrigger trigger in pUpdater.CategoryTriggers)
                {
                    if (trigger.IsEnabled)
                    {
                        ElementCategoryFilter catFilter = new ElementCategoryFilter(catDictionary[trigger.CategoryName]);
                        UpdaterRegistry.AddTrigger(updaterId, catFilter, Element.GetChangeTypeAny());

                        if (trigger.CategoryName == "Grids")
                        {
                            GridUtils.CollectGridExtents(doc, docId);
                            if (GridUtils.gridParameters.ContainsKey(docId))
                            {
                                foreach (ElementId paramId in GridUtils.gridParameters[docId])
                                {
                                    UpdaterRegistry.AddTrigger(updaterId, catFilter, Element.GetChangeTypeParameter(paramId));
                                }
                            }

                            FilteredElementCollector collector = new FilteredElementCollector(doc);
                            List <Element>           elements  = collector.WherePasses(catFilter).WhereElementIsNotElementType().ToElements().ToList();
                            foreach (Element element in elements)
                            {
                                ReportingElementInfo reportingInfo = new ReportingElementInfo(docId, trigger._id, trigger.CategoryName, element.Id, element.UniqueId);
                                reportingElements.Add(reportingInfo);
                            }
                        }
                        else if (trigger.CategoryName == "Views")
                        {
                            FilteredElementCollector collector = new FilteredElementCollector(doc);
                            List <View> views         = collector.WherePasses(catFilter).WhereElementIsNotElementType().ToElements().Cast <View>().ToList();
                            var         viewTemplates = from view in views where view.IsTemplate select view;
                            if (viewTemplates.Count() > 0)
                            {
                                foreach (Element view in viewTemplates)
                                {
                                    ReportingElementInfo reportingInfo = new ReportingElementInfo(docId, trigger._id, trigger.CategoryName, view.Id, view.UniqueId);
                                    reportingElements.Add(reportingInfo);
                                }
                            }
                        }
                        else
                        {
                            FilteredElementCollector collector = new FilteredElementCollector(doc);
                            List <Element>           elements  = collector.WherePasses(catFilter).WhereElementIsNotElementType().ToElements().ToList();
                            foreach (Element element in elements)
                            {
                                ReportingElementInfo reportingInfo = new ReportingElementInfo(docId, trigger._id, trigger.CategoryName, element.Id, element.UniqueId);
                                reportingElements.Add(reportingInfo);
                            }
                        }
                    }
                }

                if (registeredUpdaters.ContainsKey(docId))
                {
                    registeredUpdaters.Remove(docId);
                }
                registeredUpdaters.Add(docId, pUpdater);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to refresh triggers\n" + ex.Message, "DTM Updater", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }