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

  1. // ====================================================================
  2. //  Class:  GUI.GUIVertList
  3. //  Parent: GUI.GUIListBase
  4. //
  5. //  <Enter a description here>
  6. // ====================================================================
  7.  
  8. class GUIVertList extends GUIListBase
  9.         Native;
  10.  
  11. cpptext
  12. {
  13.     void PreDraw(UCanvas* Canvas);    
  14.     void Draw(UCanvas* Canvas);    
  15. }
  16.         
  17.         
  18. function InitComponent(GUIController MyController, GUIComponent MyOwner)
  19. {
  20.     Super.Initcomponent(MyController, MyOwner);
  21.     OnKeyType=InternalOnKeyType;
  22.     OnKeyEvent=InternalOnKeyEvent;
  23.     OnClick=InternalOnClick;
  24.     OnXControllerEvent=InternalOnXControllerEvent;
  25.  
  26. }    
  27.         
  28. function bool InternalOnClick(GUIComponent Sender)
  29. {
  30.     local int NewIndex, row;
  31.  
  32.     if ( ( !IsInClientBounds() ) || (ItemsPerPage==0) )
  33.         return false;
  34.         
  35.     // Get the Row..
  36.     
  37.     row = Controller.MouseY - ClientBounds[1];
  38.     NewIndex = Top+ (row / ItemHeight);
  39.     
  40.     if (NewIndex >= ItemCount)
  41.         return false;
  42.         
  43.     SetIndex(NewIndex);
  44.     return true;
  45. }
  46.  
  47. function bool InternalOnKeyType(out byte Key, optional string Unicode)
  48. {
  49.     // Add code to jump to next line with Char    
  50.         
  51.     return true;
  52. }
  53.  
  54. function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
  55. {
  56.  
  57.     if (ItemsPerPage==0) return false;
  58.  
  59.     
  60.     if ( (Key==0x26 || Key==0x68) && (State==1) )    // Up Arrow
  61.     {
  62.         Up();
  63.         return true;
  64.     }
  65.     
  66.     if ( (Key==0x28 || Key==0x62) && (State==1) ) // Down Arrow
  67.     {
  68.         Down();
  69.         return true;
  70.     }
  71.     
  72.     if ( (Key==0x24 || Key==0x67) && (State==1) ) // Home
  73.     {
  74.         Home();
  75.         return true;
  76.     }
  77.     
  78.     if ( (Key==0x23 || Key==0x61) && (State==1) ) // End
  79.     {
  80.         End();
  81.         return true;
  82.     }
  83.     
  84.     if ( (Key==0x21 || Key==0x69) && (State==1) ) // PgUp
  85.     {
  86.         PgUp();
  87.         return true;
  88.     }
  89.     
  90.     if ( (Key==0x22 || Key==0x63) && (State==1) ) // PgDn
  91.     {
  92.         PgDn();
  93.         return true;
  94.     }
  95.     
  96.     if ( (key==0xEC) && (State==3) )
  97.     {
  98.     
  99.         WheelUp();
  100.         return true;
  101.     }
  102.     
  103.     if ( (key==0xED) && (State==3) )
  104.     {
  105.     
  106.         WheelDown();
  107.         return true;
  108.     }
  109.     
  110.     
  111.     return false;
  112. }
  113.  
  114. function bool InternalOnXControllerEvent(byte Id, eXControllerCodes iCode)
  115. {
  116.  
  117.     if (ItemsPerPage==0) return false;
  118.  
  119.     if (iCode==XC_Up || iCode==XC_PadUp)
  120.     {
  121.         Up();
  122.         return true;
  123.     }
  124.     else if (iCode==XC_Down || iCode==XC_PadDown)
  125.     {
  126.         Down();
  127.         return true;
  128.     }
  129.  
  130.     else if (iCode==XC_Black)
  131.     {
  132.         Home();
  133.         return true;
  134.     }
  135.  
  136.     else if (iCode==XC_White)
  137.     {
  138.         End();
  139.         return true;
  140.     }
  141.  
  142.     else if (iCode==XC_X)
  143.     {
  144.         PgDn();
  145.         return true;
  146.     }
  147.  
  148.     else if (iCode==XC_Y)
  149.     {
  150.         PgUp();
  151.         return true;
  152.     }
  153.  
  154.     else if (iCode==XC_Start)
  155.     {
  156.         OnClick(self);
  157.         return true;
  158.     }
  159.     return false;
  160. }
  161.  
  162.  
  163. function WheelUp()
  164. {
  165.     if (MyScrollBar!=None)
  166.         GUIVertScrollBar(MyScrollBar).WheelUp();
  167.     else
  168.     {
  169.         if (!Controller.CtrlPressed)
  170.             Up();
  171.         else
  172.             PgUp();
  173.     }
  174. }
  175.  
  176. function WheelDown()
  177. {
  178.     if (MyScrollBar!=None)
  179.         GUIVertScrollBar(MyScrollBar).WheelDown();
  180.     else
  181.     {
  182.         if (!Controller.CtrlPressed)
  183.             Down();
  184.         else
  185.             PgDn();
  186.     }
  187. }
  188.     
  189.  
  190. function Up()
  191. {
  192.     if ( (ItemCount<2) || (Index==0) ) return;
  193.  
  194.     Index = max(0,Index-1);
  195.  
  196.     if ( (Index<Top) || (Index>Top+ItemsPerPage) )
  197.     {
  198.         Top = Index;
  199.         MyScrollBar.AlignThumb();
  200.     }
  201.     
  202.     OnChange(self);
  203. }
  204.  
  205. function Down()
  206. {
  207.     if ( (ItemCount<2) || (Index==ItemCount-1) )    return;
  208.     
  209.     Index = min(Index+1,ItemCount-1);
  210.     if (Index<Top)
  211.     {
  212.         Top = Index;
  213.         MyScrollBar.AlignThumb();
  214.     }
  215.     else if (Index>=Top+ItemsPerPage)
  216.     {
  217.         Top = Index-ItemsPerPage+1;
  218.         MyScrollBar.AlignThumb();
  219.     }
  220.  
  221.     OnChange(self);
  222.     
  223. }
  224.     
  225. function Home()
  226. {
  227.     if (ItemCount<2)    return;    
  228.  
  229.     SetIndex(0);
  230.     Top = 0;
  231.     MyScrollBar.AlignThumb();
  232.     
  233. }
  234.  
  235. function End()
  236. {
  237.     if (ItemCount<2)    return;    
  238.  
  239.     Top = ItemCount - ItemsPerPage;
  240.     if (Top<0)
  241.         Top = 0;
  242.         
  243.     SetIndex(ItemCount-1);
  244.     MyScrollBar.AlignThumb();
  245. }    
  246.  
  247. function PgUp()
  248. {
  249.  
  250.     if (ItemCount<2)    return;
  251.  
  252.     Index -= ItemsPerPage;
  253.  
  254.     // Adjust to bounds
  255.     if (Index < 0)
  256.         Index = 0;
  257.  
  258.     // If new index 
  259.     if (Top + ItemsPerPage <= Index)        // If index is forward but not visible, jump to it
  260.         Top = Index;
  261.     else if (Index + ItemsPerPage < Top)    // Item is way too far
  262.         Top = Index;
  263.     else if (Index < Top)    // Item is 1 page or less away
  264.         SetTopItem(Top - ItemsPerPage);
  265.  
  266.     SetIndex(Index);
  267.     MyScrollBar.AlignThumb();
  268. }
  269.  
  270. function PgDn()
  271. {
  272.  
  273.     if (ItemCount<2)    return;
  274.  
  275.     // Select item 1 page away from current selection
  276.     Index += ItemsPerPage;
  277.  
  278.     // Adjust to bounds
  279.     if (Index >= ItemCount)
  280.         Index = ItemCount-1;
  281.  
  282.     
  283.     if (Index < Top)  // If item is still before Top Item, go to it
  284.         Top = Index;
  285.     else if (Index - Top - ItemsPerPage >= ItemsPerPage)    // Too far away
  286.         SetTopItem(Index);
  287.     else if (Index - Top >= ItemsPerPage) // Just 1 page away
  288.         SetTopItem(Top + ItemsPerPage);
  289.  
  290.     SetIndex(Index);
  291.     MyScrollBar.AlignThumb();
  292. }    
  293.  
  294.         
  295.  
  296. defaultproperties
  297. {
  298. }
  299.