Click here to Skip to main content
15,886,199 members
Articles / Programming Languages / Visual Basic

Mathemathics Framework

Rate me:
Please Sign up or sign in to vote.
4.76/5 (56 votes)
16 Sep 2008CPOL6 min read 75.3K   6.2K   171  
.NET Mathematical Framework
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

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer Universidad Tecnológica Nacional
Argentina Argentina
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions