1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
<UserControl x:Class="Tango.FSE.Diagnostics.Views.DiagnosticsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:global="clr-namespace:Tango.FSE.Diagnostics"
xmlns:vm="clr-namespace:Tango.FSE.Diagnostics.ViewModels"
xmlns:auth="clr-namespace:Tango.FSE.Common.Authorization;assembly=Tango.FSE.Common"
xmlns:controls="clr-namespace:Tango.FSE.Common.Controls;assembly=Tango.FSE.Common"
xmlns:localControls="clr-namespace:Tango.FSE.Diagnostics.Controls"
xmlns:material="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:local="clr-namespace:Tango.FSE.Diagnostics.Views"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d"
d:DesignHeight="720" d:DesignWidth="1280" FocusVisualStyle="{x:Null}" d:DataContext="{d:DesignInstance Type=vm:DiagnosticsViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.DiagnosticsViewVM}" Background="{StaticResource FSE_PrimaryBackgroundBrush}" Foreground="{StaticResource FSE_PrimaryForegroundBrush}" x:Name="control">
<UserControl.InputBindings>
<KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveProjectCommand}" />
<KeyBinding Modifiers="Ctrl+Shift" Key="S" Command="{Binding SaveAsProjectCommand}" />
<KeyBinding Modifiers="Ctrl" Key="N" Command="{Binding NewProjectCommand}" />
<KeyBinding Modifiers="Ctrl" Key="O" Command="{Binding OpenProjectCommand}" />
<KeyBinding Modifiers="Ctrl" Key="X" Command="{Binding CutSelectedWidgetsCommand}" />
<KeyBinding Modifiers="Ctrl" Key="C" Command="{Binding CopySelectedWidgetsCommand}" />
<KeyBinding Modifiers="Ctrl" Key="V" Command="{Binding PasteWidgetsCommand}" />
<KeyBinding Key="Delete" Command="{Binding DeleteSelectedWidgetsCommand}" />
<KeyBinding Key="Esc" Command="{Binding AbortCreationCommand}" />
<KeyBinding Key="Up" Command="{Binding MoveSelectedWidgetsUpCommand}" />
<KeyBinding Key="Down" Command="{Binding MoveSelectedWidgetsDownCommand}" />
<KeyBinding Key="Right" Command="{Binding MoveSelectedWidgetsRightCommand}" />
<KeyBinding Key="Left" Command="{Binding MoveSelectedWidgetsLeftCommand}" />
<KeyBinding Key="Up" Modifiers="Ctrl" Command="{Binding ScaleSelectedWidgetsUpCommand}" />
<KeyBinding Key="Down" Modifiers="Ctrl" Command="{Binding ScaleSelectedWidgetsDownCommand}" />
<KeyBinding Key="Right" Modifiers="Ctrl" Command="{Binding ScaleSelectedWidgetsRightCommand}" />
<KeyBinding Key="Left" Modifiers="Ctrl" Command="{Binding ScaleSelectedWidgetsLeftCommand}" />
</UserControl.InputBindings>
<DockPanel>
<Grid DockPanel.Dock="Top" IsEnabled="{Binding NotInCreationOrPasteMode}" Visibility="{Binding EditMode,Converter={StaticResource BooleanToVisibilityConverter}}">
<DockPanel>
<!--<Grid DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal">
<TextBox Width="100" material:HintAssist.Hint="Tab" material:HintAssist.IsFloating="True" Text="{Binding SelectedTab.Tab.Name}"></TextBox>
<mahapps:NumericUpDown Minimum="0" Maximum="99" Value="{Binding SelectedTab.Tab.Columns}" />
</StackPanel>
</Grid>-->
<Menu IsMainMenu="True" Margin="50 0 0 0" VerticalAlignment="Top">
<MenuItem Header="_File">
<MenuItem Header="_New" MinWidth="250" Command="{Binding NewProjectCommand}" InputGestureText="Ctrl+N">
<MenuItem.Icon>
<material:PackIcon Kind="FileDocument" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Open" Command="{Binding OpenProjectCommand}" InputGestureText="Ctrl+O">
<MenuItem.Icon>
<material:PackIcon Kind="FileEdit" />
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="_Save" Command="{Binding SaveProjectCommand}" InputGestureText="Ctrl+S">
<MenuItem.Icon>
<material:PackIcon Kind="ContentSave" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Save As" Command="{Binding SaveAsProjectCommand}" InputGestureText="Ctrl+Shift+S">
<MenuItem.Icon>
<material:PackIcon Kind="ContentSaveAll" />
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="_Reset To Factory" Command="{Binding ResetToFactoryProjectCommand}">
<MenuItem.Icon>
<material:PackIcon Kind="Factory" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="_Edit">
<MenuItem Header="_Cut" Command="{Binding CutSelectedWidgetsCommand}" InputGestureText="Ctrl+X">
<MenuItem.Icon>
<material:PackIcon Kind="ContentCopy" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Copy" Command="{Binding CopySelectedWidgetsCommand}" InputGestureText="Ctrl+C">
<MenuItem.Icon>
<material:PackIcon Kind="ContentCopy" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Paste" Command="{Binding PasteWidgetsCommand}" InputGestureText="Ctrl+V">
<MenuItem.Icon>
<material:PackIcon Kind="ContentPaste" />
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="_Delete" Command="{Binding DeleteSelectedWidgetsCommand}" InputGestureText="DEL">
<MenuItem.Icon>
<material:PackIcon Kind="Delete" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="_Grid">
<MenuItem IsCheckable="True" Header="_Display Grid Lines" MinWidth="250" IsChecked="{Binding ShowGridLines}">
<MenuItem.Icon>
<material:PackIcon Kind="Grid" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Reset Uniformity" Command="{Binding ResetGridCommand}">
<MenuItem.Icon>
<material:PackIcon Kind="Grid" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="_Widgets" ItemsSource="{Binding AvailableWidgetTypes}">
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}">
<Setter Property="Command" Value="{Binding DataContext.AddWidgetCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MenuItem}, AncestorLevel=1}}" />
<Setter Property="CommandParameter" Value="{Binding}"></Setter>
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Border>
<DockPanel>
<material:PackIcon Kind="Plus" />
<ContentPresenter Margin="20 0 0 0" Content="{Binding Name}" />
</DockPanel>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>
</DockPanel>
</Grid>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Margin" Value="20"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding EditMode}" Value="True">
<Setter Property="Margin" Value="20 0 20 5"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<DockPanel x:Name="dock">
<Grid DockPanel.Dock="Top" Height="50">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" VerticalAlignment="Bottom" StrokeThickness="2" Stroke="{StaticResource FSE_PrimaryAccentDarkBrush}" />
<ListBox x:Name="listTabs" FocusVisualStyle="{x:Null}" Grid.Column="1" DisplayMemberPath="Tag" ItemsSource="{Binding Tabs}" SelectedItem="{Binding SelectedTab}" SelectedIndex="0">
<ListBox.Style>
<Style TargetType="ListBox" BasedOn="{StaticResource {x:Type ListBox}}">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"></Setter>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"></Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<UniformGrid Margin="15 0 0 0" Columns="{Binding RelativeSource={RelativeSource AncestorType=ListBox},Path=Items.Count}" IsItemsHost="True"></UniformGrid>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
<Setter Property="VerticalContentAlignment" Value="Center"></Setter>
<Setter Property="Background" Value="{StaticResource FSE_PrimaryBackgroundBrush}"></Setter>
<Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter>
<Setter Property="Foreground" Value="{StaticResource FSE_GrayBrush}"></Setter>
<Setter Property="Width" Value="200"></Setter>
<Setter Property="IsSelected" Value="{Binding IsSelected,Mode=OneWayToSource}"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid x:Name="grid" Margin="-15 0 0 0" Background="Transparent">
<Viewbox Stretch="Fill">
<Grid>
<Polygon Fill="{TemplateBinding Background}" Stretch="Fill" Points="0,30 15,0 85,0 100,30"></Polygon>
<Polygon Fill="White" Stretch="Fill" Points="0,30 15,0 85,0 100,30" IsHitTestVisible="False" Opacity="0.1">
<Polygon.Style>
<Style TargetType="Polygon">
<Setter Property="Visibility" Value="Hidden"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsMouseOver}" Value="True">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Polygon.Style>
</Polygon>
<Polyline Stroke="{StaticResource FSE_PrimaryAccentDarkBrush}" StrokeThickness="1" Stretch="Fill" Points="0,30 15,0 85,0 100,30" />
<Rectangle VerticalAlignment="Bottom" Stroke="{StaticResource FSE_PrimaryAccentDarkBrush}" StrokeThickness="1" />
</Grid>
</Viewbox>
<DockPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<controls:ToggleIconButton x:Name="chkRenameTab" ToolTip="Rename Tab" Visibility="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.EditMode,Converter={StaticResource BooleanToVisibilityConverter}}" Cursor="Hand" Margin="-10 0 5 0" Foreground="{StaticResource FSE_PrimaryForegroundBrush}" VerticalAlignment="Center" Width="12" Height="12" Padding="0" UncheckedIcon="EditOutline" CheckedIcon="Check" />
<Grid HorizontalAlignment="Left">
<ContentPresenter Visibility="{Binding ElementName=chkRenameTab,Path=IsChecked,Converter={StaticResource BooleanToVisibilityInverseConverter}}" Content="{Binding Tab.Name}" TextElement.Foreground="{TemplateBinding Foreground}" />
<TextBox MinWidth="50" material:TextFieldAssist.UnderlineBrush="{StaticResource FSE_PrimaryForegroundBrush}" Visibility="{Binding ElementName=chkRenameTab,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" MaxLength="16" Text="{Binding Tab.Name,UpdateSourceTrigger=PropertyChanged}" Padding="0" Margin="0 0 0 0"></TextBox>
</Grid>
</DockPanel>
<controls:IconButton Visibility="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.EditMode,Converter={StaticResource BooleanToVisibilityConverter}}" Cursor="Hand" Margin="0 0 20 0" Foreground="{StaticResource FSE_PrimaryForegroundBrush}" VerticalAlignment="Center" HorizontalAlignment="Right" Icon="Close" Width="20" Height="20" Padding="0" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.RemoveTabCommand}" CommandParameter="{Binding}" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource FSE_PrimaryAccentDarkBrush}"></Setter>
<Setter Property="Foreground" Value="{StaticResource FSE_PrimaryForegroundBrush}"></Setter>
<Setter Property="FontWeight" Value="SemiBold"></Setter>
<Setter Property="Panel.ZIndex" Value="200"></Setter>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Panel.ZIndex" Value="-1"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Setter.Value>
</Setter>
</Style>
</ListBox.Style>
</ListBox>
<controls:IconButton Cursor="Hand" Command="{Binding AddNewTabCommand}" Visibility="{Binding EditMode,Converter={StaticResource BooleanToVisibilityConverter}}" Grid.Column="2" Width="24" Height="24" Padding="0" Margin="10 0 0 0" Icon="Plus" Foreground="{StaticResource FSE_PrimaryAccentBrush}" />
<Rectangle Margin="-50 0 0 0" Grid.Column="3" VerticalAlignment="Bottom" StrokeThickness="2" Stroke="{StaticResource FSE_PrimaryAccentDarkBrush}" />
</Grid>
<Grid x:Name="grid" Background="Transparent">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseRightButtonUp">
<i:InvokeCommandAction Command="{Binding DeselectWidgetsCommand}" />
</i:EventTrigger>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding DeselectWidgetsCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<Viewbox Stretch="Uniform" Margin="0 0 0 0" VerticalAlignment="Top" Width="{Binding ElementName=grid,Path=ActualWidth}" Height="{Binding ElementName=grid,Path=ActualHeight}">
<Grid>
<ItemsControl x:Name="tabControl" Width="1810" Height="827" ItemsSource="{Binding Tabs}" BorderThickness="0" Background="Transparent">
<ItemsControl.Style>
<Style TargetType="ItemsControl">
<Setter Property="Opacity" Value="1"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding CreationMode}" Value="True">
<Setter Property="Opacity" Value="0.3"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ItemsControl.Style>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="FrameworkElement">
<Setter Property="Visibility" Value="Hidden"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:DiagnosticsTabView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Grid Visibility="{Binding EditMode,Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid Visibility="{Binding CreationMode,Converter={StaticResource BooleanToVisibilityConverter}}">
<localControls:DiagnosticsSelectionGrid Opacity="0.4" RectanglesBackgroundBrush="{StaticResource FSE_PrimaryBackgroundLightBrush}" RectanglesHighlightBrush="{StaticResource FSE_BorderBrush}" Columns="{Binding SelectedTab.Tab.Columns}" Rows="{Binding SelectedTab.Tab.Rows}" SelectionCommand="{Binding SelectionCommand,Mode=OneWay}" RightClickCommand="{Binding AbortCreationCommand,Mode=OneWay}" Visibility="{Binding CreationMode,Converter={StaticResource BooleanToVisibilityConverter}}"/>
<StackPanel Opacity="0.5" IsHitTestVisible="False" HorizontalAlignment="Center" VerticalAlignment="Center" >
<material:PackIcon Kind="Plus" HorizontalAlignment="Center" Width="32" Height="32" />
<TextBlock FontSize="20" Margin="0 10 0 0">hold and drag the cursor over the desired widget cells</TextBlock>
<TextBlock HorizontalAlignment="Center" Margin="0 5 0 0" Foreground="{StaticResource FSE_GrayBrush}">(right click or escape to cancel the new widget)</TextBlock>
</StackPanel>
</Grid>
<Grid Visibility="{Binding PasteMode,Converter={StaticResource BooleanToVisibilityConverter}}">
<localControls:DiagnosticsSelectionGrid SelectionMode="Single" Opacity="0.4" RectanglesBackgroundBrush="{StaticResource FSE_PrimaryBackgroundLightBrush}" RectanglesHighlightBrush="{StaticResource FSE_BorderBrush}" Columns="{Binding SelectedTab.Tab.Columns}" Rows="{Binding SelectedTab.Tab.Rows}" SelectionCommand="{Binding SelectionCommand,Mode=OneWay}" RightClickCommand="{Binding AbortCreationCommand,Mode=OneWay}" Visibility="{Binding PasteMode,Converter={StaticResource BooleanToVisibilityConverter}}"/>
<StackPanel Opacity="0.5" IsHitTestVisible="False" HorizontalAlignment="Center" VerticalAlignment="Center" >
<material:PackIcon Kind="Plus" HorizontalAlignment="Center" Width="32" Height="32" />
<TextBlock FontSize="20" Margin="0 10 0 0">select the desired cell for pasting copied widgets</TextBlock>
<TextBlock HorizontalAlignment="Center" Margin="0 5 0 0" Foreground="{StaticResource FSE_GrayBrush}">(right click or escape to cancel pasting)</TextBlock>
</StackPanel>
</Grid>
<localControls:DiagnosticsGridLinesEditor Visibility="{Binding ShowGridLines,Converter={StaticResource BooleanToVisibilityConverter}}" Columns="{Binding SelectedTab.Tab.Columns}" Rows="{Binding SelectedTab.Tab.Rows}">
</localControls:DiagnosticsGridLinesEditor>
</Grid>
</Grid>
</Viewbox>
</Grid>
</DockPanel>
<controls:ToggleIconButton IsChecked="{Binding EditMode}" Width="24" Height="24" auth:AuthorizationHelper.Mode="Collapsed" auth:AuthorizationHelper.Permission="FSE_EditDiagnosticsProject" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0 10 0 0" Cursor="Hand" ToolTip="Edit Mode" UncheckedIcon="SettingsOutline" UncheckedForeground="{StaticResource FSE_GrayBrush}" CheckedForeground="{StaticResource FSE_OrangeBrush}" CheckedIcon="SettingsOutline" Foreground="{StaticResource FSE_OrangeBrush}"></controls:ToggleIconButton>
<!--ZOOM? NOT SURE-->
<!--<DockPanel HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 -15 0 0">
<material:PackIcon Kind="ZoomInOutline" DockPanel.Dock="Right" VerticalAlignment="Bottom" Margin="0 0 0 0"></material:PackIcon>
<Slider Style="{StaticResource MaterialDesignDiscreteSlider}" FocusVisualStyle="{x:Null}" Width="80" Minimum="0" Maximum="200" Value="100"></Slider>
</DockPanel>-->
</Grid>
</DockPanel>
</UserControl>
|