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); }
private void ShowButtonProperties(RemoteElement element) { Window properties = new ControlProperties(PluginManager, _IconManager, element); properties.Owner = this; properties.ShowDialog(); }
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")); } }
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); }
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)); } } }
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)); }
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(); } }
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; }
private void RemoveElement(RemoteElement element) { RemoteControlService.RemoveElement(element.Id); }
public BoundPropertyErrorEventArgs(RemoteElement owner, string propertyName, Exception ex) { Owner = owner; PropertyName = propertyName; Exception = ex; }
private void HandleStringBoundPropertyChanged(RemoteElement owner, string propertyName, BoundPropertyValueChangedEventArgs <string> args) { owner.OnStringBoundPropertyValueChanged(propertyName, args.NewValue); }