home *** CD-ROM | disk | FTP | other *** search
/ Game Level Design / GLDesign.bin / Software / UnrealEngine2Runtime / UE2Runtime-22262001_Demo.exe / GUI / Classes / GUIVertScrollBar.uc < prev    next >
Text File  |  2003-06-30  |  3KB  |  157 lines

  1. // ====================================================================
  2. //  Class:  GUI.GUIVertScrollBar
  3.  
  4. // ====================================================================
  5.  
  6. class GUIVertScrollBar extends GUIScrollBarBase
  7.         Native;
  8.  
  9. cpptext
  10. {
  11.         void PreDraw(UCanvas* Canvas);
  12. }
  13.  
  14. var Automated GUIVertScrollZone MyScrollZone;
  15. var Automated GUIVertScrollButton MyUpButton;
  16. var Automated GUIVertScrollButton MyDownButton;
  17. var Automated GUIVertGripButton MyGripButton;
  18.  
  19.  
  20. var        float            GripTop;        // Where in the ScrollZone is the grip    - Set Natively
  21. var        float            GripHeight;        // How big is the grip - Set Natively
  22.  
  23. var        float            GrabOffset; // distance from top of button that the user started their drag. Set natively.
  24.  
  25.  
  26. function InitComponent(GUIController MyController, GUIComponent MyOwner)
  27. {
  28.     Super.InitComponent(MyController, MyOwner);
  29.  
  30.     MyScrollZone.OnScrollZoneClick = ZoneClick;
  31.     MyUpButton.OnClick = UpTickClick;
  32.     MyDownButton.OnClick = DownTickClick;
  33.     MyGripButton.OnCapturedMouseMove = GripMouseMove;
  34.     MyGripButton.OnClick = GripClick;
  35.  
  36.     ReFocus(MyList);
  37.  
  38. }
  39.  
  40. function UpdateGripPosition(float NewPos)
  41. {
  42.     MyList.MakeVisible(NewPos);
  43.     GripTop = NewPos;
  44. }
  45.  
  46. // Record location you grabbed the grip
  47. function bool GripClick(GUIComponent Sender)
  48. {
  49.     GrabOffset = Controller.MouseY - MyGripButton.ActualTop();
  50.  
  51.     return true;
  52. }
  53.  
  54. function bool GripMouseMove(float deltaX, float deltaY)
  55. {
  56.     local float NewPerc,NewTop;
  57.  
  58.     // Calculate the new Grip Top using the mouse cursor location.
  59.     NewPerc = (  Controller.MouseY - (GrabOffset + MyScrollZone.ActualTop()) )  /(MyScrollZone.ActualHeight()-GripHeight);
  60.     NewTop = FClamp(NewPerc,0.0,1.0);
  61.  
  62.     UpdateGripPosition(Newtop);
  63.  
  64.     return true;
  65. }
  66.  
  67. function ZoneClick(float Delta)
  68. {
  69.     if ( Controller.MouseY < MyGripButton.Bounds[1] )
  70.         MoveGripBy(-MyList.ItemsPerPage);
  71.     else if ( Controller.MouseY > MyGripButton.Bounds[3] )
  72.         MoveGripBy(MyList.ItemsPerPage);
  73.  
  74.     return;
  75. }
  76.  
  77. function MoveGripBy(int items)
  78. {
  79.     local int TopItem;
  80.  
  81.     TopItem = MyList.Top + items;
  82.     if (MyList.ItemCount > 0)
  83.     {
  84.         MyList.SetTopItem(TopItem);
  85.         AlignThumb();
  86.     }
  87. }
  88.  
  89. function bool UpTickClick(GUIComponent Sender)
  90. {
  91.     WheelUp();
  92.     return true;
  93. }
  94.  
  95. function bool DownTickClick(GUIComponent Sender)
  96. {
  97.     WheelDown();
  98.     return true;
  99. }
  100.  
  101. function WheelUp()
  102. {
  103.     if (!Controller.CtrlPressed)
  104.         MoveGripBy(-1);
  105.     else
  106.         MoveGripBy(-MyList.ItemsPerPage);
  107. }
  108.  
  109. function WheelDown()
  110. {
  111.     if (!Controller.CtrlPressed)
  112.         MoveGripBy(1);
  113.     else
  114.         MoveGripBy(MyList.ItemsPerPage);
  115. }
  116.  
  117. function AlignThumb()
  118. {
  119.     local float NewTop;
  120.  
  121.     if (MyList.ItemCount==0)
  122.         NewTop = 0;
  123.     else
  124.     {
  125.         NewTop = Float(MyList.Top) / Float(MyList.ItemCount-MyList.ItemsPerPage);
  126.         NewTop = FClamp(NewTop,0.0,1.0);
  127.     }
  128.  
  129.     GripTop = NewTop;
  130. }
  131.  
  132.  
  133. // NOTE:  Add graphics for no-man's land about and below the scrollzone, and the Scroll nub.
  134.  
  135. defaultproperties
  136. {
  137.     Begin Object Class=GUIVertScrollZone Name=ScrollZone
  138.     End Object
  139.  
  140.     Begin Object Class=GUIVertScrollButton Name=UpBut
  141.         UpButton=true
  142.     End Object
  143.  
  144.     Begin Object Class=GUIVertScrollButton Name=DownBut
  145.         UpButton=false
  146.     End Object
  147.     Begin Object Class=GUIVertGripButton Name=Grip
  148.     End Object
  149.  
  150.     MyScrollZone=ScrollZone
  151.     MyUpButton=UpBut
  152.     MyDownButton=DownBut
  153.     MyGripButton=Grip
  154.  
  155.     bAcceptsInput=true;
  156.     WinWidth=0.0375
  157. }