Core.Object | +--UWindow.UWindowBase | +--UWindow.UWindowWindow | +--UWindow.UWindowVSplitter
UWindowWindow
BottomClientWindow
float
MaxSplitPos
MinWinHeight
OldWinHeight
SplitPos
TopClientWindow
bool
bBottomGrow
bSizable
bSizing
void
BeforePaint(Canvas C, float X, float Y)
Created()
LMouseDown(float X, float Y)
MouseMove(float X, float Y)
Paint(Canvas C, float X, float Y)
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 }