public UsageTracker(IUIProvider uiProvider) { this.uiProvider = uiProvider; fileExists = (path) => System.IO.File.Exists(path); readAllText = (path, encoding) => { try { return(System.IO.File.ReadAllText(path, encoding)); } catch { return(null); } }; writeAllText = (path, content, encoding) => { try { System.IO.File.WriteAllText(path, content, encoding); } catch {} }; dirCreate = (path) => System.IO.Directory.CreateDirectory(path); this.timer = new DispatcherTimer( TimeSpan.FromMinutes(3), DispatcherPriority.Background, TimerTick, Dispatcher.CurrentDispatcher); RunTimer(); }
public UsageTracker(IUIProvider uiProvider) { this.uiProvider = uiProvider; fileExists = (path) => System.IO.File.Exists(path); readAllText = (path, encoding) => { try { return System.IO.File.ReadAllText(path, encoding); } catch { return null; } }; writeAllText = (path, content, encoding) => { try { System.IO.File.WriteAllText(path, content, encoding); } catch {} }; dirCreate = (path) => System.IO.Directory.CreateDirectory(path); this.timer = new DispatcherTimer( TimeSpan.FromMinutes(3), DispatcherPriority.Background, TimerTick, Dispatcher.CurrentDispatcher); RunTimer(); }
async Task <ITeamExplorerPage> GetTeamExplorerPage(IUIProvider uiProvider) { var te = uiProvider?.GetService(typeof(ITeamExplorer)) as ITeamExplorer; if (te != null) { var page = te.NavigateToPage(new Guid(TeamExplorerPageIds.Connect), null); if (page == null) { var tcs = new TaskCompletionSource <ITeamExplorerPage>(); PropertyChangedEventHandler handler = null; handler = new PropertyChangedEventHandler((s, e) => { if (e.PropertyName == "CurrentPage") { tcs.SetResult(te.CurrentPage); te.PropertyChanged -= handler; } }); te.PropertyChanged += handler; page = await tcs.Task; } return(page); } else { // TODO: Log return(null); } }
public UIController(IUIProvider uiProvider, IRepositoryHosts hosts, IUIFactory factory, IConnectionManager connectionManager) { this.factory = factory; this.uiProvider = uiProvider; this.hosts = hosts; this.connectionManager = connectionManager; uiObjects = new Dictionary <UIControllerFlow, Dictionary <UIViewType, IUIPair> >(); #if DEBUG if (Application.Current != null && !Splat.ModeDetector.InUnitTestRunner()) { var waitDispatcher = RxApp.MainThreadScheduler as WaitForDispatcherScheduler; if (waitDispatcher != null) { Debug.Assert(DispatcherScheduler.Current.Dispatcher == Application.Current.Dispatcher, "DispatcherScheduler is set correctly"); } else { Debug.Assert(((DispatcherScheduler)RxApp.MainThreadScheduler).Dispatcher == Application.Current.Dispatcher, "The MainThreadScheduler is using the wrong dispatcher"); } } #endif machines = new Dictionary <UIControllerFlow, StateMachine <UIViewType, Trigger> >(); ConfigureLogicStates(); uiStateMachine = new StateMachineType(UIViewType.None); triggers = new Dictionary <Trigger, StateMachineType.TriggerWithParameters <ViewWithData> >(); ConfigureUIHandlingStates(); }
public GitHubPaneViewModel(IGitHubServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory, ITeamExplorerServiceHolder holder, IConnectionManager cm, IRepositoryHosts hosts, IUIProvider uiProvider, IVisualStudioBrowser vsBrowser, IUsageTracker usageTracker) : base(serviceProvider, apiFactory, holder) { Guard.ArgumentNotNull(serviceProvider, nameof(serviceProvider)); Guard.ArgumentNotNull(apiFactory, nameof(apiFactory)); Guard.ArgumentNotNull(holder, nameof(holder)); Guard.ArgumentNotNull(cm, nameof(cm)); Guard.ArgumentNotNull(hosts, nameof(hosts)); Guard.ArgumentNotNull(uiProvider, nameof(uiProvider)); Guard.ArgumentNotNull(vsBrowser, nameof(vsBrowser)); Guard.ArgumentNotNull(usageTracker, nameof(usageTracker)); this.connectionManager = cm; this.hosts = hosts; this.uiProvider = uiProvider; this.usageTracker = usageTracker; CancelCommand = ReactiveCommand.Create(); Title = "GitHub"; Message = String.Empty; browser = vsBrowser; this.WhenAnyValue(x => x.Control.DataContext) .OfType <IPanePageViewModel>() .Select(x => x.WhenAnyValue(y => y.Title)) .Switch() .Subscribe(x => Title = x ?? "GitHub"); }
public GitHubPaneViewModel(IGitHubServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory, ITeamExplorerServiceHolder holder, IConnectionManager cm, IUIProvider uiProvider, IVisualStudioBrowser vsBrowser, IUsageTracker usageTracker) : base(serviceProvider, apiFactory, holder) { Guard.ArgumentNotNull(serviceProvider, nameof(serviceProvider)); Guard.ArgumentNotNull(apiFactory, nameof(apiFactory)); Guard.ArgumentNotNull(holder, nameof(holder)); Guard.ArgumentNotNull(cm, nameof(cm)); Guard.ArgumentNotNull(uiProvider, nameof(uiProvider)); Guard.ArgumentNotNull(vsBrowser, nameof(vsBrowser)); Guard.ArgumentNotNull(usageTracker, nameof(usageTracker)); this.connectionManager = cm; this.uiProvider = uiProvider; this.usageTracker = usageTracker; CancelCommand = ReactiveCommand.Create(); Title = "GitHub"; Message = String.Empty; browser = vsBrowser; this.WhenAnyValue(x => x.Control.DataContext) .Subscribe(x => { var pageViewModel = x as IPanePageViewModel; var searchable = x as ISearchablePanePageViewModel; controlViewModel = x as IViewModel; Title = pageViewModel?.Title ?? "GitHub"; IsSearchEnabled = searchable != null; SearchQuery = searchable?.SearchQuery; }); }
private void BuildFileMenuView(UIFrameworkDefinition uiDef) { UIFileMenuView mv = uiDef.UIFileMenu; if (mv.MenuItems == null || mv.MenuItems.Length == 0) { return; } _fileMenuView = new RadRibbonBarBackstageView(); _fileMenuView.Text = "开始"; _fileMenuView.ItemClicked += new EventHandler <BackstageItemEventArgs>(_fileMenuView_ItemClicked); _fileMenuView.BackstageViewOpened += new EventHandler(_fileMenuView_BackstageViewOpened); _fileMenuView.BackstageViewClosed += new EventHandler(_fileMenuView_BackstageViewClosed); (_session.SmartWindowManager.MainForm as Form).Controls.Add(_fileMenuView); _radRibbonBar.RibbonBarElement.Text = "文件"; _radRibbonBar.BackstageControl = _fileMenuView; Font btnItemFont = new Font("微软雅黑", 10.5f); foreach (UIMenuItem item in mv.MenuItems) { if (!string.IsNullOrEmpty(item.Provider)) { BackstageViewPage page = new BackstageViewPage(); IUIProvider uiprd = item.ContentOfUIProvider.Control as IUIProvider; if (uiprd != null) { page.Controls.Add(uiprd.Content as Control); (uiprd as IUIProvider).Init(_session); if (uiprd is IRecentFileContainer) { _recentFileContainer = uiprd as IRecentFileContainer; _recentFileContainer.SetFileMenView(_fileMenuView); } } BackstageTabItem tabPage = new BackstageTabItem(item.Text); tabPage.Margin = new Padding(3, 3, 3, 3); tabPage.Font = btnItemFont; tabPage.Page = page; _fileMenuView.Controls.Add(page); _fileMenuView.Items.Add(tabPage); } else { BackstageButtonItem fileMenuItem = new BackstageButtonItem(item.Text); fileMenuItem.Margin = new Padding(3, 3, 3, 3); fileMenuItem.Font = btnItemFont; fileMenuItem.Tag = item.Identify; fileMenuItem.Click += new EventHandler(fileMenuItem_Click); Image img = GetImage(item.Image); if (img != null) { fileMenuItem.Image = img; } _fileMenuView.Items.Add(fileMenuItem); } } }
public LoggedOutViewModel(IUIProvider uiProvider, IVisualStudioBrowser browser) { this.uiProvider = uiProvider; this.browser = browser; SignIn = ReactiveCommand.Create(); SignIn.Subscribe(_ => OnSignIn()); Register = ReactiveCommand.Create(); Register.Subscribe(_ => OnRegister()); }
public ReactiveValidatableObject([AllowNull] IUIProvider serviceProvider) { validatedProperties = typeValidatorsMap.GetOrAdd(GetType(), GetValidatedProperties); this.serviceProvider = serviceProvider; // This is allowed to be null. // NOTE: Until a property has been changed, we don't want to mark it as invalid // as far as IDataErrorInfo is concerned. Changed.Where(x => validatedProperties.ContainsKey(x.PropertyName)) .Subscribe(x => enabledProperties[x.PropertyName] = true); }
public void Init(Transform rootGameObject, IUIProvider provider = null) { if (provider == null) { _provider = new ResourcePrefabProvider(); } else { _provider = provider; } _uiRoot = rootGameObject; }
public MenuProvider(IUIProvider serviceProvider) { Menus = new List<IMenuHandler> { new AddConnection(serviceProvider), new OpenPullRequests(), new ShowGitHubPane() }; DynamicMenus = new List<IDynamicMenuHandler> { new CopyLink(serviceProvider), new CreateGist(serviceProvider), new OpenLink(serviceProvider) }; }
public MenuProvider(IUIProvider serviceProvider) { Menus = new List <IMenuHandler> { new AddConnection(serviceProvider), new OpenPullRequests(), new ShowGitHubPane() }; DynamicMenus = new List <IDynamicMenuHandler> { new CopyLink(serviceProvider), new CreateGist(serviceProvider), new OpenLink(serviceProvider) }; }
// Constructor public MainWindowLogic(IUIProvider uiProvider) { this.uiProvider = uiProvider; // Create the board BoardLogic = new BoardLogic(uiProvider); // Create the settings manager SettingsManager = new SettingsManager <Settings>("Sarabande, Inc.", "Sudoku"); // Get notified when a puzzle is solved BoardLogic.PuzzleSolved += OnPuzzleSolved; // Create the commands NewGame = new CommandBase(OnNewGame); Help = new CommandBase(OnHelp); }
public GitHubPaneViewModel(IGitHubServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory, ITeamExplorerServiceHolder holder, IConnectionManager cm, IRepositoryHosts hosts, IUIProvider uiProvider) : base(serviceProvider, apiFactory, holder) { this.connectionManager = cm; this.hosts = hosts; this.uiProvider = uiProvider; CancelCommand = ReactiveCommand.Create(); Title = "GitHub"; Message = String.Empty; this.WhenAnyValue(x => x.Control.DataContext) .OfType <BaseViewModel>() .Select(x => x.WhenAnyValue(y => y.Title)) .Switch() .Subscribe(x => Title = x ?? "GitHub"); }
/// <inheritdoc /> protected override void OnInitialize() { ILog logWriter = LogManager.GetLog(typeof(FactoryProvider)); IConfigurationElement[] configurationElements = ExtensionService.Instance.GetConfigurationElements(FactoryExtensionPointId); if (configurationElements.Length == 0) { throw new InvalidOperationException("There is no registered UI provider!"); } if (configurationElements.Length > 1) { string[] viewPartFactories = configurationElements.Select(x => x.Id).ToArray(); string enumeration = string.Join(", ", viewPartFactories); logWriter.Warning($"There is more than one UI provider registered: {enumeration}"); logWriter.Warning($"Taking first one ({configurationElements[0].Id})"); configurationElements = new[] { configurationElements[0] }; } IConfigurationElement element = configurationElements[0]; string id = element["id"]; string className = element["class"]; if (string.IsNullOrEmpty(className)) { string msg = $"Class attribute of UI provider contribution '{id}' is NULL or empty"; logWriter.Fatal(msg); throw new InvalidOperationException(msg); } try { IBundle providingBundle = ExtensionService.Instance.GetProvidingBundle(element); Type uiProviderType = TypeLoader.TypeForName(providingBundle, className); _uiProvider = uiProviderType.NewInstance <IUIProvider>(); } catch (Exception ex) { string msg = $"Error on creating UI provider instance of '{className}' contributed by '{id}'"; logWriter.Fatal(msg); throw new InvalidOperationException(msg, ex); } }
public BoardLogic(IUIProvider uiProvider) { this.uiProvider = uiProvider; Undo = new CommandBase(OnUndo, false); Redo = new CommandBase(OnRedo, false); Reset = new CommandBase(OnReset, false); Check = new CommandBase(OnCheck, false); Hint = new CommandBase(OnHint, false); Query = new CommandBase(OnQuery, false); Stats = new CommandBase(OnStats, true); KbdNumber = new CommandBase(OnKbdNumber, true); KbdPossible = new CommandBase(OnKbdPossible, true); MoveRight = new CommandBase(OnMoveRight, true); MoveLeft = new CommandBase(OnMoveLeft, true); MoveUp = new CommandBase(OnMoveUp, true); MoveDown = new CommandBase(OnMoveDown, true); for (uint i = 0; i < UICells.Length; i++) { UICells[i] = new UICellLogic(uiProvider, i); } }
CloneRequest ShowCloneDialog(IUIProvider uiProvider, IGitRepositoriesExt gitRepositories, ISimpleRepositoryModel repository = null) { string basePath = null; uiProvider.AddService(this, gitRepositories); var load = uiProvider.SetupUI(repository == null ? UIControllerFlow.Clone : UIControllerFlow.StartPageClone, null //TODO: set the connection corresponding to the repository if the repository is not null ); load.Subscribe(x => { if ((repository == null && x.Data.ViewType == Exports.UIViewType.Clone) || // fire the normal clone dialog (repository != null && x.Data.ViewType == Exports.UIViewType.StartPageClone) // fire the clone dialog for re-acquiring a repo ) { var vm = x.View.ViewModel as IBaseCloneViewModel; if (repository != null) { vm.SelectedRepository = repository; } x.View.Done.Subscribe(_ => { basePath = vm.BaseRepositoryPath; if (repository == null) { repository = vm.SelectedRepository; } }); } }); uiProvider.RunUI(); uiProvider.RemoveService(typeof(IGitRepositoriesExt), this); return(new CloneRequest(basePath, repository)); }
public VSServices(IUIProvider serviceProvider) { this.serviceProvider = serviceProvider; }
public OpenLink(IUIProvider serviceProvider) : base(serviceProvider) { }
//==============================================Methods public void Init(IUIProvider p_uiProvider) { m_uiProvider = p_uiProvider; PictureBox_Clicked(pbFollowing, null); }
public UIController(IUIProvider uiProvider, IRepositoryHosts hosts, IExportFactoryProvider factory, IConnectionManager connectionManager, Lazy <ITwoFactorChallengeHandler> lazyTwoFactorChallengeHandler) { this.factory = factory; this.uiProvider = uiProvider; this.hosts = hosts; this.connectionManager = connectionManager; this.lazyTwoFactorChallengeHandler = lazyTwoFactorChallengeHandler; #if DEBUG if (Application.Current != null && !Splat.ModeDetector.InUnitTestRunner()) { var waitDispatcher = RxApp.MainThreadScheduler as WaitForDispatcherScheduler; if (waitDispatcher != null) { Debug.Assert(DispatcherScheduler.Current.Dispatcher == Application.Current.Dispatcher, "DispatcherScheduler is set correctly"); } else { Debug.Assert(((DispatcherScheduler)RxApp.MainThreadScheduler).Dispatcher == Application.Current.Dispatcher, "The MainThreadScheduler is using the wrong dispatcher"); } } #endif machine = new StateMachine <UIViewType, Trigger>(UIViewType.None); machine.Configure(UIViewType.Login) .OnEntry(() => { RunView(UIViewType.Login); }) .Permit(Trigger.Next, UIViewType.TwoFactor) // Added the following line to make it easy to login to both GitHub and GitHub Enterprise // in DesignTimeStyleHelper in order to test Publish. .Permit(Trigger.Cancel, UIViewType.End) .PermitIf(Trigger.Finish, UIViewType.End, () => currentFlow == UIControllerFlow.Authentication) .PermitIf(Trigger.Finish, UIViewType.Create, () => currentFlow == UIControllerFlow.Create) .PermitIf(Trigger.Finish, UIViewType.Clone, () => currentFlow == UIControllerFlow.Clone) .PermitIf(Trigger.Finish, UIViewType.Publish, () => currentFlow == UIControllerFlow.Publish); machine.Configure(UIViewType.TwoFactor) .SubstateOf(UIViewType.Login) .OnEntry(() => { RunView(UIViewType.TwoFactor); }) .Permit(Trigger.Cancel, UIViewType.End) .PermitIf(Trigger.Next, UIViewType.End, () => currentFlow == UIControllerFlow.Authentication) .PermitIf(Trigger.Next, UIViewType.Create, () => currentFlow == UIControllerFlow.Create) .PermitIf(Trigger.Next, UIViewType.Clone, () => currentFlow == UIControllerFlow.Clone) .PermitIf(Trigger.Next, UIViewType.Publish, () => currentFlow == UIControllerFlow.Publish); machine.Configure(UIViewType.Create) .OnEntry(() => { RunView(UIViewType.Create); }) .Permit(Trigger.Cancel, UIViewType.End) .Permit(Trigger.Next, UIViewType.End); machine.Configure(UIViewType.Clone) .OnEntry(() => { RunView(UIViewType.Clone); }) .Permit(Trigger.Cancel, UIViewType.End) .Permit(Trigger.Next, UIViewType.End); machine.Configure(UIViewType.Publish) .OnEntry(() => { RunView(UIViewType.Publish); }) .Permit(Trigger.Cancel, UIViewType.End) .Permit(Trigger.Next, UIViewType.End); machine.Configure(UIViewType.End) .OnEntry(() => { uiProvider.RemoveService(typeof(IConnection)); transition.OnCompleted(); }) .Permit(Trigger.Next, UIViewType.Finished); // it might be useful later to check which triggered // made us enter here (Cancel or Next) and set a final // result accordingly, which is why UIViewType.End only // allows a Next trigger machine.Configure(UIViewType.Finished); }
protected MenuBase(IUIProvider serviceProvider) { this.serviceProvider = serviceProvider; apiFactory = new Lazy<ISimpleApiClientFactory>(() => ServiceProvider.TryGetService<ISimpleApiClientFactory>()); }
protected MenuBase(IUIProvider serviceProvider) { this.serviceProvider = serviceProvider; apiFactory = new Lazy <ISimpleApiClientFactory>(() => ServiceProvider.TryGetService <ISimpleApiClientFactory>()); }
public CreateGist(IUIProvider serviceProvider) : base(serviceProvider) { selectedTextProvider = new Lazy <ISelectedTextProvider>(() => ServiceProvider.TryGetService <ISelectedTextProvider>()); }
public VSGitServices(IUIProvider serviceProvider) { this.serviceProvider = serviceProvider; }
public CopyLink(IUIProvider serviceProvider) : base(serviceProvider) { }
public ConnectionRepositoryHostMap(IUIProvider provider, IRepositoryHosts hosts) : this(provider.TryGetService<IConnection>(), hosts) { }
async Task <IGitRepositoriesExt> GetGitRepositoriesExt(IUIProvider uiProvider) { var page = await GetTeamExplorerPage(uiProvider); return(page?.GetService <IGitRepositoriesExt>()); }
public AddConnection(IUIProvider serviceProvider) : base(serviceProvider) { }
public LinkMenuBase(IUIProvider serviceProvider) : base(serviceProvider) { usageTracker = new Lazy<IUsageTracker>(() => ServiceProvider.TryGetService<IUsageTracker>()); }
public CreateGist(IUIProvider serviceProvider) : base(serviceProvider) { selectedTextProvider = new Lazy<ISelectedTextProvider>(() => ServiceProvider.TryGetService<ISelectedTextProvider>()); }
public ConnectionRepositoryHostMap(IUIProvider provider, IRepositoryHosts hosts) : this(provider.TryGetService <IConnection>(), hosts) { }
public NavigationController(IUIProvider uiProvider) { this.uiProvider = uiProvider; }
public LinkMenuBase(IUIProvider serviceProvider) : base(serviceProvider) { usageTracker = new Lazy <IUsageTracker>(() => ServiceProvider.TryGetService <IUsageTracker>()); }
public DialogService(IUIProvider uiProvider) { this.uiProvider = uiProvider; }
public DialogService(IUIProvider uiProvider) { Guard.ArgumentNotNull(uiProvider, nameof(uiProvider)); this.uiProvider = uiProvider; }
public UIController(IUIProvider uiProvider, IRepositoryHosts hosts, IExportFactoryProvider factory, IConnectionManager connectionManager, Lazy<ITwoFactorChallengeHandler> lazyTwoFactorChallengeHandler) { this.factory = factory; this.uiProvider = uiProvider; this.hosts = hosts; this.connectionManager = connectionManager; this.lazyTwoFactorChallengeHandler = lazyTwoFactorChallengeHandler; #if DEBUG if (Application.Current != null && !Splat.ModeDetector.InUnitTestRunner()) { var waitDispatcher = RxApp.MainThreadScheduler as WaitForDispatcherScheduler; if (waitDispatcher != null) { Debug.Assert(DispatcherScheduler.Current.Dispatcher == Application.Current.Dispatcher, "DispatcherScheduler is set correctly"); } else { Debug.Assert(((DispatcherScheduler)RxApp.MainThreadScheduler).Dispatcher == Application.Current.Dispatcher, "The MainThreadScheduler is using the wrong dispatcher"); } } #endif machine = new StateMachine<UIViewType, Trigger>(UIViewType.None); machine.Configure(UIViewType.Login) .OnEntry(() => { RunView(UIViewType.Login); }) .Permit(Trigger.Next, UIViewType.TwoFactor) // Added the following line to make it easy to login to both GitHub and GitHub Enterprise // in DesignTimeStyleHelper in order to test Publish. .Permit(Trigger.Cancel, UIViewType.End) .PermitIf(Trigger.Finish, UIViewType.End, () => currentFlow == UIControllerFlow.Authentication) .PermitIf(Trigger.Finish, UIViewType.Create, () => currentFlow == UIControllerFlow.Create) .PermitIf(Trigger.Finish, UIViewType.Clone, () => currentFlow == UIControllerFlow.Clone) .PermitIf(Trigger.Finish, UIViewType.Publish, () => currentFlow == UIControllerFlow.Publish); machine.Configure(UIViewType.TwoFactor) .SubstateOf(UIViewType.Login) .OnEntry(() => { RunView(UIViewType.TwoFactor); }) .Permit(Trigger.Cancel, UIViewType.End) .PermitIf(Trigger.Next, UIViewType.End, () => currentFlow == UIControllerFlow.Authentication) .PermitIf(Trigger.Next, UIViewType.Create, () => currentFlow == UIControllerFlow.Create) .PermitIf(Trigger.Next, UIViewType.Clone, () => currentFlow == UIControllerFlow.Clone) .PermitIf(Trigger.Next, UIViewType.Publish, () => currentFlow == UIControllerFlow.Publish); machine.Configure(UIViewType.Create) .OnEntry(() => { RunView(UIViewType.Create); }) .Permit(Trigger.Cancel, UIViewType.End) .Permit(Trigger.Next, UIViewType.End); machine.Configure(UIViewType.Clone) .OnEntry(() => { RunView(UIViewType.Clone); }) .Permit(Trigger.Cancel, UIViewType.End) .Permit(Trigger.Next, UIViewType.End); machine.Configure(UIViewType.Publish) .OnEntry(() => { RunView(UIViewType.Publish); }) .Permit(Trigger.Cancel, UIViewType.End) .Permit(Trigger.Next, UIViewType.End); machine.Configure(UIViewType.End) .OnEntry(() => { uiProvider.RemoveService(typeof(IConnection)); transition.OnCompleted(); }) .Permit(Trigger.Next, UIViewType.Finished); // it might be useful later to check which triggered // made us enter here (Cancel or Next) and set a final // result accordingly, which is why UIViewType.End only // allows a Next trigger machine.Configure(UIViewType.Finished); }
public ConsoleRunner(IUIProvider provider, IRouter router) { this.provider = provider; this.router = router; }