/// <summary> /// Constructor. /// </summary> /// <param name="modelData">Document data.</param> public ViewModelStore(ModelData modelData) { this.viewModelEventManager = new ViewModelEventManager(); this.modelData = modelData; HookUpEvents(); }
/// <summary> /// Helper method of the cut opeation. /// </summary> /// <param name="eventManager">Event manager.</param> /// <param name="idataObject">Data object.</param> public static void ProcessMoveMode(ViewModelEventManager eventManager, System.Windows.IDataObject idataObject) { bool isInMoveMode = false; if (idataObject != null) { ModelProtoGroup group = ModelElementOperations.GetModelProtoGroup(idataObject); if (group != null) { if (group.Operation == ModelProtoGroupOperation.Move) { isInMoveMode = true; List <System.Guid> guids = new List <System.Guid>(); foreach (ModelProtoElement root in group.ProtoRootElements) { guids.Add(root.ElementId); } foreach (System.Guid id in guids) { if (!ElementsInMoveMode.Contains(id)) { eventManager.GetEvent <ModelElementCustomEvent <bool> >().Publish(true, ModelElementCustomEventNames.ModelElementMoveModeStatus, id); ElementsInMoveMode.Add(id); } } for (int i = ElementsInMoveMode.Count - 1; i >= 0; i--) { if (!guids.Contains(ElementsInMoveMode[i])) { eventManager.GetEvent <ModelElementCustomEvent <bool> >().Publish(false, ModelElementCustomEventNames.ModelElementMoveModeStatus, ElementsInMoveMode[i]); ElementsInMoveMode.RemoveAt(i); } } } } } if (!isInMoveMode) { // remove all elements from the current list and notify them to change status foreach (System.Guid id in ElementsInMoveMode) { eventManager.GetEvent <ModelElementCustomEvent <bool> >().Publish(false, ModelElementCustomEventNames.ModelElementMoveModeStatus, id); } } }
protected ViewModelStore(ModelData modelData, bool bHookUpEvents, ViewModelStore ownedByStore) { this.customDataBag = new Dictionary <Guid, object>(); this.viewModelEventManager = new ViewModelEventManager(); this.externStores = new List <ViewModelStore>(); this.ownedByStore = ownedByStore; this.modelData = modelData; if (bHookUpEvents && this == this.TopMostStore) { this.modelData.StoreCreated += new EventHandler(StoreCreated); this.modelData.StoreDisposing += new EventHandler(StoreDisposing); if (modelData.IsStoreInitialized) { HookUpEvents(); } } this.SpecificViewModelStore = new SpecificViewModelStore(); }
protected ViewModelStore(ModelData modelData, bool bHookUpEvents, ViewModelStore ownedByStore) { this.customDataBag = new Dictionary<Guid, object>(); this.viewModelEventManager = new ViewModelEventManager(); this.externStores = new List<ViewModelStore>(); this.ownedByStore = ownedByStore; this.modelData = modelData; if (bHookUpEvents && this == this.TopMostStore) { this.modelData.StoreCreated += new EventHandler(StoreCreated); this.modelData.StoreDisposing += new EventHandler(StoreDisposing); if (modelData.IsStoreInitialized) { HookUpEvents(); } } this.SpecificViewModelStore = new SpecificViewModelStore(); }
/// <summary> /// Helper method of the cut opeation. /// </summary> /// <param name="eventManager">Event manager.</param> /// <param name="idataObject">Data object.</param> public static void ProcessMoveMode(ViewModelEventManager eventManager, System.Windows.IDataObject idataObject) { bool isInMoveMode = false; if (idataObject != null) { ModelProtoGroup group = ModelElementOperations.GetModelProtoGroup(idataObject); if (group != null) if (group.Operation == ModelProtoGroupOperation.Move) { isInMoveMode = true; List<System.Guid> guids = new List<System.Guid>(); foreach (ModelProtoElement root in group.ProtoRootElements) { guids.Add(root.ElementId); } foreach (System.Guid id in guids) { if (!ElementsInMoveMode.Contains(id)) { eventManager.GetEvent<ModelElementCustomEvent<bool>>().Publish(true, ModelElementCustomEventNames.ModelElementMoveModeStatus, id); ElementsInMoveMode.Add(id); } } for (int i = ElementsInMoveMode.Count - 1; i >= 0; i--) { if (!guids.Contains(ElementsInMoveMode[i])) { eventManager.GetEvent<ModelElementCustomEvent<bool>>().Publish(false, ModelElementCustomEventNames.ModelElementMoveModeStatus, ElementsInMoveMode[i]); ElementsInMoveMode.RemoveAt(i); } } } } if (!isInMoveMode) { // remove all elements from the current list and notify them to change status foreach (System.Guid id in ElementsInMoveMode) eventManager.GetEvent<ModelElementCustomEvent<bool>>().Publish(false, ModelElementCustomEventNames.ModelElementMoveModeStatus, id); } }