コード例 #1
0
        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;
        }