private void bidChanged(TECChangedEventArgs obj) { if (!(obj.Sender is TECCatalogs || obj.Sender is TECScopeTemplates) && obj.Change == Change.Add) { if (obj.Value is TECHardware hardware) { if (hardware.RequireQuote && hardware.QuotedPrice == -1) { NeedQuoteHardware.Add(hardware); } } else if (obj.Value is IRelatable child) { if (child is TECSubScope subScope) { NeedQuoteHardware.AddRange(subScope.Devices .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1 && !NeedQuoteHardware.Contains(ware)) .Distinct() .OfType <TECHardware>()); } else { NeedQuoteHardware.AddRange(child .GetAll <TECSubScope>() .SelectMany(ss => ss.Devices .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1 && !NeedQuoteHardware.Contains(ware))) .Distinct() .OfType <TECHardware>()); } } } }
protected override void watcherChanged(TECChangedEventArgs args) { if (!propertyExceptions.Contains(args.PropertyName) && !(args.Sender is TECCatalogs) && !(args.Sender is TECScopeTemplates)) { this.ScopeChanged?.Invoke(args); } }
private void changed(TECChangedEventArgs obj) { if (obj.PropertyName == "Locations" && obj.Value is TECLocation location) { if (obj.Change == Change.Add) { Locations.Add(location); } else if (obj.Change == Change.Remove) { Locations.Remove(location); } } else if (obj.PropertyName == "Location" && obj.Sender is TECLocated located && passesPredicate(obj.Sender)) { Locations.Move(located, obj.OldValue as TECLabeled, obj.Value as TECLabeled); if (obj.OldValue == null && obj.Value != null) { Unlocated.Remove(located); } else if (obj.OldValue != null && obj.Value == null) { Unlocated.Add(located); } }
protected override void watcherChanged(TECChangedEventArgs args) { if (!propertyExceptions.Contains(args.PropertyName) && !(args.Sender is TECCatalogs) && (args.Sender.IsTypical() || args.Value.IsTypical())) { this.TypicalChanged?.Invoke(args); } }
private void scopeFilterChanged(TECChangedEventArgs obj) { if (obj.Value is ITECObject tecObj && ((IRelatable)obj.Sender).PropertyObjects.Contains(obj.PropertyName) && !((IRelatable)obj.Sender).LinkedObjects.Contains(obj.PropertyName)) { DirectRelationshipChanged?.Invoke(obj); } }
private void syncSubScope(TemplateSynchronizer <TECSubScope> synchronizer, TECSubScope templateSS, TECSubScope toSync, TECChangedEventArgs args) { toSync.CopyPropertiesFromScope(templateSS); foreach (TECSubScope reference in synchronizer.GetFullDictionary()[templateSS].Where(item => item != toSync)) { reference.CopyPropertiesFromScope(toSync); } }
private void typicalFilterChanged(TECChangedEventArgs e) { if ((e.Change == Change.Add || e.Change == Change.Remove) && e.Sender is IRelatable parent) { if (!parent.LinkedObjects.Contains(e.PropertyName)) { raiseTypicalConstituents(e.Change, e.Value as ITECObject); } } }
private void objectChanged(TECChangedEventArgs e) { if (!isDoing) { redoStack.Clear(); } if (e.Sender is IDoRedoable doable && doable.CanDo) { undoStack.Add(e); } }
private void handleEdit(TECChangedEventArgs item) { try { (item.Sender as IDoRedoable).SetProperty(item.PropertyName, item.OldValue); } catch { string message = "Property could not be set: " + item.PropertyName; logger.Error(message); } }
private void handleRemove(TECChangedEventArgs item) { try { (item.Sender as IDoRedoable).AddForProperty(item.PropertyName, item.Value); } catch { string message = "Target object: " + item.Sender + " and reference object " + item.Value + " not handled in remove"; logger.Trace(message); } }
private void changed(TECChangedEventArgs e) { if (e.Sender is TECTypical && e.Value is TECSystem system) { if (e.Change == Change.Add) { ScopeCollection.Add(system); } else if (e.Change == Change.Remove) { ScopeCollection.Remove(system); } } }
private void parentScopeChanged(TECChangedEventArgs obj) { if (obj.Value is ITECObject tecObj) { if (obj.Change == Change.Add) { repopulateGroups(obj.Sender, tecObj, addConnectable); } else if (obj.Change == Change.Remove) { repopulateGroups(obj.Sender, tecObj, removeConnectable); } } }
private void registerChange(TECChangedEventArgs args) { if (!propertyExceptions.Contains(args.PropertyName)) { if (args.Change == Change.Add && args.Value is ITECObject tObj) { register(tObj); } else if (args.Change == Change.Edit && args.Sender is IRelatable saveable) { if (!saveable.LinkedObjects.Contains(args.PropertyName) && args.Value is ITECObject tValue) { register(tValue); } } } }
private void parentChanged(TECChangedEventArgs obj) { if (obj.Value is TECLocation location) { if (obj.Change == Change.Add) { this.Locations.Add(location); } else if (obj.Change == Change.Remove) { this.Locations.Remove(location); } } else if (obj.Value is IControllerConnection) { ControllerFilter.RaiseFilter(); ConnectableFilter.RaiseFilter(); } }
protected override void watcherChanged(TECChangedEventArgs args) { if (!propertyExceptions.Contains(args.PropertyName) && !(args.Sender is TECCatalogs)) { if (args.Value is ITypicalable valueTyp) { if (!valueTyp.IsTypical) { this.InstanceChanged?.Invoke(args); } } else { if (!(args.Sender is ITypicalable) || args.Sender is ITypicalable senderTyp && !senderTyp.IsTypical) { this.InstanceChanged?.Invoke(args); } } } }
public void Redo() { isDoing = true; TECChangedEventArgs item = redoStack.Last(); string message = "Redoing: " + item.Change.ToString() + " #Undo: " + undoStack.Count() + " #Redo: " + redoStack.Count(); logger.Trace(message); if (item.Change == Change.Add) { handleRemove(item); redoStack.Remove(item); } else if (item.Change == Change.Remove) { handleAdd(item); redoStack.Remove(item); } else if (item.Change == Change.Edit) { int index = 0; if (undoStack.Count > 0) { index = undoStack.IndexOf(undoStack.Last()); } handleEdit(item); redoStack.Remove(item); for (int x = (undoStack.Count - 2); x > index; x--) { undoStack.RemoveAt(x); } } message = "After Redoing: " + item.Change.ToString() + " #Undo: " + undoStack.Count() + " #Redo: " + redoStack.Count() + "\n"; logger.Trace(message); isDoing = false; }
private void handleChanged(TECChangedEventArgs obj) { if (obj.Sender is TECBid && obj.Value is TECTypical typ) { if (obj.Change == Change.Add) { if (typ.Instances.Count != 1) { TypicalSystems.Add(typ); } else { Singletons.Add(typ); } } else if (obj.Change == Change.Remove) { TypicalSystems.Remove(typ); Singletons.Remove(typ); } } else if (obj.Sender is TECTypical typParent && obj.Value is TECSystem) { if (typParent.Instances.Count == 1) { TypicalSystems.Remove(typParent); Singletons.Add(typParent); } else { Singletons.Remove(typParent); if (!TypicalSystems.Contains(typParent)) { TypicalSystems.Add(typParent); } } } }
public void Undo() { isDoing = true; TECChangedEventArgs item = undoStack.Last(); logger.Trace("Undoing: " + item.Change.ToString() + " #Undo: " + undoStack.Count() + " #Redo: " + redoStack.Count()); if (item.Change == Change.Add) { handleAdd(item); undoStack.Remove(item); undoStack.Remove(undoStack.Last()); redoStack.Add(item); } else if (item.Change == Change.Remove) { handleRemove(item); undoStack.Remove(item); undoStack.Remove(undoStack.Last()); redoStack.Add(item); } else if (item.Change == Change.Edit) { int index = undoStack.IndexOf(item); redoStack.Add(new TECChangedEventArgs(Change.Edit, item.PropertyName, item.Sender, item.OldValue, item.Value)); handleEdit(item); for (int x = (undoStack.Count - 1); x >= index; x--) { undoStack.RemoveAt(x); } } string message = "After Undoing: " + item.Change.ToString() + " #Undo: " + undoStack.Count() + " #Redo: " + redoStack.Count() + "\n"; logger.Trace(message); isDoing = false; }
private void instanceChanged(TECChangedEventArgs args) { //Checks for a material change in the bid if (args.Sender is IRelatable rel && args.Value != null) { bool hasLinked = rel.LinkedObjects.Contains(args.PropertyName); bool isCatalog = (args.Value.GetType().IsImplementationOf(typeof(ICatalog <>))); if (hasLinked && !isCatalog) { return; } } if (args.Change == Change.Add) { if (args.Value is TECSystem system) { updateTotals(addSystem(system)); } else if (args.Value is TECEquipment equip) { updateTotals(addEquipment(equip)); } else if (args.Value is TECSubScope ss) { updateTotals(addSubScope(ss)); } else if (args.Value is TECController controller) { updateTotals(addController(controller)); } else if (args.Value is TECIOModule module) { updateTotals(addIOModule(module)); } else if (args.Value is TECPanel panel) { updateTotals(addPanel(panel)); } else if (args.Value is IControllerConnection connection) { updateTotals(addConnection(connection)); } else if (args.Value is IEndDevice endDev && args.Sender is TECSubScope sub) { if (endDev is TECDevice dev) { updateTotals(DeviceSummaryVM.AddHardware(dev)); } else if (endDev is TECValve valve) { updateTotals(ValveSummaryVM.AddValve(valve)); } else { logger.Error("IEndDevice isn't recognized. Not valve or device. " + "MaterialSummaryVM cannot add IEndDevice. IEndDevice: {0}", endDev.Name); } if (sub.Connection != null) { foreach (TECConnectionType connectionType in sub.Connection.Protocol.ConnectionTypes) { updateTotals(WireSummaryVM.AddRun(connectionType, sub.Connection.Length, sub.Connection.IsPlenum)); } } } else if (args.Value is TECMisc misc) { updateTotals(MiscSummaryVM.AddCost(misc)); } else if (args.Value is ICost cost) { if (args.Sender is TECHardware hardware) { logger.Error("TECHardware raised as value in instance changed args. Item: {0}, Parent:{1}", hardware.Name, args.Sender.Guid.ToString()); } else if (args.Sender is TECElectricalMaterial elecMat) { logger.Error("TECElectricalMaterial raise as value in instance changed args. Item: {0}, Parent:{1}", elecMat.Name, args.Sender.Guid.ToString()); } else { updateTotals(MiscSummaryVM.AddCost(cost)); } } }
private void handleTECChanged(TECChangedEventArgs e) { registerChange(e); raiseChanged(e); }
private void raiseChanged(TECChangedEventArgs e) { Changed?.Invoke(e); }
private void parentChanged(TECChangedEventArgs e) { if (e.Change == Change.Add && e.Value is TECController controller && e.Sender == parent) { sourceControllers.Add(controller); }
private void changed(TECChangedEventArgs e) { if (e.Value is TECTypical typical) { if (e.Change == Change.Add) { SystemSummaryItem summaryItem = new SystemSummaryItem(typical, bid.Parameters); summaryItem.Estimate.PropertyChanged += (sender, args) => { if (args.PropertyName == "TotalPrice") { RaisePropertyChanged("SystemTotal"); } }; Systems.Add(summaryItem); } else if (e.Change == Change.Remove) { SystemSummaryItem toRemove = null; foreach (var item in Systems) { if (item.Typical == typical) { toRemove = item; break; } } if (toRemove != null) { Systems.Remove(toRemove); } } RaisePropertyChanged("SystemTotal"); } else if (e.Sender is TECBid) { if (e.Change == Change.Add) { if (e.Value is TECController || e.Value is TECPanel) { ScopeSummaryItem summaryItem = new ScopeSummaryItem(e.Value as TECScope, bid.Parameters); summaryItem.Estimate.PropertyChanged += (sender, args) => { if (args.PropertyName == "TotalPrice") { RaisePropertyChanged("RiserTotal"); } }; Riser.Add(summaryItem); } else if (e.Value is TECMisc misc) { ScopeSummaryItem summaryItem = new ScopeSummaryItem(misc, bid.Parameters); summaryItem.Estimate.PropertyChanged += (sender, args) => { if (args.PropertyName == "TotalPrice") { RaisePropertyChanged("MiscTotal"); } }; Misc.Add(summaryItem); } } else if (e.Change == Change.Remove) { if (e.Value is TECController || e.Value is TECPanel) { removeFromCollection(Riser, e.Value as TECScope); } else if (e.Value is TECMisc misc) { removeFromCollection(Misc, misc); } } if (e.PropertyName == "Duration") { populateAll(bid); setupExtraLaborEstimate(bid); } RaisePropertyChanged("RiserTotal"); RaisePropertyChanged("MiscTotal"); } }
protected virtual void watcherChanged(TECChangedEventArgs args) { }