Exemplo n.º 1
0
        /// <summary>
        /// Do not call this constructor directly. Use <see cref="SessionUtility.GetSessionManager(INotepadsCore)" instead./>
        /// </summary>
        public SessionManager(INotepadsCore notepadsCore)
        {
            _notepadsCore = notepadsCore;
            _semaphoreSlim = new SemaphoreSlim(1, 1);
            _encodingConverter = new EncodingConverter();
            _sessionData = new ConcurrentDictionary<Guid, TextEditorSessionData>();
            _loaded = false;

            _notepadsCore.TextEditorLoaded += (sender, textEditor) =>
            {
                textEditor.TextChanging += RemoveTextEditorData;
                textEditor.EncodingChanged += RemoveTextEditorData;
                textEditor.LineEndingChanged += RemoveTextEditorData;
                textEditor.ChangeReverted += RemoveTextEditorData;
                textEditor.EditorModificationStateChanged += RemoveTextEditorData;
            };

            _notepadsCore.TextEditorUnloaded += (sender, textEditor) =>
            {
                textEditor.TextChanging -= RemoveTextEditorData;
                textEditor.EncodingChanged -= RemoveTextEditorData;
                textEditor.LineEndingChanged -= RemoveTextEditorData;
                textEditor.ChangeReverted -= RemoveTextEditorData;
                textEditor.EditorModificationStateChanged -= RemoveTextEditorData;
            };
        }
Exemplo n.º 2
0
 /// <summary>
 /// Do not call this constructor directly. Use <see cref="SessionUtility.GetSessionManager(INotepadsCore)" instead./>
 /// </summary>
 public SessionManager(INotepadsCore notepadsCore)
 {
     _notepadsCore      = notepadsCore;
     _semaphoreSlim     = new SemaphoreSlim(1, 1);
     _encodingConverter = new EncodingConverter();
     _loaded            = false;
 }
Exemplo n.º 3
0
        public void Dispose()
        {
            Opening -= TabContextFlyout_Opening;
            Closed  -= TabContextFlyout_Closed;

            _notepadsCore = null;
            _textEditor   = null;
        }
Exemplo n.º 4
0
        public static ISessionManager GetSessionManager(INotepadsCore notepadCore)
        {
            if (!SessionManagers.TryGetValue(notepadCore, out ISessionManager sessionManager))
            {
                sessionManager = new SessionManager(notepadCore);

                if (!SessionManagers.TryAdd(notepadCore, sessionManager))
                {
                    sessionManager = SessionManagers[notepadCore];
                }
            }

            return(sessionManager);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Do not call this constructor directly. Use <see cref="SessionUtility.GetSessionManager(INotepadsCore)" instead./>
        /// </summary>
        public SessionManager(INotepadsCore notepadsCore)
        {
            _notepadsCore  = notepadsCore;
            _semaphoreSlim = new SemaphoreSlim(1, 1);
            _sessionData   = new ConcurrentDictionary <Guid, TextEditorSessionDataV1>();
            _loaded        = false;

            foreach (var editor in _notepadsCore.GetAllTextEditors())
            {
                BindEditorContentStateChangeEvent(this, editor);
            }

            _notepadsCore.TextEditorLoaded   += BindEditorContentStateChangeEvent;
            _notepadsCore.TextEditorUnloaded += UnbindEditorContentStateChangeEvent;
        }
Exemplo n.º 6
0
        public TabContextFlyout(INotepadsCore notepadsCore, TextEditor textEditor)
        {
            _notepadsCore = notepadsCore;
            _textEditor   = textEditor;

            Items.Add(Close);
            Items.Add(CloseOthers);
            Items.Add(CloseRight);
            Items.Add(CloseSaved);
            Items.Add(new MenuFlyoutSeparator());
            Items.Add(CopyFullPath);
            Items.Add(OpenContainingFolder);

            Opening += TabContextFlyout_Opening;
            Closed  += TabContextFlyout_Closed;
        }
Exemplo n.º 7
0
        public TabContextFlyout(INotepadsCore notepadsCore, ITextEditor textEditor)
        {
            _notepadsCore = notepadsCore;
            _textEditor   = textEditor;

            Items.Add(Close);
            Items.Add(CloseOthers);
            Items.Add(CloseRight);
            Items.Add(CloseSaved);
            Items.Add(new MenuFlyoutSeparator());
            Items.Add(CopyFullPath);
            Items.Add(OpenContainingFolder);

            var style = new Style(typeof(MenuFlyoutPresenter));

            style.Setters.Add(new Setter(Control.BorderThicknessProperty, 0));
            MenuFlyoutPresenterStyle = style;

            Opening += TabContextFlyout_Opening;
            Closed  += TabContextFlyout_Closed;
        }
Exemplo n.º 8
0
        public static ISessionManager GetSessionManager(INotepadsCore notepadCore, string filePathPrefix)
        {
            if (!SessionManagers.TryGetValue(notepadCore, out ISessionManager sessionManager))
            {
                var backupFolderName        = BackupFolderDefaultName;
                var sessionMetaDataFileName = SessionMetaDataFileDefaultName;

                if (filePathPrefix != null)
                {
                    backupFolderName        = filePathPrefix + backupFolderName;
                    sessionMetaDataFileName = filePathPrefix + SessionMetaDataFileDefaultName;
                }

                sessionManager = new SessionManager(notepadCore, backupFolderName, sessionMetaDataFileName);

                if (!SessionManagers.TryAdd(notepadCore, sessionManager))
                {
                    sessionManager = SessionManagers[notepadCore];
                }
            }

            return(sessionManager);
        }
Exemplo n.º 9
0
 public static ISessionManager GetSessionManager(INotepadsCore notepadCore)
 {
     return(GetSessionManager(notepadCore, null));
 }