Пример #1
0
        //---------------------------------------------------------------------
        // Ctor.
        //---------------------------------------------------------------------

        public RemoteDesktopPane(
            IServiceProvider serviceProvider,
            InstanceLocator vmInstance)
            : base(serviceProvider)
        {
            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
            this.eventService    = serviceProvider.GetService <IEventService>();
            this.Instance        = vmInstance;

            // The ActiveX fails when trying to drag/dock a window, so disable
            // that feature.
            this.AllowEndUserDocking = false;

            var singleScreenFullScreenMenuItem = new ToolStripMenuItem("&Full screen");

            singleScreenFullScreenMenuItem.Click += (sender, _)
                                                    => TrySetFullscreen(FullScreenMode.SingleScreen);
            this.TabContextStrip.Items.Add(singleScreenFullScreenMenuItem);
            this.TabContextStrip.Opening += tabContextStrip_Opening;

            var allScreensFullScreenMenuItem = new ToolStripMenuItem("&Full screen (multiple displays)");

            allScreensFullScreenMenuItem.Click += (sender, _)
                                                  => TrySetFullscreen(FullScreenMode.AllScreens);
            this.TabContextStrip.Items.Add(allScreensFullScreenMenuItem);
            this.TabContextStrip.Opening += tabContextStrip_Opening;
        }
Пример #2
0
        public ProjectExplorerTrackingToolWindow(
            DockPanel dockPanel,
            IProjectExplorer projectExplorer,
            IEventService eventService,
            IExceptionDialog exceptionDialog)
        {
            this.exceptionDialog = exceptionDialog;

            // Capture the GUI thread scheduler.
            this.taskScheduler = TaskScheduler.FromCurrentSynchronizationContext();

            //
            // This window is a singleton, so we never want it to be closed,
            // just hidden.
            //
            this.HideOnClose = true;
            this.dockPanel   = dockPanel;


            // Use currently selected node.
            OnProjectExplorerNodeSelected(projectExplorer.SelectedNode);

            // Track current selection in project explorer.
            eventService.BindHandler <ProjectExplorerNodeSelectedEvent>(
                e => OnProjectExplorerNodeSelected(e.SelectedNode));
        }
        public ProjectExplorerTrackingToolWindow(
            IServiceProvider serviceProvider,
            DockState defaultDockState)
            : base(
                serviceProvider,
                defaultDockState)
        {
            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();

            // Capture the GUI thread scheduler.
            this.taskScheduler = TaskScheduler.FromCurrentSynchronizationContext();

            //
            // This window is a singleton, so we never want it to be closed,
            // just hidden.
            //
            this.HideOnClose = true;

            // Use currently selected node.
            var projectExplorer = serviceProvider.GetService <IProjectExplorer>();

            OnProjectExplorerNodeSelected(projectExplorer.SelectedNode);

            // Track current selection in project explorer.
            var eventService = serviceProvider.GetService <IEventService>();

            eventService.BindHandler <ProjectExplorerNodeSelectedEvent>(
                e => OnProjectExplorerNodeSelected(e.SelectedNode));
        }
Пример #4
0
        public ProjectPickerDialog(IServiceProvider serviceProvider)
        {
            InitializeComponent();

            this.resourceManager = serviceProvider.GetService <IResourceManagerAdapter>();
            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
        }
        public RemoteDesktopConnectionBroker(IServiceProvider serviceProvider)
        {
            this.dockPanel       = serviceProvider.GetService <IMainForm>().MainPanel;
            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
            this.eventService    = serviceProvider.GetService <IEventService>();

            // NB. The ServiceCategory attribute causes this class to be
            // announced to the global connection broker.
        }
Пример #6
0
        public RemoteDesktopConnectionBroker(IServiceProvider serviceProvider)
        {
            this.dockPanel       = serviceProvider.GetService <IMainForm>().MainPanel;
            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
            this.eventService    = serviceProvider.GetService <IEventService>();

            // Register as connection broker so that the status of connections
            // managed by this broker is surfaced in Project Explorer.
            serviceProvider.GetService <IGlobalConnectionBroker>().Register(this);
        }
        public void Initialize(AcceptCancelDialog control)
        {
            var error = CreateException();
            InitializeDialog(
                control, 
                () => DialogViewModel.ExceptionDialog(error));

            exceptionDialog = ContentViewModel as IExceptionDialog;
            exceptionDialog.Show();
        }
Пример #8
0
        /// <summary> Shows an exception message and detail dialog. </summary>
        /// <param name="exception">Exception to display</param>
        /// <param name="title">Optional dialog title</param>
        public static void ShowException(Exception exception, string title)
        {
            IExceptionDialog exDlg = UIFactory.NewShell <IExceptionDialog>();

            exDlg.DialogType      = EMessageDialogType.Error;
            exDlg.WindowTitle     = title ?? string.Empty;
            exDlg.Header          = Messages.MessageDialog_ExceptionDialog_Header;
            exDlg.Exception       = exception;
            exDlg.DialogResultSet = new[] { EMessageDialogResult.Close };
            exDlg.Show();
        }
Пример #9
0
        //---------------------------------------------------------------------
        // Publics.
        //---------------------------------------------------------------------

        public RemoteDesktopPane(
            IEventService eventService,
            IExceptionDialog exceptionDialog,
            VmInstanceReference vmInstance)
        {
            this.exceptionDialog = exceptionDialog;
            this.eventService    = eventService;
            this.Instance        = vmInstance;

            this.TabText   = vmInstance.InstanceName;
            this.DockAreas = DockAreas.Document;

            var fullScreenMenuItem = new ToolStripMenuItem("&Full screen");

            fullScreenMenuItem.Click += fullScreenMenuItem_Click;
            this.TabContextStrip.Items.Add(fullScreenMenuItem);
            this.TabContextStrip.Opening += tabContextStrip_Opening;
        }
Пример #10
0
        public TunnelsWindow(IServiceProvider serviceProvider)
        {
            InitializeComponent();

            this.dockPanel = serviceProvider.GetService <IMainForm>().MainPanel;
            this.TabText   = this.Text;

            this.theme.ApplyTo(this.toolStrip);

            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();

            //
            // This window is a singleton, so we never want it to be closed,
            // just hidden.
            //
            this.HideOnClose = true;

            this.viewModel      = new TunnelsViewModel(serviceProvider);
            this.viewModel.View = this;

            this.tunnelsList.BindCollection(viewModel.Tunnels);
            this.tunnelsList.BindColumn(0, t => t.Destination.Instance.Name);
            this.tunnelsList.BindColumn(1, t => t.Destination.Instance.ProjectId);
            this.tunnelsList.BindColumn(2, t => t.Destination.Instance.Zone);
            this.tunnelsList.BindColumn(3, t => t.LocalPort.ToString());

            this.tunnelsList.BindProperty(
                v => this.tunnelsList.SelectedModelItem,
                this.viewModel,
                m => this.viewModel.SelectedTunnel,
                this.components);
            this.disconnectToolStripButton.BindProperty(
                b => b.Enabled,
                this.viewModel,
                m => m.IsDisconnectButtonEnabled,
                this.components);
            this.disconnectTunnelToolStripMenuItem.BindProperty(
                b => b.Enabled,
                this.viewModel,
                m => m.IsDisconnectButtonEnabled,
                this.components);
        }
        public TunnelsWindow(IServiceProvider serviceProvider)
        {
            InitializeComponent();

            this.dockPanel           = serviceProvider.GetService <IMainForm>().MainPanel;
            this.tunnelBrokerService = serviceProvider.GetService <TunnelBrokerService>();
            this.exceptionDialog     = serviceProvider.GetService <IExceptionDialog>();

            this.TabText = this.Text;

            //
            // This window is a singleton, so we never want it to be closed,
            // just hidden.
            //
            this.HideOnClose = true;

            // Keep the list up tp date.
            var eventService = serviceProvider.GetService <IEventService>();

            eventService.BindHandler <TunnelOpenedEvent>(_ => RefreshTunnels());
            eventService.BindHandler <TunnelClosedEvent>(_ => RefreshTunnels());
        }
Пример #12
0
        //---------------------------------------------------------------------
        // Publics.
        //---------------------------------------------------------------------

        public RemoteDesktopPane(
            IEventService eventService,
            IExceptionDialog exceptionDialog,
            InstanceLocator vmInstance)
        {
            this.exceptionDialog = exceptionDialog;
            this.eventService    = eventService;
            this.Instance        = vmInstance;

            this.TabText   = vmInstance.Name;
            this.DockAreas = DockAreas.Document;

            // The ActiveX fails when trying to drag/dock a window, so disable
            // that feature.
            this.AllowEndUserDocking = false;

            var fullScreenMenuItem = new ToolStripMenuItem("&Full screen");

            fullScreenMenuItem.Click += fullScreenMenuItem_Click;
            this.TabContextStrip.Items.Add(fullScreenMenuItem);
            this.TabContextStrip.Opening += tabContextStrip_Opening;
        }
Пример #13
0
 public RemoteDesktopService(IServiceProvider serviceProvider)
 {
     this.dockPanel       = serviceProvider.GetService <IMainForm>().MainPanel;
     this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
     this.eventService    = serviceProvider.GetService <IEventService>();
 }
Пример #14
0
 public MarshallingProxy(IExceptionDialog real)
 {
     _real = real;
 }
Пример #15
0
 public ConnectionNotifications(IMailClient mailClient, IExceptionDialog exceptionDialog)
     : base(mailClient,
     new ExceptionMessageBuilder(new AssemblyInfo()), exceptionDialog)
 {
 }
Пример #16
0
        //---------------------------------------------------------------------
        // Ctor.
        //---------------------------------------------------------------------

        internal SshTerminalPane(
            IServiceProvider serviceProvider,
            InstanceLocator vmInstance,
            IPEndPoint endpoint,
            AuthorizedKey authorizedKey)
            : base(serviceProvider, DockState.Document)
        {
            InitializeComponent();

            this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
            this.viewModel       = new SshTerminalPaneViewModel(
                serviceProvider.GetService <IEventService>(),
                vmInstance,
                endpoint,
                authorizedKey)
            {
                View = this
            };

            this.Text      = vmInstance.Name;
            this.DockAreas = DockAreas.Document;

            this.reconnectPanel.BindReadonlyProperty(
                c => c.Visible,
                this.viewModel,
                m => m.IsReconnectPanelVisible,
                this.components);
            this.spinner.BindReadonlyProperty(
                c => c.Visible,
                this.viewModel,
                m => m.IsSpinnerVisible,
                this.components);
            this.terminal.BindReadonlyProperty(
                c => c.Visible,
                this.viewModel,
                m => m.IsTerminalVisible,
                this.components);
            this.viewModel.OnPropertyChange(
                m => m.IsTerminalVisible,
                visible =>
            {
                if (visible)
                {
                    this.terminal.Focus();
                }
            });

            Debug.Assert(this.Text != this.Name);

            this.Disposed += (sender, args) =>
            {
                this.viewModel.Dispose();
            };
            this.FormClosed             += OnFormClosed;
            this.Terminal.InputReceived += (sender, args) =>
            {
                //
                // Relay user input to SSH connection.
                //
                // NB. This method will never throw an exception, so it is ok
                // to fire-and-forget it.
                //
                OnInputReceivedFromUserAsync(args.Data)
                .ContinueWith(_ => { });
            };

            this.Terminal.TerminalResized += (sender, args) =>
            {
                //
                // NB. This method will never throw an exception, so it is ok
                // to fire-and-forget it.
                //
                OnTerminalResizedByUser()
                .ContinueWith(_ => { });
            };

            this.Terminal.WindowTitleChanged += (sender, args) =>
            {
                this.TabText = this.Terminal.WindowTitle;
            };

            this.viewModel.ConnectionFailed += OnErrorReceivedFromServerAsync;
            this.viewModel.DataReceived     += OnDataReceivedFromServerAsync;

#if DEBUG
            var copyStream = new ToolStripMenuItem("DEBUG: Copy received data");
            copyStream.Click += (sender, args) => this.viewModel.CopyReceivedDataToClipboard();
            this.TabContextStrip.Items.Add(copyStream);
#endif
        }
Пример #17
0
 public SerialLogService(IServiceProvider serviceProvider)
 {
     this.dockPanel       = serviceProvider.GetService <IMainForm>().MainPanel;
     this.exceptionDialog = serviceProvider.GetService <IExceptionDialog>();
     this.serviceProvider = serviceProvider;
 }
Пример #18
0
 public HandledExceptionManager(IMailClient mailClient, IExceptionMessageBuilder exceptionMessageBuilder, IExceptionDialog exceptionDialog)
 {
     _mailClient = mailClient;
     _exceptionMessageBuilder = exceptionMessageBuilder;
     _exceptionDialog = exceptionDialog;
 }