Skip to content

Commit

Permalink
Close issue rubberduck-vba#266
Browse files Browse the repository at this point in the history
  • Loading branch information
Hosch250 committed May 29, 2015
1 parent a2c03d4 commit 9226db6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 14 deletions.
49 changes: 38 additions & 11 deletions RetailCoder.VBE/UI/Settings/CodeInspectionControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,29 @@ namespace Rubberduck.UI.Settings
{
public partial class CodeInspectionSettingsControl : UserControl
{
private GridViewSort<CodeInspectionSetting> _gridViewSort;

private BindingList<CodeInspectionSetting> _allInspections;
public BindingList<CodeInspectionSetting> AllInspections
{
get { return _allInspections; }
set
{
_allInspections = value;
FillGrid();
}
}

/// <summary> Parameterless Constructor is to enable design view only. DO NOT USE. </summary>
public CodeInspectionSettingsControl()
{
InitializeComponent();
}

public CodeInspectionSettingsControl(IEnumerable<CodeInspectionSetting> inspections)
public CodeInspectionSettingsControl(IEnumerable<CodeInspectionSetting> inspections, GridViewSort<CodeInspectionSetting> gridViewSort)
: this()
{
var allInspections = new BindingList<CodeInspectionSetting>(inspections
.OrderBy(c => c.InspectionType.ToString())
.ThenBy(c => c.Name)
.ToList()
);
_gridViewSort = gridViewSort;

codeInspectionsGrid.AutoGenerateColumns = false;

Expand All @@ -41,25 +50,43 @@ public CodeInspectionSettingsControl(IEnumerable<CodeInspectionSetting> inspecti
codeInspectionsGrid.AlternatingRowsDefaultCellStyle.SelectionBackColor = Color.LightBlue;
codeInspectionsGrid.AlternatingRowsDefaultCellStyle.SelectionForeColor = Color.MediumBlue;

AllInspections = new BindingList<CodeInspectionSetting>(inspections
.OrderBy(c => c.Name)
.ToList());

// temporal coupling here: this code should run after columns are formatted.
//codeInspectionsGrid.DataSource = AllInspections;
codeInspectionsGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
codeInspectionsGrid.ColumnHeaderMouseClick += SortColumn;
}

private void FillGrid()
{
codeInspectionsGrid.Columns.Clear();

var nameColumn = new DataGridViewTextBoxColumn();
nameColumn.Name = "InspectionName";
nameColumn.Name = "Name";
nameColumn.DataPropertyName = "Name";
nameColumn.HeaderText = RubberduckUI.Name;
nameColumn.FillWeight = 150;
nameColumn.ReadOnly = true;
codeInspectionsGrid.Columns.Add(nameColumn);

var severityColumn = new DataGridViewComboBoxColumn();
severityColumn.Name = "InspectionSeverity";
severityColumn.Name = "Severity";
severityColumn.DataPropertyName = "Severity";
severityColumn.DataSource = Enum.GetValues(typeof(CodeInspectionSeverity));
severityColumn.HeaderText = RubberduckUI.Severity;
severityColumn.DefaultCellStyle.Font = codeInspectionsGrid.Font;
codeInspectionsGrid.Columns.Add(severityColumn);

// temporal coupling here: this code should run after columns are formatted.
codeInspectionsGrid.DataSource = allInspections;
codeInspectionsGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
codeInspectionsGrid.DataSource = AllInspections;
}

private void SortColumn(object sender, DataGridViewCellMouseEventArgs e)
{
var columnName = codeInspectionsGrid.Columns[e.ColumnIndex].Name;
AllInspections = new BindingList<CodeInspectionSetting>(_gridViewSort.Sort(AllInspections.AsEnumerable(), columnName).ToList());
}
}
}
8 changes: 5 additions & 3 deletions RetailCoder.VBE/UI/Settings/SettingsDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,15 +106,17 @@ private void _treeview_NodeSelected(object sender, TreeViewEventArgs e)
{
TitleLabel.Text = RubberduckUI.SettingsCaption_CodeInspections;
InstructionsLabel.Text = RubberduckUI.SettingsInstructions_CodeInspections;
var inspectionType = (CodeInspectionType) Enum.Parse(typeof (CodeInspectionType), e.Node.Text);
controlToActivate = new CodeInspectionSettingsControl(GetInspectionSettings(inspectionType));
var inspectionType = (CodeInspectionType)Enum.Parse(typeof(CodeInspectionType), e.Node.Text);
var settingGridViewSort = new GridViewSort<CodeInspectionSetting>(RubberduckUI.Name, true);
controlToActivate = new CodeInspectionSettingsControl(GetInspectionSettings(inspectionType), settingGridViewSort);
}

if (e.Node.Parent.Text == CodeInspectionType.LanguageOpportunities.ToString())
{
TitleLabel.Text = RubberduckUI.SettingsCaption_CodeInspections;
InstructionsLabel.Text = RubberduckUI.SettingsInstructions_CodeInspections;
controlToActivate = new CodeInspectionSettingsControl(_config.UserSettings.CodeInspectionSettings.CodeInspections.ToList());
var settingGridViewSort = new GridViewSort<CodeInspectionSetting>(RubberduckUI.Name, true);
controlToActivate = new CodeInspectionSettingsControl(_config.UserSettings.CodeInspectionSettings.CodeInspections.ToList(), settingGridViewSort);
}

ActivateControl(controlToActivate);
Expand Down

0 comments on commit 9226db6

Please sign in to comment.