/// <summary>
        /// Reaction on selectd calculation fired from selection user fontrol
        /// </summary>
        /// <param name="calculation">Selectd calculation</param>
        private void OnCalculationSelected(CostsCalculation calculation)
        {
            // Calculation selected -> enable functionality
            SetImportedItemsControlsEnability(true);

            // Loads SubSections from currently selected calculation
            LoadSubSectionDataGrid();
        }
        /// <summary>
        /// Gets all imported main items from given calculation.
        /// </summary>
        /// <param name="calculation">Calculation to obtain list</param>
        /// <returns>Returns list of main items</returns>
        private List<MainItem> GetItemsFromCalculation(CostsCalculation calculation)
        {
            List<MainItem> items = new List<MainItem>();

            foreach (SubSection subSection in calculation.SubSections)
            {
                items.AddRange(subSection.MainItemsList);
            }

            return items;
        }
        private void OnCalculationSelected(CostsCalculation calculation)
        {
            if (calculation == null)
            {
                DisableDataGrids();

                return;
            }

            // Enable disabled controls
            this.dg_BillingItems.IsEnabled = true;
            this.dg_CalculationItems.IsEnabled = true;

            // Fill calculation datagrid with all main items in selected calculation
            RefreshDatagrid(
                this.dg_CalculationItems,
                GetItemsFromCalculation(calculation)
            );
        }
        /// <summary>
        /// Creates overView of given <see cref="Karafa.ConstructionHierarchy.CostsCalculation"/>.
        /// </summary>
        /// <param name="constructionName">Name of <see cref="Karafa.ConstructionHierarchy.Construction"/> (that contains CostsCalculation)</param>
        /// <param name="objectName">Name of <see cref="Karafa.ConstructionHierarchy.ConstructionObject"/> (that contains CostsCalculation)</param>
        /// <param name="investor">Construction investor</param>
        /// <param name="projectEngineer">Construction Project enginer</param>
        /// <param name="calculation">Given CostsCalculation</param>
        /// <param name="content">Specifies content type of overview</param>
        /// <param name="save">True to save PDF document, false not to.</param>
        public void CreateCalculationOverView(
            string constructionName,
            string objectName,
            string investor,
            string projectEngineer,
            CostsCalculation calculation,
            CaluclationOverviewContent content,
            bool save = true)
        {
            this.constructionName = constructionName;
            this.objectName = objectName;
            this.investor = investor;
            this.engineer = projectEngineer;
            this.calculation = calculation;
            this.content = content;

            // Create PDF page
            PdfPage page = NewPage();
            InitColumnDimensions(page);

            try
            {
                int yCoordinate = 0;

                // Calculation has no preliminary initial overview
                if (this.content != CaluclationOverviewContent.CALCULATION)
                {
                    // Draw initial header
                    yCoordinate = DrawSubSectionHeader(page, 0, 0, page.Width.Value);
                    // Draw every subsection name ane its prices
                    yCoordinate = DrawSubSectionsOverView(page, 0, yCoordinate, page.Width.Value, page.Height.Value);

                    // Start on new page
                    page = NewPage();

                    // Start draing at the top of page
                    yCoordinate = 0;
                }

                // Start with header
                yCoordinate = DrawMainItemsHeader(page, 0, yCoordinate, page.Width.Value);

                // Print analysis
                yCoordinate = DrawMainItemsOverView(page, 0, yCoordinate, page.Width.Value, page.Height.Value);

                // Save overview and show it
                string documentName =
                    this.content == CaluclationOverviewContent.CALCULATION
                    ? string.Format("{0}_{1}", Properties.Resources.TEXT_CALCULATION_OVERVIEW, this.calculation.Name)
                    : this.content == CaluclationOverviewContent.ANALYSIS
                        ? string.Format("{0}_{1}", Properties.Resources.TEXT_ANALYSIS_OVERVIEW, this.calculation.Name)
                        : this.calculation.Name;

                if (save)
                    SaveDocument(documentName, true);
            }
            catch (Exception ex)
            {
                Karafa.Errors.KarafaLogger.LogError(ex);

                // Report error only when this document should be shown
                if (save)
                    KarafaMainWindow.Instance.ReportProcess(
                        Properties.Resources.MESSAGE_ERROR_CALCULATION_OVERVIEW_FAILED
                    );
            }
        }