Files
mRemoteNG/mRemoteV1/Connection/Connection.Protocol.Base.vb

206 lines
7.7 KiB
VB.net

Imports System.Windows.Forms
Imports System.Threading
Imports mRemote.App.Runtime
Namespace Connection
Namespace Protocol
Public Class Base
#Region "Properties"
#Region "Control"
Private _Name As String
Public Property Name() As String
Get
Return Me._Name
End Get
Set(ByVal value As String)
Me._Name = value
End Set
End Property
Private _InterfaceControl As Connection.InterfaceControl
Public Property InterfaceControl() As Connection.InterfaceControl
Get
Return Me._InterfaceControl
End Get
Set(ByVal value As Connection.InterfaceControl)
Me._InterfaceControl = value
End Set
End Property
Private _Control As Control
Public Property Control() As Control
Get
Return Me._Control
End Get
Set(ByVal value As Control)
Me._Control = value
End Set
End Property
#End Region
Private _Force As mRemote.Connection.Info.Force
Public Property Force() As mRemote.Connection.Info.Force
Get
Return Me._Force
End Get
Set(ByVal value As mRemote.Connection.Info.Force)
Me._Force = value
End Set
End Property
Public WithEvents tmrReconnect As New Timers.Timer(2000)
Public WithEvents ReconnectGroup As ReconnectGroup
#End Region
#Region "Methods"
Public Overridable Sub Focus()
Try
Me._Control.Focus()
Catch ex As Exception
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't focus Control (Connection.Protocol.Base)" & vbNewLine & ex.Message, True)
End Try
End Sub
Public Overridable Function SetProps() As Boolean
Try
Me._InterfaceControl.Parent.Tag = Me._InterfaceControl
Me._InterfaceControl.Show()
If Me._Control IsNot Nothing Then
Me._Control.Name = Me._Name
Me._Control.Parent = Me._InterfaceControl
Me._Control.Location = Me._InterfaceControl.Location
Me._Control.Size = Me.InterfaceControl.Size
Me._Control.Anchor = Me._InterfaceControl.Anchor
End If
Return True
Catch ex As Exception
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't SetProps (Connection.Protocol.Base)" & vbNewLine & ex.Message, True)
Return False
End Try
End Function
Public Overridable Function Connect() As Boolean
If InterfaceControl.Info.Protocol <> Protocols.RDP Then
RaiseEvent Connected(Me)
End If
End Function
Public Overridable Sub Disconnect()
Me.Close()
End Sub
Public Overridable Sub Resize()
End Sub
Public Overridable Sub Close()
Dim t As New Thread(AddressOf CloseBG)
t.IsBackground = True
t.Start()
End Sub
Private Sub CloseBG()
RaiseEvent Closed(Me)
Try
tmrReconnect.Enabled = False
If Me._Control IsNot Nothing Then
Try
Me.DisposeControl()
Catch ex As Exception
mC.AddMessage(Messages.MessageClass.WarningMsg, "Could not dispose control, probably form is already closed (Connection.Protocol.Base)" & vbNewLine & ex.Message, True)
End Try
End If
If Me._InterfaceControl IsNot Nothing Then
Try
If Me._InterfaceControl.Parent IsNot Nothing Then
If Me._InterfaceControl.Parent.Tag IsNot Nothing Then
Me.SetTagToNothing()
End If
Me.DisposeInterface()
End If
Catch ex As Exception
mC.AddMessage(Messages.MessageClass.WarningMsg, "Could not set InterfaceControl.Parent.Tag or Dispose Interface, probably form is already closed (Connection.Protocol.Base)" & vbNewLine & ex.Message, True)
End Try
End If
Catch ex As Exception
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't Close InterfaceControl BG (Connection.Protocol.Base)" & vbNewLine & ex.Message, True)
End Try
End Sub
Private Delegate Sub DisposeInterfaceCB()
Private Sub DisposeInterface()
If Me._InterfaceControl.InvokeRequired Then
Dim s As New DisposeInterfaceCB(AddressOf DisposeInterface)
Me._InterfaceControl.Invoke(s)
Else
Me._InterfaceControl.Dispose()
End If
End Sub
Private Delegate Sub SetTagToNothingCB()
Private Sub SetTagToNothing()
If Me._InterfaceControl.Parent.InvokeRequired Then
Dim s As New SetTagToNothingCB(AddressOf SetTagToNothing)
Me._InterfaceControl.Parent.Invoke(s)
Else
Me._InterfaceControl.Parent.Tag = Nothing
End If
End Sub
Private Delegate Sub DisposeControlCB()
Private Sub DisposeControl()
If Me._Control.InvokeRequired Then
Dim s As New DisposeControlCB(AddressOf DisposeControl)
Me._Control.Invoke(s)
Else
Me._Control.Dispose()
End If
End Sub
#End Region
#Region "Events"
Public Event Connecting(ByVal sender As Object)
Public Event Connected(ByVal sender As Object)
Public Event Disconnected(ByVal sender As Object, ByVal DisconnectedMessage As String)
Public Event ErrorOccured(ByVal sender As Object, ByVal ErrorMessage As String)
Public Event Closing(ByVal sender As Object)
Public Event Closed(ByVal sender As Object)
Public Sub Event_Closing(ByVal sender As Object)
RaiseEvent Closing(sender)
End Sub
Public Sub Event_Closed(ByVal sender As Object)
RaiseEvent Closed(sender)
End Sub
Public Sub Event_Connecting(ByVal sender As Object)
RaiseEvent Connecting(sender)
End Sub
Public Sub Event_Connected(ByVal sender As Object)
RaiseEvent Connected(sender)
End Sub
Public Sub Event_Disconnected(ByVal sender As Object, ByVal DisconnectedMessage As String)
RaiseEvent Disconnected(sender, DisconnectedMessage)
End Sub
Public Sub Event_ErrorOccured(ByVal sender As Object, ByVal ErrorMsg As String)
RaiseEvent ErrorOccured(sender, ErrorMsg)
End Sub
Public Sub Event_ReconnectGroupCloseClicked() Handles ReconnectGroup.CloseClicked
Close()
End Sub
#End Region
End Class
End Namespace
End Namespace