diff --git a/EgtBEAMWALL.Optimizer/ItemParamList/BTLPartListV.xaml b/EgtBEAMWALL.Optimizer/ItemParamList/BTLPartListV.xaml index 4edc04c9..a03ea5a4 100644 --- a/EgtBEAMWALL.Optimizer/ItemParamList/BTLPartListV.xaml +++ b/EgtBEAMWALL.Optimizer/ItemParamList/BTLPartListV.xaml @@ -2,15 +2,15 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" - xmlns:OPTIMIZER="clr-namespace:EgtBEAMWALL.Optimizer" - xmlns:EgwWPFBaseLib="clr-namespace:EgwWPFBaseLib;assembly=EgwWPFBaseLib" xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys" xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" xmlns:dxfui="http://schemas.devexpress.com/winfx/2008/xaml/core/filteringui" - xmlns:i="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"> + xmlns:i="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" + xmlns:OPTIMIZER="clr-namespace:EgtBEAMWALL.Optimizer" + xmlns:EgwWPFBaseLib="clr-namespace:EgwWPFBaseLib;assembly=EgwWPFBaseLib"> @@ -34,7 +34,6 @@ + + + + + + + + - - - + NavigationStyle="Row" + Focusable="False" + AllowEditing="False" + AllowSorting="True" + AllowGrouping="True" + AllowColumnFiltering="True" + AllowFilterEditor="False" + AllowFilterPanelNavigation="False" + + ExtendScrollBarToFixedColumns="True" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + BorderThickness="0" + RowMinHeight="28" + ShowGridMenu="OnShowGridMenu" + AlternationCount="2" + EvenRowBackground="LightBlue" + UseEvenRowBackground="True" + ShowGroupFooters="True" + GroupSummaryDisplayMode="AlignByColumns" + FixedLineWidth="2" + IsTotalSummaryMenuEnabled="False" + IsGroupFooterMenuEnabled="True" + LeftGroupAreaIndent="0" + + ShowSearchPanelResultInfo="True" + ShowSearchPanelNavigationButtons="True"> + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + + diff --git a/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListV.xaml.vb b/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListV.xaml.vb index ecf98a42..614ec60e 100644 --- a/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListV.xaml.vb +++ b/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListV.xaml.vb @@ -1,8 +1,88 @@ -Imports EgtBEAMWALL.Core +Imports System.IO +Imports DevExpress.Data +Imports DevExpress.Xpf.Bars +Imports DevExpress.Xpf.Core.Serialization +Imports DevExpress.Xpf.Grid +Imports EgtBEAMWALL.Core Imports EgtUILib.EgtInterface Public Class RawPartListV + Private m_RawPartListVM As RawPartListVM + + Private m_sDataGridLayoutPath As String = "" + + Sub New() + + ' This call is required by the designer. + InitializeComponent() + + ' Add any initialization after the InitializeComponent() call. + m_sDataGridLayoutPath = Path.GetDirectoryName(DataGridColumnsIniFile.m_sDataGridColumnsIniFile) & "\NewDataGridLayoutFile2.json" + + For Each Column In RawPart_GridControl.Columns + Column.[AddHandler](DXSerializer.AllowPropertyEvent, + New AllowPropertyEventHandler(AddressOf OnAllowProperty)) + Next + End Sub + + ' imposto parametri aggiuntivi da scrivere in Json colonne tabella + Private Sub OnAllowProperty(ByVal sender As Object, ByVal e As AllowPropertyEventArgs) + If e.DependencyProperty Is GridColumn.AllowResizingProperty Then + e.Allow = True + End If + End Sub + + ' salvataggio del layout colonne + Public Sub SaveBTLPartGridControlLayout() + RawPart_GridControl.SaveLayoutToJson(m_sDataGridLayoutPath) + End Sub + + Public Sub Me_Loaded() Handles Me.Loaded + ' imposto DataContext + m_RawPartListVM = DataContext + ' imposto riferimento ad action per salvataggio layout tabella + m_RawPartListVM.refSaveBTLPartGridControlLayout = AddressOf SaveBTLPartGridControlLayout + ' rispristino layout tabella + If Not IsNothing(m_sDataGridLayoutPath) AndAlso File.Exists(m_sDataGridLayoutPath) Then + RawPart_GridControl.RestoreLayoutFromJson(m_sDataGridLayoutPath) + End If + ' da gestire chiamandolo quando viene aperto un progetto o aggiunto/rimosso un btl, per evitare che ci sia il GroupSummary se c'e' un solo gruppo + IsVisibleGroupSummary(False) + End Sub + + Public Sub IsVisibleGroupSummary(bValue As Boolean) + If bValue AndAlso RawPart_GridControl.GroupSummary.Count = 0 Then + RawPart_GridControl.GroupSummary.Clear() + Dim PDNGroupSummaryItem As New GridSummaryItem() With {.FieldName = "nPDN", + .DisplayFormat = "{0}", + .SummaryType = SummaryItemType.Count, + .ShowInGroupColumnFooter = "nPDN"} + RawPart_GridControl.GroupSummary.Add(PDNGroupSummaryItem) + Dim CNTGroupSummaryItem As New GridSummaryItem() With {.FieldName = "sCNT", + .DisplayFormat = "{0}", + .SummaryType = SummaryItemType.Sum, + .ShowInGroupColumnFooter = "sCNT"} + RawPart_GridControl.GroupSummary.Add(CNTGroupSummaryItem) + Dim ADDEDGroupSummaryItem As New GridSummaryItem() With {.FieldName = "sADDED", + .DisplayFormat = "{0}", + .SummaryType = SummaryItemType.Sum, + .ShowInGroupColumnFooter = "sADDED"} + RawPart_GridControl.GroupSummary.Add(ADDEDGroupSummaryItem) + Dim INPRODGroupSummaryItem As New GridSummaryItem() With {.FieldName = "nINPROD", + .DisplayFormat = "{0}", + .SummaryType = SummaryItemType.Sum, + .ShowInGroupColumnFooter = "nINPROD"} + RawPart_GridControl.GroupSummary.Add(INPRODGroupSummaryItem) + Dim DONEGroupSummaryItem As New GridSummaryItem() With {.FieldName = "nDONE", + .DisplayFormat = "{0}", + .SummaryType = SummaryItemType.Sum, + .ShowInGroupColumnFooter = "nDONE"} + RawPart_GridControl.GroupSummary.Add(DONEGroupSummaryItem) + End If + RawPart_TableView.ShowGroupFooters = bValue + End Sub + ' funzione che permette di selezionare un RawPart anche quando gia' selezionato Private Sub RawPartRow_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs) If Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) Then Map.refProjectVM.BTLStructureVM.SelBTLPart.SetOpenFeatureList(False) @@ -81,4 +161,52 @@ Public Class RawPartListV .Source = sender}) End Sub + ' customizzazione ContextMenu del GridControl + Private Sub OnShowGridMenu(sender As Object, e As DevExpress.Xpf.Grid.GridMenuEventArgs) + If e.MenuType = GridMenuType.Column Then + ' rimozione bottoni + e.Customizations.Add(New RemoveAction() With {.ElementName = DefaultColumnMenuItemNames.GroupBox}) + e.Customizations.Add(New RemoveAction() With {.ElementName = DefaultColumnMenuItemNames.GroupColumn}) + e.Customizations.Add(New RemoveAction() With {.ElementName = DefaultColumnMenuItemNamesBase.ColumnChooser}) + e.Customizations.Add(New RemoveAction() With {.ElementName = DefaultColumnMenuItemNames.BestFit}) + e.Customizations.Add(New RemoveAction() With {.ElementName = DefaultColumnMenuItemNames.BestFitColumns}) + e.Customizations.Add(New RemoveAction() With {.ElementName = DefaultColumnMenuItemNamesBase.FilterEditor}) + + Dim info As GridColumnMenuInfo = CType(e.MenuInfo, GridColumnMenuInfo) + Dim item As ColumnBase = CType(info.Column, ColumnBase) + ' aggiunta separatore + Dim separator As BarItemLinkSeparator = New BarItemLinkSeparator() + e.Customizations.Add(separator) + ' aggiunta bottone AllowResize e Auto Fit + Dim AllowResize As BarCheckItem = New BarCheckItem() With {.Content = "Allow Resize", .IsChecked = (RawPart_TableView.AllowResizing AndAlso (item.AllowResizing = DevExpress.Utils.DefaultBoolean.True OrElse item.AllowResizing = DevExpress.Utils.DefaultBoolean.Default))} + AddHandler AllowResize.CheckedChanged, AddressOf AllowResize_CheckedChanged + e.Customizations.Add(AllowResize) + If item.AllowResizing = DevExpress.Utils.DefaultBoolean.True OrElse item.AllowResizing = DevExpress.Utils.DefaultBoolean.Default Then + Dim FixAuto As BarButtonItem = New BarCheckItem() With {.Content = "Auto Fit"} + AddHandler FixAuto.ItemClick, AddressOf FixAuto_ItemClick + e.Customizations.Add(FixAuto) + End If + End If + End Sub + + ' gestore evento Allow Resize + Private Sub AllowResize_CheckedChanged(sender As Object, e As ItemClickEventArgs) + Dim info As GridColumnMenuInfo = TryCast(RawPart_TableView.GridMenu.MenuInfo, GridColumnMenuInfo) + Dim item As ColumnBase = CType(info.Column, ColumnBase) + If item.AllowResizing = DevExpress.Utils.DefaultBoolean.False Then + item.AllowResizing = DevExpress.Utils.DefaultBoolean.True + Else + item.AllowResizing = DevExpress.Utils.DefaultBoolean.False + End If + End Sub + ' gestore evento Auto Fit + Private Sub FixAuto_ItemClick(sender As Object, e As ItemClickEventArgs) + Dim info As GridColumnMenuInfo = TryCast(RawPart_TableView.GridMenu.MenuInfo, GridColumnMenuInfo) + Dim item As ColumnBase = CType(info.Column, ColumnBase) + item.Width = New GridColumnWidth(1, GridColumnUnitType.Auto) + RawPart_TableView.UpdateLayout() + item.Width = item.ActualWidth + item.AllowResizing = DevExpress.Utils.DefaultBoolean.False + End Sub + End Class diff --git a/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListVM.vb b/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListVM.vb index 00a4ef1d..c23f09a0 100644 --- a/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListVM.vb +++ b/EgtBEAMWALL.Optimizer/ItemParamList/RawPartListVM.vb @@ -8,6 +8,8 @@ Public Class RawPartListVM #Region "FIELDS & PROPERTIES" + Friend refSaveBTLPartGridControlLayout As Action + Private m_colRawPart_StartCut As EgwWPFBaseLib.ColumnLayout Public ReadOnly Property colRawPart_StartCut As EgwWPFBaseLib.ColumnLayout Get @@ -248,6 +250,12 @@ Public Class RawPartListVM m_colPartInRawPart_PosY = PartInRawPartColumns.FirstOrDefault(Function(x) x.Key = COL_POSY) End Sub + Friend Sub Close() + If Not IsNothing(refSaveBTLPartGridControlLayout) Then + refSaveBTLPartGridControlLayout() + End If + End Sub + #End Region ' Methods End Class diff --git a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb index 4ccf3f15..92a210af 100644 --- a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb +++ b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowVM.vb @@ -428,6 +428,7 @@ Public Class MainWindowVM {S_PARAMETERLIST_P, Map.refPParameterListVM.PParameterListColumns}} EgwWPFBaseLib.EgwDataGrid.WriteColumnLayout(DataGridColumnsIniFile.m_sDataGridColumnsIniFile, DataGridColumnDictionary) Map.refPartListVM.Close() + Map.refRawPartListVM.Close() End If ' Termino il Model