private/output/New-ResultsToolbar.ps1
|
function New-ResultsToolbar { <# .SYNOPSIS Creates the Results tab toolbar with action buttons. #> [CmdletBinding()] param( [Parameter(Mandatory)] [hashtable]$Colors, [array]$ResultActions ) $resultsTab = [System.Windows.Controls.TabItem]::new() Set-TabItemStyle -TabItem $resultsTab $resultsPanel = [System.Windows.Controls.DockPanel]::new() $resultsPanel.LastChildFill = $true $toolbar = [System.Windows.Controls.StackPanel]::new() $toolbar.Orientation = 'Horizontal' $toolbar.Margin = [System.Windows.Thickness]::new(12, 12, 12, 8) [System.Windows.Controls.DockPanel]::SetDock($toolbar, 'Top') $actionDropdownMenuStack = $null $dropdownPopup = $null if ($ResultActions -and $ResultActions.Count -gt 0) { $dropdownParams = @{ Actions = $ResultActions ButtonText = 'Actions' ButtonIcon = 'ActionCenter' Tooltip = 'Available actions for selected items' } $dropdownResult = New-ActionDropdownButton @dropdownParams $dropdownPopup = $dropdownResult.Popup $actionDropdownMenuStack = $dropdownResult.MenuStack [void]$toolbar.Children.Add($dropdownResult.Button) } $toolbar2 = [System.Windows.Controls.DockPanel]::new() $toolbar2.LastChildFill = $false $toolbar2.Margin = [System.Windows.Thickness]::new(12, 12, 12, 8) [System.Windows.Controls.DockPanel]::SetDock($toolbar2, 'Top') [System.Windows.Controls.DockPanel]::SetDock($toolbar, 'Left') [void]$toolbar2.Children.Add($toolbar) $rightToolbar = [System.Windows.Controls.StackPanel]::new() $rightToolbar.Orientation = 'Horizontal' [System.Windows.Controls.DockPanel]::SetDock($rightToolbar, 'Right') $exportBtnInfo = New-UiIconButton -IconChar ([PsUi.ModuleContext]::GetIcon('Export')) -ToolTip 'Export to CSV' -Margin ([System.Windows.Thickness]::new(0, 0, 4, 0)) -ReturnIcon $exportButton = $exportBtnInfo.Button $exportButton.Visibility = 'Collapsed' [void]$rightToolbar.Children.Add($exportButton) $copyBtnInfo = New-UiIconButton -IconChar ([PsUi.ModuleContext]::GetIcon('Copy')) -ToolTip 'Copy to Clipboard' -ReturnIcon $copyButton = $copyBtnInfo.Button [void]$rightToolbar.Children.Add($copyButton) $closeButton = New-UiIconButton -IconChar ([PsUi.ModuleContext]::GetIcon('Cancel')) -ToolTip 'Close' -Margin ([System.Windows.Thickness]::new(4, 0, 0, 0)) $closeButton.Add_Click({ Close-UiParentWindow -Control $this }.GetNewClosure()) [void]$rightToolbar.Children.Add($closeButton) [void]$toolbar2.Children.Add($rightToolbar) $filterPanel = [System.Windows.Controls.StackPanel]::new() $filterPanel.Orientation = 'Horizontal' $filterPanel.VerticalAlignment = 'Center' $filterPanel.HorizontalAlignment = 'Left' [void]$resultsPanel.Children.Add($toolbar2) $resultsBorder = [System.Windows.Controls.Border]::new() $resultsBorder.BorderBrush = ConvertTo-UiBrush $Colors.Border $resultsBorder.BorderThickness = [System.Windows.Thickness]::new(1) $resultsBorder.Background = ConvertTo-UiBrush $Colors.WindowBg $resultsBorder.Margin = [System.Windows.Thickness]::new(12, 0, 12, 12) [void]$resultsPanel.Children.Add($resultsBorder) return @{ Tab = $resultsTab Panel = $resultsPanel Toolbar = $toolbar Toolbar2 = $toolbar2 RightToolbar = $rightToolbar FilterPanel = $filterPanel ResultsBorder = $resultsBorder ExportButton = $exportButton CopyButton = $copyButton CloseButton = $closeButton DropdownPopup = $dropdownPopup ActionDropdownMenuStack = $actionDropdownMenuStack } } |