/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="modelData">Document data.</param>
        public ViewModelStore(ModelData modelData)
        {
            this.viewModelEventManager = new ViewModelEventManager();
            this.modelData = modelData;

            HookUpEvents();
        }
Esempio n. 2
0
        /// <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);
                }
            }
        }
Esempio n. 4
0
        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);
            }
        }