Exemple #1
0
        protected bool EnterChoiceContainer(Pair pair, PairCollection <Entity> entities, Pair implementationPair = null)
        {
            if (implementationPair == null)
            {
                implementationPair = pair;
            }
            if (implementationPair.Delimiter != DelimiterEnum.CC && implementationPair.Delimiter != DelimiterEnum.ECC ||
                entities == null || entities.Count == 0)
            {
                return(false);
            }

            var choice     = _choiceStack.Peek();
            var choiceInfo = JsonGenerator.FindChoiceInfo(choice, pair);

            if (choice.ChoiceNode != pair)
            {
                _choiceStack.Push(choiceInfo);
            }
            _choiceStack.Push(choiceInfo.Children[0]);
            if (((Element)choiceInfo.Children[0].ChoiceNode).Entities.Count > 0)
            {
                Visit(((Element)choiceInfo.Children[0].ChoiceNode).Entities);
            }

            _choiceStack.Pop();
            if (choice.ChoiceNode != pair)
            {
                _choiceStack.Pop();
            }
            return(true);
        }
        protected bool EnterChoiceContainer(DOM.Mapped.Alias alias, PairCollection <Entity> entities)
        {
            if (alias.AliasDefinition.Delimiter != DelimiterEnum.CC && alias.AliasDefinition.Delimiter != DelimiterEnum.ECC ||
                entities == null || entities.Count == 0)
            {
                return(false);
            }

            var choice     = _choiceStack.Peek();
            var choiceInfo = FindChoiceInfo(choice, alias);

            if (choice.ChoiceNode != alias)
            {
                _choiceStack.Push(choiceInfo);
            }
            _choiceStack.Push(choiceInfo.Children[0]);
            if (((Element)choiceInfo.Children[0].ChoiceNode).Entities.Count > 0)
            {
                Visit(((Element)choiceInfo.Children[0].ChoiceNode).Entities);
            }
            else
            {
                //Empty choice generates empty object
                _jsonWriter.WriteStartObject();
                _blockState.Push(BlockState.Object);
            }

            _choiceStack.Pop();
            if (choice.ChoiceNode != alias)
            {
                _choiceStack.Pop();
            }
            return(true);
        }
 public ContainerTemplate(SQLiteConnection conn) : base(new APMCore.Model.Container(-1))
 {
     DataBase     = conn;
     _pairsLocker = new object();
     _pairs       = new PairCollection();
     _filter      = null;
 }
Exemple #4
0
 public Container(APMCore.Model.Container source) : base(source)
 {
     _pairsLocker = new object();
     _workPairs   = new WorkPairCollection();
     _pairs       = new PairCollection();
     _opacity     = 1;
 }
        private int CalcNumOfRootElements(Alias alias)
        {
            int result   = 0;
            var aliasDef = alias.AliasDefinition;

            if (aliasDef == null)
            {
                return(0);
            }
            if (aliasDef.HasCircularReference)
            {
                return(0);
            }
            PairCollection <Entity> entities = null;

            if (aliasDef.Delimiter == DelimiterEnum.CC)
            {
                var choiceInfo = JsonGenerator.FindChoiceInfo(_choiceStack.Peek(), alias);
                if (choiceInfo?.Children != null)
                {
                    entities = ((Element)choiceInfo.Children[0].ChoiceNode).Entities;
                }
            }
            else
            {
                entities = aliasDef.Entities;
            }

            if (entities == null)
            {
                return(result);
            }
            foreach (var entity in entities)
            {
                if (entity is DOM.Element)
                {
                    result++;
                    continue;
                }

                var scopeEntity = entity as Scope;
                if (scopeEntity != null)
                {
                    result += CalcNumOfRootElements(scopeEntity);
                    continue;
                }

                var aliasEntity = entity as DOM.Alias;
                if (aliasEntity != null)
                {
                    result += CalcNumOfRootElements((Alias)aliasEntity);
                    continue;
                }
            }
            return(result);
        }
Exemple #6
0
        /// <summary>
        /// Checks if Choice Container should be created and creates it.
        /// </summary>
        /// <param name="pair">Current pair from visitor.</param>
        /// <param name="entities">Pairs entities. Empty pair is ignored because there are no choices.</param>
        /// <param name="implementationPair">Actual implementation of pair, (AliasDef is implementation of Alias for example )</param>
        /// <returns>True if Choice Container is found.</returns>
        private bool CheckStartOfChoiceContainer(Pair pair, PairCollection <Entity> entities, Pair implementationPair = null)
        {
            if (implementationPair == null)
            {
                implementationPair = pair;
            }
            if (implementationPair.Assignment != AssignmentEnum.CC && implementationPair.Assignment != AssignmentEnum.ECC || entities == null || entities.Count == 0)
            {
                return(false);
            }
            ChoiceInfo parent     = _choiceStack.Count == 0 ? null : _choiceStack.Peek();
            var        choiceInfo = new ChoiceInfo(parent, pair);

            _choiceStack.Push(choiceInfo);
            return(true);
        }
Exemple #7
0
        /// <summary>
        /// Tries to resolve a pair as a choice.
        /// </summary>
        /// <param name="pair">Pair being resolved.</param>
        /// <param name="entities">Entities of the pair.</param>
        /// <param name="implementationPair">If pair is an <see cref="Alias"/> then this parameter should get be an <see cref="DOM.AliasDefinition"/>.</param>
        /// <returns>True if pair is choice.</returns>
        protected bool EnterChoiceContainer(Pair pair, PairCollection <Entity> entities, Pair implementationPair = null)
        {
            if (implementationPair == null)
            {
                implementationPair = pair;
            }
            if (implementationPair.Assignment != AssignmentEnum.CC && implementationPair.Assignment != AssignmentEnum.ECC ||
                entities == null || entities.Count == 0)
            {
                return(false);
            }

            var choice     = ChoiceStack.Peek();
            var choiceInfo = FindChoiceInfo(choice, pair);

            if (choice.ChoiceNode != pair)
            {
                ChoiceStack.Push(choiceInfo);
            }
            ChoiceStack.Push(choiceInfo.Children[0]);
            if (((Element)choiceInfo.Children[0].ChoiceNode).Entities.Count > 0)
            {
                Visit(((Element)choiceInfo.Children[0].ChoiceNode).Entities);
            }
            else
            {
                //Empty choice generates empty object
                JsonWriter.WriteStartObject();
                BlockState.Push(BlockStateEnum.Object);
            }

            ChoiceStack.Pop();
            if (choice.ChoiceNode != pair)
            {
                ChoiceStack.Pop();
            }
            return(true);
        }
Exemple #8
0
 public static void Save(this IQuery query, string TableName, PairCollection values) => values.Each(x => query.Save(TableName, x));
Exemple #9
0
        public virtual MvcHtmlString Build(TModel model)
        {
            var sb = new StringBuilder(2000);

            using (var stringWriter = new StringWriter(sb))
                using (var textWriter = new HtmlTextWriter(stringWriter))
                {
                    var properties = model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

                    #region Hidden Fields

                    var hiddenFields = new List <PropertyInfo>();

                    foreach (var property in properties)
                    {
                        var keyAttribute = property.GetCustomAttributes(typeof(KeyAttribute), false).FirstOrDefault() as KeyAttribute;
                        if (keyAttribute != null)
                        {
                            hiddenFields.Add(property);
                        }
                    }

                    foreach (var property in hiddenFields)
                    {
                        textWriter.AddAttribute(HtmlTextWriterAttribute.Id, property.Name);
                        textWriter.AddAttribute(HtmlTextWriterAttribute.Name, property.Name);
                        textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");
                        textWriter.AddAttribute(HtmlTextWriterAttribute.Value, property.GetValue(model, null).ToString());
                        textWriter.RenderBeginTag(HtmlTextWriterTag.Input);
                        textWriter.RenderEndTag();
                    }

                    #endregion Hidden Fields

                    var groupedProperties = new PairCollection <string, PropertyInfo>();
                    foreach (var property in properties)
                    {
                        var displayAttribute = property.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault() as DisplayAttribute;

                        if (displayAttribute != null)
                        {
                            groupedProperties.Add(displayAttribute.GroupName, property);
                        }
                    }

                    bool useLegend = (groupedProperties.Select(x => x.First).Distinct().Count() > 1);
                    foreach (var groupedProperty in groupedProperties.OrderBy(x => x.First).GroupBy(x => x.First))
                    {
                        textWriter.RenderBeginTag(HtmlTextWriterTag.Fieldset);

                        if (useLegend)
                        {
                            if (!string.IsNullOrEmpty(groupedProperty.Key))
                            {
                                textWriter.RenderBeginTag(HtmlTextWriterTag.Legend);
                                textWriter.Write(groupedProperty.Key);
                                textWriter.RenderEndTag(); // legend
                            }
                            else
                            {
                                textWriter.RenderBeginTag(HtmlTextWriterTag.Legend);
                                textWriter.Write("General");
                                textWriter.RenderEndTag(); // legend
                            }
                        }

                        var orderedProperties = new PairCollection <int, PropertyInfo>();
                        foreach (var property in groupedProperty)
                        {
                            if (hiddenFields.Contains(property.Second))
                            {
                                continue;
                            }

                            var displayAttribute = property.Second.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault() as DisplayAttribute;

                            if (displayAttribute == null)
                            {
                                orderedProperties.Add(0, property.Second);
                            }
                            else
                            {
                                orderedProperties.Add(displayAttribute.GetOrder() ?? 0, property.Second);
                            }
                        }

                        foreach (var property in orderedProperties.OrderBy(x => x.First).Select(x => x.Second))
                        {
                            if (hiddenFields.Contains(property))
                            {
                                continue;
                            }

                            #region DisplayAttribute

                            string displayName      = property.Name;
                            var    displayAttribute = property.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault() as DisplayAttribute;

                            if (displayAttribute != null)
                            {
                                if (!string.IsNullOrEmpty(displayAttribute.Name))
                                {
                                    displayName = displayAttribute.Name;
                                }
                            }

                            #endregion DisplayAttribute

                            // Control-Group
                            textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "control-group");
                            textWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                            // Label
                            textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "control-label");
                            textWriter.AddAttribute(HtmlTextWriterAttribute.For, property.Name);
                            textWriter.RenderBeginTag(HtmlTextWriterTag.Label);
                            textWriter.Write(displayName);
                            textWriter.RenderEndTag(); // label

                            // Controls Div
                            textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "controls");
                            textWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                            // Control
                            RenderDynamicControl(textWriter, model, property);

                            textWriter.RenderEndTag(); // div (Controls Div)
                            textWriter.RenderEndTag(); // div (Control-Group)
                        }

                        textWriter.RenderEndTag(); // fieldset
                    }

                    // Buttons Control-Group
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "control-group");
                    textWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                    // Controls Div
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "controls");
                    textWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                    // Submit Button
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "submit");
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "btn btn-primary");
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Value, "Submit");
                    textWriter.RenderBeginTag(HtmlTextWriterTag.Input);
                    textWriter.RenderEndTag(); //</input>

                    textWriter.Write("&nbsp;&nbsp;");

                    // Cancel Button
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "button");
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "btn");
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Value, "Cancel");
                    textWriter.AddAttribute(HtmlTextWriterAttribute.Onclick, "window.location = '" + helper.ViewContext.HttpContext.Request.UrlReferrer + "'");
                    textWriter.RenderBeginTag(HtmlTextWriterTag.Input);
                    textWriter.RenderEndTag(); //</input>

                    textWriter.RenderEndTag(); // div (Controls Div)

                    textWriter.RenderEndTag(); // div (Buttons Control-Group)

                    return(new MvcHtmlString(sb.ToString()));
                }
        }