Exemple #1
0
        private FieldElement GetDateFieldElement(ComponentPart componentPart)
        {
            if (componentPart == null || componentPart.Elements == null || !componentPart.Elements.Any())
            {
                return(null);
            }

            FieldElement dateFieldElement = componentPart.Elements.Where(element =>
            {
                DateTimeFieldElement dateTimeFieldElement = element as DateTimeFieldElement;
                if (dateTimeFieldElement != null)
                {
                    return(true);
                }

                TextFieldElement textFieldElement = element as TextFieldElement;
                if (textFieldElement != null)
                {
                    return(true);
                }

                return(false);
            }).FirstOrDefault() as FieldElement;

            return(dateFieldElement);
        }
 public void Show(TextFieldElement textField)
 {
     this.textField = textField;
     inputField.gameObject.SetActive(true);
     inputField.transform.SetSiblingIndex(textField.Position);
     text.text = textField.Content;
     enabled   = true;
 }
Exemple #3
0
 public NameTakenScreen(GameState state, string name = "Name Taken") : base(state, name)
 {
     Events.instance.AddListener <NameTakenEvent> (OnNameTakenEvent);
     textField = new TextFieldElement(1);
     ScreenElements.AddEnabled("copy", new LabelElement("", 0));
     ScreenElements.AddEnabled("textfield", textField);
     ScreenElements.AddEnabled("enter", CreateButton("Enter", 2));
     ScreenElements.AddEnabled("back", CreateBottomButton("Back"));
 }
Exemple #4
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }
            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }


            TextFieldElement textFieldElement = componentPart.Elements.OfType <TextFieldElement>().FirstOrDefault();

            //SwissAcademic.Citavi.Citations.TextFieldElement
            if (textFieldElement == null)
            {
                return(null);
            }

            bool found = false;
            TextUnitCollection textUnits = textFieldElement.GetTextUnits(citation, template);

            if (textUnits == null)
            {
                return(null);
            }

            foreach (ITextUnit textUnit in textUnits)
            {
                if (textUnit.Text.Contains("-"))
                {
                    found         = true;
                    textUnit.Text = textUnit.Text.Replace("-", "\u2011");
                }
            }

            if (found)
            {
                componentPart.Elements.ReplaceItem(textFieldElement, textUnits.TextUnitsToLiteralElements(componentPart));
            }

            return(null);
        }
Exemple #5
0
 public EnterNameScreen(GameState state, string name = "Enter Name") : base(state, name)
 {
     enterButton = CreateButton("Enter", 2);
     ScreenElements.AddEnabled("background", new BackgroundElement("logo", Color.black));
     ScreenElements.AddEnabled("copy", new LabelElement(Copy.EnterName, 0));
     ScreenElements.AddEnabled("textfield", new TextFieldElement(1));
     ScreenElements.AddEnabled("enter", enterButton);
     ScreenElements.AddEnabled("back", CreateBottomButton("Back"));
     textField = ScreenElements.Get <TextFieldElement> ("textfield");
     textField.onUpdateContent += OnUpdateContent;
 }
    void UpdateScreen()
    {
        SetScrollbarActive(false);

        labelManager.RemoveLabels();
        textFieldManager.Hide();
        timerManager.Hide();
        imageManager.Hide();
        scoreboardPoolManager.Hide();
        scoreboardPotManager.Hide();
        buttonManager.RemoveButtons();

        foreach (ScreenElement element in elements)
        {
            if (element is LabelElement)
            {
                LabelElement l = element as LabelElement;
                labelManager.SetLabel(l);
            }
            if (element is TextFieldElement)
            {
                TextFieldElement t = element as TextFieldElement;
                textFieldManager.Show(t);
            }
            if (element is ButtonElement && !(element is BottomButtonElement) && !(element is TimerElement))
            {
                ButtonElement b = element as ButtonElement;
                buttonManager.SetButton(b);
            }
            if (element is TimerElement)
            {
                TimerElement t = element as TimerElement;
                timerManager.Show(t);
            }
            if (element is ImageElement)
            {
                ImageElement i = element as ImageElement;
                imageManager.Show(i);
            }
            if (element is ScoreboardPoolElement)
            {
                ScoreboardPoolElement s = element as ScoreboardPoolElement;
                scoreboardPoolManager.Show(s);
            }
            if (element is ScoreboardPotElement)
            {
                ScoreboardPotElement s = element as ScoreboardPotElement;
                scoreboardPotManager.Show(s);
            }
        }

        CoroutineManager.Instance.WaitForFrame(OnWaitForFrame);
    }
Exemple #7
0
    protected override void OnButtonPress(ButtonPressEvent e)
    {
        switch (e.id)
        {
        case "Enter":
            TextFieldElement tfe = ScreenElements.Get <TextFieldElement> ("textfield");
            if (tfe.Content != "")
            {
                // Events.instance.Raise (new EnterNameEvent (tfe.Content));
                Player.instance.Name = tfe.Content;
                MultiplayerManager.instance.NewNameEntered();
            }
            break;

            /*case "Back":
             *      MultiplayerManager.instance.Disconnect ();
             *      // GotoScreen ("Games List");
             *      break;*/
        }
    }
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            handled = false;

            if (componentPart == null)
            {
                return(null);
            }
            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }

            if (componentPart.Scope == ComponentPartScope.ParentReference && citation.Reference.ParentReference == null)
            {
                return(null);
            }
            var referenceInScopeOfComponentPart = componentPart.Scope == ComponentPartScope.ParentReference ? citation.Reference.ParentReference : citation.Reference;



            //check for the first custom field in the componentPart ... we expect this to be the field where the publication media type ist stored
            ReferencePropertyId[] customFieldProperties = new ReferencePropertyId[]
            {
                ReferencePropertyId.CustomField1,
                ReferencePropertyId.CustomField2,
                ReferencePropertyId.CustomField3,
                ReferencePropertyId.CustomField4,
                ReferencePropertyId.CustomField5,
                ReferencePropertyId.CustomField6,
                ReferencePropertyId.CustomField7,
                ReferencePropertyId.CustomField8,
                ReferencePropertyId.CustomField9
            };
            TextFieldElement customFieldElement = componentPart.GetFieldElements().OfType <TextFieldElement>().FirstOrDefault(fieldElement => customFieldProperties.Contains(fieldElement.PropertyId));

            if (customFieldElement == null)
            {
                return(null);
            }

            //check if corresponding reference field contains data
            var mediaType = referenceInScopeOfComponentPart.GetValue(customFieldElement.PropertyId) as string;

            if (string.IsNullOrEmpty(mediaType))
            {
                return(null);
            }

            //the following words should be output in italics
            var specialMediaTypes = new string[] {
                "iPad",
                "Kindle",
                "Microsoft",
                "Word",
                "PowerPoint",
                "Excel",
                "Nook",
                "Sony",
                "Adobe"
            };

            var regEx = new Regex(@"\b(" + string.Join("|", specialMediaTypes) + @")\b", RegexOptions.IgnoreCase);

            if (regEx.IsMatch(mediaType))
            {
                var words = mediaType.Split(' ');
                var newLiteralElements = new List <LiteralElement>();


                for (int i = 0; i < words.Count(); i++)
                {
                    var word = words[i];
                    if (string.IsNullOrWhiteSpace(word))
                    {
                        continue;
                    }

                    LiteralElement newLiteralElement = null;
                    if (i < words.Count() - 1)
                    {
                        newLiteralElement = new LiteralElement(componentPart, word + " ");
                    }
                    else
                    {
                        newLiteralElement = new LiteralElement(componentPart, word);
                    }

                    if (specialMediaTypes.Contains(word))
                    {
                        newLiteralElement.FontStyle = SwissAcademic.Drawing.FontStyle.Italic;
                    }
                    else
                    {
                        newLiteralElement.FontStyle = SwissAcademic.Drawing.FontStyle.Neutral;
                    }

                    newLiteralElements.Add(newLiteralElement);
                }


                var index = componentPart.Elements.IndexOf(customFieldElement);
                componentPart.Elements.RemoveAt(index);
                componentPart.Elements.InsertElements(index, newLiteralElements);
                foreach (var element in componentPart.Elements.OfType <LiteralElement>())
                {
                    element.ApplyCondition = ElementApplyCondition.Always;
                }
                //componentPart.Elements.ReplaceItem(customFieldElement, newLiteralElements);
            }

            return(null);
        }
Exemple #9
0
        //Version 2.0 script can be attached to both date/time field element as well as text field element

        //Format date range (if applicable)
        //Enter date range as: dd.MM.yyyy - dd.MM.yyyy
        //Format it to: dd.-dd. MMMM yyyy e.g.

        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            CultureInfo targetCulture = CultureInfo.CreateSpecificCulture("de-DE");

            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }

            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count != 1)
            {
                return(null);
            }

            FieldElement firstDateContainingFieldElement = componentPart.Elements.Where(element =>
            {
                DateTimeFieldElement dateTimeFieldElement = element as DateTimeFieldElement;
                if (dateTimeFieldElement != null)
                {
                    return(true);
                }

                TextFieldElement textFieldElement = element as TextFieldElement;
                if (textFieldElement != null)
                {
                    return(true);
                }

                return(false);
            }).FirstOrDefault() as FieldElement;

            if (firstDateContainingFieldElement == null)
            {
                return(null);
            }

            ReferencePropertyId referencePropertyId = firstDateContainingFieldElement.PropertyId;

            Reference referenceResolved = componentPart.Scope == ComponentPartScope.ParentReference ? citation.Reference.ParentReference : citation.Reference;

            if (referenceResolved == null)
            {
                return(null);
            }

            string date = referenceResolved.GetValue(referencePropertyId) as string;

            if (string.IsNullOrEmpty(date))
            {
                return(null);
            }

            FontStyle fontStyle =
                firstDateContainingFieldElement is DateTimeFieldElement ?
                ((DateTimeFieldElement)firstDateContainingFieldElement).FontStyle :
                ((TextFieldElement)firstDateContainingFieldElement).FontStyle;

            DateTime dateSingle;
            DateTime dateA;
            DateTime dateB;

            CultureInfo deDE = new CultureInfo("de-DE");

            string[] formats = new string[] { "dd.MM.yyyy", "d.M.yyyy", "d.MM.yyyy", "dd.M.yyyy", "dd.MM.yy", "d.M.yy", "d.MM.yy", "dd.M.yy" };


            //try single date first
            var found = DateTime.TryParseExact(date, formats, deDE, DateTimeStyles.None, out dateSingle);

            if (found)
            {
                var monthStringShort = dateSingle.ToString("MMM", targetCulture);
                var monthStringLong  = dateSingle.ToString("MMMM", targetCulture);
                var monthString      = monthStringShort == monthStringLong ? monthStringShort : monthStringShort + ".";

                var yearString = dateSingle.ToString("yyyy");

                var dayString = dateSingle.Day.ToString("D2");

                var outputFormatSingle = "{0} {1}, {2}";
                var dateSingleText     = string.Format(outputFormatSingle, monthString, dayString, yearString);

                var outputSingleDate = new TextUnitCollection();
                var textSingleDate   = new LiteralTextUnit(dateSingleText);
                textSingleDate.FontStyle = fontStyle;
                outputSingleDate.Add(textSingleDate);
                handled = true;
                return(outputSingleDate);
            }

            //then try date range
            List <string> dates = date.Split('-').Select(d => d.Trim()).ToList();

            if (dates.Count != 2)
            {
                return(null);
            }


            var foundA = DateTime.TryParseExact(dates.ElementAt(0), formats, deDE, DateTimeStyles.None, out dateA);
            var foundB = DateTime.TryParseExact(dates.ElementAt(1), formats, deDE, DateTimeStyles.None, out dateB);

            if (!foundA || !foundB)
            {
                return(null);
            }


            var monthAStringShort = dateA.ToString("MMM", targetCulture);
            var monthAStringLong  = dateA.ToString("MMMM", targetCulture);
            var monthAString      = monthAStringShort == monthAStringLong ? monthAStringShort : monthAStringShort + ".";

            var monthBStringShort = dateB.ToString("MMM", targetCulture);
            var monthBStringLong  = dateB.ToString("MMMM", targetCulture);
            var monthBString      = monthBStringShort == monthBStringLong ? monthBStringShort : monthBStringShort + ".";

            var yearAString = dateA.ToString("yyyy");
            var yearBString = dateB.ToString("yyyy");

            var dayAString = dateA.Day.ToString("D2");
            var dayBString = dateB.Day.ToString("D2");

            string outputFormat  = string.Empty;
            string dateRangeText = string.Empty;

            //same year, same month
            if (dateA.Year == dateB.Year && dateA.Month == dateB.Month && dateA.Day != dateB.Day)
            {
                outputFormat  = "{0}.-{1}. {2} {3}";                //e.g. 08.-11. September 2013
                dateRangeText = string.Format(outputFormat, dayAString, dayBString, monthAStringLong, yearAString);
            }


            //same year, different months
            else if (dateA.Year == dateB.Year && dateA.Month != dateB.Month)
            {
                outputFormat  = "{0}. {1} - {2}. {3} {4}";                //e.g. 27. September - 04. Oktober 2013
                dateRangeText = string.Format(outputFormat, dayAString, monthAStringLong, dayBString, monthBStringLong, yearAString);
            }

            //different years
            else
            {
                outputFormat  = "{0}. {1} {2} - {3}. {4} {5}";                //e.g. 27. Dezember 2013 - 04. Januar 2014
                dateRangeText = string.Format(outputFormat, dayAString, monthAStringLong, yearAString, dayBString, monthBStringLong, yearBString);
            }

            var output = new TextUnitCollection();
            var text   = new LiteralTextUnit(dateRangeText);

            text.FontStyle = fontStyle;
            output.Add(text);
            handled = true;
            return(output);
        }
Exemple #10
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            handled = false;
            if (citation == null)
            {
                return(null);
            }

            Reference reference = citation.Reference;

            if (reference == null)
            {
                return(null);
            }

            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || !componentPart.Elements.Any() || componentPart.Elements.Count != 1)
            {
                return(null);
            }

            TextFieldElement firstTextFieldElement = componentPart.Elements.OfType <TextFieldElement>().FirstOrDefault() as TextFieldElement;

            if (firstTextFieldElement == null)
            {
                return(null);
            }

            ComponentPartScope scope            = componentPart.Scope;
            Reference          referenceInScope = null;

            if (scope == ComponentPartScope.Reference)
            {
                referenceInScope = reference;
            }
            else
            {
                referenceInScope = reference.ParentReference;
            }
            if (referenceInScope == null)
            {
                return(null);
            }


            ReferencePropertyId propertyTagged = ReferencePropertyId.None;

            switch (firstTextFieldElement.PropertyId)
            {
            case ReferencePropertyId.Title:
            {
                propertyTagged = ReferencePropertyId.TitleTagged;
            }
            break;

            case ReferencePropertyId.Subtitle:
            {
                propertyTagged = ReferencePropertyId.SubtitleTagged;
            }
            break;

            case ReferencePropertyId.TitleSupplement:
            {
                propertyTagged = ReferencePropertyId.TitleSupplementTagged;
            }
            break;
            }
            if (propertyTagged == ReferencePropertyId.None)
            {
                return(null);
            }

            string stringTagged = referenceInScope.GetValue(propertyTagged) as string;

            if (string.IsNullOrEmpty(stringTagged))
            {
                return(null);
            }
            if (!HasTags(stringTagged))
            {
                return(null);
            }


            bool italicFound = false;

            TextUnitCollection textUnitCollection = TextUnitCollectionUtility.TaggedTextToTextUnits(firstTextFieldElement, stringTagged);

            foreach (ITextUnit textUnit in textUnitCollection)
            {
                //Flip bits where required
                if (firstTextFieldElement.FontStyle.HasFlag(FontStyle.Italic))
                {
                    textUnit.TemporaryFontStyle ^= FontStyle.Italic;
                }
                if (firstTextFieldElement.FontStyle.HasFlag(FontStyle.Bold))
                {
                    textUnit.TemporaryFontStyle ^= FontStyle.Bold;
                }
            }

            handled = true;
            return(textUnitCollection);
        }
        public string GetDocumentText()
        {
            WaitUntilLoaded();

            return(TextFieldElement.GetAttribute("textContent"));
        }
Exemple #12
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            //return handled = true if this macro generates the output (as a IEnumerable<ITextUnit>); the standard output will be suppressed
            //return handled = false if you want Citavi to produce the standard output;
            //you can still manipulate the component part and its elements before letting Citavi generate the output with handled = false
            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }

            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }

            var hasDOI      = !string.IsNullOrEmpty(citation.Reference.Doi);
            var hasPubMedId = !string.IsNullOrEmpty(citation.Reference.PubMedId);

            if (!hasDOI && !hasPubMedId)
            {
                return(null);                                     //die Komponente "leert" sich von alleine, denn die (statische) Beschriftung wird nur ausgegeben, wenn eines der Felder Inhalt hat.
            }
            IEnumerable <TextFieldElement> doiFieldElements = componentPart.Elements.OfType <TextFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.Doi);

            if (doiFieldElements == null || doiFieldElements.Count() != 1)
            {
                return(null);
            }
            TextFieldElement doiFieldElement = doiFieldElements.FirstOrDefault();

            if (doiFieldElement == null)
            {
                return(null);
            }

            IEnumerable <TextFieldElement> pmidFieldElements = componentPart.Elements.OfType <TextFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.PubMedId);

            if (pmidFieldElements == null || pmidFieldElements.Count() != 1)
            {
                return(null);
            }
            TextFieldElement pmidFieldElement = pmidFieldElements.FirstOrDefault();

            if (pmidFieldElement == null)
            {
                return(null);
            }

            IEnumerable <LiteralElement> literalElements = componentPart.Elements.OfType <LiteralElement>().Where(element => element.Text == "Identifier: ");

            if (literalElements == null || literalElements.Count() != 1)
            {
                return(null);
            }
            LiteralElement literalElement = literalElements.FirstOrDefault();

            if (literalElement == null)
            {
                return(null);
            }


            //nur PubMedID? -> Beschriftung auf "PMID: "
            if (hasPubMedId && !hasDOI)
            {
                literalElement.Text = "PMID: ";
                return(null);
            }

            //nur DOI? -> Beschriftung auf "DOI: "
            if (!hasPubMedId && hasDOI)
            {
                literalElement.Text = "DOI: ";
                return(null);
            }

            //PubMedID UND DOI? -> PubMedID ist zu bevorzugen! Beschriftung auf "PMID: " und DOI-Feldelement rauswerfen
            if (hasPubMedId && hasDOI)
            {
                literalElement.Text = "PMID: ";
                componentPart.Elements.Remove(doiFieldElement);
                return(null);
            }


            //hierher sollten wir nie kommen, aber wer weiss
            return(null);
        }
Exemple #13
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            //return handled = true if this macro generates the output (as a IEnumerable<ITextUnit>); the standard output will be suppressed
            //return handled = false if you want Citavi to produce the standard output;
            //you can still manipulate the component part and its elements before letting Citavi generate the output with handled = false
            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }

            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }

            var hasDOI           = !string.IsNullOrEmpty(citation.Reference.Doi);
            var hasOnlineAddress = !string.IsNullOrEmpty(citation.Reference.OnlineAddress);

            if (!hasDOI && !hasOnlineAddress)
            {
                return(null);                                          //the component "clears" by itself, because the (static) label is only printed if one of the fields has content.
            }
            IEnumerable <TextFieldElement> doiFieldElements = componentPart.Elements.OfType <TextFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.Doi);

            if (doiFieldElements == null || doiFieldElements.Count() != 1)
            {
                return(null);
            }
            TextFieldElement doiFieldElement = doiFieldElements.FirstOrDefault();

            if (doiFieldElement == null)
            {
                return(null);
            }



            IEnumerable <ElectronicAddressFieldElement> onlineAddressFieldElements = componentPart.Elements.OfType <ElectronicAddressFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.OnlineAddress);

            if (onlineAddressFieldElements == null || onlineAddressFieldElements.Count() != 1)
            {
                return(null);
            }
            ElectronicAddressFieldElement onlineAddressFieldElement = onlineAddressFieldElements.FirstOrDefault();

            if (onlineAddressFieldElement == null)
            {
                return(null);
            }

            IEnumerable <LiteralElement> literalElements = componentPart.Elements.OfType <LiteralElement>();

            if (literalElements == null || literalElements.Count() != 1)
            {
                return(null);
            }
            LiteralElement literalElement = literalElements.FirstOrDefault();

            if (literalElement == null)
            {
                return(null);
            }


            //only OnlineAddress? -> No labeling
            if (hasOnlineAddress && !hasDOI)
            {
                literalElement.Text = literalElement.Text + "";
                return(null);
            }

            //just DOI? -> labeling "DOI: "
            if (!hasOnlineAddress && hasDOI)
            {
                literalElement.Text = literalElement.Text + " DOI: ";
                return(null);
            }

            //OnlineAddress AND DOI? -> DOI is preferable! Remove OnlineAddress element
            if (hasOnlineAddress && hasDOI)
            {
                literalElement.Text = literalElement.Text + " DOI: ";
                componentPart.Elements.Remove(onlineAddressFieldElement);
                return(null);
            }


            //We were never supposed to come here, but who knows ...
            return(null);
        }