Ejemplo n.º 1
0
        public void SaveModifiedFiles()
        {
            foreach (DataCell cell in mModifiedCells)
            {
                ColumnBehavior behavior = mDataTable.GetColumnBehavior(cell.Column);
                behavior.SaveCell(mModifiedFiles, cell.Row, cell.Row[cell.Column]);
            }

            // Save ingredient rows all at once because unlike other cells, an ingredient
            // does not map to a unique key in json. We rewrite the entire json array all at once
            var ingredientRows =
                mModifiedCells
                .Where(e => mDataTable.GetColumnBehavior(e.Column).IsIngredientColumn)
                .Select(e => e.Row)
                .Distinct()
                .ToList();

            foreach (var row in ingredientRows)
            {
                SaveIngredients(mModifiedFiles, row);
            }

            foreach (JsonFileData modified in mModifiedFiles)
            {
                modified.TrySetFlatFileData(modified.Json.ToString());
                modified.TrySaveFile();
            }

            mModifiedFiles.Clear();
            mModifiedCells.Clear();
            unsavedFilesLabel.Visible = false;
            currentStateUndoIndex     = mUndoStack.Count();
        }
Ejemplo n.º 2
0
 private void ConfigureColumnsAfterRender()
 {
     for (int i = 0; i < recipesGridView.Columns.Count; i++)
     {
         DataGridViewColumn column      = recipesGridView.Columns[i];
         DataColumn         dataColumn  = mDataTable.Columns[i];
         ColumnBehavior     colBehavior = mDataTable.GetColumnBehavior(dataColumn);
         colBehavior.ConfigureColumnAfterRender(column, recipesGridView);
     }
 }
Ejemplo n.º 3
0
        private void ConfigureColumns()
        {
            for (int i = 0; i < recipesGridView.Columns.Count; i++)
            {
                DataGridViewColumn column      = recipesGridView.Columns[i];
                DataColumn         dataColumn  = mDataTable.Columns[i];
                ColumnBehavior     colBehavior = mDataTable.GetColumnBehavior(dataColumn);

                // Add combo boxes for columns that have a predetermined set of valid values
                DataGridViewColumn replacementColumn = null;
                if (colBehavior is IngrNameColumnBehavior)
                {
                    DataGridViewComboBoxColumn newColumn = new DataGridViewComboBoxColumn();
                    newColumn.Name             = column.Name;
                    newColumn.DataPropertyName = column.DataPropertyName;
                    newColumn.AutoComplete     = false;
                    newColumn.DisplayStyle     = DataGridViewComboBoxDisplayStyle.Nothing;
                    newColumn.DataSource       = GetAutoCompleteStrings(newColumn.Name);
                    newColumn.SortMode         = DataGridViewColumnSortMode.Automatic;
                    replacementColumn          = newColumn;
                }
                else if (colBehavior is BooleanColumnBehavior)
                {
                    var newColumn = new DataGridViewCheckBoxColumn();
                    newColumn.Name             = column.Name;
                    newColumn.DataPropertyName = column.DataPropertyName;
                    newColumn.SortMode         = DataGridViewColumnSortMode.Automatic;
                    replacementColumn          = newColumn;
                }
                if (replacementColumn != null)
                {
                    recipesGridView.Columns.RemoveAt(i);
                    recipesGridView.Columns.Insert(i, replacementColumn);
                    mComboBoxColumns.Add(i);
                    column = replacementColumn;
                }

                // Configure columns based on column behavior
                colBehavior.ConfigureColumn(column);
            }
        }
Ejemplo n.º 4
0
 internal void AddDataColumn(string name, Type valueType, ColumnBehavior behavior)
 {
     Columns.Add(new DataColumn(name, valueType));
     mKeyToColumnBehavior.Add(name, behavior);
 }