public XObjectRightsBuilder() { m_bAllowChangeDeleteRight = true; m_bChangeRightRestricted = false; m_changeModeIncremental = ObjectActionMode.None; m_changeModeRestricted = ObjectActionMode.None; }
/// <summary> /// Добавляет свойств в "неизменяемый" список read-only свойств /// </summary> /// <param name="sPropName"></param> public void AddReadOnlyPropFinal(string sPropName) { if (sPropName == null) { throw new ArgumentNullException("sPropName"); } clearPropCollection(ref m_readOnlyPropsFinal); m_readOnlyPropsFinal.Add(sPropName, null); m_changeModeRestricted = ObjectActionMode.Partial; m_bChangeRightRestricted = true; }
private void setRights(bool bAllowDelete, bool bAllowChange) { m_bAllowDelete = bAllowDelete; if (bAllowChange) { m_changeMode = ObjectActionMode.Full; } else { m_changeMode = ObjectActionMode.None; } }
/// <summary> /// Устанавливает "неизменяемый" запрет на изменение заданных свойств /// </summary> /// <param name="restrictedProps">коллекция наименования свойств</param> public void SetReadOnlyPropsFinal(ICollection restrictedProps) { if (restrictedProps == null) { throw new ArgumentNullException("restrictedProps"); } clearPropCollection(ref m_readOnlyPropsFinal); foreach (string sPropName in restrictedProps) { m_readOnlyPropsFinal.Add(sPropName, null); } m_changeModeRestricted = ObjectActionMode.Partial; m_bChangeRightRestricted = true; }
private void setHiddenProps(ICollection hiddenProps) { if (hiddenProps == null || hiddenProps.Count == 0) { m_readMode = ObjectActionMode.Full; } else { m_readMode = ObjectActionMode.Partial; m_hiddenProps.Clear(); foreach (string sProp in hiddenProps) { m_hiddenProps.Add(sProp, null); } } }
private void setReadOnlyProps(ICollection readOnlyProps) { if (readOnlyProps == null || readOnlyProps.Count == 0) { m_changeMode = ObjectActionMode.Full; } else { m_changeMode = ObjectActionMode.Partial; m_readOnlyProps.Clear(); foreach (string sProp in readOnlyProps) { m_readOnlyProps.Add(sProp, null); } } }
/// <summary> /// Устанавливает доступ на изменение заданных свойств. /// Если изменение объекта было запрещено, то включает разрешение частичного изменение и /// объявляет все свойствава кроме заданных как read-only. /// </summary> /// <param name="allPropsInfo">Описание всех свойств типа</param> /// <param name="accessableProps">Коллекция наименований свойств, доступ к которым должен быть открыт</param> public void SetAllowChangeProps(XPropInfoBase[] allPropsInfo, ICollection accessableProps) { if (m_changeModeIncremental == ObjectActionMode.Full) { return; } if (m_changeModeIncremental == ObjectActionMode.Partial) { Debug.Assert(m_readOnlyProps != null); // удалим все свойства из accessableProps из списка read-only, если они там были foreach (string sProp in accessableProps) { if (m_readOnlyProps.Contains(sProp)) { m_readOnlyProps.Remove(sProp); } } } else // if (m_ChangeMode = ObjectActionMode.None) { // изменение объекта было запрещено - установим доступ частичного изменения // (все свойства кроме accessableProps объявим read-only) m_changeModeIncremental = ObjectActionMode.Partial; bool bReadOnly; if (m_readOnlyProps == null) { m_readOnlyProps = new HybridDictionary(); } foreach (XPropInfoBase propInfo in allPropsInfo) { bReadOnly = true; foreach (string sProp in accessableProps) { if (sProp == propInfo.Name) { bReadOnly = false; break; } } if (bReadOnly) { m_readOnlyProps.Add(propInfo.Name, null); } } } }
public void SetAllowChangeExcept(ICollection propNames) { if (propNames == null) { throw new ArgumentNullException("propNames"); } // SetReadOnlyProps if (propNames.Count == 0) { m_changeModeIncremental = ObjectActionMode.Full; } else { m_changeModeIncremental = ObjectActionMode.Partial; clearPropCollection(ref m_readOnlyProps); foreach (string sProp in propNames) { m_readOnlyProps.Add(sProp, null); } } }
public void SetDenyChangeFinal() { m_changeModeRestricted = ObjectActionMode.None; m_bChangeRightRestricted = true; }
public void SetDenyChange() { m_changeModeIncremental = ObjectActionMode.None; }
public void SetAllowFullChangeFinal() { m_changeModeRestricted = ObjectActionMode.Full; m_bChangeRightRestricted = true; }
public void SetAllowFullChange() { m_changeModeIncremental = ObjectActionMode.Full; clearPropCollection(ref m_readOnlyProps); }
public XObjectRights() { m_hiddenProps = new HybridDictionary(true); m_changeMode = ObjectActionMode.None; m_readMode = ObjectActionMode.Full; }