2 // System.Security.Permissions.UIPermission.cs
5 // Sebastien Pouliot <spouliot@motus.com>
7 // Copyright (C) 2003 Motus Technologies. http://www.motus.com
11 using System.Globalization;
13 namespace System.Security.Permissions {
16 public sealed class UIPermission : CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission {
18 private UIPermissionWindow _window;
19 private UIPermissionClipboard _clipboard;
23 public UIPermission (PermissionState state)
27 public UIPermission (UIPermissionClipboard clipboardFlag)
29 _clipboard = clipboardFlag;
32 public UIPermission (UIPermissionWindow windowFlag)
37 public UIPermission (UIPermissionWindow windowFlag, UIPermissionClipboard clipboardFlag)
39 _clipboard = clipboardFlag;
45 public UIPermissionClipboard Clipboard {
46 get { return _clipboard; }
47 set { _clipboard = value; }
50 public UIPermissionWindow Window {
51 get { return _window; }
52 set { _window = value; }
57 public override IPermission Copy ()
59 return new UIPermission (_window, _clipboard);
62 public override void FromXml (SecurityElement esd)
65 throw new ArgumentNullException (
66 Locale.GetText ("The argument is null."));
68 if (esd.Attribute ("class") != GetType ().AssemblyQualifiedName)
69 throw new ArgumentException (
70 Locale.GetText ("The argument is not valid"));
72 if (esd.Attribute ("version") != "1")
73 throw new ArgumentException (
74 Locale.GetText ("The argument is not valid"));
76 if (esd.Attribute ("Unrestricted") == "true") {
77 _window = UIPermissionWindow.AllWindows;
78 _clipboard = UIPermissionClipboard.AllClipboard;
80 // only 2 attributes: class and version
81 } else if (esd.Attributes.Count == 2) {
82 _window = UIPermissionWindow.NoWindows;
83 _clipboard = UIPermissionClipboard.NoClipboard;
86 _window = (UIPermissionWindow) Enum.Parse (
87 typeof (UIPermissionWindow), esd.Attribute ("Window"));
89 _clipboard = (UIPermissionClipboard) Enum.Parse (
90 typeof (UIPermissionClipboard), esd.Attribute ("Clipboard"));
95 public override IPermission Intersect (IPermission target)
101 public override bool IsSubsetOf (IPermission target)
106 public bool IsUnrestricted ()
108 return ((_window == UIPermissionWindow.AllWindows) &&
109 (_clipboard == UIPermissionClipboard.AllClipboard));
112 public override SecurityElement ToXml ()
114 SecurityElement e = new SecurityElement ("IPermission");
115 e.AddAttribute ("class", GetType ().AssemblyQualifiedName);
116 e.AddAttribute ("version", "1");
118 if (_window == UIPermissionWindow.NoWindows && _clipboard == UIPermissionClipboard.NoClipboard)
121 if (_window == UIPermissionWindow.AllWindows && _clipboard == UIPermissionClipboard.AllClipboard) {
122 e.AddAttribute ("Unrestricted", "true");
126 if (_window != UIPermissionWindow.NoWindows)
127 e.AddAttribute ("Window", _window.ToString ());
129 if (_clipboard != UIPermissionClipboard.NoClipboard)
130 e.AddAttribute ("Clipboard", _clipboard.ToString ());
136 public override IPermission Union (IPermission target)
141 // IBuiltInPermission
142 int IBuiltInPermission.GetTokenIndex ()