public bool ProcessEvent(Guid id, string eventName, object eventData)
 {
     _Log.InfoFormat("Handling event \"{0}\" for \"{1}\"...", eventName, id);
     if (_ElementDict.ContainsKey(id))
     {
         RemoteElement control = _ElementDict[id];
         if (control.CanHandleEvent(eventName))
         {
             try
             {
                 control.ProcessEvent(eventName, eventData);
                 return(true);
             }
             catch (Exception ex)
             {
                 _Log.Error(string.Format("{0} in event handler for \"{1}\": {2}", ex.GetType().Name, control, ex.Message), ex);
             }
         }
         else
         {
             _Log.ErrorFormat("Control \"{0}\" cannot handle event \"{1}\"", control, eventName);
         }
     }
     else
     {
         _Log.ErrorFormat("Element not found: \"{0}\"", id);
     }
     return(false);
 }
Пример #2
0
        private void ShowButtonProperties(RemoteElement element)
        {
            Window properties = new ControlProperties(PluginManager, _IconManager, element);

            properties.Owner = this;
            properties.ShowDialog();
        }
Пример #3
0
 private void AddElement(RemoteElement element)
 {
     if (!RemoteControlService.AddElement(element))
     {
         this.ShowMessageAsync("Cannot Add Control", string.Format("Only {0} {1} of this control is allowed at a time.", element.MaxControlTypeCount, element.MaxControlTypeCount == 1 ? "instance" : "instances"));
     }
 }
Пример #4
0
 public WatcherContext(RemoteElement owner, string propertyName, T boundProperty, Action <RemoteElement, string, BoundPropertyValueChangedEventArgs <TProp> > valueChangedCallback, Action <BoundPropertyErrorEventArgs> errorCallback)
 {
     Owner                 = owner;
     PropertyName          = propertyName;
     _BoundProperty        = boundProperty;
     _ValueChangedCallback = valueChangedCallback;
     _ErrorCallback        = errorCallback;
     if (_BoundProperty.SupportsValueChanged)
     {
         _BoundProperty.ValueChanged += _BoundProperty_ValueChanged;
     }
     _BoundProperty.Initialize();
 }
        public bool AddElement(RemoteElement element)
        {
            if (element.MaxControlTypeCount > 0)
            {
                int existingCount = _ElementDict.Where(kvp => kvp.Value.GetType().Equals(element.GetType())).Count();
                if (existingCount + 1 > element.MaxControlTypeCount)
                {
                    return(false);
                }
            }

            if (_ElementDict.TryAdd(element.Id, element))
            {
                element.PropertyChanged += Element_PropertyChanged;
                ElementsChanged();
                return(true);
            }
            return(false);
        }
Пример #6
0
 private void AddBoundProperties(RemoteElement element)
 {
     foreach (string propName in element.BoundPropertyNames)
     {
         var fbp = element.GetFloatBoundProperty(propName);
         if (fbp != null)
         {
             _FloatContexts.Add(new WatcherContext <FloatBoundProperty, float>(element, propName, fbp, HandleFloatBoundPropertyChanged, HandleBoundPropertyError));
         }
         var bbp = element.GetBooleanBoundProperty(propName);
         if (bbp != null)
         {
             _BooleanContexts.Add(new WatcherContext <BooleanBoundProperty, bool>(element, propName, bbp, HandleBooleanBoundPropertyChanged, HandleBoundPropertyError));
         }
         var sbp = element.GetStringBoundProperty(propName);
         if (sbp != null)
         {
             _StringContexts.Add(new WatcherContext <StringBoundProperty, string>(element, propName, sbp, HandleStringBoundPropertyChanged, HandleBoundPropertyError));
         }
     }
 }
Пример #7
0
        public static WebControl ToWebControl(this RemoteElement e)
        {
            var style = new Dictionary <string, string>()
            {
                { "left", e.X.ToCssLength() },
                { "top", e.Y.ToCssLength() },
                { "zIndex", e.ZIndex.ToString() },
                { "width", e.Width.ToCssLength() },
                { "height", e.Height.ToCssLength() },
                { "color", e.Color.ToCssString() },
                { "backgroundColor", e.BackgroundColor.ToCssString() },
                { "textAlign", e.TextAlignment.ToString().ToLower() },
                { "justifyContent", e.TextAlignment.ToCssFlexbox() },
            };

            foreach (var kvp in e.ControlStyle)
            {
                style[kvp.Key] = kvp.Value;
            }
            return(new WebControl(e.Id, e.WebControlType, style, e.WebProperties));
        }
Пример #8
0
 public void UpdateBoundProperties(RemoteElement element)
 {
     _Lock.EnterWriteLock();
     try
     {
         for (int i = 0; i < _FloatContexts.Count; i++)
         {
             var current = _FloatContexts[i];
             if (current.Owner.Id == element.Id)
             {
                 _FloatContexts.RemoveAt(i);
                 current.Dispose();
             }
         }
         for (int i = 0; i < _BooleanContexts.Count; i++)
         {
             var current = _BooleanContexts[i];
             if (current.Owner.Id == element.Id)
             {
                 _BooleanContexts.RemoveAt(i);
                 current.Dispose();
             }
         }
         for (int i = 0; i < _StringContexts.Count; i++)
         {
             var current = _StringContexts[i];
             if (current.Owner.Id == element.Id)
             {
                 _StringContexts.RemoveAt(i);
                 current.Dispose();
             }
         }
         AddBoundProperties(element);
     }
     finally
     {
         _Lock.ExitWriteLock();
     }
 }
Пример #9
0
 public ControlProperties(PluginManager pluginManager, IconManager iconManager, RemoteElement element)
 {
     PluginManager         = pluginManager;
     _IconManager          = iconManager;
     ConfigCommand         = new DelegateCommand <object>(DoConfig);
     OpenIconPickerCommand = new DelegateCommand <IconHolder>(OpenIconPicker);
     OpenFontPickerCommand = new DelegateCommand <Font>(OpenFontPicker);
     InitializeComponent();
     propertyGrid.SelectedObject = element;
 }
Пример #10
0
 private void RemoveElement(RemoteElement element)
 {
     RemoteControlService.RemoveElement(element.Id);
 }
Пример #11
0
 public BoundPropertyErrorEventArgs(RemoteElement owner, string propertyName, Exception ex)
 {
     Owner        = owner;
     PropertyName = propertyName;
     Exception    = ex;
 }
Пример #12
0
 private void HandleStringBoundPropertyChanged(RemoteElement owner, string propertyName, BoundPropertyValueChangedEventArgs <string> args)
 {
     owner.OnStringBoundPropertyValueChanged(propertyName, args.NewValue);
 }