#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

138 lines
5.9 KiB

// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace ICSharpCode.CodeCoverage
{
public class CodeCoverageOptionsPanel : AbstractOptionPanel
{
static readonly string foregroundCustomColourButtonName = "foregroundCustomColourButton";
static readonly string backgroundCustomColourButtonName = "backgroundCustomColourButton";
static readonly string foregroundColourComboBoxName = "foregroundColorPickerComboBox";
static readonly string backgroundColourComboBoxName = "backgroundColorPickerComboBox";
static readonly string displayItemsListBoxName = "displayItemsListBox";
static readonly string sampleTextLabelName = "sampleTextLabel";
static readonly string browseButtonName = "browseButton";
static readonly string commandTextBoxName = "commandTextBox";
ColorPickerComboBox foregroundColorPickerComboBox;
ColorPickerComboBox backgroundColorPickerComboBox;
ListBox displayItemsListBox;
Label sampleTextLabel;
TextBox commandTextBox;
public override void LoadPanelContents()
{
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("ICSharpCode.CodeCoverage.Resources.CodeCoverageOptionsPanel.xfrm"));
ControlDictionary[foregroundCustomColourButtonName].Click += new EventHandler(ForegroundCustomColourButtonClick);
ControlDictionary[backgroundCustomColourButtonName].Click += new EventHandler(BackgroundCustomColourButtonClick);
ControlDictionary[browseButtonName].Click += new EventHandler(BrowseButtonClick);
foregroundColorPickerComboBox = (ColorPickerComboBox)ControlDictionary[foregroundColourComboBoxName];
foregroundColorPickerComboBox.SelectedIndexChanged += ForegroundColorPickerComboBoxSelectedIndexChanged;
backgroundColorPickerComboBox = (ColorPickerComboBox)ControlDictionary[backgroundColourComboBoxName];
backgroundColorPickerComboBox.SelectedIndexChanged += BackgroundColorPickerComboBoxSelectedIndexChanged;
sampleTextLabel = (Label)ControlDictionary[sampleTextLabelName];
commandTextBox = (TextBox)ControlDictionary[commandTextBoxName];
commandTextBox.Text = CodeCoverageOptions.NCoverFileName;
displayItemsListBox = (ListBox)ControlDictionary[displayItemsListBoxName];
displayItemsListBox.Items.Add(new CodeCoverageDisplayItem(StringParser.Parse("${res:ICSharpCode.CodeCoverage.CodeCovered}"), CodeCoverageOptions.VisitedColorProperty, CodeCoverageOptions.VisitedColor, CodeCoverageOptions.VisitedForeColorProperty, CodeCoverageOptions.VisitedForeColor));
displayItemsListBox.Items.Add(new CodeCoverageDisplayItem(StringParser.Parse("${res:ICSharpCode.CodeCoverage.CodeNotCovered}"), CodeCoverageOptions.NotVisitedColorProperty, CodeCoverageOptions.NotVisitedColor, CodeCoverageOptions.NotVisitedForeColorProperty, CodeCoverageOptions.NotVisitedForeColor));
displayItemsListBox.SelectedIndexChanged += DisplayItemsListBoxSelectedIndexChanged;
displayItemsListBox.SelectedIndex = 0;
}
public override bool StorePanelContents()
{
bool codeCoverageColorsChanged = false;
foreach (CodeCoverageDisplayItem item in displayItemsListBox.Items) {
CodeCoverageOptions.Properties.Set<Color>(item.ForeColorPropertyName, item.ForeColor);
CodeCoverageOptions.Properties.Set<Color>(item.BackColorPropertyName, item.BackColor);
if (item.HasChanged) {
codeCoverageColorsChanged = true;
}
}
if (codeCoverageColorsChanged) {
CodeCoverageService.RefreshCodeCoverageHighlights();
}
CodeCoverageOptions.NCoverFileName = commandTextBox.Text;
return true;
}
void ForegroundCustomColourButtonClick(object sender, EventArgs e)
{
SelectCustomColour(foregroundColorPickerComboBox);
}
void BackgroundCustomColourButtonClick(object sender, EventArgs e)
{
SelectCustomColour(backgroundColorPickerComboBox);
}
void SelectCustomColour(ColorPickerComboBox comboBox)
{
using (SharpDevelopColorDialog colorDialog = new SharpDevelopColorDialog()) {
colorDialog.FullOpen = true;
colorDialog.Color = comboBox.SelectedColor;
if (colorDialog.ShowDialog() == DialogResult.OK) {
comboBox.SelectedColor = colorDialog.Color;
}
}
}
void DisplayItemsListBoxSelectedIndexChanged(object sender, EventArgs e)
{
CodeCoverageDisplayItem item = (CodeCoverageDisplayItem)displayItemsListBox.SelectedItem;
sampleTextLabel.BackColor = item.BackColor;
sampleTextLabel.ForeColor = item.ForeColor;
foregroundColorPickerComboBox.SelectedColor = item.ForeColor;
backgroundColorPickerComboBox.SelectedColor = item.BackColor;
}
void ForegroundColorPickerComboBoxSelectedIndexChanged(object sender, EventArgs e)
{
CodeCoverageDisplayItem item = (CodeCoverageDisplayItem)displayItemsListBox.SelectedItem;
sampleTextLabel.ForeColor = foregroundColorPickerComboBox.SelectedColor;
item.ForeColor = foregroundColorPickerComboBox.SelectedColor;
}
void BackgroundColorPickerComboBoxSelectedIndexChanged(object sender, EventArgs e)
{
CodeCoverageDisplayItem item = (CodeCoverageDisplayItem)displayItemsListBox.SelectedItem;
sampleTextLabel.BackColor = backgroundColorPickerComboBox.SelectedColor;
item.BackColor = backgroundColorPickerComboBox.SelectedColor;
}
void BrowseButtonClick(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog()) {
openFileDialog.CheckFileExists = true;
openFileDialog.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.ExecutableFiles}|*.exe|${res:SharpDevelop.FileFilter.AllFiles}|*.*");
if (openFileDialog.ShowDialog() == DialogResult.OK) {
ControlDictionary[commandTextBoxName].Text = openFileDialog.FileName;
}
}
}
}
}