// -- FILE ------------------------------------------------------------------
// name : SettingsForm.cs
// created : Jani Giannoudis - 2008.04.25
// language : c#
// environment: .NET 2.0
// --------------------------------------------------------------------------
using System;
using System.IO;
using System.Drawing;
using System.Diagnostics;
using System.Windows.Forms;
using Itenso.Configuration;
namespace Itenso.Solutions.Community.ConfigurationWindowsFormsDemo
{
// ------------------------------------------------------------------------
enum CustomAlignment
{
Left,
Center,
Right,
} // enum CustomAlignment
// ------------------------------------------------------------------------
public partial class SettingsForm : Form
{
// ----------------------------------------------------------------------
public SettingsForm()
{
InitializeComponent();
SetupListItems( 50 );
// create settings group
this.formSettings = new FormSettings( this );
this.formSettings.SaveOnClose = false; // disable auto-save
// add settings to group
this.formSettings.Settings.Add(
new PropertySetting( "Panel.SplitterPosition", this.panelSplitter, "SplitPosition", 100 ) );
this.formSettings.Settings.Add(
new PropertySetting( "CustomAlignment", this, "Alignment", CustomAlignment.Left ) );
this.formSettings.Settings.Add(
new FieldSetting( "FormColor", this, "formColor", this.formColor ) );
this.formSettings.Settings.Add(
new FieldSetting( "FormFont", this, "formFont", this.formFont ) );
InitControls();
} // SettingsForm
// ----------------------------------------------------------------------
public string HostName
{
get { return hostEdit.Text; }
set { hostEdit.Text = value; }
} // HostName
// ----------------------------------------------------------------------
internal CustomAlignment Alignment
{
get
{
if ( this.alignmentLeftOption.Checked )
{
return CustomAlignment.Left;
}
if ( this.alignmentCenterOption.Checked )
{
return CustomAlignment.Center;
}
if ( this.alignmentRightOption.Checked )
{
return CustomAlignment.Right;
}
return CustomAlignment.Left;
}
set
{
switch ( value )
{
case CustomAlignment.Left:
this.alignmentLeftOption.Checked = true;
break;
case CustomAlignment.Center:
this.alignmentCenterOption.Checked = true;
break;
case CustomAlignment.Right:
this.alignmentRightOption.Checked = true;
break;
}
}
} // Alignment
// ----------------------------------------------------------------------
protected override void OnLoad( EventArgs e )
{
base.OnLoad( e );
UpdateControls();
} // OnLoad
// ----------------------------------------------------------------------
private void SetupListItems( int count )
{
this.itemsList.BeginUpdate();
for ( int i = 0; i < count; i++ )
{
this.itemsList.Items.Add( "Item " + ( i + 1 ) );
}
this.itemsList.SelectedIndex = 0;
this.itemsList.EndUpdate();
} // SetupListItems
// ----------------------------------------------------------------------
private void InitControls()
{
this.userConfigNameLabel.Text = ApplicationSettings.UserConfigurationFilePath;
this.formToolTip.SetToolTip( this.userConfigNameLabel, ApplicationSettings.UserConfigurationFilePath );
UpdateControls();
} // InitControls
// ----------------------------------------------------------------------
private void UpdateControls()
{
this.windowLocationLabel.Text = string.Concat( Left.ToString(), ", ", Top.ToString() );
this.windowSizeLabel.Text = string.Concat( Width.ToString(), " x ", Height.ToString() );
this.windowStateLabel.Text = string.Concat( WindowState.ToString() );
this.selectedItemLabel.Text = this.itemsList.SelectedItem != null ? this.itemsList.SelectedItem.ToString() : "-";
this.spltterPositionText.Text = this.panelSplitter.SplitPosition.ToString();
this.colorText.Text = this.formColor.ToString();
this.colorText.BackColor = this.formColor;
this.formToolTip.SetToolTip( this.colorText, this.formColor.ToString() );
this.fontText.Text = this.formFont.ToString();
this.fontText.Font = this.formFont;
this.formToolTip.SetToolTip( this.fontText, this.formFont.ToString() );
} // UpdateControls
// ----------------------------------------------------------------------
protected override void OnLocationChanged( EventArgs e )
{
base.OnLocationChanged( e );
UpdateControls();
} // OnLocationChanged
// ----------------------------------------------------------------------
protected override void OnSizeChanged( EventArgs e )
{
base.OnSizeChanged( e );
UpdateControls();
} // OnSizeChanged
// ----------------------------------------------------------------------
private void ItemChanged( object sender, EventArgs e )
{
UpdateControls();
} // ItemChanged
// ----------------------------------------------------------------------
private void SplitterMoving( object sender, SplitterEventArgs e )
{
UpdateControls();
} // SplitterMoving
// ----------------------------------------------------------------------
private void ChangeColor( object sender, EventArgs e )
{
this.colorSetupDialog.Color = this.formColor;
if ( this.colorSetupDialog.ShowDialog() == DialogResult.OK )
{
this.formColor = this.colorSetupDialog.Color;
UpdateControls();
}
} // ChangeColor
// ----------------------------------------------------------------------
private void ChangeFont( object sender, EventArgs e )
{
this.fontSetupDialog.Font = this.formFont;
if ( this.fontSetupDialog.ShowDialog() == DialogResult.OK )
{
this.formFont = this.fontSetupDialog.Font;
UpdateControls();
}
} // ChangeFont
// ----------------------------------------------------------------------
private void ResetSettings( object sender, EventArgs e )
{
this.formSettings.Reset();
UpdateControls();
} // ResetSettings
// ----------------------------------------------------------------------
private void ReloadSettings( object sender, EventArgs e )
{
this.formSettings.Reload();
UpdateControls();
} // ReloadSettings
// ----------------------------------------------------------------------
private void SaveSettings( object sender, EventArgs e )
{
this.formSettings.Save();
UpdateControls();
} // SaveSettings
// ----------------------------------------------------------------------
private void OpenUserConfig( object sender, EventArgs e )
{
string fileName = this.userConfigNameLabel.Text;
if ( !File.Exists( fileName ) )
{
MessageBox.Show( "File not available:\n\n" + fileName, Text );
return;
}
Process.Start( fileName );
} // OpenUserConfig
// ----------------------------------------------------------------------
private void CollectedSettings( object sender, EventArgs e )
{
new CollectedSettingsForm().ShowDialog();
} // CollectedSettings
// ----------------------------------------------------------------------
private void GridViewSettings( object sender, EventArgs e )
{
new DataGridViewSettingsForm().ShowDialog();
} // GridViewSettings
// ----------------------------------------------------------------------
private void Close( object sender, EventArgs e )
{
if ( this.saveOnCloseOption.Checked )
{
this.formSettings.Save();
}
Close();
} // Close
// ----------------------------------------------------------------------
// members
private readonly FormSettings formSettings;
private Color formColor = Color.FromArgb( 200, 255, 200 );
private Font formFont = new Font( FontFamily.GenericMonospace, 8 );
} // class SettingsForm
} // namespace Itenso.Solutions.Community.ConfigurationWindowsFormsDemo
// -- EOF -------------------------------------------------------------------