예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 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);
 }