public CloudPanel(CloudController controller) {
            InitializeComponent();
            this.controller = controller;
            Cloud = this.controller.Cloud;

            InitializeFlyout();
        }
        public CloudController this[Cloud cloud] {
            get {
                if (!cloudControllers.ContainsKey(cloud.Id)) {
                    cloudControllers[cloud.Id] = new CloudController(cloud);
                }

                return cloudControllers[cloud.Id];
            }
        }
        public UserPanel(User user) {
            User = user;
            Session = App.Connection.GetSession();
            Cloud = App.Connection.MessageController.CurrentCloud.Cloud;

            InitializeComponent();

            InitializeFlyout();
        }
        public async Task<Cloud> UpdateCloudAsync(Cloud cloud) {
            if (!clouds.ContainsKey(cloud.Id)) {
                await cloud.ForceValidate();
                clouds[cloud.Id] = cloud;
            } else {
                cloud.CopyTo(clouds[cloud.Id]);
            }

            return clouds[cloud.Id];
        }
        public Cloud GetCloud(string cloudId) {
            if (!clouds.ContainsKey(cloudId)) {
                var cloud = new Cloud(cloudId);
                cloud.ForceValidate();
                clouds[cloud.Id] = cloud;
            } else {
                clouds[cloudId].Validate();
            }

            return clouds[cloudId];
        }
        public Cloud UpdateCloud(Cloud cloud) {
            if (!clouds.ContainsKey(cloud.Id)) {
                cloud.ForceValidate();
                clouds[cloud.Id] = cloud;
            } else {
                var cacheCloud = clouds[cloud.Id];
                cloud.CopyTo(cacheCloud);
            }

            return clouds[cloud.Id];
        }
 public Cloud UpdateCloud(Cloud cloud) {
     return cloud;
 }
 public CloudController(Cloud cloud) {
     Cloud = cloud;
     FixSessionStatus();
 }