diff options
| author | Avi Levkovich <avi@twine-s.com> | 2018-02-20 16:45:00 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2018-02-20 16:45:00 +0200 |
| commit | 6c208c90bc45aff4a7fa214356a42fe7757c5e6f (patch) | |
| tree | 0d77bc6a0ecfbb53cf42c5462ee19212197ee1bd /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization | |
| parent | b0823127f152fe97a6e8fce29e427c7f3db9cf5a (diff) | |
| parent | 1a573aaa346ec4b8bd58a0e35ab9df571a09b855 (diff) | |
| download | Tango-6c208c90bc45aff4a7fa214356a42fe7757c5e6f.tar.gz Tango-6c208c90bc45aff4a7fa214356a42fe7757c5e6f.zip | |
MERGE
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization')
11 files changed, 294 insertions, 127 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/AutoComplete/MachinesProvider.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/AutoComplete/MachinesProvider.cs index 887cb842d..e9d205bed 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/AutoComplete/MachinesProvider.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/AutoComplete/MachinesProvider.cs @@ -5,12 +5,21 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.AutoComplete.Editors; -using Tango.DAL.Observables; +using Tango.Integration.Observables; namespace Tango.MachineStudio.Synchronization.AutoComplete { + /// <summary> + /// Represents an auto-complete machines suggestions provider. + /// </summary> + /// <seealso cref="Tango.AutoComplete.Editors.ISuggestionProvider" /> public class MachinesProvider : ISuggestionProvider { + /// <summary> + /// Gets the suggestions. + /// </summary> + /// <param name="filter">The filter.</param> + /// <returns></returns> public IEnumerable GetSuggestions(string filter) { return ObservablesEntitiesAdapter.Instance.Machines.Where(x => x.SerialNumber.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase)).ToList(); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/NavigationView.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/NavigationView.cs index d4212475c..4e846e963 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/NavigationView.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/NavigationView.cs @@ -6,6 +6,9 @@ using System.Threading.Tasks; namespace Tango.MachineStudio.Synchronization.Navigation { + /// <summary> + /// Represents the available views to navigate to within the synchronization module. + /// </summary> public enum NavigationView { MenuView, diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/SyncNavigationManager.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/SyncNavigationManager.cs index 847fa2456..8c06418e6 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/SyncNavigationManager.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Navigation/SyncNavigationManager.cs @@ -7,8 +7,15 @@ using Tango.MachineStudio.Synchronization.Views; namespace Tango.MachineStudio.Synchronization.Navigation { + /// <summary> + /// Represents the synchronization module views navigation manager. + /// </summary> public class SyncNavigationManager { + /// <summary> + /// Navigate to the specified view. + /// </summary> + /// <param name="view">The view.</param> public void NavigateTo(NavigationView view) { MainView.Instance.TransitionControl.AutoNavigate(view.ToString()); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/SynchronizationModule.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/SynchronizationModule.cs index 039b9faf6..5292c6048 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/SynchronizationModule.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/SynchronizationModule.cs @@ -5,42 +5,50 @@ using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media.Imaging; -using Tango.DAL.Observables; +using Tango.Integration.Observables; using Tango.MachineStudio.Common; using Tango.MachineStudio.Synchronization.Views; using Tango.SharedUI.Helpers; namespace Tango.MachineStudio.Synchronization { - public class SynchronizationModule : IStudioModule + /// <summary> + /// Represents a Machine Studio module capable of comparing and synchronizing machines data against Twine remote database. + /// </summary> + /// <seealso cref="Tango.MachineStudio.Common.IStudioModule" /> + public class SynchronizationModule : StudioModuleBase { - private bool _isInitialized; + /// <summary> + /// Gets the module name. + /// </summary> + public override string Name => "Synchronization"; - public string Name => "Synchronization"; + /// <summary> + /// Gets the module description. + /// </summary> + public override string Description => "Perform local to local or remote to local database synchronization."; - public string Description => "Perform local to local or remote to local database synchronization."; + /// <summary> + /// Gets the module cover image. + /// </summary> + public override BitmapSource Image => ResourceHelper.GetImageFromResources("Images/synchronization.jpg"); - public BitmapSource Image => ResourceHelper.GetImageFromResources("Images/synchronization.jpg"); + /// <summary> + /// Gets the module entry point view. + /// </summary> + public override FrameworkElement MainView => new MainView(); - public FrameworkElement MainView => new MainView(); + /// <summary> + /// Gets the permission required to see and load this module. + /// </summary> + public override Permissions Permission => Permissions.RunSynchronizationModule; - public bool IsInitialized => _isInitialized; - - public Permissions Permission => Permissions.RunSynchronizationModule; - - public void Dispose() - { - //Dispose... - } - - public void Initialize() + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public override void Dispose() { - if (!_isInitialized) - { - //Initialize.. - - _isInitialized = true; - } + } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Tango.MachineStudio.Synchronization.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Tango.MachineStudio.Synchronization.csproj index 3c03f1e48..2a95dc082 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Tango.MachineStudio.Synchronization.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Tango.MachineStudio.Synchronization.csproj @@ -193,10 +193,6 @@ <Project>{0e0eef3e-8f4e-4f23-9d19-479fd8d76c12}</Project> <Name>Tango.DAL.Local</Name> </ProjectReference> - <ProjectReference Include="..\..\..\Tango.DAL.Observables\Tango.DAL.Observables.csproj"> - <Project>{0ecd6da8-7aa6-48d9-8b65-279d176ad9af}</Project> - <Name>Tango.DAL.Observables</Name> - </ProjectReference> <ProjectReference Include="..\..\..\Tango.DAL.Remote\Tango.DAL.Remote.csproj"> <Project>{38197109-8610-4d3f-92b9-16d48df94d7c}</Project> <Name>Tango.DAL.Remote</Name> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs index 3f8772f0e..070beefa6 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs @@ -1,4 +1,5 @@ using Google.Protobuf; +using Microsoft.Practices.ServiceLocation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -10,7 +11,7 @@ using System.Threading; using System.Threading.Tasks; using Tango.Core.Commands; using Tango.Core.Helpers; -using Tango.DAL.Observables; +using Tango.Integration.Observables; using Tango.Integration.Services; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; @@ -23,6 +24,10 @@ using Tango.Synchronization.Remote; namespace Tango.MachineStudio.Synchronization.ViewModels { + /// <summary> + /// Represents the 'Direct Synchronization' view model. + /// </summary> + /// <seealso cref="Tango.SharedUI.ViewModel" /> public class DirectSynchronizationViewVM : ViewModel { private SyncNavigationManager _navigation; @@ -31,9 +36,16 @@ namespace Tango.MachineStudio.Synchronization.ViewModels private LocalDBComparer _comparer; private INotificationProvider _notification; private String _comparedSerialNumber; + private MainViewVM _mainView; - public IStudioApplicationManager ApplicationManager { get; set; } + #region Constructors + /// <summary> + /// Initializes a new instance of the <see cref="DirectSynchronizationViewVM"/> class. + /// </summary> + /// <param name="applicationManager">The application manager.</param> + /// <param name="navigation">The navigation.</param> + /// <param name="notification">The notification.</param> public DirectSynchronizationViewVM(IStudioApplicationManager applicationManager, SyncNavigationManager navigation, INotificationProvider notification) { ApplicationManager = applicationManager; @@ -49,6 +61,8 @@ namespace Tango.MachineStudio.Synchronization.ViewModels CommitAllCommand = new RelayCommand(Synchronize, (x) => Differences.Count > 0 && !IsWorking && SelectedMachine != null); } + #endregion + #region Commands /// <summary> @@ -90,6 +104,8 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #region Properties + public IStudioApplicationManager ApplicationManager { get; set; } + private bool _isWorking; /// <summary> /// Gets or sets a value indicating whether this instance is working. @@ -146,11 +162,29 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #endregion + #region Event Handlers + + private void Comparer_Progress(object sender, string e) + { + if (_mainView == null) + { + _mainView = ServiceLocator.Current.GetInstance<MainViewVM>(); + _mainView.Log = String.Empty; + } + + _mainView.Log += ("[" + DateTime.Now.ToTimeString() + "] " + e + Environment.NewLine); + } + + #endregion + #region Private Methods + /// <summary> + /// Compares the selected machine against the remote database. + /// </summary> private void Compare() { - if (SelectedMachine.SerialNumber != ApplicationManager.ConnectedMachine.SerialNumber) + if (SelectedMachine.SerialNumber != ApplicationManager.ConnectedMachine.As<ExternalBridgeTcpClient>().SerialNumber) { if (!_notification.ShowQuestion("The selected machine serial number does not match the connected machine. Are you sure you want to continue?")) { @@ -195,6 +229,7 @@ namespace Tango.MachineStudio.Synchronization.ViewModels using (_notification.PushTaskItem("Comparing database...")) { _comparer = new LocalDBComparer(new SQLiteDataBase(_masterDBFile), new SQLiteDataBase(_slaveDBFile)); + _comparer.Progress += Comparer_Progress; var diffs = _comparer.Compare(); Differences = new ObservableCollection<Diff>(diffs); @@ -236,6 +271,10 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + + /// <summary> + /// Synchronizes the selected machine with the remote database. + /// </summary> private void Synchronize() { if (IsClearMachine) @@ -313,11 +352,19 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Displays an error message. + /// </summary> + /// <param name="message">The message.</param> private void ShowError(String message) { InvokeUINow(() => _notification.ShowError(message)); } + /// <summary> + /// Displays an information message. + /// </summary> + /// <param name="message">The message.</param> private void ShowInfo(String message) { InvokeUINow(() => _notification.ShowInfo(message)); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/LocalSynchronizationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/LocalSynchronizationViewVM.cs index 9c805cca4..2621f622a 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/LocalSynchronizationViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/LocalSynchronizationViewVM.cs @@ -1,4 +1,5 @@ -using Microsoft.Win32; +using Microsoft.Practices.ServiceLocation; +using Microsoft.Win32; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -19,6 +20,10 @@ using Tango.Synchronization.Local; namespace Tango.MachineStudio.Synchronization.ViewModels { + /// <summary> + /// Represents the 'Local Synchronization' view model. + /// </summary> + /// <seealso cref="Tango.SharedUI.ViewModel" /> public class LocalSynchronizationViewVM : ViewModel { private SyncNavigationManager _navigation; @@ -27,6 +32,7 @@ namespace Tango.MachineStudio.Synchronization.ViewModels private LocalDBComparer _comparer; private INotificationProvider _notification; private bool _isWorking; + private MainViewVM _mainView; #region Constructors @@ -166,8 +172,26 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #endregion + #region Event Handlers + + private void Comparer_Progress(object sender, string e) + { + if (_mainView == null) + { + _mainView = ServiceLocator.Current.GetInstance<MainViewVM>(); + _mainView.Log = String.Empty; + } + + _mainView.Log += ("[" + DateTime.Now.ToTimeString() + "] " + e + Environment.NewLine); + } + + #endregion + #region Private Methods + /// <summary> + /// Cleans the slave database. + /// </summary> private async void CleanSlave() { if (_notification.ShowQuestion("Are you sure you want to erase all data on slave database?")) @@ -205,9 +229,13 @@ namespace Tango.MachineStudio.Synchronization.ViewModels } } + /// <summary> + /// Compares the master and slave database files. + /// </summary> private void Compare() { _comparer = new LocalDBComparer(new SQLiteDataBase(MasterDBFile), new SQLiteDataBase(SlaveDBFile)); + _comparer.Progress += Comparer_Progress; Task.Factory.StartNew(() => { @@ -248,6 +276,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Commits the selected difference. + /// </summary> private void Commit() { Task.Factory.StartNew(() => @@ -277,6 +308,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Commits all the differences. + /// </summary> private void CommitAll() { Task.Factory.StartNew(() => @@ -314,6 +348,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Browse for slave database file. + /// </summary> private void BrowseSlaveDB() { String file = BrowseForFilePath(); @@ -325,6 +362,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels } } + /// <summary> + /// Browse for master database file. + /// </summary> private void BrowseMasterDB() { String file = BrowseForFilePath(); @@ -336,6 +376,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels } } + /// <summary> + /// Browse for database file. + /// </summary> private String BrowseForFilePath() { OpenFileDialog dlg = new OpenFileDialog(); @@ -348,11 +391,19 @@ namespace Tango.MachineStudio.Synchronization.ViewModels return null; } + /// <summary> + /// Displays an error message. + /// </summary> + /// <param name="message">The message.</param> private void ShowError(String message) { InvokeUINow(() => _notification.ShowError(message)); } + /// <summary> + /// Displays an information message. + /// </summary> + /// <param name="message">The message.</param> private void ShowInfo(String message) { InvokeUINow(() => _notification.ShowInfo(message)); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MainViewVM.cs index c392aee1a..987b9ac4d 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MainViewVM.cs @@ -8,17 +8,18 @@ using Tango.SharedUI; namespace Tango.MachineStudio.Synchronization.ViewModels { + /// <summary> + /// Represents the synchronization module main view, view model. + /// </summary> + /// <seealso cref="Tango.SharedUI.ViewModel" /> public class MainViewVM : ViewModel { + /// <summary> + /// Initializes a new instance of the <see cref="MainViewVM"/> class. + /// </summary> public MainViewVM() { - MainViewLogger logger = new MainViewLogger(); - logger.NewLog += (output) => - { - Log += output + Environment.NewLine; - }; - - LogManager.RegisterLogger(logger); + Log = "Synchronization module started..."; } private String _log; @@ -30,32 +31,5 @@ namespace Tango.MachineStudio.Synchronization.ViewModels get { return _log; } set { _log = value; RaisePropertyChanged(nameof(Log)); } } - - #region Custom Logger - - public class MainViewLogger : ILogger - { - public bool Enabled { get; set; } - public bool Immediate { get; set; } - public event Action<String> NewLog; - - public MainViewLogger() - { - Enabled = true; - Immediate = true; - } - - public void OnError(LogItemBase output) - { - NewLog?.Invoke(output.TimeStamp.ToTimeString() + ": " + output.GetMessage()); - } - - public void OnTrace(LogItemBase output) - { - NewLog?.Invoke(output.TimeStamp.ToTimeString() + ": " + output.GetMessage()); - } - } - - #endregion } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MenuViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MenuViewVM.cs index 0fe510f36..efc6ec900 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MenuViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/MenuViewVM.cs @@ -9,10 +9,18 @@ using Tango.SharedUI; namespace Tango.MachineStudio.Synchronization.ViewModels { + /// <summary> + /// Represents the synchronization module main menu view, view model. + /// </summary> + /// <seealso cref="Tango.SharedUI.ViewModel" /> public class MenuViewVM : ViewModel { private SyncNavigationManager _navigation; + /// <summary> + /// Initializes a new instance of the <see cref="MenuViewVM"/> class. + /// </summary> + /// <param name="navigation">The navigation.</param> public MenuViewVM(SyncNavigationManager navigation) { _navigation = navigation; @@ -22,10 +30,19 @@ namespace Tango.MachineStudio.Synchronization.ViewModels StartDirectRemoteSyncCommand = new RelayCommand(() => { _navigation.NavigateTo(NavigationView.DirectSynchronizationView); }); } + /// <summary> + /// Gets or sets the start local synchronize command. + /// </summary> public RelayCommand StartLocalSyncCommand { get; set; } + /// <summary> + /// Gets or sets the start remote synchronize command. + /// </summary> public RelayCommand StartRemoteSyncCommand { get; set; } + /// <summary> + /// Gets or sets the start direct remote synchronize command. + /// </summary> public RelayCommand StartDirectRemoteSyncCommand { get; set; } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/RemoteSynchronizationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/RemoteSynchronizationViewVM.cs index e14b0ffb9..0f427643f 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/RemoteSynchronizationViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/RemoteSynchronizationViewVM.cs @@ -10,7 +10,7 @@ using System.Threading; using System.Threading.Tasks; using Tango.Core.Commands; using Tango.DAL.Local.DB; -using Tango.DAL.Observables; +using Tango.Integration.Observables; using Tango.DAL.Remote.DB; using Tango.Logging; using Tango.MachineStudio.Common.Notifications; @@ -21,9 +21,15 @@ using Tango.SharedUI; using Tango.Synchronization; using Tango.Synchronization.Local; using Tango.Synchronization.Remote; +using Microsoft.Practices.ServiceLocation; namespace Tango.MachineStudio.Synchronization.ViewModels { + /// <summary> + /// Represents the 'Semi Remote Synchronization' view model. + /// </summary> + /// <seealso cref="Tango.SharedUI.ViewModel" /> + /// <seealso cref="Tango.MachineStudio.Common.StudioApplication.IShutdownRequestBlocker" /> public class RemoteSynchronizationViewVM : ViewModel, IShutdownRequestBlocker { private SyncNavigationManager _navigation; @@ -33,6 +39,7 @@ namespace Tango.MachineStudio.Synchronization.ViewModels private RemoteDBComparer _comparer; private RemoteDB _remoteDB; private LocalDB _localDB; + private MainViewVM _mainView; #region Constructors @@ -104,6 +111,21 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #endregion + #region Event Handlers + + private void Comparer_Progress(object sender, string e) + { + if (_mainView == null) + { + _mainView = ServiceLocator.Current.GetInstance<MainViewVM>(); + _mainView.Log = String.Empty; + } + + _mainView.Log += ("[" + DateTime.Now.ToTimeString() + "] " + e + Environment.NewLine); + } + + #endregion + #region Properties private ObservableCollection<Diff> _differences; @@ -158,6 +180,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #region Private Methods + /// <summary> + /// Cleans the slave database file. + /// </summary> private async void CleanSlave() { if (_notification.ShowQuestion("Are you sure you want to erase all data on slave database?")) @@ -195,6 +220,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels } } + /// <summary> + /// Compares the remote database with the selected database file. + /// </summary> private void Compare() { Task.Factory.StartNew(() => @@ -211,6 +239,7 @@ namespace Tango.MachineStudio.Synchronization.ViewModels _remoteDB = RemoteDB.CreateDefault(); _localDB = new LocalDB(SlaveDBFile); _comparer = new RemoteDBComparer(_remoteDB, _localDB, SelectedMachine.SerialNumber); + _comparer.Progress += Comparer_Progress; _isWorking = true; InvalidateRelayCommands(); Thread.Sleep(1500); @@ -243,6 +272,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Commits the selected difference. + /// </summary> private void Commit() { Task.Factory.StartNew(() => @@ -274,6 +306,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Commits all the differences. + /// </summary> private void CommitAll() { Task.Factory.StartNew(() => @@ -325,6 +360,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Browse for slave database file. + /// </summary> private void BrowseSlaveDB() { String file = BrowseForFilePath(); @@ -336,6 +374,9 @@ namespace Tango.MachineStudio.Synchronization.ViewModels } } + /// <summary> + /// Browse for database file. + /// </summary> private String BrowseForFilePath() { OpenFileDialog dlg = new OpenFileDialog(); @@ -348,16 +389,28 @@ namespace Tango.MachineStudio.Synchronization.ViewModels return null; } + /// <summary> + /// Displays an error message. + /// </summary> + /// <param name="message">The message.</param> private void ShowError(String message) { InvokeUINow(() => _notification.ShowError(message)); } + /// <summary> + /// Displays an information message. + /// </summary> + /// <param name="message">The message.</param> private void ShowInfo(String message) { InvokeUINow(() => _notification.ShowInfo(message)); } + /// <summary> + /// Called when the application is shutting down. + /// </summary> + /// <returns></returns> public Task<bool> OnShutdownRequest() { if (_comparer != null) diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Views/MenuView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Views/MenuView.xaml index 67501743b..b7f37b022 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Views/MenuView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/Views/MenuView.xaml @@ -10,74 +10,76 @@ d:DesignHeight="720" d:DesignWidth="1280" DataContext="{x:Static global:ViewModelLocator.MenuViewVM}"> <Grid> <Grid> - <UniformGrid Columns="3"> - <Grid VerticalAlignment="Center"> - <StackPanel> - <StackPanel HorizontalAlignment="Center" Margin="0 0 0 30"> - <TextBlock TextAlignment="Center" FontSize="25">Local Synchronization</TextBlock> - <TextBlock TextAlignment="Center" FontSize="14" Foreground="#303030">Synchronize two SQLite local database files.</TextBlock> - </StackPanel> - <Viewbox RenderOptions.BitmapScalingMode="Fant" Width="400"> - <Grid Width="450"> - <StackPanel> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/sqlite.png" Width="160"></Image> - <Image Source="../Images/arrow_right.png" Width="100" RenderTransformOrigin="0.5,0.5"></Image> - <Image Source="../Images/sqlite.png" Width="130"></Image> + <Viewbox MaxWidth="1600"> + <UniformGrid Columns="3"> + <Grid VerticalAlignment="Center"> + <StackPanel> + <StackPanel HorizontalAlignment="Center" Margin="0 0 0 30"> + <TextBlock TextAlignment="Center" FontSize="25">Local Synchronization</TextBlock> + <TextBlock TextAlignment="Center" FontSize="14" Foreground="#303030">Synchronize two SQLite local database files.</TextBlock> + </StackPanel> + <Viewbox RenderOptions.BitmapScalingMode="Fant" Width="400"> + <Grid Width="450"> + <StackPanel> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/sqlite.png" Width="160"></Image> + <Image Source="../Images/arrow_right.png" Width="100" RenderTransformOrigin="0.5,0.5"></Image> + <Image Source="../Images/sqlite.png" Width="130"></Image> + </StackPanel> + + <Button Command="{Binding StartLocalSyncCommand}" Height="80" Margin="0 20 0 0" HorizontalAlignment="Center" Padding="10" FontSize="20" Width="200">START</Button> </StackPanel> + </Grid> + </Viewbox> + </StackPanel> + </Grid> - <Button Command="{Binding StartLocalSyncCommand}" Height="80" Margin="0 20 0 0" HorizontalAlignment="Center" Padding="10" FontSize="20" Width="200">START</Button> - </StackPanel> - </Grid> - </Viewbox> - </StackPanel> - </Grid> + <Grid VerticalAlignment="Center"> + <StackPanel> + <StackPanel HorizontalAlignment="Center" Margin="0 0 0 30"> + <TextBlock TextAlignment="Center" FontSize="25">Direct Remote Synchronization</TextBlock> + <TextBlock TextAlignment="Center" FontSize="14" Foreground="#303030">Connect and synchronized a Tango machine over the network.</TextBlock> + </StackPanel> + <Viewbox RenderOptions.BitmapScalingMode="Fant" Width="400"> + <Grid Width="450"> + <StackPanel> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/remote-db.png" Width="200"></Image> + <Image Source="../Images/arrow_right.png" Width="100"></Image> + <Image Source="../Images/machine-trans.png" Width="120"></Image> + </StackPanel> - <Grid VerticalAlignment="Center"> - <StackPanel> - <StackPanel HorizontalAlignment="Center" Margin="0 0 0 30"> - <TextBlock TextAlignment="Center" FontSize="25">Direct Remote Synchronization</TextBlock> - <TextBlock TextAlignment="Center" FontSize="14" Foreground="#303030">Connect and synchronized a Tango machine over the network.</TextBlock> - </StackPanel> - <Viewbox RenderOptions.BitmapScalingMode="Fant" Width="400"> - <Grid Width="450"> - <StackPanel> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/remote-db.png" Width="200"></Image> - <Image Source="../Images/arrow_right.png" Width="100"></Image> - <Image Source="../Images/machine-trans.png" Width="120"></Image> + <Button Command="{Binding StartDirectRemoteSyncCommand}" Height="80" Margin="0 20 0 0" HorizontalAlignment="Center" Padding="10" FontSize="20" Width="200">START</Button> </StackPanel> + </Grid> + </Viewbox> + </StackPanel> + </Grid> - <Button Command="{Binding StartDirectRemoteSyncCommand}" Height="80" Margin="0 20 0 0" HorizontalAlignment="Center" Padding="10" FontSize="20" Width="200">START</Button> - </StackPanel> - </Grid> - </Viewbox> - </StackPanel> - </Grid> + <Grid VerticalAlignment="Center"> + <StackPanel> + <StackPanel HorizontalAlignment="Center" Margin="0 0 0 30"> + <TextBlock TextAlignment="Center" FontSize="25">Semi Remote Synchronization</TextBlock> + <TextBlock TextAlignment="Center" FontSize="14" Foreground="#303030">Synchronize local SQLite database file with the remote Twine database.</TextBlock> + </StackPanel> + <Viewbox RenderOptions.BitmapScalingMode="Fant" Width="400"> + <Grid Width="450"> + <StackPanel> + <StackPanel Orientation="Horizontal"> + <Image Source="../Images/remote-db.png" Width="200"></Image> + <Image Source="../Images/arrow_right.png" Width="100"></Image> + <Image Source="../Images/sqlite.png" Width="120"></Image> + </StackPanel> - <Grid VerticalAlignment="Center"> - <StackPanel> - <StackPanel HorizontalAlignment="Center" Margin="0 0 0 30"> - <TextBlock TextAlignment="Center" FontSize="25">Semi Remote Synchronization</TextBlock> - <TextBlock TextAlignment="Center" FontSize="14" Foreground="#303030">Synchronize local SQLite database file with the remote Twine database.</TextBlock> - </StackPanel> - <Viewbox RenderOptions.BitmapScalingMode="Fant" Width="400"> - <Grid Width="450"> - <StackPanel> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/remote-db.png" Width="200"></Image> - <Image Source="../Images/arrow_right.png" Width="100"></Image> - <Image Source="../Images/sqlite.png" Width="120"></Image> + <Button Command="{Binding StartRemoteSyncCommand}" Height="80" Margin="0 20 0 0" HorizontalAlignment="Center" Padding="10" FontSize="20" Width="200">START</Button> </StackPanel> + </Grid> + </Viewbox> + </StackPanel> + </Grid> - <Button Command="{Binding StartRemoteSyncCommand}" Height="80" Margin="0 20 0 0" HorizontalAlignment="Center" Padding="10" FontSize="20" Width="200">START</Button> - </StackPanel> - </Grid> - </Viewbox> - </StackPanel> - </Grid> - - </UniformGrid> + </UniformGrid> + </Viewbox> </Grid> </Grid> </UserControl> |
