Imports BV.Core
Imports IMidRange
Imports MidRange
Imports BV.Math
Imports BV.TopLevel
Imports System.Windows.Forms
Imports System.Collections.Generic
''' <summary>
''' ToolBar que permite realizar analisis parametrizados
''' </summary>
''' <remarks></remarks>
Public Class ParametricsToolStripBar
Inherits ToolStripBase
Protected WithEvents MainScanner As ComplexMultiScanner
Protected intParam As ParameterBase
Protected intSnaps As List(Of Hashtable)
Protected TlBarBtnAdd, TlBarBtnRemove, TlBarBtnForward, TlBarBtnBackward As ToolStripButton
Protected TlBarBtnMax, TlBarBtnMin, TlBarBtnParamRun, TlBarBtnSnap As ToolStripButton
Public Event ParamAdded(ByVal sender As Object, ByVal e As EventArgs)
Public Event ParamRemoved(ByVal sender As Object, ByVal e As EventArgs)
Public Sub New(ByVal MainToolBar As ToolStripContainer)
MyBase.New(MainToolBar)
MainScanner = New ComplexMultiScanner
intSnaps = New List(Of Hashtable)
InitializeToolBar()
' AddHandler MainScanner.ScannerProperties.GetLimit, AddressOf OnGetLimit
End Sub
#Region "Initialize ToolBar"
Private Sub InitializeToolBar()
' Dim BVTlBarBtn As ToolStripButton
ImgLst.Images.Add(New Icon([GetType], "ParamBck.ico"))
ImgLst.Images.Add(New Icon([GetType], "ParamRun.ico"))
ImgLst.Images.Add(New Icon([GetType], "ParamFwd.ico"))
ImgLst.Images.Add(New Icon([GetType], "ParamToBegin.ico"))
ImgLst.Images.Add(New Icon([GetType], "ParamToEnd.ico"))
ImgLst.Images.Add(New Icon([GetType], "ParamStop.ico"))
ImgLst.Images.Add(New Icon([GetType], "AddParam.ico"))
ImgLst.Images.Add(New Icon([GetType], "RemoveParam.ico"))
ImgLst.Images.Add(New Icon([GetType], "RemoveParam.ico"))
Me.Band = New ToolStrip
Me.Band.Name = "ParamBand"
Me.Band.ImageList = Me.ImgLst
Me.TlBarBtnAdd = Band.Items.Add("", Nothing, New EventHandler(AddressOf Add))
Me.TlBarBtnAdd.ImageIndex = 6
Me.TlBarBtnAdd.ToolTipText = "Add Selected Parameter"
Me.TlBarBtnAdd.Enabled = False
Me.TlBarBtnRemove = Band.Items.Add("", Nothing, New EventHandler(AddressOf Remove))
Me.TlBarBtnRemove.ImageIndex = 7
Me.TlBarBtnRemove.ToolTipText = "Remove Selected Parameter"
Me.TlBarBtnRemove.Enabled = False
Me.Band.Items.Add(New ToolStripSeparator)
Me.TlBarBtnBackward = Band.Items.Add("", Nothing, New EventHandler(AddressOf ParamBackward))
Me.TlBarBtnBackward.ImageIndex = 0
Me.TlBarBtnBackward.ToolTipText = "Step Back Parameter Value"
Me.TlBarBtnParamRun = Band.Items.Add("", Nothing, New EventHandler(AddressOf RunParametrics))
Me.TlBarBtnParamRun.ImageIndex = 1
Me.TlBarBtnParamRun.ToolTipText = "Start Parametrics Scan"
Me.TlBarBtnForward = Band.Items.Add("", Nothing, New EventHandler(AddressOf ParamForward))
Me.TlBarBtnForward.ImageIndex = 2
Me.TlBarBtnForward.ToolTipText = "Step Forward Parameter Value"
Me.Band.Items.Add(New ToolStripSeparator)
Me.TlBarBtnMin = Band.Items.Add("", Nothing, New EventHandler(AddressOf Reset))
Me.TlBarBtnMin.ImageIndex = 3
Me.TlBarBtnMin.ToolTipText = "Reset Parameter to Min Value"
Me.TlBarBtnMax = Band.Items.Add("", Nothing, New EventHandler(AddressOf SetToMax))
Me.TlBarBtnMax.ImageIndex = 4
Me.TlBarBtnMax.ToolTipText = "Set Parameter To Max Value"
Me.Band.Items.Add(New ToolStripSeparator)
Me.TlBarBtnSnap = Band.Items.Add("Take Snap Shots")
Me.TlBarBtnSnap.ImageIndex = 8
Me.TlBarBtnSnap.CheckOnClick = True
Me.TlBarBtnSnap.ToolTipText = "Take Snap Shots"
Me.TlBarContainer.TopToolStripPanel.Controls.Add(Band)
End Sub
#End Region
#Region "Properties"
''' <summary>
''' Parametro seleccionado
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property SelectedParameter() As ParameterBase
Get
Return intParam
End Get
Set(ByVal value As ParameterBase)
intParam = value
If value Is Nothing Then
Me.TlBarBtnAdd.Enabled = False
Me.TlBarBtnRemove.Enabled = False
ElseIf Me.MainScanner.Contains(value) Then
Me.TlBarBtnAdd.Enabled = False
Me.TlBarBtnRemove.Enabled = True
Else
Me.TlBarBtnRemove.Enabled = False
Me.TlBarBtnAdd.Enabled = True
End If
End Set
End Property
Public ReadOnly Property Scanner() As ComplexMultiScanner
Get
Return Me.MainScanner
End Get
End Property
#End Region
#Region "Public Methods"
Public Function ContainsParam(ByVal Param As Parameter) As Boolean
Return Me.MainScanner.Contains(Param)
End Function
''' <summary>
''' Agrega el parametro indicado al listado de parametros controlados
''' por �ste Toolbar
''' </summary>
''' <param name="Param">Parametro a controlar</param>
''' <remarks></remarks>
Public Function Add(ByVal Param As Parameter) As ScanResponseModifier
If Not Me.MainScanner.Contains(Param) Then
Add = Me.MainScanner.Add(Param)
SelectedParameter = Param
RaiseEvent ParamAdded(Me, New EventArgs)
Else
Add = Me.MainScanner.Item(Param)
SelectedParameter = Param
End If
End Function
''' <summary>
''' Agrega el parametro indicado al listado de parametros controlados
''' por �ste Toolbar
''' </summary>
''' <param name="Param">Parametro a controlar</param>
''' <param name="RespMod">Modificador de Respuesta del Parametro</param>
''' <remarks></remarks>
Public Sub Add(ByVal Param As ParameterBase, ByVal RespMod As ScanResponseModifier)
Dim MustRaiseEvent As Boolean
MustRaiseEvent = Not Me.MainScanner.Contains(Param)
Me.MainScanner.Add(Param, RespMod)
If MustRaiseEvent Then
RaiseEvent ParamAdded(Me, New EventArgs)
End If
SelectedParameter = Param
End Sub
''' <summary>
''' Remueve el Parametro indicado del Listado de parametros
''' controlados
''' </summary>
''' <param name="Target">Parametro a Remover</param>
''' <remarks></remarks>
Public Sub Remove(ByVal Target As Parameter)
If Me.MainScanner.Contains(Target) Then
Me.MainScanner.Remove(Target)
SelectedParameter = Target
RaiseEvent ParamRemoved(Me, New EventArgs)
End If
End Sub
Public Sub ParamBackward()
'Me.TlBarBtnForward.Enabled = True
EnableButtons(False, True)
Me.MainScanner.ScannerProperties.StepBackward()
End Sub
Public Sub ParamForward()
EnableButtons(True, True)
'Me.TlBarBtnBackward.Enabled = True
Me.MainScanner.ScannerProperties.StepForward()
End Sub
Public Sub Reset()
'EnableButtons(True, True)
'EnableButtons(False, False)
'Me.TlBarBtnForward.Enabled = True
Me.MainScanner.ScannerProperties.Reset()
End Sub
Public Sub SetToMax()
'EnableButtons(False, True)
'EnableButtons(True, False)
'Me.TlBarBtnForward.Enabled = True
Me.MainScanner.ScannerProperties.SetToMax()
End Sub
Public Sub RunParametrics()
If Me.MainScanner.ScannerProperties.State = ScannerState.BRunning Then
Me.MainScanner.ScannerProperties.StopTimer()
Me.TlBarBtnParamRun.ImageIndex = 1
Me.TlBarBtnParamRun.ToolTipText = "Run parametrics analisys"
Else
If Me.MainScanner.ScannerProperties.IsAtTopValue Then
'EnableButtons(False, False)
Me.Reset()
'ElseIf Me.MainScanner.ScannerProperties.IsAtBottomValue Then
'EnableButtons(True, False)
Else
EnableButtons(False, True)
EnableButtons(True, True)
End If
Me.MainScanner.ScannerProperties.StartTimer()
Me.TlBarBtnParamRun.ImageIndex = 5
Me.TlBarBtnParamRun.ToolTipText = "Pause parametrics analisys"
End If
End Sub
#End Region
#Region "Private Methods"
Private Sub Remove(ByVal sender As Object, ByVal e As EventArgs)
If Not Me.intParam Is Nothing Then
Me.Remove(Me.intParam)
End If
End Sub
Private Sub ParamForward(ByVal sender As Object, ByVal e As EventArgs)
ParamForward()
End Sub
Private Sub Add(ByVal sender As Object, ByVal e As EventArgs)
If Not Me.intParam Is Nothing Then
Me.Add(intParam)
End If
End Sub
Private Sub ParamBackward(ByVal sender As Object, ByVal e As EventArgs)
ParamBackward()
End Sub
Private Sub Reset(ByVal sender As Object, ByVal e As EventArgs)
Reset()
End Sub
Private Sub SetToMax(ByVal sender As Object, ByVal e As EventArgs)
SetToMax()
End Sub
Private Sub RunParametrics(ByVal sender As Object, ByVal e As EventArgs)
RunParametrics()
End Sub
Private Delegate Sub simpleDelegate()
Private Sub MainScanner_GetLimit(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainScanner.GetLimit
Dim DelPtr As simpleDelegate
If Me.InvokeRequired Then
DelPtr = New simpleDelegate(AddressOf MainScanner_GetLimit)
Me.Invoke(DelPtr)
Else
If Me.TlBarContainer.InvokeRequired Then
DelPtr = New simpleDelegate(AddressOf MainScanner_GetLimit)
Me.TlBarContainer.Invoke(DelPtr)
Else
MainScanner_GetLimit()
End If
End If
End Sub
Private Sub MainScanner_GetLimit()
If Me.MainScanner.ScannerProperties.IsAtTopValue Then
Me.TlBarBtnParamRun.ImageIndex = 1
Me.TlBarBtnParamRun.ToolTipText = "Run parametrics analisys"
EnableButtons(False, False)
EnableButtons(True, True)
Else
EnableButtons(True, False)
EnableButtons(False, True)
End If
End Sub
Private Sub EnableButtons(ByVal Left As Boolean, ByVal Enable As Boolean)
If Left Then
Me.TlBarBtnBackward.Enabled = Enable
Me.TlBarBtnMin.Enabled = Enable
Else
Me.TlBarBtnForward.Enabled = Enable
Me.TlBarBtnMax.Enabled = Enable
End If
End Sub
#End Region
End Class