aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2019-03-18 13:33:45 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2019-03-18 13:33:45 +0200
commite6be03de10afc55c2ceac18dbd690e2ed127c8d8 (patch)
tree5ff1d9db43fc8983090826c7c89b03468bf44fe3 /Software
parent4fa7c0a3be078eff8957c77c055fb6a865738732 (diff)
downloadTango-e6be03de10afc55c2ceac18dbd690e2ed127c8d8.tar.gz
Tango-e6be03de10afc55c2ceac18dbd690e2ed127c8d8.zip
Improved Job Outline Control.
Improved job events grid performance.
Diffstat (limited to 'Software')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/JobOutlineControl.cs99
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Converters/StringToEllipsisConverter.cs31
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj3
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml9
4 files changed, 104 insertions, 38 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/JobOutlineControl.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/JobOutlineControl.cs
index 7c06543ce..ee570ac34 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/JobOutlineControl.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Controls/JobOutlineControl.cs
@@ -34,12 +34,31 @@ namespace Tango.MachineStudio.Developer.Controls
}
private double _verticalOffset = 0;
private double _viewportHeight = 0;
+ private const double HEADER_FONT_HEIGHT = 35;
+ private const double TITLE_FONT_HEIGHT = 22;
+ private const double SUB_TITLE_FONT_HEIGHT = 19;
+ private const double NORMAL_FONT_HEIGHT = 17;
+ private const double WIDTH = 330;
+
#endregion members
public JobOutlineControl() : base()
{
Unloaded += JobOutlineControl_Unloaded;
+ DataContextChanged += JobOutlineControl_DataContextChanged;
+ Width = WIDTH;
}
+
+ private void JobOutlineControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
+ {
+ if (_parentScrollViewer != null)
+ {
+ _parentScrollViewer.ScrollToTop();
+ }
+
+ InvalidateVisual();
+ }
+
#region events
private void JobOutlineControl_Unloaded(object sender, RoutedEventArgs e)
{
@@ -48,7 +67,7 @@ namespace Tango.MachineStudio.Developer.Controls
_parentScrollViewer.ScrollChanged -= ScrollViewer_ScrollChanged;
}
}
-
+
private void ScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (e.VerticalChange == 0.0)
@@ -77,25 +96,30 @@ namespace Tango.MachineStudio.Developer.Controls
_sizeControl = new Size();
_sizeControl.Height += 10;
DrawHeaderText(drawingContext, "JOB OUTLINE", 30, LevelOffset.level_0);
-
+ _sizeControl.Height += HEADER_FONT_HEIGHT;
+
_sizeControl.Height += 20;
DrawHeaderText(drawingContext, "BASIC", 17, LevelOffset.level_0);
+ _sizeControl.Height += TITLE_FONT_HEIGHT;
_sizeControl.Height += 5.0;
var basicProps = GetNameValueList(job);
foreach (var prop in basicProps)
{
DrawNameValueText(drawingContext, prop, LevelOffset.level_1, PackIconKind.Pencil);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
}
//JobTicket.Spool
if (job.Spool != null)
{
_sizeControl.Height += 20;
DrawHeaderText(drawingContext, "SPOOL", 17, LevelOffset.level_0);
+ _sizeControl.Height += TITLE_FONT_HEIGHT;
_sizeControl.Height += 5.0;
basicProps = GetNameValueList(job.Spool);
foreach (var prop in basicProps)
{
DrawNameValueText(drawingContext, prop, LevelOffset.level_1, PackIconKind.Pencil);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
}
}
//JobTicket.ProcessParameters
@@ -103,11 +127,13 @@ namespace Tango.MachineStudio.Developer.Controls
{
_sizeControl.Height += 20;
DrawHeaderText(drawingContext, "PROCESS PARAMETERS", 17, LevelOffset.level_0);
+ _sizeControl.Height += TITLE_FONT_HEIGHT;
_sizeControl.Height += 5.0;
basicProps = GetNameValueList(job.ProcessParameters);
foreach (var prop in basicProps)
{
DrawNameValueText(drawingContext, prop, LevelOffset.level_1, PackIconKind.Settings);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
}
}
//JobTicket.Segments
@@ -115,48 +141,56 @@ namespace Tango.MachineStudio.Developer.Controls
{
_sizeControl.Height += 20;
DrawHeaderText(drawingContext, "SEGMENTS", 17, LevelOffset.level_0);
+ _sizeControl.Height += TITLE_FONT_HEIGHT;
_sizeControl.Height += 10.0;
int index = 0;
foreach (JobSegment seg in job.Segments)
{
DrawHeaderText(drawingContext, string.Format("#{0} SEGMENT", ++index), 14, LevelOffset.level_1);
+ _sizeControl.Height += SUB_TITLE_FONT_HEIGHT;
basicProps = GetNameValueList(seg);
foreach (var prop in basicProps)
{
DrawNameValueText(drawingContext, prop, LevelOffset.level_2, PackIconKind.Pencil);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
}
//BrushStops
DrawHeaderText(drawingContext, "BRUSH STOPS", 12, LevelOffset.level_3);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
int indexBrush = 0;
foreach (JobBrushStop brushstop in seg.BrushStops)
{
_sizeControl.Height += 5.0;
DrawHeaderText(drawingContext, string.Format("#{0} STOP", ++indexBrush), 11, LevelOffset.level_4);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
var brushStops = GetNameValueList(brushstop);
foreach (var brushstopprop in brushStops)
{
DrawNameValueText(drawingContext, brushstopprop, LevelOffset.level_5, PackIconKind.Pencil);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
}
DrawHeaderText(drawingContext, "DISPENSERS", 12, LevelOffset.level_6);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
_sizeControl.Height += 5.0;
int indexDispenser = 0;
foreach (JobDispenser disp in brushstop.Dispensers)
{
DrawHeaderText(drawingContext, string.Format("#{0} DISPENSER", ++indexDispenser), 11, LevelOffset.level_6);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
var dispProperties = GetNameValueList(disp);
foreach (var dispprop in dispProperties)
{
DrawNameValueText(drawingContext, dispprop, LevelOffset.level_7, PackIconKind.ArrowRightBoldCircle);
+ _sizeControl.Height += NORMAL_FONT_HEIGHT;
}
}
}
}
}
- if (Height != _sizeControl.Height || Width != _sizeControl.Width)
+ if (Height != _sizeControl.Height)
{
Height = _sizeControl.Height;
- Width = _sizeControl.Width;
}
}
public IEnumerable<Tuple<String, String>> GetNameValueList(object value)
@@ -175,46 +209,51 @@ namespace Tango.MachineStudio.Developer.Controls
#region drawing
protected void DrawNameValueText(DrawingContext drawingContext, Tuple<string, string> text, double levelOfOffset, PackIconKind? icon)
{
+ if (IsInViewPort())
+ {
+ FormattedText formattedName = new FormattedText(text.Item1 + ": ", System.Globalization.CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.Normal, FontStretches.Normal),
+ 12, Foreground);
+ DrawIconTextIfVisible(drawingContext, levelOfOffset, formattedName, icon);
+ double widthOfNameText = formattedName.WidthIncludingTrailingWhitespace + 17 + levelOfOffset;//17 pix for draw icon before text
- FormattedText formattedName = new FormattedText(text.Item1 + ": ", System.Globalization.CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.Normal, FontStretches.Normal),
- 12, Foreground);
- DrawIconTextIfVisible(drawingContext, levelOfOffset, formattedName, icon);
- double widthOfNameText = formattedName.WidthIncludingTrailingWhitespace + 17 + levelOfOffset;//17 pix for draw icon before text
+ FormattedText formattedValue = new FormattedText(text.Item2, System.Globalization.CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.SemiBold, FontStretches.Normal),
+ 12, Foreground);
+ DrawIconTextIfVisible(drawingContext, widthOfNameText, formattedValue);
+ _sizeControl.Width = Math.Max(_sizeControl.Width, (widthOfNameText + formattedValue.WidthIncludingTrailingWhitespace));
+ }
+ }
- FormattedText formattedValue = new FormattedText(text.Item2, System.Globalization.CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.SemiBold, FontStretches.Normal),
- 12, Foreground);
- DrawIconTextIfVisible(drawingContext, widthOfNameText, formattedValue);
- _sizeControl.Height += Math.Max(formattedName.Height, formattedValue.Height) + 5.0;
- _sizeControl.Width = Math.Max(_sizeControl.Width, (widthOfNameText + formattedValue.WidthIncludingTrailingWhitespace ));
+ private bool IsInViewPort()
+ {
+ return (_sizeControl.Height >= _verticalOffset && _sizeControl.Height <= (_verticalOffset + _viewportHeight + 5));
}
protected void DrawHeaderText(DrawingContext drawingContext, string text, int fontSize, double levelOfOffset)
{
- FormattedText formattedtext = new FormattedText(text, System.Globalization.CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.SemiBold, FontStretches.Normal),
- fontSize, Foreground);
- DrawIconTextIfVisible(drawingContext, levelOfOffset, formattedtext);
- _sizeControl.Width = Math.Max(_sizeControl.Width, (formattedtext.Width + levelOfOffset));
- _sizeControl.Height += formattedtext.Height + 5.0;
+ if (IsInViewPort())
+ {
+ FormattedText formattedtext = new FormattedText(text, System.Globalization.CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.SemiBold, FontStretches.Normal),
+ fontSize, Foreground);
+ DrawIconTextIfVisible(drawingContext, levelOfOffset, formattedtext);
+ _sizeControl.Width = Math.Max(_sizeControl.Width, (formattedtext.Width + levelOfOffset));
+ }
}
-
+
private void DrawIconTextIfVisible(DrawingContext drawingContext, double levelOfOffset, FormattedText formattedText, PackIconKind? icon = null)
{
- if (_sizeControl.Height >= _verticalOffset && _sizeControl.Height <= (_verticalOffset + _viewportHeight + 5))
+ if (icon is PackIconKind)
{
- if (icon is PackIconKind)
- {
- DrawIcon(drawingContext, (PackIconKind)icon, new Point(levelOfOffset, _sizeControl.Height));
- levelOfOffset += 17;
- }
- drawingContext.DrawText(formattedText, new Point(levelOfOffset, _sizeControl.Height));
+ DrawIcon(drawingContext, (PackIconKind)icon, new Point(levelOfOffset, _sizeControl.Height));
+ levelOfOffset += 17;
}
+ drawingContext.DrawText(formattedText, new Point(levelOfOffset, _sizeControl.Height));
}
private void DrawIcon(DrawingContext drawingContext, PackIconKind kind, Point point)
{
- GeometryGroup group = GetGeometryByIcon(kind);
- SetGeometryPosition(group, point);
- drawingContext.DrawGeometry(Foreground, new Pen(Brushes.White, 1), group);
-
+ GeometryGroup group = GetGeometryByIcon(kind);
+ SetGeometryPosition(group, point);
+ drawingContext.DrawGeometry(Foreground, new Pen(Brushes.White, 1), group);
+
}
private GeometryGroup GetGeometryByIcon(PackIconKind kind)
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Converters/StringToEllipsisConverter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Converters/StringToEllipsisConverter.cs
new file mode 100644
index 000000000..2a14bce1e
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Converters/StringToEllipsisConverter.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Data;
+
+namespace Tango.MachineStudio.Developer.Converters
+{
+ public class StringToEllipsisConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ String text = value as String;
+ int length = 0;
+
+ if (text != null && parameter != null && int.TryParse(parameter.ToString(), out length))
+ {
+ return text.Ellipsis(length);
+ }
+
+ return String.Empty;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj
index f1bdcf97b..190e8d0fe 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj
@@ -113,6 +113,7 @@
<Compile Include="Converters\SegmentToBrushConverterMulti.cs" />
<Compile Include="Converters\SegmentToGradientStopsConverterMulti.cs" />
<Compile Include="Converters\SegmentToGradientStopsConverter.cs" />
+ <Compile Include="Converters\StringToEllipsisConverter.cs" />
<Compile Include="DeveloperModule.cs" />
<Compile Include="DeveloperModuleSettings.cs" />
<Compile Include="Navigation\DeveloperNavigationManager.cs" />
@@ -360,7 +361,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml
index 0cecf7a29..dbe0d835b 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml
@@ -17,6 +17,7 @@
<converters:DateTimeUTCToStringConverter x:Key="DateTimeUTCToStringConverter" />
<localConverters:ObjectToPropertiesConverter x:Key="ObjectToPropertiesConverter" />
<converters:MathOperatorConverter x:Key="MathOperatorConverter" />
+ <localConverters:StringToEllipsisConverter x:Key="StringToEllipsisConverter" />
</UserControl.Resources>
<Grid>
@@ -193,13 +194,7 @@
<DataGridTextColumn SortDirection="Descending" Header="DATE TIME" Binding="{Binding DateTime,Converter={StaticResource DateTimeUTCToStringConverter},ConverterParameter='MM/dd/yyyy HH:mm:ss.fff'}" />
<DataGridTextColumn Header="GROUP" Binding="{Binding EventType.Group}" />
<DataGridTextColumn Header="EVENT" Binding="{Binding EventType.Title}" />
- <DataGridTemplateColumn Header="MESSAGE" Width="1*">
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <TextBlock Text="{Binding Description}" TextTrimming="CharacterEllipsis"></TextBlock>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
+ <DataGridTextColumn Header="MESSAGE" Width="1*" Binding="{Binding Description,Converter={StaticResource StringToEllipsisConverter},ConverterParameter=100}" />
</DataGrid.Columns>
</DataGrid>
</Grid>