public NumberVerifierMessageUI(MessageEventArgs messageEventArgs, IBilingualDocument bilingualDocument, ISegment sourceSegment, ISegment targetSegment)
        {
            MessageEventArgs = messageEventArgs;
            BilingualDocument = bilingualDocument;
            SourceSegment = sourceSegment;
            TargetSegment = targetSegment;
            InitializeComponent();
            
            _sourceSegmentControl.Dock = DockStyle.Fill;
            _sourceSegmentControl.IsReadOnly = false;
            _sourceSegmentControl.ReplaceDocumentSegment(sourceSegment.Clone() as ISegment);
            panel_Source.Controls.Add(_sourceSegmentControl);
            _sourceSegmentControl.ReplaceDocumentSegment(sourceSegment);

            _targetSegmentControl.Dock = DockStyle.Fill;
            _targetSegmentControl.IsReadOnly = false;
            _targetSegmentControl.ReplaceDocumentSegment(targetSegment.Clone() as ISegment);
            panel_Target.Controls.Add(_targetSegmentControl);
            _targetSegmentControl.ReplaceDocumentSegment((ISegment)targetSegment.Clone());

            _targetSegmentControl.SegmentContentChanged += OnSegmentContentChanged;

            _hasSegmentChanged = false;

            UpdateMessage(messageEventArgs);


        }
Exemple #2
0
        public NumberVerifierMessageUI(MessageEventArgs messageEventArgs, IBilingualDocument bilingualDocument, ISegment sourceSegment, ISegment targetSegment)
        {
            MessageEventArgs  = messageEventArgs;
            BilingualDocument = bilingualDocument;
            SourceSegment     = sourceSegment;
            TargetSegment     = targetSegment;
            InitializeComponent();

            _sourceSegmentControl.Dock       = DockStyle.Fill;
            _sourceSegmentControl.IsReadOnly = false;
            _sourceSegmentControl.ReplaceDocumentSegment(sourceSegment.Clone() as ISegment);
            panel_Source.Controls.Add(_sourceSegmentControl);
            _sourceSegmentControl.ReplaceDocumentSegment(sourceSegment);

            _targetSegmentControl.Dock       = DockStyle.Fill;
            _targetSegmentControl.IsReadOnly = false;
            _targetSegmentControl.ReplaceDocumentSegment(targetSegment.Clone() as ISegment);
            panel_Target.Controls.Add(_targetSegmentControl);
            _targetSegmentControl.ReplaceDocumentSegment((ISegment)targetSegment.Clone());

            _targetSegmentControl.SegmentContentChanged += OnSegmentContentChanged;

            _hasSegmentChanged = false;

            UpdateMessage(messageEventArgs);
        }
        /// <summary>
        /// Constructor that takes the given message event args, bilingual document, source segment and target segment.
        /// </summary>
        /// <param name="messageEventArgs">message event arguments</param>
        /// <param name="bilingualDocument">bilingual document</param>
        /// <param name="sourceSegment">source segment</param>
        /// <param name="targetSegment">target segment</param>
        public CustomMessageControl(MessageEventArgs messageEventArgs, IBilingualDocument bilingualDocument, ISegment sourceSegment, ISegment targetSegment)
        {
            MessageEventArgs = messageEventArgs;
            BilingualDocument = bilingualDocument;
            SourceSegment = sourceSegment;
            TargetSegment = targetSegment;
            InitializeComponent();
            
            _sourceSegmentControl.Dock = DockStyle.Fill;
            _sourceSegmentPanel.Controls.Add(_sourceSegmentControl);

            _targetSegmentControl.Dock = DockStyle.Fill;
            _targetSegmentPanel.Controls.Add(_targetSegmentControl);

            UpdateMessage(messageEventArgs);
            UpdateSourceSegment(sourceSegment);
            UpdateTargetSegment((ISegment)targetSegment.Clone());
            UpdateProblemDescription(messageEventArgs);
            UpdateSuggestions(messageEventArgs);

            // make the target segment editable
            _targetSegmentControl.IsReadOnly = false;

            _suggestionsList.SelectedIndexChanged += _suggestionsList_SelectedIndexChanged;
        }
Exemple #4
0
        public static void ShiftMax(ISegment <TLabel, TSpan> segmentMax, TSpan shift)
        {
            var clone = segmentMax.Clone();

            segmentMax.Shift(shift);
            Assert.IsTrue(segmentMax.Equals(clone));
        }
        /// <summary>
        /// Constructor that takes the given message event args, bilingual document, source segment and target segment.
        /// </summary>
        /// <param name="messageEventArgs">message event arguments</param>
        /// <param name="bilingualDocument">bilingual document</param>
        /// <param name="sourceSegment">source segment</param>
        /// <param name="targetSegment">target segment</param>
        public CustomMessageControl(MessageEventArgs messageEventArgs, IBilingualDocument bilingualDocument, ISegment sourceSegment, ISegment targetSegment)
        {
            MessageEventArgs  = messageEventArgs;
            BilingualDocument = bilingualDocument;
            SourceSegment     = sourceSegment;
            TargetSegment     = targetSegment;
            InitializeComponent();

            _sourceSegmentControl.Dock = DockStyle.Fill;
            _sourceSegmentPanel.Controls.Add(_sourceSegmentControl);

            _targetSegmentControl.Dock = DockStyle.Fill;
            _targetSegmentPanel.Controls.Add(_targetSegmentControl);

            UpdateMessage(messageEventArgs);
            UpdateSourceSegment(sourceSegment);
            UpdateTargetSegment((ISegment)targetSegment.Clone());
            UpdateProblemDescription(messageEventArgs);
            UpdateSuggestions(messageEventArgs);

            // make the target segment editable
            _targetSegmentControl.IsReadOnly = false;

            _suggestionsList.SelectedIndexChanged += _suggestionsList_SelectedIndexChanged;
        }
Exemple #6
0
        public ISegment CopySourceToTarget(ISegment sourceSegment)
        {
            ISegment targetSegment = (ISegment)sourceSegment.Clone();

            nodesToDelete = new List <IAbstractMarkupData>();
            targetSegment.AcceptVisitor(this);
            nodesToDelete.ForEach(n => DeleteNode(n));
            return(targetSegment);
        }
Exemple #7
0
        public NumberVerifierMessageUI(MessageEventArgs messageEventArgs, IBilingualDocument bilingualDocument, ISegment sourceSegment, ISegment targetSegment)
        {
            MessageEventArgs  = messageEventArgs;
            BilingualDocument = bilingualDocument;
            SourceSegment     = sourceSegment;
            TargetSegment     = targetSegment;
            InitializeComponent();

            _sourceSegmentControl.Dock       = DockStyle.Fill;
            _sourceSegmentControl.IsReadOnly = false;
            _sourceSegmentControl.ReplaceDocumentSegment(sourceSegment.Clone() as ISegment);
            panel_Source.Controls.Add(_sourceSegmentControl);
            _sourceSegmentControl.ReplaceDocumentSegment(sourceSegment);

            _targetSegmentControl.Dock       = DockStyle.Fill;
            _targetSegmentControl.IsReadOnly = false;
            _targetSegmentControl.ReplaceDocumentSegment(targetSegment.Clone() as ISegment);
            panel_Target.Controls.Add(_targetSegmentControl);
            _targetSegmentControl.ReplaceDocumentSegment((ISegment)targetSegment.Clone());

            _targetSegmentControl.SegmentContentChanged += OnSegmentContentChanged;

            //set up the target and source rich box which will be used to identify the issued text(s)
            var sourceText = new StringBuilder();
            var targetText = new StringBuilder();

            foreach (var item in targetSegment?.AllSubItems)
            {
                targetText.AppendFormat($"{item.ToString()} ");
            }
            foreach (var item in sourceSegment?.AllSubItems)
            {
                sourceText.AppendFormat($"{item.ToString()} ");
            }
            target_richTextBox.Text = targetText.ToString();
            source_richTextBox.Text = sourceText.ToString();

            _hasSegmentChanged = false;

            UpdateMessage(messageEventArgs);
        }
        private IList <IAbstractMarkupData> GetTags(ISegment source)
        {
            try
            {
                var tagVisitor = new TagVisitor();
                tagVisitor.VisitSegment((ISegment)source.Clone());

                return(tagVisitor?.Tags);
            }
            catch (Exception ex)
            {
                Log.Logger.Error($"{@"GetTags method: "} {ex.Message}\n {ex.StackTrace}");
                return(new List <IAbstractMarkupData>());
            }
        }
Exemple #9
0
        private IList <IAbstractMarkupData> GetTags(ISegment source)
        {
            try
            {
                var tagVisitor = new TagVisitor();
                tagVisitor.VisitSegment((ISegment)source.Clone());

                return(tagVisitor?.Tags);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                return(new List <IAbstractMarkupData>());
            }
        }
        public IdenticalVerifierMessageUI(MessageEventArgs messageEventArgs, ISegment originalSegment)
        {
            InitializeComponent();

            #region Get ExtendedMessage Data
            IdenticalVerifierMessageData messageData = (IdenticalVerifierMessageData)messageEventArgs.ExtendedData;
            tb_ErrorDetails.Text = messageData.ErrorDetails;
            _suggestion          = new Suggestion(messageEventArgs.FromLocation, messageEventArgs.UptoLocation,
                                                  messageData.ReplacementSuggestion.Clone() as IAbstractMarkupData);
            #endregion

            _originalSegment.Dock       = DockStyle.Fill;
            _originalSegment.IsReadOnly = true;
            _originalSegment.ReplaceDocumentSegment(originalSegment.Clone() as ISegment);
            panel_Original.Controls.Add(_originalSegment);
        }
        /// <summary>
        /// Updates the source segment using the given target segment.
        /// </summary>
        /// <param name="targetSegment">target segment</param>
        private void UpdateTargetSegment(ISegment targetSegment)
        {
            // don't listen for events when contents are reset
            _targetSegmentControl.SegmentContentChanged -= OnSegmentContentChanged;

            // show target segment in segment control
            _targetSegmentControl.ReplaceDocumentSegment((ISegment)targetSegment.Clone());

            _hasSegmentChanged = false;

            // make the target segment editable
            _targetSegmentControl.IsReadOnly = false;

            // start listening to changes again
            _targetSegmentControl.SegmentContentChanged += OnSegmentContentChanged;

            _suggestionsList.Enabled = true;
        }
        public ISegment GetUpdatedSegment(ISegment targetSegment, IEnumerable <Token> tokens, ISegment sourceSegment)
        {
            var vector          = new List <int>();
            var lockedContentId = 0;

            //store original segment
            var originalSegment = (ISegment)targetSegment.Clone();

            //remove old content
            targetSegment.Clear();

            foreach (var item in tokens)
            {
                switch (item.Type)
                {
                case Token.TokenType.TagOpen:
                    var tagPairOpen = (IAbstractMarkupDataContainer)GetElement(
                        GetTagID(item.Content), originalSegment, sourceSegment, item.Type);
                    tagPairOpen.Clear();
                    InsertItemOnLocation(vector, ref targetSegment,
                                         (IAbstractMarkupData)tagPairOpen);
                    vector.Add(((ITagPair)tagPairOpen).IndexInParent);
                    break;

                case Token.TokenType.TagClose:
                    vector.RemoveAt(vector.Count - 1);
                    break;

                case Token.TokenType.TagPlaceholder:
                    InsertItemOnLocation(vector, ref targetSegment,
                                         GetElement(GetTagID(item.Content), originalSegment, sourceSegment,
                                                    item.Type));
                    break;

                case Token.TokenType.Text:
                    InsertItemOnLocation(vector, ref targetSegment, ItemFactory.CreateText(
                                             PropertiesFactory.CreateTextProperties(item.Content)));
                    break;

                case Token.TokenType.LockedContent:
                    InsertItemOnLocation(vector, ref targetSegment,
                                         GetElement(lockedContentId.ToString(), originalSegment, sourceSegment,
                                                    item.Type));
                    lockedContentId++;
                    break;

                case Token.TokenType.CommentStart:
                    var commentContainer = GetComment(item);
                    InsertItemOnLocation(vector, ref targetSegment,
                                         (IAbstractMarkupData)commentContainer);
                    vector.Add(((ICommentMarker)commentContainer).IndexInParent);
                    break;

                case Token.TokenType.CommentEnd:
                    if (vector.Count > 0)
                    {
                        vector.RemoveAt(vector.Count - 1);
                    }

                    break;

                case Token.TokenType.RevisionMarker:
                    //hasTrackedChanges = true;
                    if (item.RevisionType == Token.RevisionMarkerType.InsertStart)
                    {
                        var insertContainer = GetRevisionMarker(item, RevisionType.Insert);
                        InsertItemOnLocation(vector, ref targetSegment,
                                             (IAbstractMarkupData)insertContainer);
                        vector.Add(((IRevisionMarker)insertContainer).IndexInParent);
                    }
                    else if (item.RevisionType == Token.RevisionMarkerType.DeleteStart)
                    {
                        var insertContainer = GetRevisionMarker(item, RevisionType.Delete);
                        InsertItemOnLocation(vector, ref targetSegment,
                                             (IAbstractMarkupData)insertContainer);
                        vector.Add(((IRevisionMarker)insertContainer).IndexInParent);
                    }
                    else
                    {
                        if (vector.Count > 0)
                        {
                            vector.RemoveAt(vector.Count - 1);
                        }
                    }

                    break;
                }
            }

            return(targetSegment);
        }
        /// <summary>
        /// Updates the source segment using the given target segment.
        /// </summary>
        /// <param name="targetSegment">target segment</param>
        private void UpdateTargetSegment(ISegment targetSegment)
        {
            // don't listen for events when contents are reset
            _targetSegmentControl.SegmentContentChanged -= OnSegmentContentChanged;

            // show target segment in segment control
            _targetSegmentControl.ReplaceDocumentSegment((ISegment)targetSegment.Clone());

            _hasSegmentChanged = false;

            // make the target segment editable
            _targetSegmentControl.IsReadOnly = false;

            // start listening to changes again 
            _targetSegmentControl.SegmentContentChanged += OnSegmentContentChanged;

            _suggestionsList.Enabled = true;
        }