using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
internal struct TheFontSize
{
public static int Huge = 30;
public static int Normal = 20;
public static int Tiny = 8;
}
public class mainForm : System.Windows.Forms.Form
{
Color currColor = Color.MistyRose;
private int currFontSize = TheFontSize.Normal;
private StatusBarPanel sbPnlPrompt = new StatusBarPanel();
private StatusBarPanel sbPnlTime = new StatusBarPanel();
private MainMenu mainMenu = new MainMenu();
private MenuItem currentCheckedItem;
private MenuItem checkedHuge;
private MenuItem checkedNormal;
private MenuItem checkedTiny;
public mainForm()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.MenuComplete += new EventHandler(StatusForm_MenuDone);
BuildMenuSystem();
BuildStatBar();
}
static void Main()
{
Application.Run(new mainForm());
}
private void FileExit_Clicked(object sender, EventArgs e)
{
Console.WriteLine("File | Exit Menu item handler");
this.Close();
}
private void FileSave_Clicked(object sender, EventArgs e)
{
Console.WriteLine("File | Save Menu item handler");
}
private void ColorItem_Clicked(object sender, EventArgs e)
{
MenuItem miClicked = (MenuItem)sender;
string color = miClicked.Text.Remove(0,1);
this.BackColor = Color.FromName(color);
currColor = this.BackColor;
}
private void PopUp_Clicked(object sender, EventArgs e)
{
currentCheckedItem.Checked = false;
MenuItem miClicked = (MenuItem)sender;
string item = miClicked.Text;
if(item == "Huge") {
currFontSize = TheFontSize.Huge;
currentCheckedItem = checkedHuge;
}else if(item == "Normal") {
currFontSize = TheFontSize.Normal;
currentCheckedItem = checkedNormal;
}else if(item == "Tiny") {
currFontSize = TheFontSize.Tiny;
currentCheckedItem = checkedTiny;
}
currentCheckedItem.Checked = true;
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString("www.rntsoft.com",
new Font("Times New Roman", (float)currFontSize),
new SolidBrush(Color.Black),
this.DisplayRectangle);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
Invalidate();
}
private void HelpAbout_Clicked(object sender, EventArgs e)
{
Console.WriteLine("The amazing final app...", "About...");
}
private void FileMenuItem_Selected(object sender, EventArgs e)
{
MenuItem miClicked = (MenuItem)sender;
string item = miClicked.Text.Remove(0,1);
if(item == "Save..."){
sbPnlPrompt.Text = "Save current settings.";
}else{
sbPnlPrompt.Text = "Terminates this app.";
}
}
private void ColorMenuItem_Selected(object sender, EventArgs e)
{
MenuItem miClicked = (MenuItem)sender;
string item = miClicked.Text.Remove(0,1);
sbPnlPrompt.Text = "Select " + item;
}
private void HelpAbout_Selected(object sender, EventArgs e)
{
sbPnlPrompt.Text = "Displays app info";
}
private void StatusForm_MenuDone(object sender, EventArgs e)
{
sbPnlPrompt.Text = "Ready";
}
private void timer1_Tick(object sender, EventArgs e)
{
DateTime t = DateTime.Now;
string s = t.ToLongTimeString() ;
sbPnlTime.Text = s ;
}
private void BuildMenuSystem()
{
MenuItem miFile = mainMenu.MenuItems.Add("&File");
miFile.MenuItems.Add(new MenuItem("&Save...", new EventHandler(this.FileSave_Clicked), Shortcut.CtrlS));
miFile.MenuItems.Add(new MenuItem("E&xit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));
miFile.MenuItems[0].Select += new EventHandler(FileMenuItem_Selected);
miFile.MenuItems[1].Select += new EventHandler(FileMenuItem_Selected);
MenuItem miColor = mainMenu.MenuItems.Add("&Background Color");
miColor.MenuItems.Add("&DarkGoldenrod", new EventHandler(ColorItem_Clicked));
miColor.MenuItems.Add("&GreenYellow", new EventHandler(ColorItem_Clicked));
for(int i = 0; i < miColor.MenuItems.Count; i++){
miColor.MenuItems[i].Select += new EventHandler(ColorMenuItem_Selected);
}
MenuItem miHelp = mainMenu.MenuItems.Add("Help");
miHelp.MenuItems.Add(new MenuItem("&About", new EventHandler(this.HelpAbout_Clicked), Shortcut.CtrlA));
miHelp.MenuItems[0].Select += new EventHandler(HelpAbout_Selected);
this.Menu = mainMenu;
ContextMenu popUpMenu = new ContextMenu();
popUpMenu.MenuItems.Add("Huge", new EventHandler(PopUp_Clicked));
popUpMenu.MenuItems.Add("Normal", new EventHandler(PopUp_Clicked));
popUpMenu.MenuItems.Add("Tiny", new EventHandler(PopUp_Clicked));
this.ContextMenu = popUpMenu;
checkedHuge = this.ContextMenu.MenuItems[0];
checkedNormal = this.ContextMenu.MenuItems[1];
checkedTiny = this.ContextMenu.MenuItems[2];
if(currFontSize == TheFontSize.Huge)
currentCheckedItem = checkedHuge;
else if(currFontSize == TheFontSize.Normal)
currentCheckedItem = checkedNormal;
else
currentCheckedItem = checkedTiny;
currentCheckedItem.Checked = true;
}
private void BuildStatBar()
{
Timer timer1 = new Timer();
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
StatusBar statusBar = new StatusBar();
statusBar.ShowPanels = true;
statusBar.Panels.AddRange((StatusBarPanel[])new StatusBarPanel[] {sbPnlPrompt, sbPnlTime});
sbPnlPrompt.BorderStyle = StatusBarPanelBorderStyle.None;
sbPnlPrompt.AutoSize = StatusBarPanelAutoSize.Spring;
sbPnlPrompt.Width = 62;
sbPnlPrompt.Text = "Ready";
sbPnlTime.Alignment = System.Windows.Forms.HorizontalAlignment.Right;
sbPnlTime.Width = 76;
try
{
Icon i = new Icon("icon1.ico");
sbPnlPrompt.Icon = i;
} catch(Exception e) {
MessageBox.Show(e.Message);
}
this.Controls.Add(statusBar);
}
}