Imports System.Collections.ObjectModel Imports EgtUILib Imports MS.Internal Public Class InputExpanderVM Inherits ViewModelBase #Region "FIELDS & PROPERTIES" Friend Event m_FocusOnTextBox() ' Variabile temporanea per salvare bShow Private m_tmpbShow As Boolean Private m_tmpInfoList As New ObservableCollection(Of InfoItem) ''' ''' Lista temporanea delle info ''' Private Property tmpInfoList As ObservableCollection(Of InfoItem) Get Return m_tmpInfoList End Get Set(value As ObservableCollection(Of InfoItem)) m_tmpInfoList = value OnPropertyChanged("tmpInfoList") End Set End Property ' Expander fields Private m_IsExpanded As Boolean Public Property IsExpanded As Boolean Get Return m_IsExpanded End Get Set(value As Boolean) m_IsExpanded = value OnPropertyChanged(NameOf(IsExpanded)) End Set End Property Private m_IsEnabled As Boolean Public Property IsEnabled As Boolean Get Return m_IsEnabled End Get Set(value As Boolean) m_IsEnabled = value OnPropertyChanged(NameOf(IsEnabled)) End Set End Property Private m_Title As String Public Property Title As String Get Return m_Title End Get Set(value As String) m_Title = value OnPropertyChanged(NameOf(Title)) End Set End Property ' TextBlock fields Private m_TextBlock As String Public Property TextBlock As String Get Return m_TextBlock End Get Set(value As String) m_TextBlock = value OnPropertyChanged(NameOf(TextBlock)) End Set End Property ' TextBox fields Private m_TextBox As String Public Property TextBox As String Get Return m_TextBox End Get Set(value As String) m_TextBox = value Map.refProjectVM.NotifyInputText(value) OnPropertyChanged(NameOf(TextBox)) End Set End Property Private m_TextVisibility As Visibility Public Property TextVisibility As Visibility Get Return m_TextVisibility End Get Set(value As Visibility) If value <> m_TextVisibility Then m_TextVisibility = value OnPropertyChanged(NameOf(TextVisibility)) End If End Set End Property Private m_FocusTextBox As Boolean Public Property FocusTextBox As Boolean Get Return m_FocusTextBox End Get Set(value As Boolean) m_FocusTextBox = value OnPropertyChanged(NameOf(FocusTextBox)) End Set End Property 'CheckBox fields Private m_CheckBoxText As String Public Property CheckBoxText As String Get Return m_CheckBoxText End Get Set(value As String) m_CheckBoxText = value OnPropertyChanged(NameOf(CheckBoxText)) End Set End Property Private m_IsChecked As Boolean Public Property IsChecked As Boolean Get Return m_IsChecked End Get Set(value As Boolean) If value <> m_IsChecked Then Map.refProjectVM.SetLastBoolean(value) m_IsChecked = value OnPropertyChanged(NameOf(IsChecked)) End If End Set End Property Private m_CheckVisibility As Visibility Public Property CheckVisibility As Visibility Get Return m_CheckVisibility End Get Set(value As Visibility) If value <> m_CheckVisibility Then m_CheckVisibility = value OnPropertyChanged(NameOf(CheckVisibility)) End If End Set End Property ' ComboBox fields Private m_ComboItemsList As New ObservableCollection(Of String) Public Property ComboItemsList As ObservableCollection(Of String) Get Return m_ComboItemsList End Get Set(value As ObservableCollection(Of String)) m_ComboItemsList = value OnPropertyChanged(NameOf(ComboItemsList)) End Set End Property Private m_InfoList As New ObservableCollection(Of InfoItem) ''' ''' Lista delle info modificate ''' Public Property InfoList As ObservableCollection(Of InfoItem) Get Return m_InfoList End Get Set(value As ObservableCollection(Of InfoItem)) m_InfoList = value OnPropertyChanged("InfoList") End Set End Property Private m_InfoList As New ObservableCollection(Of InfoItem) ''' ''' Lista delle info modificate ''' Public Property InfoList As ObservableCollection(Of InfoItem) Get Return m_InfoList End Get Set(value As ObservableCollection(Of InfoItem)) m_InfoList = value OnPropertyChanged("InfoList") End Set End Property Private m_ComboSelectedIndex As Integer Public Property ComboSelectedIndex As Integer Get Return m_ComboSelectedIndex End Get Set(value As Integer) If m_tmpbShow Then Map.refProjectVM.SetLastInteger(value) m_ComboSelectedIndex = value ' Assegno l'indice selezionato ad una variabile temporanea per utilizzarlo quando rimuovo l'info dalla lista Dim tmpComboSelectedIndex As Integer = ComboSelectedIndex ' Controllo se l'indice è maggiore o uguale a zero e la lista tmp contiene valori If m_ComboSelectedIndex >= 0 AndAlso tmpInfoList.Count > 0 Then ' Controllo se la info è contenuta nella lista ComboItemsList If ComboItemsList.Contains(tmpInfoList(m_ComboSelectedIndex).sKey) Then ' Aggiungo la info alla lista per visualizzarla InfoList.Add(New InfoItem(tmpInfoList(m_ComboSelectedIndex).nId, tmpInfoList(m_ComboSelectedIndex).sKey, m_tmpInfoList(m_ComboSelectedIndex).sValour)) ' Nascondo la combobox ComboVisibility = Visibility.Collapsed ' Rimuovo la info dalla ComboItemsList ComboItemsList.Remove(tmpInfoList(m_ComboSelectedIndex).sKey) End If ' Rimuovo la info dalla tmpInfoList tmpInfoList.Remove(tmpInfoList(tmpComboSelectedIndex)) End If OnPropertyChanged(NameOf(ComboSelectedIndex)) OnPropertyChanged("ComboItemsList") OnPropertyChanged("InfoList") End Set End Property Private m_ComboVisibility As Visibility Public Property ComboVisibility As Visibility Get Return m_ComboVisibility End Get Set(value As Visibility) If value <> m_ComboVisibility Then m_ComboVisibility = value OnPropertyChanged(NameOf(ComboVisibility)) End If End Set End Property ' Buttons fields Private m_ShowBtnVisibility As Visibility Public Property ShowBtnVisibility As Visibility Get Return m_ShowBtnVisibility End Get Set(value As Visibility) m_ShowBtnVisibility = value OnPropertyChanged(NameOf(ShowBtnVisibility)) End Set End Property Private m_ShowInfoItemVisibility As Visibility ''' ''' Propietà visibilità bottone + ''' Public Property ShowInfoItemVisibility As Visibility Get Return m_ShowInfoItemVisibility End Get Set(value As Visibility) If value <> m_ShowInfoItemVisibility Then m_ShowInfoItemVisibility = value OnPropertyChanged("ShowInfoItemVisibility") End If End Set End Property Private m_InfoVisibility As Visibility ''' ''' Propietà visibilità lista info modificate ''' Public Property InfoVisibility As Visibility Get Return m_InfoVisibility End Get Set(value As Visibility) If value <> m_InfoVisibility Then m_InfoVisibility = value OnPropertyChanged("InfoVisibility") End If End Set End Property Private m_ShowInfoItemVisibility As Visibility ''' ''' Propietà visibilità bottone + ''' Public Property ShowInfoItemVisibility As Visibility Get Return m_ShowInfoItemVisibility End Get Set(value As Visibility) If value <> m_ShowInfoItemVisibility Then m_ShowInfoItemVisibility = value OnPropertyChanged("ShowInfoItemVisibility") End If End Set End Property Private m_InfoVisibility As Visibility ''' ''' Propietà visibilità lista info modificate ''' Public Property InfoVisibility As Visibility Get Return m_InfoVisibility End Get Set(value As Visibility) If value <> m_InfoVisibility Then m_InfoVisibility = value OnPropertyChanged("InfoVisibility") End If End Set End Property ' Commands definition Private m_cmdShow As ICommand Private m_cmdDone As ICommand Private m_cmdShowInfoItem As ICommand Private m_cmdRemoveInfoItem As ICommand #Region "Messages" Public ReadOnly Property ShowMsg As String Get Return EgtMsg(5364) ' Mostra End Get End Property Public ReadOnly Property OkMsg As String Get Return EgtMsg(5365) ' Conferma End Get End Property #End Region #End Region ' Fields & Properties #Region "CONSTRUCTOR" Sub New() ' Creo riferimento a questa classe in EgtCAM5Map Map.SetRefInputExpanderVM(Me) End Sub #End Region ' Constructor #Region "COMMANDS" #Region "ShowCommand" ''' ''' Returns a command that do Point. ''' Public ReadOnly Property ShowCommand As ICommand Get If m_cmdShow Is Nothing Then m_cmdShow = New RelayCommand(AddressOf Show, AddressOf CanShow) End If Return m_cmdShow End Get End Property ''' ''' Execute the Point. This method is invoked by the PointCommand. ''' Public Sub Show(ByVal param As Object) Map.refProjectVM.Show(TextBox) End Sub ''' ''' Returns always true. ''' Private Function CanShow(ByVal param As Object) As Boolean Return If(m_ShowBtnVisibility = Visibility.Visible, True, False) End Function #End Region ' ShowCommand #Region "DoneCommand" ''' ''' Returns a command that do Point. ''' Public ReadOnly Property DoneCommand As ICommand Get If m_cmdDone Is Nothing Then m_cmdDone = New RelayCommand(AddressOf Done, AddressOf CanDone) End If Return m_cmdDone End Get End Property ''' ''' Execute the Point. This method is invoked by the PointCommand. ''' Public Sub Done(ByVal param As Object) ' Controllo se la lista contenente la info modificata sia presente If InfoList.Count > 0 Then ' Ciclo sulla lista For Each Item As InfoItem In InfoList Map.refProjectVM.NotifyInputText((Item.Key & "=" & Item.Valour).Trim()) ' Assegno a m_TextBox la info modificata m_TextBox &= vbCrLf & (Item.Key & "=" & Item.Valour).Trim() & vbCrLf Next End If Map.refProjectVM.Done(m_TextBox) End Sub ''' ''' Returns always true. ''' Private Function CanDone(ByVal param As Object) As Boolean Return True End Function #End Region ' DoneCommand #Region "ShowInfoItemCommand" ''' ''' Comando per la visualizzazione della combobox ''' Public ReadOnly Property ShowInfoItemCommand As ICommand Get If m_cmdShowInfoItem Is Nothing Then m_cmdShowInfoItem = New Command(AddressOf ShowInfoItem) End If Return m_cmdShowInfoItem End Get End Property ''' ''' Funzione per la visualizzazione della combobox ''' ''' Public Sub ShowInfoItem(ByVal param As Object) ComboVisibility = Visibility.Visible End Sub #End Region ' ShowInfoItemCommand #End Region #Region "METHODS" Friend Sub FocusText() RaiseEvent m_FocusOnTextBox() End Sub Friend Sub PrepareInputBox(PrepareInputBoxParam As PrepareInputBoxParam) Title = PrepareInputBoxParam.sTitle If PrepareInputBoxParam.sLabel <> "" Then TextBlock = PrepareInputBoxParam.sLabel TextBox = "" TextVisibility = Visibility.Visible ' Controllo se il titolo è uguale a INFO se si If Title = EgtMsg(5359).ToUpper() Then ' Metto tmpbShow a false m_tmpbShow = False ' Rendo visibile il pulsante che mostra la lista delle info ShowInfoItemVisibility = Visibility.Visible ' Rendo visibile la lista delle info selezionate InfoVisibility = Visibility.Visible ' Pulisco la lista tmpInfoList tmpInfoList.Clear() ' Pulisco la lista InfoList InfoList.Clear() ' Pulisco la lista ComboItemsList ComboItemsList.Clear() ' Popolo la lista ComboItemsList ComboInfo() End If End If If PrepareInputBoxParam.sCheckLabel <> "" Then CheckBoxText = PrepareInputBoxParam.sCheckLabel CheckVisibility = Visibility.Visible End If If PrepareInputBoxParam.bShowCombo Then ' Assegno a tmpbShow PrepareInputBoxParam.bShowCombo m_tmpbShow = PrepareInputBoxParam.bShowCombo ' Pulisco la lista ComboItemsList ComboItemsList.Clear() ' Pulisco la lista tmpInfoList tmpInfoList.Clear() ' Pulisco la lista InfoList InfoList.Clear() ComboVisibility = Visibility.Visible End If If PrepareInputBoxParam.bShowBtn Then ShowBtnVisibility = Visibility.Visible End If IsEnabled = True IsExpanded = True FocusTextBox = True FocusText() End Sub Friend Sub ResetInputBox() Title = EgtMsg(5355) ' Parametri di disegno TextVisibility = Visibility.Collapsed CheckVisibility = Visibility.Collapsed ComboVisibility = Visibility.Collapsed ShowBtnVisibility = Visibility.Collapsed ShowInfoItemVisibility = Visibility.Collapsed InfoVisibility = Visibility.Collapsed IsExpanded = False IsEnabled = False End Sub Friend Function SetInputBoxText(ByVal sVal As String) As Boolean TextBox = sVal FocusTextBox = True FocusText() Return True End Function Friend Function ChangeInputBoxCheck() As Boolean IsChecked = Not m_IsChecked Return True End Function Friend Function SetInputBoxCheck(ByVal bCheck As Boolean) As Boolean IsChecked = bCheck Map.refProjectVM.SetLastBoolean(IsChecked) Return True End Function Friend Sub AddInputBoxCombo(AddInputBoxComboParam As AddInputBoxComboParam) AddInputBoxCombo(AddInputBoxComboParam.sText, AddInputBoxComboParam.bSelected) End Sub Private Function AddInputBoxCombo(ByVal sText As String, ByVal bSelected As Boolean) As Boolean ComboItemsList.Add(sText) If bSelected Then ComboSelectedIndex = ComboItemsList.Count - 1 End If Return True End Function ''' ''' Rimovi nota da info lista ''' ''' Informazione da eliminare Friend Sub RemoveItemInfo(InfoItem As InfoItem) ' Rimuovo info da lista modifica InfoList.Remove(InfoItem) ' Riaggiungo la info eliminata ComboItemsList.Add(InfoItem.sKey) ' Riaggiungo la info eliminata tmpInfoList.Add(InfoItem) End Sub ''' ''' Funzione che popola la lista ComboItemsList ''' Private Sub ComboInfo() '''''''''''''''''''''''''''''' Recuperare funzione egtgetallinfo quando sarà pronta Dim val As Integer If Not m_tmpbShow Then For Ind As Integer = 0 To 6 val += Ind tmpInfoList.Add(New InfoItem(Ind, "A" & +Ind, val.ToString())) Next For Each InfoItem As InfoItem In tmpInfoList ComboItemsList.Add(InfoItem.sKey) Next End If End Sub #End Region ' Methods End Class