UWindow
Class UWindowVSplitter

source: e:\games\UnrealTournament\UWindow\Classes\UWindowVSplitter.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowVSplitter
Direct Known Subclasses:None

class UWindowVSplitter
extends UWindow.UWindowWindow

//============================================================================= // UWindowVSplitter - a vertical splitter component //=============================================================================
Variables
 UWindowWindow BottomClientWindow
 float MaxSplitPos
 float MinWinHeight
 float OldWinHeight
 float SplitPos
 UWindowWindow TopClientWindow
 bool bBottomGrow
 bool bSizable
 bool bSizing


Function Summary
 void BeforePaint(Canvas C, float X, float Y)
 void Created()
 void LMouseDown(float X, float Y)
 void MouseMove(float X, float Y)
 void Paint(Canvas C, float X, float Y)



Source Code


00001	//=============================================================================
00002	// UWindowVSplitter - a vertical splitter component
00003	//=============================================================================
00004	class UWindowVSplitter extends UWindowWindow;
00005	
00006	var UWindowWindow			TopClientWindow;
00007	var UWindowWindow			BottomClientWindow;
00008	var bool					bSizing;
00009	var float					SplitPos;
00010	var float					MinWinHeight;
00011	var float					MaxSplitPos;
00012	var float					OldWinHeight;
00013	var bool					bBottomGrow;
00014	var bool					bSizable;
00015	
00016	function Created() 
00017	{
00018		Super.Created();
00019		bAlwaysBehind = True;
00020		SplitPos = WinHeight / 2;
00021		MinWinHeight = 24;
00022	
00023		OldWinHeight = WinHeight;
00024	}
00025	
00026	function Paint(Canvas C, float X, float Y) 
00027	{
00028		local Texture T;
00029	
00030		T = GetLookAndFeelTexture();
00031		DrawUpBevel(C, 0, SplitPos, WinWidth, 7, T);
00032	}
00033	
00034	function BeforePaint(Canvas C, float X, float Y) 
00035	{
00036		local float NewW, NewH;
00037	
00038		// Make Top panel resize
00039		if(OldWinHeight != WinHeight && !bBottomGrow)
00040		{
00041			SplitPos = SplitPos + WinHeight - OldWinHeight;
00042		}
00043	
00044		SplitPos = FClamp(SplitPos, MinWinHeight, WinHeight - 7 - MinWinHeight);
00045		if(MaxSplitPos != 0)
00046			SplitPos = FClamp(SplitPos, 0, MaxSplitPos);
00047	
00048		NewW = WinWidth;
00049		NewH = SplitPos;
00050	
00051		if(NewW != TopClientWindow.WinWidth || NewH != TopClientWindow.WinHeight)
00052		{
00053			TopClientWindow.SetSize(NewW, NewH);
00054		}
00055	
00056		NewH = WinHeight - SplitPos - 7;
00057	
00058		if(NewW != BottomClientWindow.WinWidth || NewH != BottomClientWindow.WinHeight)
00059		{
00060			BottomClientWindow.SetSize(NewW, NewH);
00061		}
00062		BottomClientWindow.WinTop = SplitPos + 7;
00063		BottomClientWindow.WinLeft = 0;
00064	
00065		OldWinHeight = WinHeight;
00066	}
00067	
00068	function LMouseDown(float X, float Y)
00069	{
00070		Super.LMouseDown(X, Y);
00071	
00072		if(bSizable && (Y >= SplitPos) && (Y <= SplitPos + 7)) 
00073		{
00074			bSizing = True;
00075			Root.CaptureMouse();
00076		}
00077	}
00078	
00079	function MouseMove(float X, float Y)
00080	{
00081	
00082		if(bSizable && (Y >= SplitPos) && (Y <= SplitPos + 7)) 
00083			Cursor = Root.VSplitCursor;
00084		else
00085			Cursor = Root.NormalCursor;
00086	
00087		if(bSizing && bMouseDown)
00088		{
00089			SplitPos = Y;
00090		} else bSizing = False;
00091	}
00092	
00093	defaultproperties
00094	{
00095	     bSizable=True
00096	}

End Source Code