Exemple #1
0
        public static void CreateNewWorkspace()
        {
            if (currentWorkspace != null)
            {
                AskToSaveCurrentWorkspaceAndSaveIt();
                currentWorkspace = null;
            }

            var newWorkspace = new Workspace();

            currentWorkspace = newWorkspace;
            WorkspaceChanged?.Invoke(currentWorkspace, new EventArgs());
            SetHasChanges(true);
        }
Exemple #2
0
 public static void LoadWorkspace(string filePath)
 {
     using (Stream stream = new FileStream(filePath, FileMode.Open))
     {
         XmlSerializer serializer = new XmlSerializer(typeof(StorageContainer));
         var           container  = (StorageContainer)serializer.Deserialize(stream);
         Workspace     workspace  = new Workspace();
         workspace.storageContainer = container;
         workspace.currentFilePath  = filePath;
         currentWorkspace           = workspace;
         WorkspaceChanged?.Invoke(currentWorkspace, new EventArgs());
         SetHasChanges(false);
     }
 }
 internal void RaiseEvents()
 {
     lock (_gate)
     {
         // this is a workaround for https://devdiv.visualstudio.com/DevDiv/_workitems/edit/744145
         // for preview 2.
         //
         // it is a workaround since we are calling event handler under a lock to make sure
         // we don't raise event concurrently
         //
         // we have this issue to track proper fix for preview 3 or later
         // https://github.com/dotnet/roslyn/issues/32551
         //
         // issue we are working around is the fact this event can happen concurrently
         // if RegisteryText happens and then UnregisterText happens in perfect timing,
         // RegisterText got slightly delayed since it is async event, and UnregisterText happens
         // at the same time since it is a synchronous event, and they my happens in 2 different threads,
         // cause this event to be raised concurrently.
         // that can cause some listener to mess up its internal state like the issue linked above
         WorkspaceChanged?.Invoke(this, EventArgs.Empty);
     }
 }
Exemple #4
0
        private void Move(int nextIndex)
        {
            if (Current != null)
            {
                Current.Workspace.InteractionChanged -= WorkspaceInteractionChanged;
            }

            // Check limits due a remove push call
            if (nextIndex > _history.Count - 1)
            {
                nextIndex = _history.Count - 1;
            }

            if (nextIndex < 0)
            {
                nextIndex = 0;
            }

            CurrentIndex = nextIndex;
            Current      = _history.ElementAt(CurrentIndex);
            Current.Workspace.InteractionChanged += WorkspaceInteractionChanged;

            WorkspaceChanged?.Invoke(this, Current);
        }
 private void OnWorkspaceChanged()
 {
     cache.ClearCachedValues();
     WorkspaceChanged?.Invoke(this, EventArgs.Empty);
 }
 internal void RaiseEvents()
 {
     WorkspaceChanged?.Invoke(this, EventArgs.Empty);
 }