Prevent running the formatter without appropriate selection.
- VERBESSERT: Formatieren läßt sich nicht mehr starten, ohne daß Labor-Text markiert ist.
This commit is contained in:
		@@ -119,7 +119,7 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
        /// current position of the cursor).</param>
 | 
					        /// current position of the cursor).</param>
 | 
				
			||||||
        public void Run()
 | 
					        public void Run()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!CanRun) throw new InvalidOperationException("No laboratory data to format.");
 | 
					            if (!CanRun) throw new NoLaboratoryDataException("No laboratory data to format.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CreateParagraphStyle();
 | 
					            CreateParagraphStyle();
 | 
				
			||||||
            _secondaryBuffer.ParagraphStyle = zaaReloaded2.Properties.Settings.Default.ParagraphStyleName;
 | 
					            _secondaryBuffer.ParagraphStyle = zaaReloaded2.Properties.Settings.Default.ParagraphStyleName;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								zaaReloaded2/Formatter/NoLaboratoryDataException.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								zaaReloaded2/Formatter/NoLaboratoryDataException.cs
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					/* NoLaboratoryDataException.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.Runtime.Serialization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Formatter
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Serializable]
 | 
				
			||||||
 | 
					    class NoLaboratoryDataException : Exception
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public NoLaboratoryDataException() { }
 | 
				
			||||||
 | 
					        public NoLaboratoryDataException(string message) : base(message) { }
 | 
				
			||||||
 | 
					        public NoLaboratoryDataException(string message,
 | 
				
			||||||
 | 
					            Exception innerException)
 | 
				
			||||||
 | 
					            : base(message, innerException) { }
 | 
				
			||||||
 | 
					        public NoLaboratoryDataException(SerializationInfo info,
 | 
				
			||||||
 | 
					            StreamingContext context)
 | 
				
			||||||
 | 
					            : base(info, context) { }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -31,6 +31,9 @@ using zaaReloaded2.ViewModels;
 | 
				
			|||||||
using zaaReloaded2.Importer.ZaaImporter;
 | 
					using zaaReloaded2.Importer.ZaaImporter;
 | 
				
			||||||
using zaaReloaded2.Formatter;
 | 
					using zaaReloaded2.Formatter;
 | 
				
			||||||
using zaaReloaded2.Controller;
 | 
					using zaaReloaded2.Controller;
 | 
				
			||||||
 | 
					using Word = Microsoft.Office.Interop.Word;
 | 
				
			||||||
 | 
					using Bovender.Mvvm.Actions;
 | 
				
			||||||
 | 
					using Bovender.Mvvm.Messaging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO:  Follow these steps to enable the Ribbon (XML) item:
 | 
					// TODO:  Follow these steps to enable the Ribbon (XML) item:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -79,7 +82,8 @@ namespace zaaReloaded2
 | 
				
			|||||||
        public void Ribbon_Load(Office.IRibbonUI ribbonUI)
 | 
					        public void Ribbon_Load(Office.IRibbonUI ribbonUI)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _ribbon = ribbonUI;
 | 
					            _ribbon = ribbonUI;
 | 
				
			||||||
            Globals.ThisAddIn.Application.WindowSelectionChange += Application_WindowSelectionChange;
 | 
					            Microsoft.Office.Interop.Word.Application word = Globals.ThisAddIn.Application;
 | 
				
			||||||
 | 
					            word.WindowSelectionChange += Application_WindowSelectionChange;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@@ -152,9 +156,19 @@ namespace zaaReloaded2
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Returns true if there is at least one paragraph selected.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <remarks>
 | 
				
			||||||
 | 
					        /// The Selection object in Word is a bit tricky: Its Length property
 | 
				
			||||||
 | 
					        /// is never 0, because even if no text passage is selected, the character
 | 
				
			||||||
 | 
					        /// after the cursor is the content of the Selection.
 | 
				
			||||||
 | 
					        /// </remarks>
 | 
				
			||||||
        public bool CanFormat(Office.IRibbonControl control)
 | 
					        public bool CanFormat(Office.IRibbonControl control)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return Globals.ThisAddIn.Application.Selection.Paragraphs.Count > 0;
 | 
					            Word.Selection s = Globals.ThisAddIn.Application.ActiveWindow.Selection;
 | 
				
			||||||
 | 
					            return s.Paragraphs.Count > 1 || 
 | 
				
			||||||
 | 
					                (s.Text.Length > 1 && s.Text.EndsWith("\r"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
@@ -182,13 +196,24 @@ namespace zaaReloaded2
 | 
				
			|||||||
        void DoFormat(Settings settings)
 | 
					        void DoFormat(Settings settings)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            ZaaImporter importer = new ZaaImporter();
 | 
					            ZaaImporter importer = new ZaaImporter();
 | 
				
			||||||
            importer.Import(Globals.ThisAddIn.Application.Selection.Text);
 | 
					            importer.Import(Globals.ThisAddIn.Application.ActiveWindow.Selection.Text);
 | 
				
			||||||
            Formatter.Formatter formatter =new Formatter.Formatter(
 | 
					            Formatter.Formatter formatter = new Formatter.Formatter(
 | 
				
			||||||
                Globals.ThisAddIn.Application.ActiveDocument);
 | 
					                Globals.ThisAddIn.Application.ActiveDocument);
 | 
				
			||||||
            formatter.Settings = settings;
 | 
					            formatter.Settings = settings;
 | 
				
			||||||
            formatter.Laboratory = importer.Laboratory;
 | 
					            formatter.Laboratory = importer.Laboratory;
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
                formatter.Run();
 | 
					                formatter.Run();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            catch (NoLaboratoryDataException)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                NotificationAction a = new NotificationAction();
 | 
				
			||||||
 | 
					                a.Caption = "Formatieren nicht möglich";
 | 
				
			||||||
 | 
					                a.Message = "Die aktuelle Markierung scheint keine Labordaten zu enthalten.";
 | 
				
			||||||
 | 
					                a.OkButtonLabel = "Schließen";
 | 
				
			||||||
 | 
					                a.Invoke();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoChooseSettings()
 | 
					        void DoChooseSettings()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,7 @@ using zaaReloaded2.Controller;
 | 
				
			|||||||
using System.Collections.ObjectModel;
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
using System.Runtime.Serialization.Formatters.Soap;
 | 
					using System.Runtime.Serialization.Formatters.Soap;
 | 
				
			||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
 | 
					using Microsoft.Office.Interop.Word;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2.ViewModels
 | 
					namespace zaaReloaded2.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -314,7 +315,12 @@ namespace zaaReloaded2.ViewModels
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        bool CanUseSettings()
 | 
					        bool CanUseSettings()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return LastSelected != null && LastSelected.IsSelected;
 | 
					            Selection selection = Globals.ThisAddIn.Application.ActiveWindow.Selection;
 | 
				
			||||||
 | 
					            return LastSelected != null && LastSelected.IsSelected &&
 | 
				
			||||||
 | 
					                (
 | 
				
			||||||
 | 
					                    selection.Paragraphs.Count > 1
 | 
				
			||||||
 | 
					                    ||  (selection.Text.Length > 1 && selection.Text.EndsWith("\r"))
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoAddSettings()
 | 
					        void DoAddSettings()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -213,6 +213,7 @@
 | 
				
			|||||||
    <Compile Include="ExceptionHandler\SubmissionSuccessView.xaml.cs" />
 | 
					    <Compile Include="ExceptionHandler\SubmissionSuccessView.xaml.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\DanielsStyle.cs" />
 | 
					    <Compile Include="Formatter\DanielsStyle.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\DocumentWriter.cs" />
 | 
					    <Compile Include="Formatter\DocumentWriter.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Formatter\NoLaboratoryDataException.cs" />
 | 
				
			||||||
    <Compile Include="Ribbon.cs" />
 | 
					    <Compile Include="Ribbon.cs" />
 | 
				
			||||||
    <Compile Include="Thesaurus\ThesaurusBase.cs" />
 | 
					    <Compile Include="Thesaurus\ThesaurusBase.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\IItemFormatterDictionary.cs" />
 | 
					    <Compile Include="Formatter\IItemFormatterDictionary.cs" />
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user