Inheritance: IXForm
コード例 #1
0
        public void CanUseAreControlsValid()
        {
            //asign
            var controlManager = new ControlManager();
            var xForm = new XForm();

            xForm.Root = new XContainer { Name = "BaseContainer" };

            var xAttribute = new XAttribute<string>("StringAttribute") { Name = "StringAttribute", Value = "StringAttribute", Use = XAttributeUse.Required };
            var xContainer = new XContainer { Name = "ChildContainer", Value = "ChildContainerValue", ParentContainer = xForm.Root, MaxOccurs = 1234, MinOccurs = 0 };
            xContainer.Attributes.Add(xAttribute);
            var xElement = new XElement { Name = "Element", Value = "ElementValue" };
            xContainer.Elements.Add(xElement);

            xForm.Root.Attributes.Add(xAttribute);
            xForm.Root.Containers.Add(xContainer);
            xForm.Root.Elements.Add(xElement);
            xContainer.Value = "test";

            //action
            controlManager.GetGroupBoxGui(xForm.Root, xForm.Root);
            var areControlsValid = controlManager.AreControlsValid();

            //assert
            Assert.False(areControlsValid);
        }
コード例 #2
0
ファイル: XmlWriter.cs プロジェクト: janstafa/XsdFormEditor
        /// <summary>
        /// Write data from form to output stream.
        /// </summary>
        /// <param name="stream">Output stream.</param>
        /// <param name="xForm">XForm with data.</param>
        public void WriteXFormToXmlFile(Stream stream, XForm xForm)
        {
            var settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NamespaceHandling = NamespaceHandling.OmitDuplicates;

            using (var writer = System.Xml.XmlWriter.Create(stream, settings))
            {
                writer.WriteStartElement(xForm.Root.Name);
                writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");

                foreach (var xAttribute in xForm.Root.Attributes)
                {
                    writer.WriteAttributeString(xAttribute.Name, xAttribute.GetStringXmlValue());
                }

                foreach (var xElement in xForm.Root.Elements)
                {
                    xElement.WriteXml(writer);
                }

                foreach (var xContainer in xForm.Root.Containers)
                {
                    xContainer.WriteXml(writer);
                }

                writer.WriteEndElement();
            }

            stream.Close();
        }
コード例 #3
0
ファイル: XmlParser.cs プロジェクト: nehadev/XsdFormEditor
        /// <summary>
        /// Fills given XForm structure with data form given Xml file.
        /// </summary>
        /// <param name="xmlFileName">Path to Xml file contains data.</param>
        /// <param name="xsdForm">XForm to be filled with data from Xml file.</param>
        /// <returns>Filled XForm.</returns>
        public XForm GetFilledXForm(string xmlFileName, XForm xsdForm)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlFileName);

            var filled = Fill(xsdForm.Root, xmlDoc);

            if (!filled)
            {
                return null;
            }

            return new XForm { Root = _newRoot };
        }
コード例 #4
0
ファイル: FormManager.cs プロジェクト: janstafa/XsdFormEditor
        /// <summary>
        /// Creates XForm from given Xsd file
        /// </summary>
        /// <param name="file">Path to Xsd file.</param>
        internal void GenerateFormFromXsdFile(string file)
        {
            _mainPanel.Controls.Clear();
            _xForm = null;

            _controlManager.Clear();//prepare for new rendering

            var xsdParser = new XsdParser();

            _xForm = xsdParser.ParseXsdFile(file);
            _xFormData = xsdParser.ParseXsdFile(file);
            var generateGuiGetGroupBox = _controlManager.GetGroupBoxGui(_xForm.Root, _xFormData.Root);

            _mainPanel.Controls.Add(generateGuiGetGroupBox);
        }
コード例 #5
0
ファイル: XsdParser.cs プロジェクト: janstafa/XsdFormEditor
        /// <summary>
        /// Get XForm from given Xsd file.
        /// </summary>
        /// <param name="fileName">Path to Xsd file.</param>
        /// <returns></returns>
        public XForm ParseXsdFile(string fileName)
        {
            _xFormRoot = null;
            _lastContainer = null;

            var xmlSchema = LoadXmlSchema(fileName);

            foreach (XmlSchemaElement element in xmlSchema.Elements.Values)
            {
                BuildXForm(element, null);
            }

            var xForm = new XForm();
            xForm.Root = _xFormRoot;

            return xForm;
        }
コード例 #6
0
        public void CanUseGenerateGui()
        {
            //asign
            var controlManager = new ControlManager();
            var xForm = new XForm();

            xForm.Root = new XContainer { Name = "BaseContainer" };

            var xAttribute = new XAttribute<string>(string.Empty) { Name = "StringAttribute", Value = "StringAttribute", Use = XAttributeUse.Required };
            var xContainer = new XContainer { Name = "ChildContainer", Value = "ChildContainerValue", ParentContainer = xForm.Root, MaxOccurs = 1234, MinOccurs = 0 };
            xContainer.Attributes.Add(xAttribute);
            var xElement = new XElement { Name = "Element", Value = "ElementValue" };
            xContainer.Elements.Add(xElement);

            xForm.Root.Attributes.Add(xAttribute);
            xForm.Root.Containers.Add(xContainer);
            xForm.Root.Elements.Add(xElement);

            //action
            var groupBoxGui = controlManager.GetGroupBoxGui(xForm.Root, xForm.Root);

            //assert
            Assert.NotNull(groupBoxGui);
        }
コード例 #7
0
        public void CanParseXFormFromXmlFileDocumentumArchivageSettingsXsd()
        {
            //asign
            var xmlWriter = new XmlWriter();
            var xForm = new XForm();

            xForm.Root = new XContainer { Name = "BaseContainer" };

            var xAttribute = new XAttribute<string>(string.Empty) { Name = "StringAttribute", Value = "StringAttribute" };
            var xContainer = new XContainer { Name = "ChildContainer", Value = "ChildContainerValue", ParentContainer = xForm.Root };
            xContainer.Attributes.Add(xAttribute);
            var xElement = new XElement { Name = "Element", Value = "ElementValue" };
            xContainer.Elements.Add(xElement);

            xForm.Root.Attributes.Add(xAttribute);
            xForm.Root.Containers.Add(xContainer);
            xForm.Root.Elements.Add(xElement);

            var fileStream = new FileStream(@"testXml.txt", FileMode.OpenOrCreate);

            //action
            xmlWriter.WriteXFormToXmlFile(fileStream, xForm);

            //assert
            var xml = File.ReadAllText(@"testXml.txt");

            var resultXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" +
            "<BaseContainer xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" StringAttribute=\"StringAttribute\">" +
            "\r\n  <Element>ElementValue</Element>" +
            "\r\n  <ChildContainer StringAttribute=\"StringAttribute\">ChildContainerValue" +
            "<Element>ElementValue</Element>" +
            "</ChildContainer>" +
            "\r\n</BaseContainer>";

            Assert.AreEqual(xml, resultXml);
        }
コード例 #8
0
        public void CanUseUpdateBindingForChildren()
        {
            //asign
            var controlManager = new ControlManager();
            var xForm = new XForm();

            xForm.Root = new XContainer { Name = "BaseContainer" };

            var xAttribute1 = new XAttribute<string>(string.Empty) { Name = "StringAttribute1", Value = "StringAttribute", Use = XAttributeUse.Required };
            var xAttribute2 = new XAttribute<int>(1) { Name = "StringAttribute2", Use = XAttributeUse.Required };
            var xAttribute3 = new XAttribute<bool>(true) { Name = "StringAttribute3", Use = XAttributeUse.Required };
            var xAttribute4 = new XAttribute<DateTime>(DateTime.Now) { Name = "StringAttribute4", Use = XAttributeUse.Required };
            var xAttribute5 = new XEnumerationAttribute<string>(string.Empty) { Name = "StringAttribute5", Use = XAttributeUse.Required };
            var xContainer = new XContainer { Name = "ChildContainer", Value = "ChildContainerValue", ParentContainer = xForm.Root, MaxOccurs = 1234, MinOccurs = 0 };
            xContainer.Attributes.Add(xAttribute1);
            var xElement = new XElement { Name = "Element", Value = "ElementValue" };
            xContainer.Elements.Add(xElement);

            xForm.Root.Attributes.Add(xAttribute1);
            xForm.Root.Attributes.Add(xAttribute2);
            xForm.Root.Attributes.Add(xAttribute3);
            xForm.Root.Attributes.Add(xAttribute4);
            xForm.Root.Attributes.Add(xAttribute5);
            xForm.Root.Containers.Add(xContainer);
            xForm.Root.Elements.Add(xElement);

            //action
            controlManager.GetGroupBoxGui(xForm.Root, xForm.Root);
            controlManager.UpdateBindingForVisibleContainer(xForm.Root);

            //assert
        }
コード例 #9
0
ファイル: FormManager.cs プロジェクト: janstafa/XsdFormEditor
        /// <summary>
        /// Updates values in XForm from given Xml file.
        /// </summary>
        /// <param name="fileName">Path to Xml file contains data.</param>
        internal void UpdateFormFromXml(string fileName)
        {
            var xmlParser = new XmlParser();
            var filledXForm = xmlParser.GetFilledXForm(fileName, _xForm);

            if (filledXForm != null)
            {
                _xFormData = filledXForm;
            }

            _controlManager.UpdateVisibleContainers(_xFormData.Root);
            _controlManager.UpdateBindingForVisibleContainer(_xFormData.Root);
        }