protected void ComputeSolutions()
        {
            // sanity checks
            if (cbBoxes.Items.Count == 0 || chklbCases.Items.Count == 0)
            {
                return;
            }
            // clear existing analyses
            Analyses.Clear();

            int expectedCount = uCtrlNumberPerCase.Value.Activated ? uCtrlNumberPerCase.Value.Value : -1;

            try
            {
                PackableBrick packable = cbBoxes.SelectedType as PackableBrick;

                ThreadRunning = true;

                ProgressWindow progress = new ProgressWindow();
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(BuildAnalyses), progress);
                progress.ShowDialog();

                // fill grid
                FillGrid();
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
            finally
            {
                ThreadRunning = false;
            }
        }