public void endRmlUpdate()
        {
            RocketEventListenerInstancer.resetEventController();

            //Find all custom controls and hook them up
            ElementDocument document = rocketWidget.Context.GetDocument(0);

            foreach (Element element in document.GetElementsByTagName("data"))
            {
                switch (element.GetAttributeString("type"))
                {
                case "volume":
                    dataDisplays.Add(new VolumeDisplay(element, context, rocketWidget));
                    break;

                case "measurement":
                    dataDisplays.Add(new MeasurementDisplay(element, context, rocketWidget));
                    break;

                default:
                    element.InnerRml = String.Format("Unknown data display type '{0}'", element.GetAttributeString("type"));
                    Logging.Log.Error("Could not create a display type for '{0}'", element.GetAttributeString("type"));
                    break;
                }
            }

            float height = 0.0f;

            foreach (var child in document.Children)
            {
                height += child.ScrollHeight;
            }
            widget.Height = (int)(height + 0.5f);
        }
        public override void analyzeViewData(IDataProvider dataProvider)
        {
            base.analyzeViewData(dataProvider);
            ElementDocument document = rocketWidget.Context.GetDocument(0);

            runIfAnalysis(dataProvider, document);

            //Print statements
            foreach (Element print in document.GetElementsByTagName("print"))
            {
                String name  = print.GetAttributeString("name");
                String value = dataProvider.getValue(name);
                if (value != null)
                {
                    print.InnerRml = value;
                }
            }
        }
        public override void populateViewData(IDataProvider dataProvider)
        {
            base.populateViewData(dataProvider);
            ElementDocument document = rocketWidget.Context.GetDocument(0);

            foreach (Element form in document.GetElementsByTagName("form"))
            {
                foreach (Element input in form.GetElementsByTagName("input"))
                {
                    String name = input.GetAttributeString("name");
                    if (name != null)
                    {
                        String value = dataProvider.getValue(name);
                        String type  = input.GetAttributeString("type").ToLowerInvariant();
                        if (value != null)
                        {
                            switch (type)
                            {
                            case "text":
                                input.SetAttribute("value", value);
                                break;

                            case "password":
                                input.SetAttribute("value", value);
                                break;

                            case "radio":
                                if (input.GetAttributeString("value") == value)
                                {
                                    input.SetAttribute("checked", "true");
                                }
                                break;

                            case "checkbox":
                                if (input.GetAttributeString("value") == value)
                                {
                                    input.SetAttribute("checked", "true");
                                }
                                break;

                            case "range":
                                input.SetAttribute("value", value);
                                break;
                            }
                        }
                    }
                }
                foreach (Element textArea in form.GetElementsByTagName("textarea"))
                {
                    String name = textArea.GetAttributeString("name");
                    if (name != null)
                    {
                        String value = dataProvider.getValue(name);
                        if (value != null)
                        {
                            textArea.SetAttribute("value", value);
                        }
                    }
                }
                foreach (ElementFormControl select in form.GetElementsByTagName("select"))
                {
                    String name = select.GetAttributeString("name");
                    if (name != null)
                    {
                        String value = dataProvider.getValue(name);
                        if (value != null)
                        {
                            select.Value = value;
                        }
                    }
                }
            }
        }