Tag and Permission editing of File Permissions is functional.
[pithos-ms-client] / trunk / Pithos.Client.WPF / FileProperties / Permission.cs
index ebe17d5..480d70d 100644 (file)
@@ -1,3 +1,46 @@
+#region
+/* -----------------------------------------------------------------------
+ * <copyright file="Permission.cs" company="GRNet">
+ * 
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer.
+ *
+ *   2. Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and
+ * documentation are those of the authors and should not be
+ * interpreted as representing official policies, either expressed
+ * or implied, of GRNET S.A.
+ * </copyright>
+ * -----------------------------------------------------------------------
+ */
+#endregion
+
+using System;
 using Caliburn.Micro;
 
 namespace Pithos.Client.WPF
@@ -15,16 +58,17 @@ namespace Pithos.Client.WPF
             }
         }
 
-        private bool _read;
+        private bool _read=true;
         public bool Read
         {
             get { return _read; }
             set
             {
-                _read = value;
-                if (_read)
-                    Write = false;
-                NotifyOfPropertyChange(()=>Read);
+                _read = value;                
+                _write = !value;
+                NotifyOfPropertyChange(() => Write);
+                NotifyOfPropertyChange(() => Read);
+                NotifyOfPropertyChange(() => Value);
             }
         }
 
@@ -36,17 +80,19 @@ namespace Pithos.Client.WPF
             set
             {
                 _write = value;
-                if (_write)
-                    Read = false;
+                _read = !value;
                 NotifyOfPropertyChange(()=>Write);
+                NotifyOfPropertyChange(() => Read);
+                NotifyOfPropertyChange(() => Value);
             }
         }
 
         public Permission(string userName, string permission)
         {
             UserName = userName;
-            Read = (string.Compare(permission, "read", true) == 0);
-            Write= (string.Compare(permission, "write", true) == 0);
+            var trimmed = permission.Trim();
+            Read = "read".Equals(trimmed,StringComparison.InvariantCultureIgnoreCase);
+            Write = "write".Equals(trimmed, StringComparison.InvariantCultureIgnoreCase);
             //Value = permission;
         }
 
@@ -69,5 +115,9 @@ namespace Pithos.Client.WPF
             
         }
 
+        public Permission Clone()
+        {
+            return new Permission {UserName = UserName, Read = Read};
+        }
     }
 }
\ No newline at end of file