public virtual void Execute(Object parameter, INextCommandDelegate commandFinishedCallback) { if (parameter == null) { if (commandFinishedCallback != null) { commandFinishedCallback.Invoke(true); } return; } IList <Object> businessObjects = ExtractBusinessObjects(parameter, true); IList <Object> directDeletes = new List <Object>(); foreach (Object obj in businessObjects) { if (obj is AmbethIDataObject) { AmbethIDataObject aido = (AmbethIDataObject)obj; if (DeleteToBeCreatedDirectly && aido.ToBeCreated) { directDeletes.Add(aido); continue; } aido.ToBeDeleted = true; } } if (commandFinishedCallback == null) { ChangeHelper.RevertChanges(directDeletes); return; } RevertChangesFinishedCallback revertChangesFinishedCallback = null; if (commandFinishedCallback != null) { revertChangesFinishedCallback = new RevertChangesFinishedCallback(delegate(bool success) { commandFinishedCallback.Invoke(success); }); } ChangeHelper.RevertChanges(directDeletes, revertChangesFinishedCallback); }
public override Style SelectStyle(object item, DependencyObject container) { if (!(item is AmbethIDataObject)) { return(UnchangedStyle); } AmbethIDataObject aido = (AmbethIDataObject)item; if (aido.ToBeDeleted) { return(ToBeDeletedStyle); } else if (aido.ToBeCreated) { return(ToBeCreatedStyle); } else if (aido.ToBeUpdated) { return(ToBeUpdatedStyle); } return(UnchangedStyle); }
protected virtual bool CanExecuteIntern(Object parameter, bool extractAlsoUnchanged = false) { if (parameter == null) { return(false); } else if (parameter is INotPersistedDataContainer) { INotPersistedDataContainer container = (INotPersistedDataContainer)parameter; return(container.HasNotPersisted()); } else if (parameter is AmbethIDataObject) { if (extractAlsoUnchanged) { return(true); } AmbethIDataObject aio = (AmbethIDataObject)parameter; return(aio.HasPendingChanges); } else if (parameter is IModelContainerRegistry) { IList <Object> modelContainers = ((IModelContainerRegistry)parameter).GetModelContainers(); foreach (Object modelContainer in modelContainers) { if (CanExecuteIntern(modelContainer, extractAlsoUnchanged)) { return(true); } } return(false); } else if (parameter is IModelMultiContainer <INotPersistedDataContainer> ) { IModelMultiContainer <INotPersistedDataContainer> mmc = (IModelMultiContainer <INotPersistedDataContainer>)parameter; foreach (INotPersistedDataContainer npdc in mmc.Values) { if (CanExecuteIntern(npdc, extractAlsoUnchanged)) { return(true); } } return(false); } else if (parameter is IModelMultiContainer) { IEnumerable multiData = ((IModelMultiContainer)parameter).ValuesData; foreach (Object data in multiData) { if (CanExecuteIntern(data, extractAlsoUnchanged)) { return(true); } } return(false); } else if (parameter is IModelSingleContainer) { Object data = ((IModelSingleContainer)parameter).ValueData; return(CanExecuteIntern(data, extractAlsoUnchanged)); } return(parameter != null); }