/// <summary>
        /// Start doing whatever is needed for the supported type of action.
        /// </summary>
        public void StartWorking(Dictionary <string, string> commandLineArgs)
        {
            _fwProjectFolder = Path.GetDirectoryName(commandLineArgs["-p"]);

            MainForm = new MainBridgeForm
            {
                ClientSize = new Size(904, 510)
            };
            _chorusUser   = new ChorusUser(commandLineArgs["-u"]);
            _chorusSystem = Utilities.InitializeChorusSystem(Utilities.LiftOffset(_fwProjectFolder), _chorusUser.Name, LiftFolder.AddLiftFileInfoToFolderConfiguration);
            _chorusSystem.EnsureAllNotesRepositoriesLoaded();

            _notesBrowser = _chorusSystem.WinForms.CreateNotesBrowser();
            var conflictHandler = _notesBrowser.MessageContentHandlerRepository.KnownHandlers.OfType <MergeConflictEmbeddedMessageContentHandler>().First();

            _chorusSystem.NavigateToRecordEvent.Subscribe(JumpToLiftObject);
            conflictHandler.HtmlAdjuster = AdjustConflictHtml;
            if (_connectionHelper != null)
            {
                JumpUrlChanged += _connectionHelper.SendJumpUrlToFlex;
            }

            var viewer = new BridgeConflictView();

            MainForm.Controls.Add(viewer);
            MainForm.Text = viewer.Text;
            viewer.Dock   = DockStyle.Fill;
            viewer.SetBrowseView(_notesBrowser);

            // Only used by FLEx, so how can it not be in use?
            //if (_currentLanguageProject.FieldWorkProjectInUse)
            //	viewer.EnableWarning();
            viewer.SetProjectName(LiftUtilties.GetLiftProjectName(_fwProjectFolder));
        }
		/// <summary>
		/// Start doing whatever is needed for the supported type of action.
		/// </summary>
		public void StartWorking(Dictionary<string, string> commandLineArgs)
		{
			_fwProjectFolder = Path.GetDirectoryName(commandLineArgs["-p"]);

			MainForm = new MainBridgeForm
				{
					ClientSize = new Size(904, 510)
				};
			_chorusUser = new ChorusUser(commandLineArgs["-u"]);
			_chorusSystem = Utilities.InitializeChorusSystem(Utilities.LiftOffset(_fwProjectFolder), _chorusUser.Name, LiftFolder.AddLiftFileInfoToFolderConfiguration);
			_chorusSystem.EnsureAllNotesRepositoriesLoaded();

			_notesBrowser = _chorusSystem.WinForms.CreateNotesBrowser();
			var conflictHandler = _notesBrowser.MessageContentHandlerRepository.KnownHandlers.OfType<MergeConflictEmbeddedMessageContentHandler>().First();

			_chorusSystem.NavigateToRecordEvent.Subscribe(JumpToLiftObject);
			conflictHandler.HtmlAdjuster = AdjustConflictHtml;
			if (_connectionHelper != null)
				JumpUrlChanged += _connectionHelper.SendJumpUrlToFlex;

			var viewer = new BridgeConflictView();
			MainForm.Controls.Add(viewer);
			MainForm.Text = viewer.Text;
			viewer.Dock = DockStyle.Fill;
			viewer.SetBrowseView(_notesBrowser);

			// Only used by FLEx, so how can it not be in use?
			//if (_currentLanguageProject.FieldWorkProjectInUse)
			//	viewer.EnableWarning();
			viewer.SetProjectName(LiftUtilties.GetLiftProjectName(_fwProjectFolder));
		}
        /// <summary>
        /// Executes in two distinct scenarios.
        ///
        /// 1. If disposing is true, the method has been called directly
        /// or indirectly by a user's code via the Dispose method.
        /// Both managed and unmanaged resources can be disposed.
        ///
        /// 2. If disposing is false, the method has been called by the
        /// runtime from inside the finalizer and you should not reference (access)
        /// other managed objects, as they already have been garbage collected.
        /// Only unmanaged resources can be disposed.
        /// </summary>
        /// <remarks>
        /// If any exceptions are thrown, that is fine.
        /// If the method is being done in a finalizer, it will be ignored.
        /// If it is thrown by client code calling Dispose,
        /// it needs to be handled by fixing the issue.
        /// </remarks>
        private void Dispose(bool disposing)
        {
            if (IsDisposed)
            {
                return;
            }

            if (disposing)
            {
                if (_notesBrowser != null)
                {
                    _notesBrowser.Dispose();
                }
                if (_chorusSystem != null)
                {
                    _chorusSystem.Dispose();
                }
                if (_connectionHelper != null)
                {
                    JumpUrlChanged -= _connectionHelper.SendJumpUrlToFlex;
                }
                if (_chorusSystem != null)
                {
                    _chorusSystem.Dispose();
                }
            }
            _connectionHelper = null;
            MainForm          = null;
            _chorusUser       = null;
            _notesBrowser     = null;

            IsDisposed = true;
        }
        public NotesInProjectViewModel( IChorusUser user, IEnumerable<AnnotationRepository> repositories, 
                                        MessageSelectedEvent messageSelectedEventToRaise, ChorusNotesDisplaySettings displaySettings,
                                    IProgress progress)
        {
            DisplaySettings = displaySettings;
            _user = user;
            _repositories = repositories;
            _messageSelectedEvent = messageSelectedEventToRaise;

            foreach (var repository in repositories)
            {
                repository.AddObserver(this, progress);
            }
        }
        public NotesInProjectViewModel( IChorusUser user, IEnumerable<AnnotationRepository> repositories,
										ChorusNotesDisplaySettings displaySettings, IProgress progress)
        {
            DisplaySettings = displaySettings;
            _user = user;
            _repositories = repositories;

            _showQuestions = _showConflicts = _showNotifications = true;

            foreach (var repository in repositories)
            {
                repository.AddObserver(this, progress);
            }
        }
		public NotesInProjectViewModel( IChorusUser user, IEnumerable<AnnotationRepository> repositories,
										ChorusNotesDisplaySettings displaySettings, IProgress progress)
		{
			DisplaySettings = displaySettings;
			_user = user;
			_repositories = repositories;

			_showQuestions = _showConflicts = _showNotifications = true;

			foreach (var repository in repositories)
			{
				repository.AddObserver(this, progress);
			}
		}
        public AnnotationEditorModel(IChorusUser user,
							MessageSelectedEvent messageSelectedEventToSubscribeTo,
							StyleSheet styleSheet,
							EmbeddedMessageContentHandlerRepository embeddedMessageContentHandlerRepository,
							NavigateToRecordEvent navigateToRecordEventToRaise,
						ChorusNotesDisplaySettings displaySettings)
        {
            _user = user;
            m_embeddedMessageContentHandlerRepository = embeddedMessageContentHandlerRepository;
            _navigateToRecordEventToRaise = navigateToRecordEventToRaise;
            _styleSheet = styleSheet;
            _displaySettings = displaySettings;
            messageSelectedEventToSubscribeTo.Subscribe(SetAnnotationAndFocussedMessage);
            EventToRaiseForChangedMessage = messageSelectedEventToSubscribeTo;
        }
Example #8
0
 public AnnotationEditorModel(IChorusUser user,
                              MessageSelectedEvent messageSelectedEventToSubscribeTo,
                              StyleSheet styleSheet,
                              EmbeddedMessageContentHandlerRepository embeddedMessageContentHandlerRepository,
                              NavigateToRecordEvent navigateToRecordEventToRaise,
                              ChorusNotesDisplaySettings displaySettings)
 {
     _user = user;
     m_embeddedMessageContentHandlerRepository = embeddedMessageContentHandlerRepository;
     _navigateToRecordEventToRaise             = navigateToRecordEventToRaise;
     _styleSheet      = styleSheet;
     _displaySettings = displaySettings;
     messageSelectedEventToSubscribeTo.Subscribe(SetAnnotationAndFocussedMessage);
     EventToRaiseForChangedMessage = messageSelectedEventToSubscribeTo;
 }
        //TODO: think about or merge these two constructors. this one is for when we're just
        //showing the control with a single annotation... it isn't tied to a list of messages.
        public AnnotationEditorModel(IChorusUser user,
		   StyleSheet styleSheet,
		   EmbeddedMessageContentHandlerRepository embeddedMessageContentHandlerRepository,
			Annotation annotation,
			NavigateToRecordEvent navigateToRecordEventToRaise,
			ChorusNotesDisplaySettings displaySettings,
			bool showLabelAsHyperlink)
        {
            _user = user;
            m_embeddedMessageContentHandlerRepository = embeddedMessageContentHandlerRepository;
            _styleSheet = styleSheet;
            _annotation = annotation;
            _navigateToRecordEventToRaise = navigateToRecordEventToRaise;
            _displaySettings = displaySettings;
            _showLabelAsHyperLink = showLabelAsHyperlink;
        }
Example #10
0
 //TODO: think about or merge these two constructors. this one is for when we're just
 //showing the control with a single annotation... it isn't tied to a list of messages.
 public AnnotationEditorModel(IChorusUser user,
                              StyleSheet styleSheet,
                              EmbeddedMessageContentHandlerRepository embeddedMessageContentHandlerRepository,
                              Annotation annotation,
                              NavigateToRecordEvent navigateToRecordEventToRaise,
                              ChorusNotesDisplaySettings displaySettings,
                              bool showLabelAsHyperlink)
 {
     _user = user;
     m_embeddedMessageContentHandlerRepository = embeddedMessageContentHandlerRepository;
     _styleSheet = styleSheet;
     _annotation = annotation;
     _navigateToRecordEventToRaise = navigateToRecordEventToRaise;
     _displaySettings      = displaySettings;
     _showLabelAsHyperLink = showLabelAsHyperlink;
 }
Example #11
0
 public AnnotationEditorModel(IChorusUser user,
                     MessageSelectedEvent messageSelectedEventToSubscribeTo,
                     StyleSheet styleSheet,
                     EmbeddedMessageContentHandlerRepository embeddedMessageContentHandlerRepository,
                     NavigateToRecordEvent navigateToRecordEventToRaise,
                 ChorusNotesDisplaySettings displaySettings)
 {
     _user = user;
     m_embeddedMessageContentHandlerRepository = embeddedMessageContentHandlerRepository;
     _navigateToRecordEventToRaise = navigateToRecordEventToRaise;
     _styleSheet = styleSheet;
     _displaySettings = displaySettings;
      //CurrentWritingSystem = _displaySettings.First();
     messageSelectedEventToSubscribeTo.Subscribe((annotation, message) => SetAnnotationAndFocussedMessage(annotation, message));
     EventToRaiseForChangedMessage = messageSelectedEventToSubscribeTo;
     NewMessageText = string.Empty;
 }
Example #12
0
        private void FinishInit(string userNameForHistoryAndNotes, ContainerBuilder builder)
        {
            _user = new ChorusUser(userNameForHistoryAndNotes);
            builder.RegisterInstance(_user).As <IChorusUser>();
//            builder.RegisterGeneratedFactory<NotesInProjectView.Factory>().ContainerScoped();
//            builder.RegisterGeneratedFactory<NotesInProjectViewModel.Factory>().ContainerScoped();
//            builder.RegisterGeneratedFactory<NotesBrowserPage.Factory>().ContainerScoped();

            // builder.Register(new NullProgress());//TODO
            _container = builder.Build();

            //add the container itself
            var builder2 = new Autofac.ContainerBuilder();

            builder2.RegisterInstance(_container).As <IContainer>();
            builder2.Update(_container);
            DidLoadUpCorrectly = true;
        }
Example #13
0
        public SyncControlModel(ProjectFolderConfiguration projectFolderConfiguration, 
            SyncUIFeatures uiFeatureFlags,
            IChorusUser user)
        {
            _user = user;
            _progress = new MultiProgress();
            StatusProgress = new SimpleStatusProgress();
            _progress.Add(StatusProgress);
            Features = uiFeatureFlags;
            _synchronizer = Synchronizer.FromProjectConfiguration(projectFolderConfiguration, _progress);
            _backgroundWorker = new BackgroundWorker();
            _backgroundWorker.WorkerSupportsCancellation = true;
            _backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_backgroundWorker_RunWorkerCompleted);
            _backgroundWorker.DoWork += worker_DoWork;

            //clients will normally change these
            SyncOptions = new SyncOptions();
            SyncOptions.CheckinDescription = "[" + Application.ProductName + ": " + Application.ProductVersion + "] sync";
            SyncOptions.DoPullFromOthers = true;
            SyncOptions.DoMergeWithOthers = true;
            SyncOptions.RepositorySourcesToTry.AddRange(GetRepositoriesToList().Where(r => r.Enabled));
        }
Example #14
0
        public SyncControlModel(ProjectFolderConfiguration projectFolderConfiguration,
                                SyncUIFeatures uiFeatureFlags,
                                IChorusUser user)
        {
            _user          = user;
            _progress      = new MultiProgress();
            StatusProgress = new SimpleStatusProgress();
            _progress.Add(StatusProgress);
            Features          = uiFeatureFlags;
            _synchronizer     = Synchronizer.FromProjectConfiguration(projectFolderConfiguration, _progress);
            _backgroundWorker = new BackgroundWorker();
            _backgroundWorker.WorkerSupportsCancellation = true;
            _backgroundWorker.RunWorkerCompleted        += new RunWorkerCompletedEventHandler(_backgroundWorker_RunWorkerCompleted);
            _backgroundWorker.DoWork += worker_DoWork;

            //clients will normally change these
            SyncOptions = new SyncOptions();
            SyncOptions.CheckinDescription = "[" + Application.ProductName + ": " + Application.ProductVersion + "] sync";
            SyncOptions.DoPullFromOthers   = true;
            SyncOptions.DoMergeWithOthers  = true;
            SyncOptions.RepositorySourcesToTry.AddRange(GetRepositoriesToList().Where(r => r.Enabled));
        }
Example #15
0
        private void FinishInit(string userNameForHistoryAndNotes, ContainerBuilder builder)
        {
            _user = new ChorusUser(userNameForHistoryAndNotes);
            builder.RegisterInstance(_user).As<IChorusUser>();
            //            builder.RegisterGeneratedFactory<NotesInProjectView.Factory>().ContainerScoped();
            //            builder.RegisterGeneratedFactory<NotesInProjectViewModel.Factory>().ContainerScoped();
            //            builder.RegisterGeneratedFactory<NotesBrowserPage.Factory>().ContainerScoped();

            // builder.Register(new NullProgress());//TODO
            _container = builder.Build();

            //add the container itself
            var builder2 = new Autofac.ContainerBuilder();
            builder2.RegisterInstance(_container).As<IContainer>();
            builder2.Update(_container);
            DidLoadUpCorrectly = true;
        }
		/// <summary>
		/// Executes in two distinct scenarios.
		///
		/// 1. If disposing is true, the method has been called directly
		/// or indirectly by a user's code via the Dispose method.
		/// Both managed and unmanaged resources can be disposed.
		///
		/// 2. If disposing is false, the method has been called by the
		/// runtime from inside the finalizer and you should not reference (access)
		/// other managed objects, as they already have been garbage collected.
		/// Only unmanaged resources can be disposed.
		/// </summary>
		/// <remarks>
		/// If any exceptions are thrown, that is fine.
		/// If the method is being done in a finalizer, it will be ignored.
		/// If it is thrown by client code calling Dispose,
		/// it needs to be handled by fixing the issue.
		/// </remarks>
		private void Dispose(bool disposing)
		{
			if (IsDisposed)
				return;

			if (disposing)
			{
				if (_notesBrowser != null)
				{
					_notesBrowser.Dispose();
				}
				if (_chorusSystem != null)
				{
					_chorusSystem.Dispose();
				}
				if (_connectionHelper != null)
				{
					JumpUrlChanged -= _connectionHelper.SendJumpUrlToFlex;
				}
				if (_chorusSystem != null)
				{
					_chorusSystem.Dispose();
				}
			}
			_connectionHelper = null;
			MainForm = null;
			_chorusUser = null;
			_notesBrowser = null;

			IsDisposed = true;
		}