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; }
public static void ShiftMax(ISegment <TLabel, TSpan> segmentMax, TSpan shift) { var clone = segmentMax.Clone(); segmentMax.Shift(shift); Assert.IsTrue(segmentMax.Equals(clone)); }
public ISegment CopySourceToTarget(ISegment sourceSegment) { ISegment targetSegment = (ISegment)sourceSegment.Clone(); nodesToDelete = new List <IAbstractMarkupData>(); targetSegment.AcceptVisitor(this); nodesToDelete.ForEach(n => DeleteNode(n)); return(targetSegment); }
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>()); } }
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); }