Пример #1
0
 public XObjectRightsBuilder()
 {
     m_bAllowChangeDeleteRight = true;
     m_bChangeRightRestricted  = false;
     m_changeModeIncremental   = ObjectActionMode.None;
     m_changeModeRestricted    = ObjectActionMode.None;
 }
Пример #2
0
 /// <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;
 }
Пример #3
0
 private void setRights(bool bAllowDelete, bool bAllowChange)
 {
     m_bAllowDelete = bAllowDelete;
     if (bAllowChange)
     {
         m_changeMode = ObjectActionMode.Full;
     }
     else
     {
         m_changeMode = ObjectActionMode.None;
     }
 }
Пример #4
0
 /// <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;
 }
Пример #5
0
 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);
         }
     }
 }
Пример #6
0
 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);
         }
     }
 }
Пример #7
0
 /// <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);
             }
         }
     }
 }
Пример #8
0
 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);
         }
     }
 }
Пример #9
0
 public void SetDenyChangeFinal()
 {
     m_changeModeRestricted   = ObjectActionMode.None;
     m_bChangeRightRestricted = true;
 }
Пример #10
0
 public void SetDenyChange()
 {
     m_changeModeIncremental = ObjectActionMode.None;
 }
Пример #11
0
 public void SetAllowFullChangeFinal()
 {
     m_changeModeRestricted   = ObjectActionMode.Full;
     m_bChangeRightRestricted = true;
 }
Пример #12
0
 public void SetAllowFullChange()
 {
     m_changeModeIncremental = ObjectActionMode.Full;
     clearPropCollection(ref m_readOnlyProps);
 }
Пример #13
0
 public XObjectRights()
 {
     m_hiddenProps = new HybridDictionary(true);
     m_changeMode  = ObjectActionMode.None;
     m_readMode    = ObjectActionMode.Full;
 }