Implement ItemComment view model and view.
- NEU: Optionale Kommentare zu Laborwerten.
This commit is contained in:
		| @@ -48,13 +48,13 @@ namespace Tests.Controller.Comments | |||||||
|         public void BuildingCommentRaisesEvent() |         public void BuildingCommentRaisesEvent() | ||||||
|         { |         { | ||||||
|             ItemComment i = CommentPool.Default.GetCommentFor("item \"<>\""); |             ItemComment i = CommentPool.Default.GetCommentFor("item \"<>\""); | ||||||
|             bool eventRaised = false; |             int eventRaised = 0; | ||||||
|             CommentPool.Default.FillInComment += (sender, args) => |             CommentPool.Default.FillInComment += (sender, args) => | ||||||
|             { |             { | ||||||
|                 eventRaised = true; |                 eventRaised += 1; | ||||||
|             }; |             }; | ||||||
|             string comment = i.BuildComment(); |             string comment = i.BuildComment(); | ||||||
|             Assert.IsTrue(eventRaised); |             Assert.AreEqual(1, eventRaised); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -16,9 +16,6 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| using System.Text; |  | ||||||
| using NUnit.Framework; | using NUnit.Framework; | ||||||
| using Microsoft.Office.Interop.Word; | using Microsoft.Office.Interop.Word; | ||||||
| using zaaReloaded2.LabModel; | using zaaReloaded2.LabModel; | ||||||
| @@ -26,7 +23,6 @@ using zaaReloaded2.Formatter; | |||||||
| using zaa = zaaReloaded2.Controller.Elements; | using zaa = zaaReloaded2.Controller.Elements; | ||||||
| using zaaReloaded2.Controller.Comments; | using zaaReloaded2.Controller.Comments; | ||||||
| using System.Text.RegularExpressions; | using System.Text.RegularExpressions; | ||||||
| using zaaReloaded2.Controller.Comments; |  | ||||||
|  |  | ||||||
| namespace Tests.Controller.Elements | namespace Tests.Controller.Elements | ||||||
| { | { | ||||||
|   | |||||||
| @@ -98,6 +98,7 @@ | |||||||
|     <Compile Include="Importer\ZaaImporter\TimePointTest.cs" /> |     <Compile Include="Importer\ZaaImporter\TimePointTest.cs" /> | ||||||
|     <Compile Include="TestHelpers.cs" /> |     <Compile Include="TestHelpers.cs" /> | ||||||
|     <Compile Include="ViewModels\ElementPickerViewModelTest.cs" /> |     <Compile Include="ViewModels\ElementPickerViewModelTest.cs" /> | ||||||
|  |     <Compile Include="ViewModels\ItemCommentViewModelTest.cs" /> | ||||||
|     <Compile Include="ViewModels\SettingsRepositoryViewModelTest.cs" /> |     <Compile Include="ViewModels\SettingsRepositoryViewModelTest.cs" /> | ||||||
|     <Compile Include="ViewModels\SettingsViewModelTest.cs" /> |     <Compile Include="ViewModels\SettingsViewModelTest.cs" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								Tests/ViewModels/ItemCommentViewModelTest.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								Tests/ViewModels/ItemCommentViewModelTest.cs
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | /* ItemCommentViewModelTest.cs | ||||||
|  |  * part of zaaReloaded2 | ||||||
|  |  *  | ||||||
|  |  * Copyright 2015 Daniel Kraus | ||||||
|  |  *  | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  *  | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  *  | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Text; | ||||||
|  | using NUnit.Framework; | ||||||
|  | using zaaReloaded2.Controller.Comments; | ||||||
|  | using zaaReloaded2.ViewModels; | ||||||
|  |  | ||||||
|  | namespace Tests.ViewModels | ||||||
|  | { | ||||||
|  |     [TestFixture] | ||||||
|  |     class ItemCommentViewModelTest | ||||||
|  |     { | ||||||
|  |         [Test] | ||||||
|  |         public void Properties() | ||||||
|  |         { | ||||||
|  |             ItemComment comment = new ItemComment("item", "pre", "val", "suf"); | ||||||
|  |             ItemCommentViewModel vm = new ItemCommentViewModel(comment); | ||||||
|  |             Assert.AreEqual(comment.Item, vm.Item); | ||||||
|  |             Assert.AreEqual(comment.Prefix, vm.Prefix); | ||||||
|  |             Assert.AreEqual(comment.Suffix, vm.Suffix); | ||||||
|  |             Assert.AreEqual(comment.Value, vm.Value); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -78,6 +78,16 @@ namespace zaaReloaded2.Controller.Comments | |||||||
|  |  | ||||||
|         #region Methods |         #region Methods | ||||||
|  |  | ||||||
|  |         /// <summary> | ||||||
|  |         /// Clear the pool of ItemComments and sets the event handler | ||||||
|  |         /// to null. | ||||||
|  |         /// </summary> | ||||||
|  |         public void Reset() | ||||||
|  |         { | ||||||
|  |             _itemComments.Clear(); | ||||||
|  |             FillInComment = null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// Retrieves the ItemComment for a given definitionString; |         /// Retrieves the ItemComment for a given definitionString; | ||||||
|         /// creates a new ItemComment object if necessary. |         /// creates a new ItemComment object if necessary. | ||||||
| @@ -103,7 +113,7 @@ namespace zaaReloaded2.Controller.Comments | |||||||
|  |  | ||||||
|         #endregion |         #endregion | ||||||
|  |  | ||||||
|         #region Pribate methods |         #region Private methods | ||||||
|  |  | ||||||
|         protected virtual void itemComment_FillInComment(object sender, ItemCommentEventArgs e) |         protected virtual void itemComment_FillInComment(object sender, ItemCommentEventArgs e) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -224,7 +224,7 @@ namespace zaaReloaded2.Controller.Elements | |||||||
|  |  | ||||||
|         string _caption; |         string _caption; | ||||||
|         List<string> _items; |         List<string> _items; | ||||||
|         static readonly Regex _wildcard = new Regex(@"(?<material>[^-]+-)?\*"); |         static readonly Regex _wildcard = new Regex(@"^(?<material>[^-]+-)?\*$"); | ||||||
|          |          | ||||||
|         #endregion |         #endregion | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -31,6 +31,7 @@ using zaaReloaded2.ViewModels; | |||||||
| using zaaReloaded2.Importer.ZaaImporter; | using zaaReloaded2.Importer.ZaaImporter; | ||||||
| using zaaReloaded2.Formatter; | using zaaReloaded2.Formatter; | ||||||
| using zaaReloaded2.Controller; | using zaaReloaded2.Controller; | ||||||
|  | using zaaReloaded2.Controller.Comments; | ||||||
| using Word = Microsoft.Office.Interop.Word; | using Word = Microsoft.Office.Interop.Word; | ||||||
| using Bovender.Mvvm.Actions; | using Bovender.Mvvm.Actions; | ||||||
| using Bovender.Mvvm.Messaging; | using Bovender.Mvvm.Messaging; | ||||||
| @@ -201,6 +202,8 @@ namespace zaaReloaded2 | |||||||
|                 Globals.ThisAddIn.Application.ActiveDocument); |                 Globals.ThisAddIn.Application.ActiveDocument); | ||||||
|             formatter.Settings = settings; |             formatter.Settings = settings; | ||||||
|             formatter.Laboratory = importer.Laboratory; |             formatter.Laboratory = importer.Laboratory; | ||||||
|  |             CommentPool.Default.Reset(); | ||||||
|  |             CommentPool.Default.FillInComment += CommentPool_FillInComment; | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|                 formatter.Run(); |                 formatter.Run(); | ||||||
| @@ -215,6 +218,16 @@ namespace zaaReloaded2 | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         void CommentPool_FillInComment(object sender, ItemCommentEventArgs e) | ||||||
|  |         { | ||||||
|  |             ItemCommentViewModel vm = new ItemCommentViewModel(e.Comment); | ||||||
|  |             vm.CancelMessage.Sent += (cancelSender, cancelArgs) => | ||||||
|  |             { | ||||||
|  |                 e.IsCancelled = true; | ||||||
|  |             }; | ||||||
|  |             vm.InjectInto<ItemCommentView>().ShowDialog(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         void DoChooseSettings() |         void DoChooseSettings() | ||||||
|         { |         { | ||||||
|             SettingsRepository repository = SettingsRepository.Load(); |             SettingsRepository repository = SettingsRepository.Load(); | ||||||
|   | |||||||
							
								
								
									
										126
									
								
								zaaReloaded2/ViewModels/ItemCommentViewModel.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										126
									
								
								zaaReloaded2/ViewModels/ItemCommentViewModel.cs
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,126 @@ | |||||||
|  | /* ItemCommentViewModel.cs | ||||||
|  |  * part of zaaReloaded2 | ||||||
|  |  *  | ||||||
|  |  * Copyright 2015 Daniel Kraus | ||||||
|  |  *  | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  *  | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  *  | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Text; | ||||||
|  | using Bovender.Mvvm; | ||||||
|  | using Bovender.Mvvm.ViewModels; | ||||||
|  | using Bovender.Mvvm.Messaging; | ||||||
|  | using zaaReloaded2.Controller.Comments; | ||||||
|  |  | ||||||
|  | namespace zaaReloaded2.ViewModels | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// View model for zaaReloaded2.Controller.Comments.ItemComment. | ||||||
|  |     /// </summary> | ||||||
|  |     public class ItemCommentViewModel : ViewModelBase | ||||||
|  |     { | ||||||
|  |         #region Properties | ||||||
|  |  | ||||||
|  |         public string Item { get { return _itemComment.Item; } } | ||||||
|  |  | ||||||
|  |         public string Prefix { get { return _itemComment.Prefix;  } } | ||||||
|  |  | ||||||
|  |         public string Value | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _itemComment.Value; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 _itemComment.Value = value; | ||||||
|  |                 OnPropertyChanged("Value"); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public string Suffix { get { return _itemComment.Suffix; } } | ||||||
|  |  | ||||||
|  |         #endregion | ||||||
|  |  | ||||||
|  |         #region Commands | ||||||
|  |  | ||||||
|  |         DelegatingCommand CancelCommand | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 if (_cancelCommand == null) | ||||||
|  |                 { | ||||||
|  |                     _cancelCommand = new DelegatingCommand( | ||||||
|  |                         param => DoCancel()); | ||||||
|  |                 } | ||||||
|  |                 return _cancelCommand; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         #endregion | ||||||
|  |  | ||||||
|  |         #region Message | ||||||
|  |  | ||||||
|  |         public Message<ViewModelMessageContent> CancelMessage | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 if (_cancelMessage == null) | ||||||
|  |                 { | ||||||
|  |                     _cancelMessage = new Message<ViewModelMessageContent>(); | ||||||
|  |                 } | ||||||
|  |                 return _cancelMessage; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         #endregion | ||||||
|  |  | ||||||
|  |         #region Constructor | ||||||
|  |  | ||||||
|  |         public ItemCommentViewModel(ItemComment itemComment) | ||||||
|  |         { | ||||||
|  |             _itemComment = itemComment; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         #endregion | ||||||
|  |  | ||||||
|  |         #region Implementation of ViewModelBase | ||||||
|  |  | ||||||
|  |         public override object RevealModelObject() | ||||||
|  |         { | ||||||
|  |             return _itemComment; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         #endregion | ||||||
|  |  | ||||||
|  |         #region Private methods | ||||||
|  |  | ||||||
|  |         void DoCancel() | ||||||
|  |         { | ||||||
|  |             CancelMessage.Send(new ViewModelMessageContent(this)); | ||||||
|  |             DoCloseView(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         #endregion | ||||||
|  |  | ||||||
|  |         #region Fields | ||||||
|  |  | ||||||
|  |         DelegatingCommand _cancelCommand; | ||||||
|  |         Message<ViewModelMessageContent> _cancelMessage; | ||||||
|  |         ItemComment _itemComment; | ||||||
|  |          | ||||||
|  |         #endregion | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										50
									
								
								zaaReloaded2/Views/ItemCommentView.xaml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										50
									
								
								zaaReloaded2/Views/ItemCommentView.xaml
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | <!-- | ||||||
|  | 	ItemCommentView.xaml | ||||||
|  | 	part of zaaReloaded2 | ||||||
|  | 	 | ||||||
|  | 	Copyright 2015 Daniel Kraus | ||||||
|  | 	 | ||||||
|  | 	Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | 	you may not use this file except in compliance with the License. | ||||||
|  | 	You may obtain a copy of the License at | ||||||
|  | 	 | ||||||
|  | 	    http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | 	 | ||||||
|  | 	Unless required by applicable law or agreed to in writing, software | ||||||
|  | 	distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | 	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | 	See the License for the specific language governing permissions and | ||||||
|  | 	limitations under the License. | ||||||
|  | --> | ||||||
|  |  | ||||||
|  | <Window x:Class="zaaReloaded2.Views.ItemCommentView" | ||||||
|  |         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||||||
|  |         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||||||
|  |         xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" | ||||||
|  |         ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" | ||||||
|  |         WindowStyle="ToolWindow" Topmost="True" | ||||||
|  |         SizeToContent="WidthAndHeight" | ||||||
|  |         b:WindowState.CenterScreen="True" b:WindowState.Save="True" | ||||||
|  |         Title="Kommentar angeben" | ||||||
|  |         FocusManager.FocusedElement="{Binding ElementName=ValueTextBox}" | ||||||
|  |         > | ||||||
|  |     <Window.Resources> | ||||||
|  |         <ResourceDictionary Source="/zaaReloaded2;component/Style.xaml" /> | ||||||
|  |     </Window.Resources> | ||||||
|  |     <DockPanel Margin="10"> | ||||||
|  |         <Label DockPanel.Dock="Top" Content="{Binding Item}" | ||||||
|  |                FontSize="16" FontWeight="Bold" | ||||||
|  |                Target="{Binding ElementName=ValueTextBox}" Padding="0" /> | ||||||
|  |         <UniformGrid DockPanel.Dock="Bottom" HorizontalAlignment="Right" Columns="2" Rows="1" Margin="0 10 0 0"> | ||||||
|  |             <Button Content="OK" Command="{Binding CloseViewCommand}" IsDefault="True" Margin="0 0 5 0" /> | ||||||
|  |             <Button Content="Abbrechen" Command="{Binding CancelCommand}" IsCancel="True" Margin="5 0 0 0" /> | ||||||
|  |         </UniformGrid> | ||||||
|  |         <DockPanel Margin="0 10 0 10"> | ||||||
|  |             <TextBlock DockPanel.Dock="Left" Text="{Binding Prefix}" VerticalAlignment="Center" /> | ||||||
|  |             <TextBlock DockPanel.Dock="Right" Text="{Binding Suffix}" VerticalAlignment="Center" /> | ||||||
|  |             <TextBox Text="Binding Value,Mode=TwoWay,UpdateSourceTrigger=LostFocus}" | ||||||
|  |                      MinWidth="120" MaxWidth="240" VerticalAlignment="Center" | ||||||
|  |                      x:Name="ValueTextBox" Margin="5 0 5 0" /> | ||||||
|  |         </DockPanel> | ||||||
|  |     </DockPanel> | ||||||
|  | </Window> | ||||||
							
								
								
									
										33
									
								
								zaaReloaded2/Views/ItemCommentView.xaml.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								zaaReloaded2/Views/ItemCommentView.xaml.cs
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | /* ItemCommentView.xaml.cs | ||||||
|  |  * part of zaaReloaded2 | ||||||
|  |  *  | ||||||
|  |  * Copyright 2015 Daniel Kraus | ||||||
|  |  *  | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  *  | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  *  | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | using System.Windows; | ||||||
|  |  | ||||||
|  | namespace zaaReloaded2.Views | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// Interaction logic for ItemCommentView.xaml | ||||||
|  |     /// </summary> | ||||||
|  |     public partial class ItemCommentView : Window | ||||||
|  |     { | ||||||
|  |         public ItemCommentView() | ||||||
|  |         { | ||||||
|  |             InitializeComponent(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -257,7 +257,11 @@ | |||||||
|     <Compile Include="ViewModels\FormatElementViewModel.cs" /> |     <Compile Include="ViewModels\FormatElementViewModel.cs" /> | ||||||
|     <Compile Include="ViewModels\ControlElementViewModel.cs" /> |     <Compile Include="ViewModels\ControlElementViewModel.cs" /> | ||||||
|     <Compile Include="ViewModels\IoErrorViewModel.cs" /> |     <Compile Include="ViewModels\IoErrorViewModel.cs" /> | ||||||
|  |     <Compile Include="ViewModels\ItemCommentViewModel.cs" /> | ||||||
|     <Compile Include="ViewModels\SettingsRepositoryViewModel.cs" /> |     <Compile Include="ViewModels\SettingsRepositoryViewModel.cs" /> | ||||||
|  |     <Compile Include="Views\ItemCommentView.xaml.cs"> | ||||||
|  |       <DependentUpon>ItemCommentView.xaml</DependentUpon> | ||||||
|  |     </Compile> | ||||||
|     <Compile Include="Views\IoErrorView.xaml.cs"> |     <Compile Include="Views\IoErrorView.xaml.cs"> | ||||||
|       <DependentUpon>IoErrorView.xaml</DependentUpon> |       <DependentUpon>IoErrorView.xaml</DependentUpon> | ||||||
|     </Compile> |     </Compile> | ||||||
| @@ -343,6 +347,10 @@ | |||||||
|       <Generator>MSBuild:Compile</Generator> |       <Generator>MSBuild:Compile</Generator> | ||||||
|       <SubType>Designer</SubType> |       <SubType>Designer</SubType> | ||||||
|     </Resource> |     </Resource> | ||||||
|  |     <Page Include="Views\ItemCommentView.xaml"> | ||||||
|  |       <Generator>MSBuild:Compile</Generator> | ||||||
|  |       <SubType>Designer</SubType> | ||||||
|  |     </Page> | ||||||
|     <Page Include="Views\IoErrorView.xaml"> |     <Page Include="Views\IoErrorView.xaml"> | ||||||
|       <Generator>MSBuild:Compile</Generator> |       <Generator>MSBuild:Compile</Generator> | ||||||
|       <SubType>Designer</SubType> |       <SubType>Designer</SubType> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user