Skip to content

Commit 415381c

Browse files
Copilotbrianrob
andauthored
Add option to hide TimeStamp columns in EventWindow View menu (#2247)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>
1 parent 2e7b342 commit 415381c

2 files changed

Lines changed: 90 additions & 8 deletions

File tree

src/PerfView/EventViewer/EventWindow.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@
8787
<MenuItem Header="_Close" Click="DoClose"/>
8888
</MenuItem>
8989
<MenuItem Header="_View">
90-
<MenuItem Header="_Show Local Time" IsCheckable="True" IsChecked="False" Checked="DoUseLocalTime" Unchecked="DoUseOriginTime"/>
90+
<MenuItem x:Name="ShowTimeStampColumnsMenuItem" Header="Show _TimeStamp Columns" IsCheckable="True" IsChecked="True" Checked="DoShowTimeStampColumns" Unchecked="DoHideTimeStampColumns"/>
91+
<MenuItem x:Name="ShowLocalTimeMenuItem" Header="_Show Local Time" IsCheckable="True" IsChecked="False" Checked="DoUseLocalTime" Unchecked="DoUseOriginTime"/>
9192
</MenuItem>
9293
<MenuItem Header="_Help">
9394
<MenuItem Header="_Help on Event Viewer" Command="Help" CommandParameter="EventViewerQuickStart" />

src/PerfView/EventViewer/EventWindow.xaml.cs

Lines changed: 88 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ public EventWindow(EventWindow template)
5757
{
5858
selection.Add(item);
5959
}
60+
61+
// Copy timestamp column visibility settings from template
62+
ShowTimeStampColumnsMenuItem.IsChecked = template.ShowTimeStampColumnsMenuItem.IsChecked;
63+
ShowLocalTimeMenuItem.IsChecked = template.ShowLocalTimeMenuItem.IsChecked;
64+
ShowLocalTimeMenuItem.IsEnabled = template.ShowLocalTimeMenuItem.IsEnabled;
65+
6066
Update();
6167
}
6268
public EventWindow(Window parent, PerfViewEventSource data)
@@ -167,6 +173,26 @@ public EventWindow(Window parent, PerfViewEventSource data)
167173
};
168174

169175
MultiLineViewPaneHidden = (App.UserConfigData["MultiLineViewPaneHidden"] == "true");
176+
177+
// Initialize timestamp column visibility based on user preference
178+
bool showTimeStampColumns = App.UserConfigData["EventWindowShowTimeStampColumns"] != "false"; // Default to true
179+
ShowTimeStampColumnsMenuItem.IsChecked = showTimeStampColumns;
180+
if (!showTimeStampColumns)
181+
{
182+
// Hide both timestamp columns and disable the timezone menu
183+
foreach (var column in Grid.Columns)
184+
{
185+
if (column == OriginTimeStampColumn || column == LocalTimeStampColumn)
186+
{
187+
column.Visibility = Visibility.Hidden;
188+
}
189+
}
190+
ShowLocalTimeMenuItem.IsEnabled = false;
191+
}
192+
else
193+
{
194+
ShowLocalTimeMenuItem.IsEnabled = true;
195+
}
170196
}
171197

172198
public PerfViewEventSource DataSource { get; private set; }
@@ -1893,32 +1919,87 @@ private void Add(ObservableCollection<EventRecord> events, EventRecord event_)
18931919

18941920
private void DoUseLocalTime(object sender, RoutedEventArgs e)
18951921
{
1896-
foreach (var i in Grid.Columns)
1922+
// Only change visibility if timestamp columns are enabled
1923+
if (ShowTimeStampColumnsMenuItem.IsChecked)
18971924
{
1898-
if (i == OriginTimeStampColumn)
1925+
foreach (var i in Grid.Columns)
18991926
{
1900-
i.Visibility = Visibility.Hidden;
1927+
if (i == OriginTimeStampColumn)
1928+
{
1929+
i.Visibility = Visibility.Hidden;
1930+
}
1931+
else if (i == LocalTimeStampColumn)
1932+
{
1933+
i.Visibility = Visibility.Visible;
1934+
}
19011935
}
1902-
else if (i == LocalTimeStampColumn)
1936+
}
1937+
}
1938+
1939+
private void DoUseOriginTime(object sender, RoutedEventArgs e)
1940+
{
1941+
// Only change visibility if timestamp columns are enabled
1942+
if (ShowTimeStampColumnsMenuItem.IsChecked)
1943+
{
1944+
foreach (var i in Grid.Columns)
19031945
{
1904-
i.Visibility = Visibility.Visible;
1946+
if (i == OriginTimeStampColumn)
1947+
{
1948+
i.Visibility = Visibility.Visible;
1949+
}
1950+
else if (i == LocalTimeStampColumn)
1951+
{
1952+
i.Visibility = Visibility.Hidden;
1953+
}
19051954
}
19061955
}
19071956
}
19081957

1909-
private void DoUseOriginTime(object sender, RoutedEventArgs e)
1958+
private void DoShowTimeStampColumns(object sender, RoutedEventArgs e)
19101959
{
1960+
// Check if UI elements are initialized to avoid null reference during XAML construction
1961+
if (ShowLocalTimeMenuItem == null || Grid?.Columns == null)
1962+
return;
1963+
1964+
// Show the appropriate timestamp column based on current preference
1965+
bool useLocalTime = ShowLocalTimeMenuItem.IsChecked;
19111966
foreach (var i in Grid.Columns)
19121967
{
19131968
if (i == OriginTimeStampColumn)
19141969
{
1915-
i.Visibility = Visibility.Visible;
1970+
i.Visibility = useLocalTime ? Visibility.Hidden : Visibility.Visible;
19161971
}
19171972
else if (i == LocalTimeStampColumn)
1973+
{
1974+
i.Visibility = useLocalTime ? Visibility.Visible : Visibility.Hidden;
1975+
}
1976+
}
1977+
// Enable the Show Local Time menu item
1978+
ShowLocalTimeMenuItem.IsEnabled = true;
1979+
1980+
// Save preference
1981+
App.UserConfigData["EventWindowShowTimeStampColumns"] = "true";
1982+
}
1983+
1984+
private void DoHideTimeStampColumns(object sender, RoutedEventArgs e)
1985+
{
1986+
// Check if UI elements are initialized to avoid null reference during XAML construction
1987+
if (ShowLocalTimeMenuItem == null || Grid?.Columns == null)
1988+
return;
1989+
1990+
// Hide both timestamp columns
1991+
foreach (var i in Grid.Columns)
1992+
{
1993+
if (i == OriginTimeStampColumn || i == LocalTimeStampColumn)
19181994
{
19191995
i.Visibility = Visibility.Hidden;
19201996
}
19211997
}
1998+
// Gray out (disable) the Show Local Time menu item
1999+
ShowLocalTimeMenuItem.IsEnabled = false;
2000+
2001+
// Save preference
2002+
App.UserConfigData["EventWindowShowTimeStampColumns"] = "false";
19222003
}
19232004
}
19242005
}

0 commit comments

Comments
 (0)