UWindow
Class UWindowMenuBar

source: e:\games\UnrealTournament\UWindow\Classes\UWindowMenuBar.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowDialogControl
            |
            +--UWindow.UWindowListControl
               |
               +--UWindow.UWindowMenuBar
Direct Known Subclasses:UMenuMenuBar

class UWindowMenuBar
extends UWindow.UWindowListControl

//============================================================================= // UWindowMenuBar - A menu bar //=============================================================================
Variables
 UWindowMenuBarItem Over
 UWindowMenuBarItem Selected
 int Spacing
 bool bAltDown


Function Summary
 UWindowMenuBarItem AddHelpItem(string Caption)
 UWindowMenuBarItem AddItem(string Caption)
 void Close(optional bool)
 void CloseUp()
 void Created()
 void DrawItem(Canvas C, UWindowList Item, float X, float Y, float W, float H)
 void DrawMenuBar(Canvas C)
 UWindowMenuBar GetMenuBar()
 bool HotKeyDown(int Key, float X, float Y)
 bool HotKeyUp(int Key, float X, float Y)
 void KeyDown(int Key, float X, float Y)
 void LMouseDown(float X, float Y)
 void MenuCmd(int Menu, int Item)
 void MouseLeave()
 void MouseMove(float X, float Y)
 void Paint(Canvas C, float MouseX, float MouseY)
 void ResolutionChanged(float W, float H)
 void Select(UWindowMenuBarItem I)



Source Code


00001	//=============================================================================
00002	// UWindowMenuBar - A menu bar
00003	//=============================================================================
00004	class UWindowMenuBar extends UWindowListControl;
00005	
00006	var UWindowMenuBarItem		Selected;
00007	var UWindowMenuBarItem		Over;
00008	var bool					bAltDown;
00009	var int						Spacing;
00010	
00011	function Created()
00012	{
00013		ListClass = class'UWindowMenuBarItem';
00014		SetAcceptsHotKeys(True);
00015		Super.Created();
00016		Spacing = 10;
00017	}
00018	
00019	function UWindowMenuBarItem AddHelpItem(string Caption)
00020	{
00021		Local UWindowMenuBarItem I;
00022	
00023		I = AddItem(Caption);
00024		I.SetHelp(True);
00025	
00026		return I;
00027	}
00028	
00029	function UWindowMenuBarItem AddItem(string Caption)
00030	{
00031		local UWindowMenuBarItem I;
00032	
00033		I = UWindowMenuBarItem(Items.Append(class'UWindowMenuBarItem'));
00034		I.Owner = Self;
00035		I.SetCaption(Caption);
00036		
00037		return I;
00038	}
00039	
00040	function ResolutionChanged(float W, float H)
00041	{
00042		local UWindowMenuBarItem I;
00043	
00044		for( I = UWindowMenuBarItem(Items.Next);I != None; I = UWindowMenuBarItem(I.Next) )
00045			if(I.Menu != None)
00046				I.Menu.ResolutionChanged(W, H);
00047	
00048		Super.ResolutionChanged(W, H);
00049	}
00050	
00051	function Paint(Canvas C, float MouseX, float MouseY)
00052	{
00053		local float X;
00054		local float W, H;
00055		local UWindowMenuBarItem I;
00056	
00057		DrawMenuBar(C);
00058	
00059		for( I = UWindowMenuBarItem(Items.Next);I != None; I = UWindowMenuBarItem(I.Next) )
00060		{
00061			C.Font = Root.Fonts[F_Normal];
00062			TextSize( C, RemoveAmpersand(I.Caption), W, H );
00063	
00064			if(I.bHelp)
00065			{
00066				DrawItem(C, I, (WinWidth - (W + Spacing)), 1, W + Spacing, 14);
00067			}
00068			else
00069			{
00070				DrawItem(C, I, X, 1, W + Spacing, 14);
00071				X = X + W + Spacing;
00072			}		
00073		}
00074	}
00075	
00076	function MouseMove(float X, float Y)
00077	{
00078		local UWindowMenuBarItem I;
00079		Super.MouseMove(X, Y);
00080	
00081		Over = None;
00082	
00083		for( I = UWindowMenuBarItem(Items.Next);I != None; I = UWindowMenuBarItem(I.Next) )
00084		{
00085			if(X >= I.ItemLeft && X <= I.ItemLeft + I.ItemWidth)
00086			{
00087				if(Selected != None) {
00088					if(Selected != I)
00089					{
00090						Selected.DeSelect();
00091						Selected = I;
00092						Selected.Select();
00093						Select(Selected);
00094					}
00095				} else {
00096					Over = I;
00097				}
00098			}
00099		}
00100	}
00101	
00102	function MouseLeave()
00103	{
00104		Super.MouseLeave();
00105		Over=None;
00106	}
00107	
00108	function Select(UWindowMenuBarItem I)
00109	{
00110	}
00111	
00112	function LMouseDown(float X, float Y)
00113	{
00114		local UWindowMenuBarItem I;
00115	
00116		for( I = UWindowMenuBarItem(Items.Next);I != None; I = UWindowMenuBarItem(I.Next) )
00117		{
00118			if(X >= I.ItemLeft && X <= I.ItemLeft + I.ItemWidth)
00119			{
00120				//Log("Click "$I.Caption);
00121	
00122				if(Selected != None) {
00123					Selected.DeSelect();
00124				}
00125	
00126				if(Selected == I)
00127				{
00128					Selected = None;
00129					Over = I;
00130				}
00131				else
00132				{
00133					Selected = I;
00134					Selected.Select();
00135				}
00136	
00137				Select(Selected);
00138				return;
00139			}
00140		}
00141	
00142		if(Selected != None)
00143		{
00144			Selected.DeSelect();
00145		}
00146	
00147		Selected = None;
00148		Select(Selected);
00149	}
00150	
00151	function DrawItem(Canvas C, UWindowList Item, float X, float Y, float W, float H)
00152	{
00153		local string Text;
00154		local string Underline;
00155	
00156	
00157		C.DrawColor.R = 255;
00158		C.DrawColor.G = 255;
00159		C.DrawColor.B = 255;
00160		
00161		UWindowMenuBarItem(Item).ItemLeft = X;
00162		UWindowMenuBarItem(Item).ItemWidth = W;
00163	
00164		LookAndFeel.Menu_DrawMenuBarItem(Self, UWindowMenuBarItem(Item), X, Y, W, H, C);
00165	}
00166	
00167	function DrawMenuBar(Canvas C)
00168	{
00169		DrawStretchedTexture( C, 0, 0, WinWidth, 16, Texture'MenuBar' );
00170	}
00171	
00172	function CloseUp()
00173	{
00174		if(Selected != None) 
00175		{
00176			Selected.DeSelect();
00177			Selected = None;
00178		}
00179	}
00180	
00181	function Close(optional bool bByParent)
00182	{
00183		Root.Console.CloseUWindow();
00184	}
00185	
00186	function UWindowMenuBar GetMenuBar()
00187	{
00188		return Self;
00189	}
00190	
00191	
00192	function bool HotKeyDown(int Key, float X, float Y)
00193	{
00194		local UWindowMenuBarItem I;
00195	
00196		if(Key == 0x12)
00197			bAltDown = True;
00198	
00199		if(bAltDown)
00200		{
00201			// Check for hotkeys in each menu item
00202			for( I = UWindowMenuBarItem(Items.Next);I != None; I = UWindowMenuBarItem(I.Next) )
00203			{
00204				if(Key == I.HotKey) 
00205				{
00206					if(Selected != None)
00207						Selected.DeSelect();
00208					Selected = I;
00209					Selected.Select();
00210					Select(Selected);
00211					bAltDown = False;
00212					return True;
00213				}
00214			}
00215		}		
00216		return False;
00217	}
00218	
00219	function bool HotKeyUp(int Key, float X, float Y)
00220	{
00221		if(Key == 0x12)
00222			bAltDown = False;
00223	
00224		return False;
00225	}
00226	
00227	function KeyDown(int Key, float X, float Y)
00228	{
00229		local UWindowMenuBarItem I;
00230	
00231		switch(Key)
00232		{
00233		case 0x25: // Left
00234			I = UWindowMenuBarItem(Selected.Prev);
00235			if(I==None || I==Items)
00236				I = UWindowMenuBarItem(Items.Last);
00237	
00238			if(Selected != None)
00239				Selected.DeSelect();	
00240	
00241			Selected = I;
00242			Selected.Select();
00243	
00244			Select(Selected);
00245	
00246			break;
00247		case 0x27: // Right
00248			I = UWindowMenuBarItem(Selected.Next);
00249			if(I==None)
00250				I = UWindowMenuBarItem(Items.Next);
00251	
00252			if(Selected != None)
00253				Selected.DeSelect();
00254			
00255	
00256			Selected = I;
00257			Selected.Select();
00258	
00259			Select(Selected);
00260			
00261			break;
00262		}
00263	}
00264	
00265	function MenuCmd(int Menu, int Item)
00266	{
00267		local UWindowMenuBarItem I;
00268		local int j;
00269	
00270		j=0;
00271		for(I = UWindowMenuBarItem(Items.Next); I != None; I = UWindowMenuBarItem(I.Next))
00272		{
00273			if(j == Menu && I.Menu != None)
00274			{
00275				if(Selected != None)
00276					Selected.DeSelect();
00277				Selected = I;
00278				Selected.Select();
00279				Select(Selected);
00280				I.Menu.MenuCmd(Item);
00281				return;
00282			}
00283			j++;
00284		}	
00285	}
00286	
00287	defaultproperties
00288	{
00289	}

End Source Code