public override IConsent IsUsable(INakedObjectAdapter target) { bool isPersistent = target.ResolveState.IsPersistent(); IConsent disabledConsent = IsUsableDeclaratively(isPersistent); if (disabledConsent != null) { return(disabledConsent); } var viewModelFacet = target.Spec.GetFacet <IViewModelFacet>(); if (viewModelFacet != null) { // all fields on a non-editable view model are disabled if (!viewModelFacet.IsEditView(target)) { return(new Veto(Resources.NakedObjects.FieldDisabled)); } } var immutableFacet = GetFacet <IImmutableFacet>(); if (immutableFacet != null) { WhenTo when = immutableFacet.Value; if (when == WhenTo.UntilPersisted && !isPersistent) { return(new Veto(Resources.NakedObjects.FieldDisabledUntil)); } if (when == WhenTo.OncePersisted && isPersistent) { return(new Veto(Resources.NakedObjects.FieldDisabledOnce)); } ITypeSpec tgtSpec = target.Spec; if (tgtSpec.IsAlwaysImmutable() || (tgtSpec.IsImmutableOncePersisted() && isPersistent)) { return(new Veto(Resources.NakedObjects.FieldDisabled)); } } var f = GetFacet <IDisableForContextFacet>(); string reason = f == null ? null : f.DisabledReason(target); if (reason == null) { var fs = GetFacet <IDisableForSessionFacet>(); reason = fs == null ? null : fs.DisabledReason(Session, target, LifecycleManager, MetamodelManager); } return(GetConsent(reason)); }
// TODO either move this into framework or (better?) add a VetoCause enum to Veto and use private static IConsent IsCurrentlyMutable(INakedObject target) { bool isPersistent = target.ResolveState.IsPersistent(); var immutableFacet = target.Spec.GetFacet<IImmutableFacet>(); if (immutableFacet != null) { WhenTo when = immutableFacet.Value; if (when == WhenTo.UntilPersisted && !isPersistent) { return new Veto(Resources.NakedObjects.FieldDisabledUntil); } if (when == WhenTo.OncePersisted && isPersistent) { return new Veto(Resources.NakedObjects.FieldDisabledOnce); } ITypeSpec tgtSpec = target.Spec; if (tgtSpec.IsAlwaysImmutable() || (tgtSpec.IsImmutableOncePersisted() && isPersistent)) { return new Veto(Resources.NakedObjects.FieldDisabled); } } return new Allow(); }
private IConsent IsUsableDeclaratively(bool isPersistent) { var facet = GetFacet <IDisabledFacet>(); if (facet != null) { WhenTo isProtected = facet.Value; if (isProtected == WhenTo.Always) { return(new Veto(Resources.NakedObjects.FieldNotEditable)); } if (isProtected == WhenTo.OncePersisted && isPersistent) { return(new Veto(Resources.NakedObjects.FieldNotEditableNow)); } if (isProtected == WhenTo.UntilPersisted && !isPersistent) { return(new Veto(Resources.NakedObjects.FieldNotEditableUntil)); } } return(null); }
public HiddenAttribute(WhenTo w) { Value = w; }
protected SingleWhenValueFacetAbstract(Type facetType, ISpecification holder, WhenTo when) : base(facetType, holder) { this.when = when; }
public DisabledAttribute(WhenTo w) { Value = w; }
protected ImmutableFacetAbstract(WhenTo when, ISpecification holder) : base(Type, holder, when) { }
public HiddenFacet(WhenTo when, ISpecification holder) : base(typeof (IHiddenFacet), holder, when) {}
public HiddenFacet(WhenTo when, ISpecification holder) : base(typeof(IHiddenFacet), holder, when) { }
protected ImmutableFacetImpl(WhenTo when, ISpecification holder) : base(when, holder) {}
public ImmutableFacetAnnotation(WhenTo value, ISpecification holder) : base(value, holder) { }
public DisabledFacetAnnotation(WhenTo value, ISpecification holder) : base(value, holder) {}
protected DisabledFacetAbstract(WhenTo when, ISpecification holder) : base(Type, holder, when) {}
public DisabledFacetAnnotation(WhenTo value, ISpecification holder) : base(value, holder) { }
public ImmutableFacetImpl(WhenTo when, ISpecification holder) : base(when, holder) { }
public ImmutableAttribute(WhenTo w) { Value = w; }
public ImmutableFacetAnnotation(WhenTo value, ISpecification holder) : base(value, holder) {}