public bool OnFLExBridge(object commandObject) { _mediator.PropertyTable.SetProperty("LastBridgeUsed", "FLExBridge", PropertyTable.SettingsGroup.LocalSettings); if (IsDb4oProject) { var dlg = new Db4oSendReceiveDialog(); if (dlg.ShowDialog() == DialogResult.Abort) { // User clicked on link _mediator.SendMessage("FileProjectSharingLocation", null); } return(true); } if (ChangeProjectNameIfNeeded()) { return(true); } string url; var projectFolder = Cache.ProjectId.ProjectFolder; var savedState = PrepareToDetectConflicts(projectFolder); string dummy; var fullProjectFileName = Path.Combine(projectFolder, Cache.ProjectId.Name + FwFileExtensions.ksFwDataXmlFileExtension); bool dataChanged; var success = FLExBridgeHelper.LaunchFieldworksBridge(fullProjectFileName, Environment.UserName, FLExBridgeHelper.SendReceive, null, out dataChanged, out dummy); if (!success) { ReportDuplicateBridge(); ProjectLockingService.LockCurrentProject(Cache); return(true); } if (dataChanged) { var fixer = new FwDataFixer(Cache.ProjectId.Path, new StatusBarProgressHandler(null, null), logger); fixer.FixErrorsAndSave(); bool conflictOccurred = DetectConflicts(projectFolder, savedState); var app = (LexTextApp)_mediator.PropertyTable.GetValue("App"); var newAppWindow = RefreshCacheWindowAndAll(app, fullProjectFileName); if (conflictOccurred) { //send a message for the reopened instance to display the conflict report, we have been disposed by now newAppWindow.Mediator.SendMessage("ShowConflictReport", null); } } else //Re-lock project if we aren't trying to close the app { ProjectLockingService.LockCurrentProject(Cache); } return(true); }