bba92a4980
- modifiche per impostazione qualità di visualizzazione superfici (con eliminazione SmoothTriMesh/ShowTriaAdv).
187 lines
7.9 KiB
VB.net
187 lines
7.9 KiB
VB.net
Imports System.Windows
|
|
Imports System.Windows.Controls.Primitives
|
|
Imports EgtWPFLib5
|
|
Imports EgtUILib
|
|
|
|
Public Class MTableDbV
|
|
|
|
Private m_MTableDbVM As MTableDbVM
|
|
Private m_EditCell As DataGridCell
|
|
|
|
Sub New(Owner As Window, MTableDbVM As MTableDbVM)
|
|
MyBase.New(Owner)
|
|
' This call is required by the designer.
|
|
InitializeComponent()
|
|
Me.DataContext = MTableDbVM
|
|
' Assegno al riferimento locale al VM il VM preso dal DataContext
|
|
m_MTableDbVM = MTableDbVM
|
|
End Sub
|
|
|
|
Private Sub LeftTableMouseDown(sender As Object, e As MouseButtonEventArgs)
|
|
m_MTableDbVM.FocusedTable = MTableDbVM.Tables.LEFTTABLE
|
|
m_MTableDbVM.ResetRightTableSelection()
|
|
End Sub
|
|
|
|
Private Sub RowMouseDown(sender As Object, e As MouseButtonEventArgs)
|
|
m_MTableDbVM.FocusedTable = MTableDbVM.Tables.RIGHTTABLE
|
|
m_MTableDbVM.ResetLeftTableSelection()
|
|
End Sub
|
|
|
|
Private Sub RowRightClick(sender As Object, e As MouseButtonEventArgs)
|
|
m_MTableDbVM.FocusedTable = MTableDbVM.Tables.RIGHTTABLE
|
|
m_MTableDbVM.ResetLeftTableSelection()
|
|
e.Handled = True
|
|
End Sub
|
|
|
|
Private Sub CellLeftClick(sender As Object, e As MouseButtonEventArgs)
|
|
Dim CurrCell As DataGridCell = Nothing
|
|
If TypeOf sender Is DataGridCell Then
|
|
CurrCell = DirectCast(sender, DataGridCell)
|
|
End If
|
|
Dim SelectedRow As MTableMachiningGridBoxItem = DirectCast(CurrCell.DataContext, MTableMachiningGridBoxItem)
|
|
Dim bFirstInGroup As Boolean = True
|
|
For TableIndex = 0 To MTableDbVM.refMTableDbVM.TablesList.Count - 1
|
|
Dim CurrTable As MTableListBoxItem = MTableDbVM.refMTableDbVM.TablesList(TableIndex)
|
|
If CurrTable.IsSelected Then
|
|
Dim CurrMachiningIndex As Integer = CurrTable.SelMachine.MachiningList.IndexOf(SelectedRow)
|
|
If CurrMachiningIndex > 0 AndAlso CurrTable.SelMachine.MachiningList(CurrMachiningIndex - 1).GroupId = SelectedRow.GroupId Then
|
|
bFirstInGroup = False
|
|
End If
|
|
End If
|
|
Next
|
|
Dim bSelCell As Boolean = False
|
|
If Not IsNothing(CurrCell) AndAlso TypeOf CurrCell.DataContext Is MTableMachiningGridBoxItem Then
|
|
If CurrCell.IsSelected And SelectedRow.GroupId <> 0 Then
|
|
If (bFirstInGroup And (CurrCell.Column Is MachiningDataGrid.Columns(1))) Then
|
|
CurrCell.IsEditing = True
|
|
If Not IsNothing(m_EditCell) AndAlso m_EditCell IsNot CurrCell Then m_EditCell.IsEditing = False
|
|
m_EditCell = CurrCell
|
|
bSelCell = True
|
|
ElseIf Not CurrCell.IsEditing And CurrCell.Column Is MachiningDataGrid.Columns(4) Then
|
|
SelectedRow.Join = Not SelectedRow.Join
|
|
SelectedRow.NotifyPropertyChanged("grh_Join")
|
|
End If
|
|
End If
|
|
If Not CurrCell.IsSelected Or ((Not bFirstInGroup Or CurrCell.Column IsNot MachiningDataGrid.Columns(1)) And CurrCell.Column IsNot MachiningDataGrid.Columns(4)) Or SelectedRow.GroupId = 0 Then
|
|
If Not IsNothing(m_EditCell) AndAlso m_EditCell.IsEditing Then
|
|
m_EditCell.IsEditing = False
|
|
Else
|
|
m_MTableDbVM.LeftSelect(SelectedRow)
|
|
End If
|
|
End If
|
|
End If
|
|
If Not bSelCell And Not CurrCell.IsEditing Or CurrCell.Column Is MachiningDataGrid.Columns(4) Then
|
|
If Not IsNothing(m_EditCell) Then m_EditCell.IsEditing = False
|
|
Keyboard.ClearFocus()
|
|
MachiningDataGrid.Focus()
|
|
e.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub CellRightClick(sender As Object, e As MouseButtonEventArgs)
|
|
Dim CurrCell As DataGridCell = Nothing
|
|
If TypeOf sender Is DataGridCell Then
|
|
CurrCell = DirectCast(sender, DataGridCell)
|
|
End If
|
|
If Not IsNothing(CurrCell) AndAlso TypeOf CurrCell.DataContext Is MTableMachiningGridBoxItem Then
|
|
Dim SelectedRow As MTableMachiningGridBoxItem = DirectCast(CurrCell.DataContext, MTableMachiningGridBoxItem)
|
|
m_MTableDbVM.RightSelect(SelectedRow)
|
|
End If
|
|
If Not IsNothing(m_EditCell) Then m_EditCell.IsEditing = False
|
|
CurrCell.IsEditing = False
|
|
Keyboard.ClearFocus()
|
|
MachiningDataGrid.Focus()
|
|
e.Handled = True
|
|
End Sub
|
|
|
|
Private Sub RowMouseUp(sender As Object, e As MouseButtonEventArgs)
|
|
'e.Handled = True
|
|
End Sub
|
|
|
|
Private Sub CellRightUp(sender As Object, e As MouseButtonEventArgs)
|
|
e.Handled = True
|
|
End Sub
|
|
|
|
Private Sub CellMouseUp(sender As Object, e As MouseButtonEventArgs)
|
|
'e.Handled = True
|
|
End Sub
|
|
|
|
Private Sub TabControl_SelectionChanged()
|
|
|
|
End Sub
|
|
|
|
Public Function GetCell(row As Integer, column As Integer) As DataGridCell
|
|
Dim rowContainer As DataGridRow = GetRow(row)
|
|
|
|
If rowContainer IsNot Nothing Then
|
|
Dim presenter As DataGridCellsPresenter = FindChild(Of DataGridCellsPresenter)(rowContainer)
|
|
|
|
' try to get the cell but it may possibly be virtualized
|
|
Dim cell As DataGridCell = DirectCast(presenter.ItemContainerGenerator.ContainerFromIndex(column), DataGridCell)
|
|
If cell Is Nothing Then
|
|
' now try to bring into view and retreive the cell
|
|
MachiningDataGrid.ScrollIntoView(rowContainer, MachiningDataGrid.Columns(column))
|
|
cell = DirectCast(presenter.ItemContainerGenerator.ContainerFromIndex(column), DataGridCell)
|
|
End If
|
|
Return cell
|
|
End If
|
|
Return Nothing
|
|
End Function
|
|
|
|
Public Function GetRow(index As Integer) As DataGridRow
|
|
Dim row As DataGridRow = DirectCast(MachiningDataGrid.ItemContainerGenerator.ContainerFromIndex(index), DataGridRow)
|
|
If row Is Nothing Then
|
|
' may be virtualized, bring into view and try again
|
|
MachiningDataGrid.ScrollIntoView(MachiningDataGrid.Items(index))
|
|
row = DirectCast(MachiningDataGrid.ItemContainerGenerator.ContainerFromIndex(index), DataGridRow)
|
|
End If
|
|
Return row
|
|
End Function
|
|
|
|
Public Function FindChild(Of T As Class)(dependencyObject As DependencyObject) As T
|
|
Dim target As DependencyObject = dependencyObject
|
|
Do
|
|
target = DirectCast(VisualTreeHelper.GetChild(target, 0), DependencyObject)
|
|
Loop While target IsNot Nothing AndAlso Not (TypeOf target Is T)
|
|
Return TryCast(target, T)
|
|
End Function
|
|
|
|
Private Sub CsvWindowV_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
|
|
' Carico e imposto posizione finestra
|
|
WinPosFromIniToWindow(S_DOORS, K_MTABLEWINPLACE, Me)
|
|
End Sub
|
|
|
|
Private Sub CsvWindowV_Unloaded(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Me.Closing
|
|
' Salvo posizione finestra
|
|
WinPosFromWindowToIni(Me, S_DOORS, K_MTABLEWINPLACE)
|
|
End Sub
|
|
|
|
|
|
Public Sub DataGrid_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
|
|
If e.ChangedButton = MouseButton.Left Then
|
|
If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then
|
|
e.Handled = True
|
|
End If
|
|
If (Keyboard.Modifiers And ModifierKeys.Control) = ModifierKeys.Control AndAlso TypeOf sender Is DataGrid AndAlso DirectCast(sender, DataGrid).SelectedItems.Count >= 2 Then
|
|
e.Handled = True
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub DataGrid_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs)
|
|
End Sub
|
|
|
|
Public Sub DataGrid_PreviewMouseMove(sender As Object, e As MouseEventArgs)
|
|
Dim Element As Object = e.OriginalSource
|
|
While Not IsNothing(Element) AndAlso Not TypeOf Element Is ScrollBar
|
|
Element = VisualTreeHelper.GetParent(CType(Element, DependencyObject))
|
|
End While
|
|
' verifico che non sia ScrollBar, di modo che questa continui a funzionare, ma non possa selezionare piu' righe trascinando
|
|
If IsNothing(Element) OrElse Not TypeOf Element Is ScrollBar Then
|
|
e.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
End Class
|