internal IContentElement take(IContentElement qReference, contentRelationType qRelation)
        {
            switch (qRelation)
            {
            case contentRelationType.self:
                return(qReference);

                break;

            case contentRelationType.next:
                return(qReference.next);

                break;

            case contentRelationType.prev:
                return(qReference.next);

                break;

            case contentRelationType.parent:
                return(qReference.parent);

                break;
            }
            return(null);
        }
Exemple #2
0
        public UIView CreateElementView(IContentElement element)
        {
            foreach (var alternate in element.Alternates)
            {
                var locatedAlternate = alternate;
                var path             = NSBundle.MainBundle.PathForResource(locatedAlternate, "nib");

                if (path == null)
                {
                    locatedAlternate += "_";
                    path              = NSBundle.MainBundle.PathForResource(locatedAlternate, "nib");
                }

                if (path != null)
                {
                    var arr  = NSBundle.MainBundle.LoadNib(locatedAlternate, null, null);
                    var view = Runtime.GetNSObject <UIView>(arr.ValueAt(0));

                    view.TranslatesAutoresizingMaskIntoConstraints = false;

                    if (view is ElementView)
                    {
                        var elementView = (ElementView)view;
                        elementView.DisplayContext = _displayContext;
                        elementView.SetElement(element);
                    }

                    return(view);
                }
            }

            return(null);
        }
        /// <summary>
        /// обходит element ища все elementType и выполняя для каждого action
        /// </summary>
        /// <param name="element"></param>
        /// <param name="elementType"></param>
        /// <param name="action">если вернул false то обход прекращается</param>
        /// <param name="traverseInsideMatchedTypes">проходить ли внутрь элементов elementType после вызова action</param>
        /// <returns>был ли обход досрочно остановлен</returns>
        static bool TraverseElement(IContentElement element, ElementType elementType, Func <Element, bool> action, bool traverseInsideMatchedTypes)
        {
            foreach (var collection in element.Content)
            {
                foreach (var elementInCollection in collection)
                {
                    bool traverseInsideCurrentElement = elementInCollection is IContentElement;

                    if (elementInCollection.ElementType == elementType)
                    {
                        if (!action(elementInCollection))
                        {
                            return(false);
                        }

                        if (!traverseInsideMatchedTypes)
                        {
                            traverseInsideCurrentElement = false;
                        }
                    }

                    if (traverseInsideCurrentElement)
                    {
                        if (!TraverseElement((IContentElement)elementInCollection, elementType, action, traverseInsideMatchedTypes))
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
        // private IImbCollections _items;

        /// <summary>
        /// Podešava PREV i NEXT za nlpBase klase -- i dodaje item u svoju items kolekciju
        /// </summary>
        /// <remarks>
        /// Radiće u slučaju da je item član liste kao i da nije. Ako nije dodeliće mu prev kao last
        /// </remarks>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        public IContentElement setItem(IContentElement newItem)
        {
            IContentElement source = this as IContentElement;

            if (newItem == this)
            {
                return(newItem);
            }
            if (source == null)
            {
                return(null);
            }
            if (!source.items.Contains(newItem))
            {
                source.items.Add(newItem);
            }

            newItem.parent = this as IContentElement;
            source.items.Nest(newItem);

            //   ind = source.items.IndexOf(newItem);

            /*
             * if (id > 0)
             * {
             *  newItem.prev = source.items.items[ind - 1] as IContentElement;
             *  newItem.prev.next = newItem;
             * }
             */
            return(newItem);
        }
        public override string getNodeName(IObjectWithPathAndChildSelector source, string defName = "")
        {
            string output = defName;

            if (source is IContentPage)
            {
                output = "C";
            }
            else if (source is IContentBlock)
            {
                output = "B";
            }
            else if (source is IContentParagraph)
            {
                output = "P";
            }
            else if (source is IContentSentence)
            {
                output = "S";
            }
            else if (source is IContentToken)
            {
                output = "T";
            }

            if (source is IContentElement)
            {
                IContentElement source_IContentToken = (IContentElement)source;
                output = output + source_IContentToken.id;
            }

            return(output);
        }
        public static ContentField GetField(this IContentElement contentItem, string name)
        {
            if (contentItem.Fields.TryGetValue(name, out ContentField? contentField) == false)
            {
                throw new Exception($"The field '{name}' was not found.");
            }

            return(contentField);
        }
        /// <summary>
        /// Osvezava vezu za prethodnim elementom -- i prijavljuje se kod njega kao sledeci element
        /// </summary>
        /// <param name="item"></param>
        public void Nest(IContentElement item)
        {
            int ps = IndexOf(item as T);

            if (ps > 0)
            {
                item.prev      = this[ps - 1];
                item.prev.next = item;
            }
        }
 public override void SetElement(IContentElement contentElement)
 {
     if (contentElement is TElement)
     {
         Element = (TElement)contentElement;
         Bind();
     }
     else
     {
         throw new InvalidCastException($"Tried to create a {GetType().Name} with a {contentElement.GetType().Name}");
     }
 }
        internal IContentElement takeIndex(IContentElement qReference, contentRelationType qRelation, int i, int limit = -1)
        {
            IContentElement hIndex;

            hIndex = take(qReference, qRelation);
            if (limit != -1)
            {
                if (i > limit)
                {
                    hIndex = null;
                }
            }
            return(hIndex);
        }
        RectangleF ISelectable.GetSelectionRectangle(MapGraphics g, RectangleF clipRect)
        {
            RectangleF           rectangleF    = RectangleF.Empty;
            List <ILayerElement> layerElements = this.GetLayerElements();

            foreach (ISelectable item in layerElements)
            {
                bool            flag           = false;
                IContentElement contentElement = item as IContentElement;
                if ((contentElement == null) ? item.IsVisible() : contentElement.IsVisible(g, this, false, clipRect))
                {
                    rectangleF = ((!rectangleF.IsEmpty) ? RectangleF.Union(rectangleF, item.GetSelectionRectangle(g, clipRect)) : item.GetSelectionRectangle(g, clipRect));
                }
            }
            return(rectangleF);
        }
Exemple #11
0
        public static void FromBsonValue(this BsonValue bsonValue, string fieldName, IContentElement contentItem, IContentSchema schema)
        {
            if (bsonValue == BsonNull.Value)
            {
                return;
            }

            if (contentItem.Fields.TryGetValue(fieldName, out ContentField? contentField))
            {
                if (schema.Fields.TryGetValue(fieldName, out ContentSchemaField? schemaField))
                {
                    IFieldSerializer fieldSerializer = MongoFieldManager.Default.GetByType(contentField.GetType());

                    fieldSerializer.Read(schemaField, contentField, bsonValue);
                }
            }
        }
        private bool FindText(string watermarkText, IContentElement element)
        {
            if (element.ElementType == ElementType.Text)
            {
                TextContentElement textElement = (TextContentElement)element;

                return(textElement.TextObject.Text == watermarkText);
            }

            if (element.ElementType == ElementType.FormXObject)
            {
                FormContentElement elementsContainer = (FormContentElement)element;

                return(FindTextInElements(watermarkText, elementsContainer.FormXObject.Elements));
            }

            return(false);
        }
        /// <summary>
        /// Generiše izveštaj o contentPage objektu - vraca String Builder objekat
        /// </summary>
        /// <param name="sb"></param>
        /// <returns></returns>
        public static ITextRender makeReport(this IContentElement element, ITextRender sb = null,
                                             bool autoSaveAndOpen = true)
        {
            //if (sb == null)
            //{
            //    var hsb = new reportHtmlDocument("Report on: " + element.getTypeSignature(),
            //                                     reportOutputFormatName.htmlReport,
            //                                     reportFlag.filenameSmallLetters, reportFlag.filenameInsertTimestamp,
            //                                     reportFlag.headerInsertDescription,
            //                                     reportFlag.footerInsertOutputPath, reportFlag.footerInsertDocumentation,
            //                                     reportFlag.headerInsertTitle, reportFlag.footerInsertTimestamp,
            //                                     reportFlag.openOutput);

            //    hsb.description = "About content element: " + element.getTypology().displayDescription;
            //    sb = hsb;
            //    if (autoSaveAndOpen)
            //    {
            //        String path = hsb.saveOutput();
            //        run.startApplication(externalTool.firefox, path);
            //    }
            //}

            if (element is IContentPage)
            {
                IContentPage _pageElement = element as IContentPage;

                // _pageElement.items.makeReport(sb, 20);

                //_pageElement.paragraphs.makeReport(sb, 20);
                //_pageElement.sentences.makeReport(sb, 20);
                //_pageElement.tokens.makeReport(sb, 20);
                //_pageElement.chunks.makeReport(sb, 20);
            }



            return(sb);
        }
        public static void FromRestValue(this JToken bsonValue, string fieldName, IContentElement contentItem, IContentSchema schema)
        {
            if (contentItem.Fields.TryGetValue(fieldName, out ContentField contentField))
            {
                switch (bsonValue.Type)
                {
                case JTokenType.Null:
                    break;

                case JTokenType.String:
                    if (contentField is SingleValueContentField <string> stringField)
                    {
                        stringField.Value = bsonValue.Value <string>();
                    }
                    else if (contentField is SingleValueContentField <Guid?> guidField)
                    {
                        guidField.Value = Guid.Parse(bsonValue.Value <string>());
                    }
                    break;

                case JTokenType.Integer:
                    if (contentField is SingleValueContentField <short?> shortField)
                    {
                        shortField.Value = bsonValue.Value <short?>();
                    }
                    else if (contentField is SingleValueContentField <int?> intField)
                    {
                        intField.Value = bsonValue.Value <int?>();
                    }
                    else if (contentField is SingleValueContentField <long?> longField)
                    {
                        longField.Value = bsonValue.Value <long?>();
                    }
                    break;

                case JTokenType.Float:
                    ((SingleValueContentField <double?>)contentField).Value = bsonValue.Value <double>();
                    break;

                case JTokenType.Boolean:
                    ((SingleValueContentField <bool?>)contentField).Value = bsonValue.Value <bool>();
                    break;

                //case JTokenType.Guid:
                //    ((SingleContentField<Guid?>)contentField).Value = bsonValue.Value<Guid>();
                //    break;

                case JTokenType.Array:
                    if (contentField is ArrayField arrayField)
                    {
                        if (schema.Fields.TryGetValue(fieldName, out ContentSchemaField definition))
                        {
                            ArrayFieldOptions arrayOptions = definition.Options as ArrayFieldOptions;

                            foreach (JObject item in bsonValue)
                            {
                                ArrayFieldItem arrayFieldItem = arrayOptions.CreateArrayField();

                                foreach (var subitem in item)
                                {
                                    FromRestValue(subitem.Value, subitem.Key, arrayFieldItem, arrayOptions);
                                }

                                arrayField.Items.Add(arrayFieldItem);
                            }
                        }
                    }
                    break;

                case JTokenType.Object:
                    if (contentField is ReferenceField referenceField)
                    {
                        if (bsonValue.HasValues)
                        {
                            RestContentItem restContentItem = bsonValue.ToObject <RestContentItem>(NewtonJsonExtensions.CreateSerializer());
                            referenceField.ContentItem = restContentItem.ToModel();
                        }
                    }
                    else if (contentField is EmbedField embedField)
                    {
                        RestContentEmbedded restContentItem = bsonValue.ToObject <RestContentEmbedded>(NewtonJsonExtensions.CreateSerializer());
                        embedField.ContentEmbedded = restContentItem.ToModel();
                    }
                    else if (contentField is AssetField assetField)
                    {
                        if (bsonValue.HasValues)
                        {
                            RestAsset restAsset = bsonValue.ToObject <RestAsset>();
                            assetField.Asset = restAsset.ToModel();
                        }
                    }
                    else
                    {
                        ContentField c = (ContentField)bsonValue.ToObject(contentField.GetType(), NewtonJsonExtensions.CreateSerializer());

                        contentItem.Fields[fieldName] = c;
                    }
                    break;
                }
            }
        }
        public static string?GetSlug(this IContentElement contentItem, string name)
        {
            SlugField field = contentItem.GetField <SlugField>(name);

            return(field.Value);
        }
        public List <string> Query(contentRelationQueryType qType, contentRelationType qRelation, IContentElement qReference, int limit = -1)
        {
            List <string>      output   = new List <string>();
            contentElementList elements = Query(qRelation, qReference, limit);

            foreach (IContentElement element in elements)
            {
                switch (qType)
                {
                case contentRelationQueryType.gatherContents:
                    output.Add(element.content);
                    break;

                default:
                    break;
                }
            }
            return(output);
        }
        public List <CF> Query <CF>(contentRelationQueryType qType, contentRelationType qRelation, IContentElement qReference, int limit = -1)
        {
            List <CF>          output   = new List <CF>();
            contentElementList elements = Query(qRelation, qReference, limit);

            foreach (IContentElement element in elements)
            {
                switch (qType)
                {
                case contentRelationQueryType.gatherFlags:

                    IContentToken ict = element as IContentToken;
                    if (ict != null)
                    {
                        output.AddRange(ict.flags.getEnumListFromFlags <CF>());                 // output.populateWith(ict.flags);
                    }
                    break;

                case contentRelationQueryType.gatherSentenceFlags:
                    IContentSentence ics = element as IContentSentence;
                    if (ics != null)
                    {
                        output.AddRange(ics.sentenceFlags.getEnumListFromFlags <CF>());                 // output.populateWith(ics.sentenceFlags);
                    }
                    break;

                case contentRelationQueryType.gatherParagraphFlags:
                    IContentParagraph icp = element as IContentParagraph;
                    if (icp != null)
                    {
                        output.AddRange(icp.flags.getEnumListFromFlags <CF>());                 // output.populateWith(icp.flags);
                    }
                    // output.populateWith(icp.flags);
                    break;

                case contentRelationQueryType.gatherBlockTags:
                    IContentBlock icb = element as IContentBlock;
                    if (icb != null)
                    {
                        output.AddRange(icb.flags.getEnumListFromFlags <CF>());                 // output.populateWith(icb.flags);
                    }
                    break;

                case contentRelationQueryType.gatherOrigins:
                    throw new NotImplementedException("gatherOrigin");

                    //IContentToken icto = element as IContentToken;
                    //if (icto != null) output.Add((CF)icto.origin);
                    break;

                default:
                    //output.populateWith(element.flags);
                    break;
                }
            }
            return(output);
        }
        public static bool?GetBool(this IContentElement contentItem, string name)
        {
            BoolField field = contentItem.GetField <BoolField>(name);

            return(field.Value);
        }
 public static T GetField <T>(this IContentElement contentItem, string name)
     where T : ContentField
 {
     return((T)GetField(contentItem, name));
 }
 public contentParagraph(string __content, IContentElement __parent)
 {
     items   = new contentSentenceCollection();
     content = __content;
     parent  = __parent;
 }
        public static DateTime?GetDate(this IContentElement contentItem, string name)
        {
            DateField field = contentItem.GetField <DateField>(name);

            return(field.Value);
        }
        public static long?GetInteger(this IContentElement contentItem, string name)
        {
            IntegerField field = contentItem.GetField <IntegerField>(name);

            return(field.Value);
        }
        public static double?GetFloat(this IContentElement contentItem, string name)
        {
            FloatField field = contentItem.GetField <FloatField>(name);

            return(field.Value);
        }
 public static T?GetSingleValueField <T>(this IContentElement contentItem, string name)
 {
     return(((SingleValueContentField <T>)contentItem.Fields[name]).Value);
 }
        public override ElementViewHolder CreateElementViewHolder(ViewGroup container, IContentElement element)
        {
            if (element is IBodyPart)
            {
                return(new WebViewBodyPartViewHolder(_displayContext, container, element as IBodyPart));
            }

            return(base.CreateElementViewHolder(container, element));
        }
        public static Asset?GetAsset(this IContentElement contentItem, string name)
        {
            AssetField field = contentItem.GetField <AssetField>(name);

            return(field.Asset);
        }
Exemple #27
0
 public virtual ElementViewHolder CreateElementViewHolder(ViewGroup container, IContentElement element)
 {
     if (element is ICommonPart)
     {
         return(new CommonPartViewHolder(_displayContext, container, element as ICommonPart));
     }
     else if (element is ITitlePart)
     {
         return(new TitlePartViewHolder(_displayContext, container, element as ITitlePart));
     }
     else if (element is IBodyPart)
     {
         return(new BodyPartViewHolder(_displayContext, container, element as IBodyPart));
     }
     else if (element is ITermPart)
     {
         return(new TermPartViewHolder(_displayContext, container, element as ITermPart));
     }
     else if (element is ITaxonomyPart)
     {
         return(new TaxonomyPartViewHolder(_displayContext, container, element as ITaxonomyPart));
     }
     else if (element is IImagePart)
     {
         return(new ImagePartViewHolder(_displayContext, container, element as IImagePart));
     }
     else if (element is IBooleanField)
     {
         return(new BooleanFieldViewHolder(_displayContext, container, element as IBooleanField));
     }
     else if (element is IMediaField)
     {
         return(new MediaFieldViewHolder(_displayContext, container, element as IMediaField));
     }
     else
     {
         return(new ElementViewHolder <IContentElement>(_displayContext, container, element));
     }
 }
        public static string?GetTextArea(this IContentElement contentItem, string name)
        {
            TextAreaField field = contentItem.GetField <TextAreaField>(name);

            return(field.Value);
        }
        /// <summary>
        /// Vraca listu elemenata u skladu sa upitom
        /// </summary>
        /// <param name="qRelation"></param>
        /// <param name="qReference"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public contentElementList Query(contentRelationType qRelation, IContentElement qReference, int limit = -1)
        {
            contentElementList output = new contentElementList();
            int             i         = 0;
            IContentElement hIndex;

            switch (qRelation)
            {
            case contentRelationType.self:
                output.AddNullSafe(qReference);
                break;

            case contentRelationType.next:
                output.AddNullSafe(qReference.next);
                break;

            case contentRelationType.prev:
                output.AddNullSafe(qReference.prev);
                break;

            case contentRelationType.both:
                output.AddNullSafe(qReference.next);
                output.AddNullSafe(qReference.prev);
                break;

            case contentRelationType.manyBoth:

                break;

            case contentRelationType.manyNext:
                hIndex = qReference;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.next, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.manyPrev:
                hIndex = qReference;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.prev, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.parent:
                output.AddNullSafe(qReference.parent);
                break;

            case contentRelationType.manyParent:
                hIndex = qReference;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.parent, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.parentOneBefore:
                hIndex = qReference.parent;
                if (hIndex != null)
                {
                    hIndex = take(hIndex, contentRelationType.prev);
                    output.AddNullSafe(hIndex);
                }
                break;

            case contentRelationType.parentOneAfter:
                hIndex = qReference.parent;
                if (hIndex != null)
                {
                    hIndex = take(hIndex, contentRelationType.next);
                    output.AddNullSafe(hIndex);
                }
                break;

            case contentRelationType.parentManyBefore:
                hIndex = qReference.parent;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.prev, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.parentManyAfter:
                hIndex = qReference.parent;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.next, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            default:
                logSystem.log("contentCollection Query :: contentRelationType not supported: [" + qRelation.ToString() + "]", logType.ExecutionError);
                break;
            }
            return(output);
        }
        public static ContentItem?GetReference(this IContentElement contentItem, string name)
        {
            ReferenceField field = contentItem.GetField <ReferenceField>(name);

            return(field.ContentItem);
        }