/* Formatter.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 Microsoft.Office.Interop.Word; using zaaReloaded2.Formatter.Elements; using zaaReloaded2.LabModel; using System.Diagnostics; namespace zaaReloaded2.Formatter { /// /// Formats and writes a to a Word document. /// [Serializable] class Formatter { #region Properties /// /// Gets a list of formatting elements (derived from /// ). /// public ElementsList Elements { get; private set; } /// /// Gets the working Word document. /// public Document Document { get; private set; } /// /// Gets or sets the style of the normal range reference. /// public ReferenceStyle ReferenceStyle { get; set; } /// /// Gets or sets the that shall be /// formatted. /// public Laboratory Laboratory { [DebuggerStepThrough] get { return _laboratory; } set { _laboratory = value; _timePointFormatters = new TimePointFormatterDictionary(); foreach (TimePoint tp in _laboratory.TimePoints.Values) { _timePointFormatters[tp.TimeStamp] = new TimePointFormatter(tp, ReferenceStyle); } } } /// /// Gets the current working set of TimePointFormatters. /// public ITimePointFormatterDictionary WorkingTimePoints { get; private set; } #endregion #region Constructor public Formatter() { Elements = new ElementsList(); } public Formatter(Document document) : this() { Document = document; } #endregion #region Public methods /// /// Formats the laboratory and writes it to a Word document. /// /// Word document to write to (at the /// current position of the cursor). public void Run() { WorkingTimePoints = _timePointFormatters; foreach (ElementBase element in Elements) { element.Run(this); } } #endregion #region Fields ITimePointFormatterDictionary _timePointFormatters; Laboratory _laboratory; #endregion } }