public ElementAttributeEditor(Element element, GuiFrameworkUICallback uiCallback) : base("Medical.GUI.Editor.RmlWysiwyg.ElementEditorComponents.ElementAttributeEditor.layout", "Attributes") { propertiesScroll = (ScrollView)widget.findWidget("PropertiesScroll"); propertiesForm = new ScrollablePropertiesForm(propertiesScroll, uiCallback); originalProperties = new List <RmlEditableProperty>(element.NumAttributes); EditInterface editInterface = new EditInterface(element.TagName); int index = 0; String name; String value; RmlEditableProperty.CreateBrowser createBrowserCallback = null; while (element.IterateAttributes(ref index, out name, out value)) { createBrowserCallback = null; RmlEditableProperty property; switch (name.ToLowerInvariant()) { case "onclick": if (uiCallback.hasCustomQuery(CustomQueries.BuildActionBrowser)) { createBrowserCallback = callback => uiCallback.runSyncCustomQuery <Browser>(CustomQueries.BuildActionBrowser); } property = new RmlEditableProperty(name, value, createBrowserCallback); break; case "src": if (element.TagName == "img") { if (uiCallback.hasCustomQuery(CustomQueries.BuildFileBrowser)) { createBrowserCallback = callback => uiCallback.runSyncCustomQuery <Browser, IEnumerable <String>, String, String>(CustomQueries.BuildFileBrowser, new String[] { "*.png", "*.jpg", "*jpeg", "*.gif", "*.bmp" }, "Images", "/"); } property = new RmlEditableProperty(name, value, createBrowserCallback); } else { property = new RmlEditableProperty(name, value); } break; default: property = new RmlEditableProperty(name, value); break; } property.ValueChanged += sender => { fireChangesMade(); fireApplyChanges(); }; editInterface.addEditableProperty(property); originalProperties.Add(property); } propertiesForm.EditInterface = editInterface; }