using Microsoft.Practices.ServiceLocation; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.UI.Modules; using Tango.MachineStudio.UI.Notifications; using Tango.MachineStudio.UI.SupervisingController; using Tango.SharedUI; using Tango.SharedUI.Controls; using Tango.MachineStudio.Common; using System.Threading; using Tango.Core.Helpers; using Tango.SharedUI.Helpers; namespace Tango.MachineStudio.UI.Views { /// /// Interaction logic for MainView.xaml /// public partial class MainView : View, IMainView { private DefaultStudioModuleLoader _loader; public MainView() : base() { InitializeComponent(); _loader = ServiceLocator.Current.GetInstance() as DefaultStudioModuleLoader; _loader.ModulesLoaded += Loader_ModulesLoaded; } public void NavigateToModule(IStudioModule module) { TransitionControl.AutoNavigate(module != null ? module.Name : "Home"); } private void Loader_ModulesLoaded(object sender, EventArgs e) { TransitionControl.Controls.RemoveAll((x) => x.Tag.ToString() != "Home"); Task.Factory.StartNew(() => { var item = ServiceLocator.Current.GetInstance().PushTaskItem("Loading Modules..."); var modules = _loader.UserModules.ToList(); ThreadsHelper.InvokeUINow(() => { _loader.UserModules.Clear(); }); Thread.Sleep(1500); foreach (var module in modules) { ThreadsHelper.InvokeUI(() => { TransitionControl.Controls.Add(new ContentControl() { Tag = module.Name, Content = module.MainView }); _loader.UserModules.Add(module); }); UIHelper.DoEvents(); Thread.Sleep(100); } ThreadsHelper.InvokeUI(() => { TransitionControl.RefreshControls(); }); item.Pop(); }); } } }