private static void ParseStructuredTableElement(TableElement tableElement, string startTagName, string endTagName)
 {
     if (tableElement == null)
     {
         throw new NullReferenceException("TableElement cannot be null!");
     }
     tableElement.EndTag = FindEndTag(tableElement.StartTag, startTagName, endTagName);
     tableElement.Expression = tableElement.StartTag.GetExpression();
     tableElement.TagElements = MakeTableElement(tableElement.StartTag, tableElement.EndTag);
 }
 private static TableElement ToTableElement(XElement tagElement)
 {
     //TODO Make field constants
     var tableElement = new TableElement
     {
         IsItem = tagElement.IsTag(ItemTextTagName),
         IsIndex = tagElement.IsTag(ItemIndexTagName),
         IsItemIf = tagElement.IsTag(ItemIfTagName),
         IsItemRepeater = tagElement.IsTag(ItemRepeaterTagName),
         IsItemHtmlContent = tagElement.IsTag(ItemHtmlContentTagName),
         IsItemTable = tagElement.IsTag(ItemTableTagName),
         IsCellColor = tagElement.IsTag(CellColorTagName),
         StartTag = tagElement,
     };
     if (tableElement.IsItem || tableElement.IsItemHtmlContent || tableElement.IsCellColor)
     {                
         tableElement.Expression = tagElement.GetExpression();
     }          
     else if (tableElement.IsItemHtmlContent)
     {
         tableElement.Expression = tagElement.GetExpression();
     }
     else if (tableElement.IsItemIf)
     {
         ParseStructuredTableElement(tableElement, ItemIfTagName, EndItemIfTagName);
     }
     else if (tableElement.IsItemRepeater)
     {
         ParseStructuredTableElement(tableElement, ItemRepeaterTagName, EndItemRepeaterTagName);
     }
     else if (tableElement.IsItemTable)
     {
         ParseStructuredTableElement(tableElement, ItemTableTagName, EndItemTableTagName);
     }
     return tableElement;
 }
Пример #3
0
        protected override void Init()
        {
            AddSystem(new MenuBackgroundSystem());

            CanPause = false;

            BuildMenuButton("Back", 530, delegate(ElementEvent e)
            {
                CurrentGame.ShowTitleScreen();
            });

            Element title = BuildMenuButton("High Scores", 80, null);

            title.ClassName += " MenuTitle";

            HighScore[] scores = (HighScore[])Json.Parse((string)Window.LocalStorage[SpaceDinosGame.HighScoresKey]);

            TableElement table = (TableElement)Document.CreateElement("TABLE");

            table.ClassName = "HighScores";
            _overlay.AppendChild(table);
            Element tableBody = Document.CreateElement("TBODY");

            table.AppendChild(tableBody);

            TableRowElement row = (TableRowElement)Document.CreateElement("TR");

            tableBody.AppendChild(row);

            AddCell(row, "TH", string.Empty);
            AddCell(row, "TH", "Score");
            AddCell(row, "TH", "Level");
            AddCell(row, "TH", "Name");

            for (int i = 0; i < 10; i++)
            {
                row = (TableRowElement)Document.CreateElement("TR");
                tableBody.AppendChild(row);

                switch (i)
                {
                case 0:
                    AddCell(row, "TD", "1st");
                    break;

                case 1:
                    AddCell(row, "TD", "2nd");
                    break;

                case 2:
                    AddCell(row, "TD", "3rd");
                    break;

                default:
                    AddCell(row, "TD", (i + 1) + "th");
                    break;
                }

                AddCell(row, "TD", scores[i].Score.ToString());
                AddCell(row, "TD", scores[i].Level.ToString());
                AddCell(row, "TD", scores[i].Name);
            }

            jQuery.FromElement(_overlay).Show();
        }
Пример #4
0
        /// <summary>
        /// Gets the syntax for the creation of an anonymous type.
        /// </summary>
        /// <param name="tableElement">The description of a table.</param>
        /// <param name="bodyStatements">The statements that appear in the body of the using block.</param>
        /// <returns>An expression that builds an anonymous type from a table description.</returns>
        public static List <StatementSyntax> GetSyntax(TableElement tableElement, IEnumerable <StatementSyntax> bodyStatements)
        {
            // Validate the argument.
            if (tableElement == null)
            {
                throw new ArgumentNullException(nameof(tableElement));
            }

            // This is used to collect the statements.
            List <StatementSyntax> statements = new List <StatementSyntax>();

            //            using (TransactionScope transactionScope = new TransactionScope())
            UsingStatementSyntax usingStatement = SyntaxFactory.UsingStatement(
                SyntaxFactory.Block(bodyStatements))
                                                  .WithDeclaration(
                SyntaxFactory.VariableDeclaration(
                    SyntaxFactory.IdentifierName("var"))
                .WithVariables(
                    SyntaxFactory.SingletonSeparatedList <VariableDeclaratorSyntax>(
                        SyntaxFactory.VariableDeclarator(
                            SyntaxFactory.Identifier("transactionScope"))
                        .WithInitializer(
                            SyntaxFactory.EqualsValueClause(
                                SyntaxFactory.ObjectCreationExpression(
                                    SyntaxFactory.IdentifierName("TransactionScope"))
                                .WithArgumentList(
                                    SyntaxFactory.ArgumentList(
                                        SyntaxFactory.SeparatedList <ArgumentSyntax>(
                                            new SyntaxNodeOrToken[]
            {
                SyntaxFactory.Argument(
                    SyntaxFactory.MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        SyntaxFactory.IdentifierName("TransactionScopeOption"),
                        SyntaxFactory.IdentifierName("RequiresNew"))),
                SyntaxFactory.Token(SyntaxKind.CommaToken),
                SyntaxFactory.Argument(
                    SyntaxFactory.MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        SyntaxFactory.ThisExpression(),
                        SyntaxFactory.IdentifierName("transactionTimeout"))),
                SyntaxFactory.Token(SyntaxKind.CommaToken),
                SyntaxFactory.Argument(
                    SyntaxFactory.MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        SyntaxFactory.IdentifierName("TransactionScopeAsyncFlowOption"),
                        SyntaxFactory.IdentifierName("Enabled"))),
            }))))))));

            //             using (var disposables = new DisposableList())
            usingStatement = SyntaxFactory.UsingStatement(usingStatement)
                             .WithDeclaration(
                SyntaxFactory.VariableDeclaration(
                    SyntaxFactory.IdentifierName("var"))
                .WithVariables(
                    SyntaxFactory.SingletonSeparatedList <VariableDeclaratorSyntax>(
                        SyntaxFactory.VariableDeclarator(
                            SyntaxFactory.Identifier("disposables"))
                        .WithInitializer(
                            SyntaxFactory.EqualsValueClause(
                                SyntaxFactory.ObjectCreationExpression(
                                    SyntaxFactory.IdentifierName("DisposableList"))
                                .WithArgumentList(
                                    SyntaxFactory.ArgumentList()))))));

            //            using (await this.domain.Accounts.Lock.WriteLockAsync())
            //            using (await this.domain.Accounts.AccountExternalKey.Lock.WriteLockAsync())
            //            using (await this.domain.Accounts.AccountKey.Lock.WriteLockAsync())
            //            using (await this.domain.Accounts.EntityAccountKey.Lock.WriteLockAsync())
            foreach (ForeignKeyElement foreignKeyElement in tableElement.ParentKeys.AsEnumerable().Reverse())
            {
                //            using (await this.Accounts.EntityAccountKey.Lock.WriteLockAsync())
                usingStatement = SyntaxFactory.UsingStatement(usingStatement)
                                 .WithExpression(
                    SyntaxFactory.AwaitExpression(
                        SyntaxFactory.InvocationExpression(
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    SyntaxFactory.MemberAccessExpression(
                                        SyntaxKind.SimpleMemberAccessExpression,
                                        SyntaxFactory.MemberAccessExpression(
                                            SyntaxKind.SimpleMemberAccessExpression,
                                            SyntaxFactory.MemberAccessExpression(
                                                SyntaxKind.SimpleMemberAccessExpression,
                                                SyntaxFactory.ThisExpression(),
                                                SyntaxFactory.IdentifierName(tableElement.XmlSchemaDocument.Domain.ToVariableName())),
                                            SyntaxFactory.IdentifierName(foreignKeyElement.Table.Name.ToPlural())),
                                        SyntaxFactory.IdentifierName(foreignKeyElement.Name)),
                                    SyntaxFactory.IdentifierName("Lock")),
                                SyntaxFactory.IdentifierName("WriteLockAsync")))));
            }

            // Lock each of the unique key indices
            foreach (UniqueKeyElement uniqueKeyElement in tableElement.UniqueKeys.AsEnumerable().Reverse())
            {
                //            using (await this.domain.Accounts.AccountKey.Lock.WriteLockAsync())
                usingStatement = SyntaxFactory.UsingStatement(usingStatement)
                                 .WithExpression(
                    SyntaxFactory.AwaitExpression(
                        SyntaxFactory.InvocationExpression(
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    SyntaxFactory.MemberAccessExpression(
                                        SyntaxKind.SimpleMemberAccessExpression,
                                        SyntaxFactory.MemberAccessExpression(
                                            SyntaxKind.SimpleMemberAccessExpression,
                                            SyntaxFactory.MemberAccessExpression(
                                                SyntaxKind.SimpleMemberAccessExpression,
                                                SyntaxFactory.ThisExpression(),
                                                SyntaxFactory.IdentifierName(tableElement.XmlSchemaDocument.Domain.ToVariableName())),
                                            SyntaxFactory.IdentifierName(uniqueKeyElement.Table.Name.ToPlural())),
                                        SyntaxFactory.IdentifierName(uniqueKeyElement.Name)),
                                    SyntaxFactory.IdentifierName("Lock")),
                                SyntaxFactory.IdentifierName("WriteLockAsync")))));
            }

            // Finally, lock the table.
            //            using (await this.domain.Accounts.Lock.WriteLockAsync())
            usingStatement = SyntaxFactory.UsingStatement(usingStatement)
                             .WithExpression(
                SyntaxFactory.AwaitExpression(
                    SyntaxFactory.InvocationExpression(
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    SyntaxFactory.MemberAccessExpression(
                                        SyntaxKind.SimpleMemberAccessExpression,
                                        SyntaxFactory.ThisExpression(),
                                        SyntaxFactory.IdentifierName(tableElement.XmlSchemaDocument.Domain.ToVariableName())),
                                    SyntaxFactory.IdentifierName(tableElement.Name.ToPlural())),
                                SyntaxFactory.IdentifierName("Lock")),
                            SyntaxFactory.IdentifierName("WriteLockAsync")))));

            // This puts all the other 'using' statements into a big block with the transaction as the first item.  This order also insures that
            // the transaction is also the last to be disposed.
            //            using (await this.Accounts.Lock.WriteLockAsync())
            //            using (await this.Accounts.AccountExternalKey.Lock.WriteLockAsync())
            //            using (await this.ManagedAccounts.AccountExternalKey.Lock.WriteLockAsync())
            //            using (var disposables = new DisposableList())
            //            using (var transactionScope = new TransactionScope())
            //            {
            //                <LoadDomain>
            //            }
            statements.Add(usingStatement);

            // This set of statement will enlist the indices and tables in the current transaction and acquire an exclusive lock.
            return(statements);
        }
        public void TestProcess()
        {
            var tableTag = this.GetTableTag();

            Func<XElement, IEnumerable<TableElement>> MakeTableElementCallback = element =>
                {
                    var tags = element.Descendants(WordMl.SdtName).ToList();

                    var index =
                        tags.Find(
                            e =>
                            e.Element(WordMl.SdtPrName)
                             .Element(WordMl.TagName)
                             .Attribute(WordMl.ValAttributeName)
                             .Value.ToLower()
                             .Equals("itemindex"));
                    var subject =
                        tags.Find(
                            e =>
                            e.Element(WordMl.SdtPrName)
                             .Element(WordMl.TagName)
                             .Attribute(WordMl.ValAttributeName)
                             .Value.ToLower()
                             .Equals("itemtext") && e.Element(WordMl.SdtContentName).Value == "./Subject");
                    var issueDate =
                        tags.Find(
                            e =>
                            e.Element(WordMl.SdtPrName)
                             .Element(WordMl.TagName)
                             .Attribute(WordMl.ValAttributeName)
                             .Value.ToLower()
                             .Equals("itemtext") && e.Element(WordMl.SdtContentName).Value == "./IssueDate");
                    var expireDate =
                        tags.Find(
                            e =>
                            e.Element(WordMl.SdtPrName)
                             .Element(WordMl.TagName)
                             .Attribute(WordMl.ValAttributeName)
                             .Value.ToLower()
                             .Equals("itemtext") && e.Element(WordMl.SdtContentName).Value == "./ExpireDate");
                    var itemIf =
                        tags.Find(
                            e =>
                            e.Element(WordMl.SdtPrName)
                             .Element(WordMl.TagName)
                             .Attribute(WordMl.ValAttributeName)
                             .Value.ToLower()
                             .Equals("itemif"));
                    var endItemIf =
                        tags.Find(
                            e =>
                            e.Element(WordMl.SdtPrName)
                             .Element(WordMl.TagName)
                             .Attribute(WordMl.ValAttributeName)
                             .Value.ToLower()
                             .Equals("enditemif"));


                    IEnumerable<TableElement> tableElements = new TableElement[]
                                                                  {
                                                                      new TableElement
                                                                          {
                                                                              IsIndex = true,
                                                                              IsItem = false,
                                                                              IsItemIf = false,
                                                                              StartTag = index,
                                                                          },
                                                                      new TableElement
                                                                          {
                                                                              IsItemIf = true,
                                                                              IsIndex = false,
                                                                              IsItem = false,
                                                                              StartTag = itemIf,
                                                                              EndTag = endItemIf,
                                                                              Expression = "./HasSubject",
                                                                              TagElements =
                                                                                  new TableElement[]
                                                                                      {
                                                                                          new TableElement
                                                                                              {
                                                                                                  IsItem = true,
                                                                                                  IsIndex = false,
                                                                                                  IsItemIf = false,
                                                                                                  StartTag = subject,
                                                                                                  Expression = "./Subject"
                                                                                              }
                                                                                      }
                                                                          },
                                                                      new TableElement
                                                                          {
                                                                              IsItem = true,
                                                                              IsIndex = false,
                                                                              IsItemIf = false,
                                                                              StartTag = issueDate,
                                                                              Expression = "./IssueDate"
                                                                          },
                                                                      new TableElement
                                                                          {
                                                                              IsItem = true,
                                                                              IsIndex = false,
                                                                              IsItemIf = false,
                                                                              StartTag = expireDate,
                                                                              Expression = "./ExpireDate"
                                                                          }
                                                                  };
                    return tableElements;
                };

            tableTag.MakeTableElementCallback = MakeTableElementCallback;

            var tableProcessor = new TableProcessor
            {
                TableTag = tableTag,
                DataReader = this.dataReader
            };
            tableProcessor.Process();

            Assert.IsFalse(this.documentRoot.Elements(WordMl.SdtName).Any(element => element.IsSdt()));
            var expectedTableStructure = new[]
                {
                new[] { "#", "Certificate", "Date" },
                new[] { string.Empty, string.Empty, "Issue", "Expiration" },
                new[] { "1", "2", "3", "4" },
                new[] { "1", "Subject1", "01.04.2014", "01.10.2015" },
                new[] { "2", "Subject2", "01.03.2014", "01.09.2015" },
                new[] { "3", "Subject3", "01.01.2011", "01.01.2012" },
                new[] { "This", "row", "stays", "untouched" },
            };

            var rows = tableTag.Table.Elements(WordMl.TableRowName).ToList();
            Assert.AreEqual(expectedTableStructure.Count(), rows.Count());
            int rowIndex = 0;
            foreach (var row in rows)
            {
                var expectedRow = expectedTableStructure[rowIndex];

                var cellsInRow = row.Elements(WordMl.TableCellName).ToList();

                Assert.AreEqual(expectedRow.Count(), cellsInRow.Count());

                int cellIndex = 0;
                foreach (var cell in cellsInRow)
                {
                    Assert.AreEqual(expectedRow[cellIndex], cell.Value);
                    cellIndex++;
                }

                rowIndex++;
            }
            /*
            var tagsBetween =
                tableTag.TagTable.ElementsAfterSelf().Where(element => element.IsBefore(tableTag.TagContent));
            Assert.IsFalse(tagsBetween.Any());

            tagsBetween =
                tableTag.TagEndContent.ElementsAfterSelf().Where(element => element.IsBefore(tableTag.TagEndTable));
            Assert.IsFalse(tagsBetween.Any());*/
            this.ValidateTagsRemoved(this.documentRoot);
        }
Пример #6
0
			/// <summary>
			/// Initializes a new instance of the <see cref="BuildPage" /> class.
			/// </summary>
			/// <param name="parent">The parent.</param>
			public BuildPage(UITestControl parent)
				: base(parent)
			{
                MyPopulatedTable = new TableElement<HtmlRow>();
			    TableHashCode = MyPopulatedTable.GetHashCode();
			}
Пример #7
0
 public void WhenIBrowsingTableWithId(string id)
 {
     this.table = Browser.Current.Table(By.Id(id));
 }
Пример #8
0
        /// <summary>
        /// Cleans all proxy references
        /// </summary>
        public void Cleanup()
        {
            lock (table)
            {
                if (table.Count > minElements)
                {
                    Guid[] accessIds = new Guid[table.Count];
                    TableElement[] entries = new TableElement[table.Count];

                    table.Values.CopyTo(entries, 0);
                    table.Keys.CopyTo(accessIds, 0);

                    Array.Sort(entries, accessIds);

                    int nrToRemove = table.Count - minElements;

                    foreach (var key in accessIds)
                    {
                        table.Remove(key);

                        nrToRemove--;
                        if (nrToRemove == 0)
                        {
                            break;
                        }
                    }

                    foreach (var item in table.Values)
                    {
                        ((TableElement)item).AccessCount = 0;
                    }
                }
            }
        }
 private ItemRepeaterTag GenerateItemRepeaterTag(TableElement itemRepeaterElement)
 {
     var tagResult = new ItemRepeaterTag()
     {   StartItemRepeater = itemRepeaterElement.StartTag,
         EndItemRepeater = itemRepeaterElement.EndTag,
         NestedRepeaters = new List<ItemRepeaterTag>(),
         Source = itemRepeaterElement.Expression
     };            
     return tagResult;
 }
Пример #10
0
        private static bool Render(TableElement element, WordprocessingDocument document, Body body)
        {
            if (element.Table.Rows.Count == 0)
            {
                return(true);

                //throw new Exception("The table is empty");
            }

            var table = new DocumentFormat.OpenXml.Wordprocessing.Table();

            if (element.Headers.Count != 0)
            {
                var row = new DocumentFormat.OpenXml.Wordprocessing.TableRow();

                foreach (var head in element.Headers)
                {
                    var text      = new DocumentFormat.OpenXml.Wordprocessing.Text(head.ToString());
                    var run       = new DocumentFormat.OpenXml.Wordprocessing.Run(text);
                    var paragraph = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(run);

                    paragraph.ParagraphProperties = new DocumentFormat.OpenXml.Wordprocessing.ParagraphProperties
                    {
                        ParagraphStyleId = new DocumentFormat.OpenXml.Wordprocessing.ParagraphStyleId()
                        {
                            Val = WordStyleIdFromStyleName(document, element.HeaderStyle.Name)
                        },
                        WordWrap = new DocumentFormat.OpenXml.Wordprocessing.WordWrap {
                            Val = new OnOffValue {
                                Value = true
                            }
                        },
                        TextAlignment =
                            new DocumentFormat.OpenXml.Wordprocessing.TextAlignment
                        {
                            Val = DocumentFormat.OpenXml.Wordprocessing.VerticalTextAlignmentValues.Auto
                        },
                    };

                    var cell = new DocumentFormat.OpenXml.Wordprocessing.TableCell(paragraph);

                    DocumentFormat.OpenXml.Wordprocessing.TableCellProperties cellprop = WordCellProperties(element.HeaderStyle);
                    cell.Append(cellprop);

                    row.Append(cell);
                }
                table.Append(row);
            }


            for (int i = 0; i < element.Table.Rows.Count; i++)
            {
                var row = new DocumentFormat.OpenXml.Wordprocessing.TableRow();

                for (int j = 0; j < element.Table.Columns.Count; j++)
                {
                    var text      = new DocumentFormat.OpenXml.Wordprocessing.Text(element.Table.Rows[i][j].ToString());
                    var run       = new DocumentFormat.OpenXml.Wordprocessing.Run(text);
                    var paragraph = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(run);

                    paragraph.ParagraphProperties = new DocumentFormat.OpenXml.Wordprocessing.ParagraphProperties
                    {
                        ParagraphStyleId = new DocumentFormat.OpenXml.Wordprocessing.ParagraphStyleId()
                        {
                            Val = WordStyleIdFromStyleName(document, element.TableStyle.Name)
                        },
                        WordWrap = new DocumentFormat.OpenXml.Wordprocessing.WordWrap {
                            Val = new OnOffValue {
                                Value = true
                            }
                        },
                        TextAlignment =
                            new DocumentFormat.OpenXml.Wordprocessing.TextAlignment
                        {
                            Val = DocumentFormat.OpenXml.Wordprocessing.VerticalTextAlignmentValues.Auto
                        },
                    };

                    var cell = new DocumentFormat.OpenXml.Wordprocessing.TableCell(paragraph);

                    var cellprop = WordCellProperties(element.TableStyle);

                    cell.Append(cellprop);

                    row.Append(cell);
                }
                table.Append(row);
            }
            body.AppendChild <DocumentFormat.OpenXml.Wordprocessing.Table>(table);
            return(false);
        }
Пример #11
0
        public static bool Delete(string userName)
        {
            TableElement te = new TableElement("UserName", userName);

            return(m_db.Delete(te));
        }
Пример #12
0
        public static Recipe Create(TableElement source)
        {
#warning Create_Is_NotImpl
            throw new NotImplementedException("Create is not implemented");
        }
Пример #13
0
 /// <summary>
 /// Warning: this method uses System.Windows.Forms.MessageBox.
 /// </summary>
 /// <param name="element"></param>
 static public void GetTableElementDictionary(this TableElement element)
 {
     element.conversionElements.Clear();
     // ac_table
     element.conversionElements.Add("TableType", element.DbType);
     element.conversionElements.Add("tabletype", string.Format("{0}", element.DbType).ToLower());
     // see the primary key related tags below
     element.conversionElements.Add("PK", element.PrimaryKey);
     element.conversionElements.Add("pk", element.PrimaryKey == null ? string.Empty : element.PrimaryKey.ToLower());
     element.conversionElements.Add("PrimaryKey", element.PrimaryKey == null ? string.Empty : element.PrimaryKey);
     element.conversionElements.Add("PrimaryKeyCleanC", element.PrimaryKey == null ? string.Empty : element.PrimaryKey.ToStringCapitolize().Clean());
     element.conversionElements.Add("primarykey", element.PrimaryKey == null ? string.Empty : element.PrimaryKey.ToLower());
     //
     element.conversionElements.Add("Table", element.Name.Replace("-", "_"));
     //
     element.conversionElements.Add("TableName", element.Name);
     element.conversionElements.Add("tablename", element.Name.ToLower());
     //
     element.conversionElements.Add("TableNameC", element.Name.ToStringCapitolize());
     element.conversionElements.Add("TableNameClean", element.FriendlyName);
     element.conversionElements.Add("tablenameclean", element.FriendlyName.ToLower());
     element.conversionElements.Add("TableNameCClean", element.FriendlyName.ToStringCapitolize());
     //
     element.conversionElements.Add("TableCleanName", element.Name.Clean());
     element.conversionElements.Add("TableCleanNameC", element.Name.Clean().ToStringCapitolize());
     //
     element.conversionElements.Add("AdapterNs", element.NsAdapter);
     element.conversionElements.Add("AdapterT", element.TAdapter);
     element.conversionElements.Add("AdapterNsT", element.TypeAdapter);
     //
     element.conversionElements.Add("CommandNs", element.NsCommand);
     element.conversionElements.Add("CommandT", element.TCommand);
     element.conversionElements.Add("CommandNsT", element.TypeCommand);
     //
     element.conversionElements.Add("ConnectionNs", element.NsConnection);
     element.conversionElements.Add("ConnectionT", element.TConnection);
     element.conversionElements.Add("ConnectionNsT", element.TypeConnection);
     //
     element.conversionElements.Add("ParameterT", element.TParameter);
     //
     element.conversionElements.Add("ReaderNs", element.NsReader);
     element.conversionElements.Add("ReaderT", element.TReader);
     element.conversionElements.Add("ReaderNsT", element.TypeReader);
     //
     element.conversionElements.Add("Date", DateTime.Now.ToString("MM/dd/yyyy"));
     element.conversionElements.Add("Time", DateTime.Now.ToString("hh:mm.ss tt"));
     element.conversionElements.Add("DateTime", string.Format("{0:MM/dd/yyyy} {1:hh:mm.ss tt}", DateTime.Now, DateTime.Now));
     //
     if (element.PrimaryKey == null)
     {
         System.Windows.Forms.MessageBox.Show("Table must provide a primary key", "Please check the table.");
         return;
     }
     else if (element.PrimaryKey != string.Empty)
     {
         element.conversionElements.Add("PKDataName", element.PrimaryKeyElement.DataName);
         element.conversionElements.Add("PKDataType", element.PrimaryKeyElement.DataType);
         element.conversionElements.Add("PKDataTypeNative", element.PrimaryKeyElement.DataTypeNative);
         element.conversionElements.Add("PKNativeNullType", NullableTypeUtility.GetNativeNullType(element.PrimaryKeyElement["Native"].ToString()));
         element.conversionElements.Add("PKNativeNullValue", NullableTypeUtility.IsNativeNullable(element.PrimaryKeyElement["Native"].ToString()) ? ".Value" : "");
         //				Add("PKDataTypeNative",		PrimaryKeyElement.DataTypeNative);
         element.conversionElements.Add("PKDescription", element.PrimaryKeyElement.Description);
         //
         element.conversionElements.Add("PKDataNameC", element.PrimaryKeyElement.DataName.ToStringCapitolize());
         element.conversionElements.Add("PKCleanName", element.PrimaryKeyElement.DataName.Replace("-", "_"));
         element.conversionElements.Add("PKCleanName,Nodash", element.PrimaryKeyElement.DataName.Clean());
         element.conversionElements.Add("PKFriendlyName", element.PrimaryKeyElement.DataName.Clean());
         element.conversionElements.Add("PKFriendlyNameC", element.PrimaryKeyElement.DataName.Clean().ToStringCapitolize());
     }
     else
     {
         Global.statR(ResourceUtil.ResourceManager.GetString("TableElement_PrimaryKeyNotFound"), element.Name);
     }
 }
Пример #14
0
 private void buttonCancel_Click(object sender, RoutedEventArgs e)
 {
     dialogRes = null;
     Close();
 }
Пример #15
0
        /// <summary>
        /// Gets the syntax for the creation of an anonymous type.
        /// </summary>
        /// <param name="tableElement">The description of a table.</param>
        /// <returns>A set of expression that enlists the table in a transaction.</returns>
        public static List <StatementSyntax> GetSyntax(TableElement tableElement)
        {
            // Validate the argument.
            if (tableElement == null)
            {
                throw new ArgumentNullException(nameof(tableElement));
            }

            // This is used to collect the statements.
            List <StatementSyntax> statements = new List <StatementSyntax>();

            //                transaction.EnlistVolatile(this.domain.Accounts, EnlistmentOptions.None);
            statements.Add(
                SyntaxFactory.ExpressionStatement(
                    SyntaxFactory.InvocationExpression(
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.IdentifierName("transaction"),
                            SyntaxFactory.IdentifierName("EnlistVolatile")))
                    .WithArgumentList(
                        SyntaxFactory.ArgumentList(
                            SyntaxFactory.SeparatedList <ArgumentSyntax>(
                                new SyntaxNodeOrToken[]
            {
                SyntaxFactory.Argument(
                    SyntaxFactory.MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.ThisExpression(),
                            SyntaxFactory.IdentifierName(tableElement.XmlSchemaDocument.Domain.ToVariableName())),
                        SyntaxFactory.IdentifierName(tableElement.Name.ToPlural()))),
                SyntaxFactory.Token(SyntaxKind.CommaToken),
                SyntaxFactory.Argument(
                    SyntaxFactory.MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        SyntaxFactory.IdentifierName("EnlistmentOptions"),
                        SyntaxFactory.IdentifierName("None"))),
            })))));

            // Enlist each of the unique key indices in this transaction.
            foreach (UniqueKeyElement uniqueKeyElement in tableElement.UniqueKeys)
            {
                //                transaction.EnlistVolatile(this.domain.Accounts.AccountExternalKey, EnlistmentOptions.None);
                statements.Add(
                    SyntaxFactory.ExpressionStatement(
                        SyntaxFactory.InvocationExpression(
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.IdentifierName("transaction"),
                                SyntaxFactory.IdentifierName("EnlistVolatile")))
                        .WithArgumentList(
                            SyntaxFactory.ArgumentList(
                                SyntaxFactory.SeparatedList <ArgumentSyntax>(
                                    new SyntaxNodeOrToken[]
                {
                    SyntaxFactory.Argument(
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    SyntaxFactory.ThisExpression(),
                                    SyntaxFactory.IdentifierName(tableElement.XmlSchemaDocument.Domain.ToVariableName())),
                                SyntaxFactory.IdentifierName(uniqueKeyElement.Table.Name.ToPlural())),
                            SyntaxFactory.IdentifierName(uniqueKeyElement.Name))),
                    SyntaxFactory.Token(SyntaxKind.CommaToken),
                    SyntaxFactory.Argument(
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.IdentifierName("EnlistmentOptions"),
                            SyntaxFactory.IdentifierName("None"))),
                })))));
            }

            // Enlist each of the foreign key indices in this transaction.
            foreach (ForeignKeyElement foreignKeyElement in tableElement.ParentKeys)
            {
                //                transaction.EnlistVolatile(this.domain.Accounts.EntityAccountKey, EnlistmentOptions.None);
                statements.Add(
                    SyntaxFactory.ExpressionStatement(
                        SyntaxFactory.InvocationExpression(
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.IdentifierName("transaction"),
                                SyntaxFactory.IdentifierName("EnlistVolatile")))
                        .WithArgumentList(
                            SyntaxFactory.ArgumentList(
                                SyntaxFactory.SeparatedList <ArgumentSyntax>(
                                    new SyntaxNodeOrToken[]
                {
                    SyntaxFactory.Argument(
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.MemberAccessExpression(
                                SyntaxKind.SimpleMemberAccessExpression,
                                SyntaxFactory.MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    SyntaxFactory.ThisExpression(),
                                    SyntaxFactory.IdentifierName(tableElement.XmlSchemaDocument.Domain.ToVariableName())),
                                SyntaxFactory.IdentifierName(foreignKeyElement.Table.Name.ToPlural())),
                            SyntaxFactory.IdentifierName(foreignKeyElement.Name))),
                    SyntaxFactory.Token(SyntaxKind.CommaToken),
                    SyntaxFactory.Argument(
                        SyntaxFactory.MemberAccessExpression(
                            SyntaxKind.SimpleMemberAccessExpression,
                            SyntaxFactory.IdentifierName("EnlistmentOptions"),
                            SyntaxFactory.IdentifierName("None"))),
                })))));
            }

            // This set of statement will enlist the indices and tables in the current transaction and acquire an exclusive lock.
            return(statements);
        }
Пример #16
0
        public static bool Delete(string orderID)
        {
            TableElement te = new TableElement("OrderID", orderID);

            return(m_db.Delete(te));
        }
Пример #17
0
 public static string ReplaceValues(TableElement table, string tableTemplate)
 {
     table.InitializeDictionary();
     return(table.Reformat(tableTemplate));
 }
 private void ProcessItemRepeaterElement(TableElement itemRepeaterElement, DataReader dataReader, int index,
                                             XElement previous)
 {            
     var expression = itemRepeaterElement.Expression;
     var readers = dataReader.GetReaders(expression);
     var itemRepeaterTag = GenerateItemRepeaterTag(itemRepeaterElement);         
     var generator = new ItemRepeaterGenerator();
     generator.Generate(itemRepeaterTag, readers.ToList());
 }
Пример #19
0
        private void BuildTable()
        {
            for (int i = 0; i < CSet.Count; i++)
            {
                Table[i] = new Dictionary <IProductionElement, TableElement>();
            }

            for (int i = 0; i < CSet.Count; i++)
            {
                var node = CSet[i];

                foreach (var element in node.Elements)
                {
                    var rule = element.GrammarRule;

                    if (rule.DotPos < rule.ProductionElements.Count)
                    {
                        var pe = rule.ProductionElements[rule.DotPos];
                        if (pe is NonTerminalProduction)
                        {
                            continue;
                        }
                        var requiredState = new TableElement(TableCellState.Shift, node.Edges[pe].Index);
                        if (!Table[i].ContainsKey(pe) || Table[i][pe].Equals(requiredState))
                        {
                            Table[i][pe] = new TableElement(TableCellState.Shift, node.Edges[pe].Index);
                        }
                        else
                        {
                            throw new Exception("The grammar is not LALR");
                        }
                    }
                    else
                    {
                        if (rule.Nonterminal.Equals(grammarBuilder.StartNonTerminal))
                        {
                            var requiredState = new TableElement(TableCellState.Accept, -1);
                            if (!Table[i].ContainsKey(new EOFProduction()) || Table[i][new EOFProduction()].Equals(requiredState))
                            {
                                Table[i][new EOFProduction()] = requiredState;
                            }
                            else
                            {
                                throw new Exception("The grammar is not LALR");
                            }
                        }
                        else
                        {
                            foreach (var terminalProduction in element.TerminalProductions)
                            {
                                var requiredState = new TableElement(TableCellState.Reduce, rule.RuleIndex);
                                if (!Table[i].ContainsKey(terminalProduction) || Table[i][terminalProduction].Equals(requiredState))
                                {
                                    Table[i][terminalProduction] = requiredState;
                                }
                                else
                                {
                                    throw new Exception("The grammar is not LALR");
                                }
                            }
                        }
                    }
                }

                foreach (var nonterminal in grammarBuilder.NonTerminals.Values)
                {
                    var pe = new NonTerminalProduction(nonterminal.Name);
                    if (node.Edges.ContainsKey(pe))
                    {
                        var requiredState = new TableElement(TableCellState.Goto, node.Edges[pe].Index);
                        if (!Table[i].ContainsKey(pe) || Table[i][pe].Equals(requiredState))
                        {
                            Table[i][pe] = requiredState;
                        }
                        else
                        {
                            throw new Exception("The grammar is not LR(1)");
                        }
                    }
                }
            }
        }
        private XElement ProcessItemIfElement(TableElement itemIfElement, DataReader dataReader, int index, XElement previous)
        {
            bool condition;
            try
            {
                condition = bool.Parse(dataReader.ReadText(itemIfElement.Expression));
            }
            catch (FormatException)
            {
                condition = false;
            }
            catch (System.Xml.XPath.XPathException)
            {
                condition = false;
            }
            var currentCell = itemIfElement.StartTag.Ancestors().First(element => element.Name == WordMl.TableCellName); 
            if (condition)
            {
                this.ProcessElements(itemIfElement.TagElements, dataReader, index, previous, false);
                itemIfElement.StartTag.Remove();
                itemIfElement.EndTag.Remove();

                if (previous != null && !previous.Equals(currentCell))
                {
                    currentCell.Remove();
                    previous.AddAfterSelf(currentCell);
                }
            }
            else
            {
                this.CleanUp(itemIfElement.StartTag, itemIfElement.EndTag);
                if (!currentCell.Elements(WordMl.ParagraphName).Any())
                {
                    currentCell.Add(new XElement(WordMl.ParagraphName));
                }
                  
                if (previous != null && !previous.Equals(currentCell))
                {
                    currentCell.Remove();
                    previous.AddAfterSelf(currentCell);
                }
                else if (previous == null)
                {
                    var parentRow = currentCell.Parent;
                    currentCell.Remove();
                    parentRow.Add(currentCell);
                }
            }
            return currentCell;
        }
Пример #21
0
 public DataTable(int pageNumber, string searchText, TableDTO tableDTO)
 {
     TableDiv = TableElement.ObjectToAdvancedTableElement(tableDTO.Headers, tableDTO.Rows);
 }
        private XElement ProcessCell(TableElement tableElement, XElement previous, string text)
        {
            var isInnerCell = tableElement.HasCell();
            var currentCell = this.CurrentCell(tableElement);
            previous = this.ProcessStaticCells(tableElement, previous);

            var parent = isInnerCell ? currentCell: tableElement.StartTag.Parent;
            var result = DocxHelper.CreateTextElement(
                tableElement.StartTag,
                parent,
                text);
            if (!isInnerCell)
            {
                tableElement.StartTag.AddAfterSelf(result);
            }
            else
            {
                if (currentCell.Elements(WordMl.ParagraphName).Any())
                {
                    currentCell.Elements(WordMl.ParagraphName).Remove();
                }                 
                currentCell.Add(result);
            }

            if (previous != null && !previous.Equals(currentCell))
            {
                currentCell.Remove();
                previous.AddAfterSelf(currentCell);
            }
            else if (previous == null)
            {
                var parentRow = isInnerCell ? tableElement.StartTag.Parent : currentCell.Parent;
                currentCell.Remove();
                parentRow.Add(currentCell);
            }
            
            return currentCell;
        }
        public void TestProcessWithStaticCells()
        {
            XElement root;
            using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "TableProcessorWithStaticCellsTest.xml"))
            {
                var document = XDocument.Load(docStream);
                root = document.Root.Element(WordMl.BodyName);
            }
            var tableTag = this.GetTableTag(root);

            Func<XElement, IEnumerable<TableElement>> MakeTableElementCallback = element =>
            {
                var tags = element.Descendants(WordMl.SdtName).ToList();

                var index =
                    tags.Find(
                        e =>
                        e.Element(WordMl.SdtPrName)
                         .Element(WordMl.TagName)
                         .Attribute(WordMl.ValAttributeName)
                         .Value.ToLower()
                         .Equals("itemindex"));
                var issueDate =
                    tags.Find(
                        e =>
                        e.Element(WordMl.SdtPrName)
                         .Element(WordMl.TagName)
                         .Attribute(WordMl.ValAttributeName)
                         .Value.ToLower()
                         .Equals("itemtext") && e.Element(WordMl.SdtContentName).Value == "./IssueDate");


                IEnumerable<TableElement> tableElements = new TableElement[]
                                                                  {
                                                                      new TableElement
                                                                          {
                                                                              IsIndex = true,
                                                                              IsItem = false,
                                                                              IsItemIf = false,
                                                                              StartTag = index,
                                                                          },
                                                                      new TableElement
                                                                          {
                                                                              IsItem = true,
                                                                              IsIndex = false,
                                                                              IsItemIf = false,
                                                                              StartTag = issueDate,
                                                                              Expression = "./IssueDate"
                                                                          },
                                                                  };
                return tableElements;
            };

            tableTag.MakeTableElementCallback = MakeTableElementCallback;

            var tableProcessor = new TableProcessor
            {
                TableTag = tableTag,
                DataReader = this.dataReader
            };
            tableProcessor.Process();

            var expectedTableStructure = new[]
                {
                new[] { "#", "Certificate", "Date" },
                new[] { string.Empty, string.Empty, "Issue", "Expiration" },
                new[] { "1", "2", "3", "4" },
                new[] { "1", "First static text", "01.04.2014", "Second static text" },
                new[] { "2", "First static text", "01.03.2014", "Second static text" },
                new[] { "3", "First static text", "01.01.2011", "Second static text" },
                new[] { "This", "row", "stays", "untouched" },
            };

            var rows = tableTag.Table.Elements(WordMl.TableRowName).ToList();
            Assert.AreEqual(expectedTableStructure.Count(), rows.Count());
            int rowIndex = 0;
            foreach (var row in rows)
            {
                var expectedRow = expectedTableStructure[rowIndex];

                var cellsInRow = row.Elements(WordMl.TableCellName).ToList();

                Assert.AreEqual(expectedRow.Count(), cellsInRow.Count());

                int cellIndex = 0;
                foreach (var cell in cellsInRow)
                {
                    Assert.AreEqual(expectedRow[cellIndex], cell.Value);
                    cellIndex++;
                }

                rowIndex++;
            }
            this.ValidateTagsRemoved(root);
        }
        private XElement ProcessStaticCells(TableElement tableElement, XElement previous)
        {
            var currentElement = tableElement.HasCell()
                                  ? tableElement.StartTag
                                  : this.CurrentCell(tableElement);

            return ProcessStaticCells(currentElement, previous);
        }
        public void TestProcessItemIfCells()
        {
            XElement root;
            using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "TableItemIfsTest.xml"))
            {
                var document = XDocument.Load(docStream);
                root = document.Root.Element(WordMl.BodyName);
            }
            var tableTag = this.GetTableTag(root);

            XDocument data;
            using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "TableItemIfsData.xml"))
            {
                data = XDocument.Load(docStream);
            }

            Func<XElement, IEnumerable<TableElement>> MakeTableElementCallback = element =>
            {
                var cells = element.Descendants(WordMl.TableCellName).ToList();
                ICollection<TableElement> tableElements = new Collection<TableElement>();
                foreach (var cell in cells)
                {
                    var cellTags = cell.Descendants(WordMl.SdtName).ToList();
                    var firtsIf = new TableElement
                                      {
                                          IsIndex = false,
                                          IsItem = false,
                                          IsItemIf = true,
                                          StartTag = cellTags[0],
                                          EndTag = cellTags[2],
                                          Expression = cellTags[0].Value,
                                          TagElements =
                                              new TableElement[]
                                                  {
                                                      new TableElement
                                                          {
                                                              IsIndex = false,
                                                              IsItemIf = false,
                                                              IsItem = true,
                                                              StartTag = cellTags[1],
                                                              Expression = cellTags[1].Value,
                                                          }
                                                  }
                                      };

                    var secondIf = new TableElement
                                       {
                                           IsIndex = false,
                                           IsItem = false,
                                           IsItemIf = true,
                                           StartTag = cellTags[3],
                                           EndTag = cellTags[5],
                                           Expression = cellTags[3].Value,
                                           TagElements =
                                               new TableElement[]
                                                   {
                                                       new TableElement
                                                           {
                                                               IsIndex = false,
                                                               IsItemIf = false,
                                                               IsItem = true,
                                                               StartTag = cellTags[4],
                                                               Expression = cellTags[4].Value,
                                                           }
                                                   }
                                       };

                    tableElements.Add(firtsIf);
                    tableElements.Add(secondIf);
                }

                return tableElements;
            };

            tableTag.MakeTableElementCallback = MakeTableElementCallback;

            var tableProcessor = new TableProcessor
            {
                TableTag = tableTag,
                DataReader = DataReaderFactory.CreateReader(data)
            };
            tableProcessor.Process();

            var expectedTableStructure = new[]
                {
                new[] { "#", "Certificate", "Date" },
                new[] { string.Empty, string.Empty, "Issue", "Expiration" },
                new[] { "1", "2", "3", "4" },
                new[] { "row1 - value1", "row1 - value2", "row1 - value3", "row1 - value4" },
                new[] { "row2 - value1", "row2 - value2", "row2 - value3", "row2 - value4" },
                new[] { "row3 - value1", "row3 - value2", "row3 - value3", "row3 - value4" },
                new[] { "row4 - value1", "row4 - value2", "row4 - value3", "row4 - value4" },
                new[] { "row5 - value1", "row5 - value2", "row5 - value3", "row5 - value4" },
                new[] { "This", "row", "stays", "untouched" },
            };

            var rows = tableTag.Table.Elements(WordMl.TableRowName).ToList();
            Assert.AreEqual(expectedTableStructure.Count(), rows.Count());
            int rowIndex = 0;
            foreach (var row in rows)
            {
                var expectedRow = expectedTableStructure[rowIndex];

                var cellsInRow = row.Elements(WordMl.TableCellName).ToList();

                Assert.AreEqual(expectedRow.Count(), cellsInRow.Count());

                int cellIndex = 0;
                foreach (var cell in cellsInRow)
                {
                    Assert.AreEqual(expectedRow[cellIndex], cell.Value);
                    cellIndex++;
                }

                rowIndex++;
            }
            /*
            var tagsBetween =
                tableTag.TagTable.ElementsAfterSelf().Where(element => element.IsBefore(tableTag.TagContent));
            Assert.IsFalse(tagsBetween.Any());

            tagsBetween =
                tableTag.TagEndContent.ElementsAfterSelf().Where(element => element.IsBefore(tableTag.TagEndTable));
            Assert.IsFalse(tagsBetween.Any());*/
            this.ValidateTagsRemoved(root);
        }
 private XElement CurrentCell(TableElement tableElement)
 {
     return tableElement.StartTag.Descendants(WordMl.TableCellName).FirstOrDefault()
            ?? tableElement.StartTag.Ancestors().First(element => element.Name == WordMl.TableCellName);
 }
Пример #27
0
        public void TableElementForValidElement()
        {
            var tableElement = new TableElement(_tableSearchFilterDemoPage.TaskTable);

            tableElement.Should().NotBeNull();
        }
Пример #28
0
        public static IElement ParseElement(string localizedType, string designedId, string designedName, IElement parent)
        {
            IElement element = null;

            switch (localizedType.ToLower())
            {
            case ElementBase.WINDOW:
                element = new WindowElement();
                element.Attributes.ElementType = ElementBase.WINDOW_TYPE;
                break;

            case ElementBase.DIALOG:
                element = new WindowElement();
                element.Attributes.ElementType = ElementBase.DIALOG_TYPE;
                break;

            case ElementBase.BUTTON:
                element = new ButtonElement();
                element.Attributes.ElementType = ElementBase.BUTTON_TYPE;
                break;

            case ElementBase.COMBO_BOX:
                element = new ComboBoxElement();
                element.Attributes.ElementType = ElementBase.COMBOBOX_TYPE;
                break;

            case ElementBase.TEXT:
                element = new TextElement();
                element.Attributes.ElementType = ElementBase.TEXT_TYPE;
                break;

            case ElementBase.PANE:
                element = new ContainerElement();
                element.Attributes.ElementType = ElementBase.CONTAINER_TYPE;
                break;

            case ElementBase.TITLE_BAR:
                element = new TitleBarElement();
                element.Attributes.ElementType = ElementBase.TITLEBAR_TYPE;
                break;

            case ElementBase.MENU_BAR:
                element = new MenuBarElement();
                element.Attributes.ElementType = ElementBase.MENUBAR_TYPE;
                break;

            case ElementBase.DOCUMENT:
                element = new EditableTextElement();
                element.Attributes.ElementType = ElementBase.EDITABLETEXT_TYPE;
                break;

            case ElementBase.TAB:
                element = new TabPageElement();
                element.Attributes.ElementType = ElementBase.TABPAGE_TYPE;
                break;

            case ElementBase.TAB_ITEM:
                element = new TabItemElement();
                element.Attributes.ElementType = ElementBase.TABITEM_TYPE;
                break;

            case ElementBase.SCROLL_BAR:
                element = new ScrollBarElement();
                element.Attributes.ElementType = ElementBase.SCROLLBAR_TYPE;
                break;

            //case THUMB:
            case ElementBase.TREE:
                element = new TreeViewElement();
                element.Attributes.ElementType = ElementBase.TREEVIEW_TYPE;
                break;

            case ElementBase.TREE_VIEW:
                element = new TreeViewElement();
                element.Attributes.ElementType = ElementBase.TREEVIEW_TYPE;
                break;

            case ElementBase.TREE_ITEM:
                element = new TreeItemElement();
                element.Attributes.ElementType = ElementBase.TREEITEM_TYPE;
                break;

            case ElementBase.TABLE:
                element = new TableElement();
                element.Attributes.ElementType = ElementBase.TABLE_TYPE;
                break;

            //?
            case ElementBase.HEADER:
                element = new HeaderElement();
                element.Attributes.ElementType = ElementBase.HEADER_TYPE;
                break;

            case ElementBase.ITEM:
                if (parent != null && (parent is TableElement || parent is DatagridElement))
                {
                    element = new RowElement();
                    element.Attributes.ElementType = ElementBase.ROW_TYPE;
                }
                break;

            case ElementBase.LIST:     //(listview or checkedlistbox)
                element = new ListElement();
                element.Attributes.ElementType = ElementBase.LIST_TYPE;
                break;

            case ElementBase.LIST_VIEW:     //(listview or checkedlistbox)
                element = new ListElement();
                element.Attributes.ElementType = ElementBase.LIST_TYPE;
                break;

            case ElementBase.LIST_ITEM:     //(table)
                element = new ListItemElement();
                element.Attributes.ElementType = ElementBase.LISTITEM_TYPE;
                break;

            case ElementBase.EDIT:     //textbox
                element = new EditableTextElement();
                element.Attributes.ElementType = ElementBase.EDITABLETEXT_TYPE;
                break;

            case ElementBase.CHECK_BOX:
                element = new CheckBoxElement();
                element.Attributes.ElementType = ElementBase.CHECKBOX_TYPE;
                break;

            case ElementBase.RADIO_BUTTON:
                element = new RadioButtonElement();
                element.Attributes.ElementType = ElementBase.RADIO_BUTTON_TYPE;
                break;

            case ElementBase.CALENDAR:
                element = new CalendarElement();
                element.Attributes.ElementType = "Calendar";
                break;

            case ElementBase.CUSTOM:
                element = new CustomElement();
                element.Attributes.ElementType = "Custom";
                break;

            case ElementBase.DATAGRID:
                element = new DatagridElement();
                element.Attributes.ElementType = "DataGrid";
                break;

            case ElementBase.DATAGRID2:
                element = new DatagridElement();
                element.Attributes.ElementType = "DataGrid";
                break;

            case ElementBase.DATAITEM:
                element = new DataitemElement();
                element.Attributes.ElementType = "dataitem";
                break;

            case ElementBase.GROUP:
                element = new GroupELement();
                element.Attributes.ElementType = ElementBase.GROUP_TYPE;
                break;

            case ElementBase.HEADER_ITEM:
                element = new HeaderItemElement();
                element.Attributes.ElementType = "HeaderItem";
                break;

            case ElementBase.HYPERLINK:
                element = new LinkElement();
                element.Attributes.ElementType = "Hyperlink";
                break;

            case ElementBase.IMAGE:
                element = new ImageElement();
                element.Attributes.ElementType = "Image";
                break;

            case ElementBase.MENU:
                element = new MenuElement();
                element.Attributes.ElementType = "Menu";
                break;

            case ElementBase.PROGRESS_BAR:
                element = new ProgressBarElement();
                element.Attributes.ElementType = "ProgressBar";
                break;

            case ElementBase.SEPARATOR:
                element = new SeparatorElement();
                element.Attributes.ElementType = "Separator";
                break;

            case ElementBase.SLIDER:
                element = new SliderElement();
                element.Attributes.ElementType = "Slider";
                break;

            case ElementBase.SPINNER:
                element = new SpinnerElement();
                element.Attributes.ElementType = "Spinner";
                break;

            case ElementBase.SPLIT_BUTTON:
                element = new SplitButtonElement();
                element.Attributes.ElementType = "SplitButton";
                break;

            case ElementBase.STATUS_BAR:
                element = new StatusBarElement();
                element.Attributes.ElementType = "StatusBar";
                break;

            case ElementBase.TOOL_BAR:
                element = new ToolBarElement();
                element.Attributes.ElementType = "ToolBar";
                break;

            case ElementBase.TOOL_TIP:
                element = new ToolTipElement();
                element.Attributes.ElementType = "ToolTip";
                break;

            //?
            case ElementBase.MENU_ITEM:
                element = new MenuItemElement();
                element.Attributes.ElementType = "MenuItem";
                break;

            case ElementBase.LINK:
                element = new LinkElement();
                element.Attributes.ElementType = ElementBase.LINK_TYPE;
                break;
            }
            if (element == null)
            {
                if (parent is TableElement || parent is DatagridElement)
                {
                    element = new RowElement();
                    element.Attributes.ElementType = ElementBase.ROW_TYPE;
                }
                else if (parent is RowElement)
                {
                    element = new CellElement();
                    element.Attributes.ElementType = ElementBase.CELL_TYPE;
                }
                else
                {
                    element = new UnknownELement();
                    element.Attributes.ElementType = ElementBase.UNKNOWN_TYPE;
                }
            }
            element.Attributes.DesignedId = designedId;
            return(element);
        }