/// <summary> /// Gets a copy of this object to implement <see cref="ICloneable"/>. /// </summary> /// <returns></returns> public object Clone() { var copy = new TextMarkerViewModel(Marker); CopyItem(this, copy); return(copy); }
private void CopyItem(TextMarkerViewModel sourceItem, TextMarkerViewModel targetItem, bool CopyIsInEditMode = false) { targetItem._Marker = sourceItem.Marker.Clone() as TextMarker; if (CopyIsInEditMode == true) { targetItem.IsInEditMode = sourceItem.IsInEditMode; } }
/// <summary> /// Standard method that is called when editing of an item ends succesfully. /// The object should permanently store changes and exit editing mode. /// </summary> void IEditableObject.EndEdit() { // clear cached data _cachedCopy = null; // Destroy unedited back copy and IsInEditMode = false; // ensure edit mode flag is unset if (MarkerEditEventArgs != null) { MarkerEditEventArgs(this, new Markers.MarkerEditEventArgs(Marker, EditEvent.CommitEdit)); } NotifyPropertyChanged(() => DateModified); }
/// <summary> /// Standard method that is called when this item is changing /// its mode from non-editing (just display data) to editing. /// </summary> void IEditableObject.BeginEdit() { // save object state before entering edit mode _cachedCopy = this.Clone() as TextMarkerViewModel; // ensure edit mode flag is set IsInEditMode = true; if (MarkerEditEventArgs != null) { MarkerEditEventArgs(this, new Markers.MarkerEditEventArgs(Marker, EditEvent.BeginEdit)); } }
/// <summary> /// Standard method that is called when editing of an item is cancelled. /// The object should roll back any changes and exit editing mode. /// </summary> void IEditableObject.CancelEdit() { // restore original object state if (_cachedCopy != null) { CopyItem(_cachedCopy, this); } // clear cached data _cachedCopy = null; // ensure edit mode flag is unset IsInEditMode = false; if (MarkerEditEventArgs != null) { MarkerEditEventArgs(this, new Markers.MarkerEditEventArgs(Marker, EditEvent.CancelEdit)); } }
internal object AddTextMarkerCommand_Executed(object arg) { var model = new TextMarker(new List <LogEntry>(), this.Author, "<Double Click me to comment>"); var newTxMarker = new TextMarkerViewModel(model); this.AddMarker(newTxMarker); // Link text marker to currently selected items via TextMarker (model) Entries YalvRegistry.Instance.ActualWorkspace.CurrentAnalysis.AddTextMarker( _selectedEntries.Select(x => x.Entry), newTxMarker.GetModel()); foreach (LogEntryRowViewModel entry in _selectedEntries) { entry.UpdateTextMarkerQuantity(); } OnMarkerAdded(new TextMarkerEventArgs(model)); // Generate an event on this to refresh the view return(null); }
private void RemoveMarker(TextMarkerViewModel oldMarker) { oldMarker.MarkerEditEventArgs -= NewMarker_MarkerEditEventArgs; _textMarkerVmList.Remove(oldMarker); }
private void AddMarker(TextMarkerViewModel newMarker) { newMarker.MarkerEditEventArgs += NewMarker_MarkerEditEventArgs; _textMarkerVmList.Add(newMarker); }