// package Ġcom . ref ined mods . ref ined storage . screen . grid Ċ // Ċ // import Ġcom . google . common . collect . Lists Ċ // import Ġcom . moj ang . bl aze 3 d . systems . Render System Ċ // import Ġcom . ref ined mods . ref ined storage . RS Ċ // import Ġcom . ref ined mods . ref ined storage . api . network . grid . Grid Type Ċ // import Ġcom . ref ined mods . ref ined storage . api . network . grid . IG rid Ċ // import Ġcom . ref ined mods . ref ined storage . api . network . grid . handler . I Item Grid Handler Ċ // import Ġcom . ref ined mods . ref ined storage . container . Grid Container Ċ // import Ġcom . ref ined mods . ref ined storage . screen . Base Screen Ċ // import Ġcom . ref ined mods . ref ined storage . screen . grid . sorting .* Ċ // import Ġcom . ref ined mods . ref ined storage . screen . grid . stack . IG rid Stack Ċ // import Ġcom . ref ined mods . ref ined storage . screen . grid . view . IG rid View Ċ // import Ġcom . ref ined mods . ref ined storage . gui . widget . Checkbox Widget Ċ // import Ġcom . ref ined mods . ref ined storage . gui . widget . Scrollbar Widget Ċ // import Ġcom . ref ined mods . ref ined storage . screen . widget . side button .* Ċ // import Ġcom . ref ined mods . ref ined storage . tile . data . Tile DataManager Ċ // import Ġcom . ref ined mods . ref ined storage . util . Render Utils Ċ // import Ġnet . minecraft . client . util . math . Matrix Stack Ċ // import Ġnet . minecraft . entity . player . Player Inventory Ċ // import Ġnet . minecraft . item . ItemStack Ċ // import Ġnet . minecraft . sound . Sound Events Ċ // import Ġnet . minecraft . text . Text Ċ // import Ġorg . lwjgl . glfw . GLFW Ċ // import Ġjava . util .* Ċ // Ċ // class ĠGrid Screen ( container : ĠGrid Container , Ġval Ġgrid : ĠI Grid ?, Ġinventory : ĠPlayer Inventory ?, Ġtitle : ĠText ) Ġ: ĠBase Screen < Grid Container >( container , Ġ 2 2 7 , Ġ 0 , Ġinventory , Ġtitle ), ĠIS creen Info Provider Ġ{ Ċ // ĠĠĠ Ġvar Ġview : ĠI GridView Ċ // ĠĠĠ Ġvar Ġsearch Field : ĠSearch Widget ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // ĠĠĠ Ġprivate Ġvar Ġexact Pattern : ĠCheckbox Widget ? Ġ= Ġnull Ċ // ĠĠĠ Ġprivate Ġvar Ġprocessing Pattern : ĠCheckbox Widget ? Ġ= Ġnull Ċ // ĠĠĠ Ġprivate Ġvar Ġscrollbar : ĠScroll bar Widget ? Ġ= Ġnull Ċ // ĠĠĠ Ġprivate Ġval Ġtabs : ĠTab List Widget Ċ // ĠĠĠ Ġprivate Ġvar Ġwas Connected : ĠBoolean Ċ // ĠĠĠ Ġprivate Ġvar Ġdo Sort Ġ= Ġfalse Ċ // ĠĠĠ Ġvar Ġslot Number Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġon Pre Init () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . on Pre Init () Ċ // ĠĠĠĠĠĠĠ Ġdo Sort Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġthis . y Size Ġ= Ġtop Height Ġ+ Ġbottom Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġon Post Init ( x : ĠInt , Ġy : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġthis . container . init Slots () Ċ // ĠĠĠĠĠĠĠ Ġtabs . init ( x Size Ġ- Ġ 3 2 ) Ċ // ĠĠĠĠĠĠĠ Ġscrollbar Ġ= ĠScroll bar Widget ( this , Ġ 1 7 4 , Ġtop Height , Ġ 1 2 , Ġvisible Rows Ġ* Ġ 1 8 Ġ- Ġ 2 ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( grid Ġis ĠGrid Network Node Ġ|| Ġgrid Ġis ĠPort able Grid Tile ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġadd Side Button ( Red stone Mode Side Button ( this , Ġif Ġ( grid Ġis ĠGrid Network Node ) ĠGrid Tile . RED ST ONE _ MODE Ġelse ĠPort able Grid Tile . RED ST ONE _ MODE )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġsx Ġ= Ġx Ġ+ Ġ 8 0 Ġ+ Ġ 1 Ċ // ĠĠĠĠĠĠĠ Ġval Ġsy Ġ= Ġy Ġ+ Ġ 6 Ġ+ Ġ 1 Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( search Field Ġ== Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field Ġ= ĠSearch Widget ( font , Ġsx , Ġsy , Ġ 8 8 Ġ- Ġ 6 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field . set Responder Ġ{ Ġvalue Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field !!. update J ei () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . sort () Ġ// ĠUse Ġgetter Ġsince Ġthis Ġview Ġcan Ġbe Ġreplaced . Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field !!. set Mode ( grid !!. search Box Mode ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field !!. x Ġ= Ġsx Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field !!. y Ġ= Ġsy Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġadd Button ( search Field ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( grid !!. view Type Ġ!= Ġ- 1 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġadd Side Button ( GridView Type Side Button ( this , Ġgrid )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġadd Side Button ( Grid Sorting Direction Side Button ( this , Ġgrid )) Ċ // ĠĠĠĠĠĠĠ Ġadd Side Button ( Grid Sorting Type Side Button ( this , Ġgrid )) Ċ // ĠĠĠĠĠĠĠ Ġadd Side Button ( Grid Search Box Mode Side Button ( this )) Ċ // ĠĠĠĠĠĠĠ Ġadd Side Button ( Grid Size Side Button ( this , Ġ{ Ġgrid . size Ġ}) Ġ{ Ġsize : ĠInt ? Ġ-> Ġgrid . on Size Changed ( size !! ) Ġ}) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( grid . grid Type Ġ=== ĠGrid Type . PATTERN ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprocessing Pattern Ġ= Ġadd CheckBox ( x Ġ+ Ġ 7 , Ġy Ġ+ Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ġ+ Ġ 6 0 , ĠTranslation Text Component (" misc . ref ined storage . processing "), ĠGrid Tile . PROCESS ING _ PATTERN . value ) Ġ{ Ġbtn : ĠCheckbox Button ? Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe build Ġthe Ġinventory Ġslots Ġbefore Ġthe Ġslot Ġchange Ġpacket Ġar rives . Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Tile . PROCESS ING _ PATTERN . setValue ( false , Ġprocessing Pattern . isChecked ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( grid Ġas ĠGrid Network Node ?) !!. clear Matrix () Ġ// ĠThe Ġserver Ġdoes Ġthis Ġbut Ġlet 's Ġdo Ġit Ġearlier Ġso Ġthe Ġclient Ġdoesn 't Ġnotice . Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . container . init Slots () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTile DataManager . setParameter ( Grid Tile . PROCESS ING _ PATTERN , Ġprocessing Pattern . isChecked ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! processing Pattern . isChecked ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexact Pattern Ġ= Ġadd CheckBox ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessing Pattern . x Ġ+ Ġprocessing Pattern . getWidth () Ġ+ Ġ 5 , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+ Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ġ+ Ġ 6 0 , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTranslation Text Component (" misc . ref ined storage . exact "), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Tile . EX ACT _ PATTERN . value Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġbtn : ĠCheckbox Button ? Ġ-> ĠTile DataManager . setParameter ( Grid Tile . EX ACT _ PATTERN , Ġexact Pattern . isChecked ()) Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġadd Side Button ( Type Side Button ( this , ĠGrid Tile . PROCESS ING _ TYPE )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġupdate Scrollbar () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġtick ( x : ĠInt , Ġy : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( was Connected Ġ!= Ġgrid !!. is Grid Active ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwas Connected Ġ= Ġgrid . is Grid Active Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġview . sort () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Base Screen . Companion . is KeyDown ( RS Key Bindings . CLEAR _ GRID _ CR AFT ING _ MATRIX )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Clear Message ()) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtabs . update () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġval Ġtop Height : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġ 1 9 Ċ // ĠĠĠ Ġoverride Ġval Ġbottom Height : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . CR AFT ING ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠ 1 5 6 Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . PATTERN ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 9 Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠ 9 9 Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġoverride Ġval Ġy Player Inventory : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy p Ġ= Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . NORMAL Ġ|| Ġgrid !!. grid Type Ġ=== ĠGrid Type . FL UID ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy p Ġ+= Ġ 1 6 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . CR AFT ING ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy p Ġ+= Ġ 7 3 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . PATTERN ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy p Ġ+= Ġ 8 6 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġy p Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġoverride Ġval Ġrows : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= ĠMath . max ( 0 , ĠMath . ceil ( view . stacks . size . toFloat () Ġ/ Ġ 9 f . toDouble ()). toInt ()) Ċ // ĠĠĠ Ġoverride Ġval Ġcurrent Offset : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġscrollbar !!. offset Ċ // ĠĠĠ Ġoverride Ġval Ġsearch Field Text : ĠString ? Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġsearch Field !!. text Ċ // ĠĠĠ Ġoverride Ġval Ġvisible Rows : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( grid !!. size ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠI Grid . SIZE _ ST RET CH Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Space Available : ĠInt Ġ= Ġheight Ġ- Ġtop Height Ġ- Ġbottom Height Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . max ( 3 , ĠMath . min ( screen Space Available Ġ/ Ġ 1 8 Ġ- Ġ 3 , ĠRS . CLIENT _ CONFIG . grid . getMax Rows Stretch ())) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠI Grid . SIZE _ SMALL Ġ-> Ġ 3 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠI Grid . SIZE _ MEDIUM Ġ-> Ġ 5 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠI Grid . SIZE _ LARGE Ġ-> Ġ 8 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 3 Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġprivate Ġval Ġis Over Slot With Stack : ĠBoolean Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ= Ġgrid !!. is Grid Active Ġ&& Ġis Over Slot Ġ&& Ġslot Number Ġ< Ġview . stacks . size Ċ // ĠĠĠ Ġprivate Ġval Ġis Over Slot : ĠBoolean Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ= Ġslot Number Ġ>= Ġ 0 Ċ // Ċ // ĠĠĠ Ġfun Ġis Over Slot Area ( mouse X : ĠDouble , ĠmouseY : ĠDouble ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠRender Utils . in Bounds ( 7 , Ġ 1 9 , Ġ 1 6 2 , Ġ 1 8 Ġ* Ġvisible Rows , Ġmouse X , ĠmouseY ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġis Over Clear ( mouse X : ĠDouble , ĠmouseY : ĠDouble ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ġ+ Ġ 4 Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( grid !!. grid Type ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Type . CR AFT ING Ġ-> ĠRender Utils . in Bounds ( 8 2 , Ġy , Ġ 7 , Ġ 7 , Ġmouse X , ĠmouseY ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Type . PATTERN Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( grid Ġas ĠGrid Network Node ?) !!. is Processing Pattern ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender Utils . in Bounds ( 1 5 4 , Ġy , Ġ 7 , Ġ 7 , Ġmouse X , ĠmouseY ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠRender Utils . in Bounds ( 8 2 , Ġy , Ġ 7 , Ġ 7 , Ġmouse X , ĠmouseY ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġis Over Create Pattern ( mouse X : ĠDouble , ĠmouseY : ĠDouble ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġgrid !!. grid Type Ġ=== ĠGrid Type . PATTERN Ġ&& ĠRender Utils . in Bounds ( 1 7 2 , Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ġ+ Ġ 2 2 , Ġ 1 6 , Ġ 1 6 , Ġmouse X , ĠmouseY ) Ġ&& Ġ( grid Ġas ĠGrid Network Node ?) !!. can Create Pattern () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġrender Background ( matrix Stack : ĠMatrix Stack ?, Ġx : ĠInt , Ġy : ĠInt , Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġtabs . draw Background ( matrix Stack , Ġx , Ġy Ġ- Ġtabs . height ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( grid Ġis ĠI Portable Grid ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbind Texture ( RS . ID , Ġ" gui / portable _ grid . png ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . CR AFT ING ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbind Texture ( RS . ID , Ġ" gui / craft ing _ grid . png ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . PATTERN ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbind Texture ( RS . ID , Ġ" gui / pattern _ grid " Ġ+ Ġ( if Ġ(( grid Ġas ĠGrid Network Node ?) !!. is Processing Pattern ()) Ġ"_ processing " Ġelse Ġ"") Ġ+ Ġ". png ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbind Texture ( RS . ID , Ġ" gui / grid . png ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġvar Ġyy Ġ= Ġy Ċ // ĠĠĠĠĠĠĠ Ġblit ( matrix Stack , Ġx , Ġyy , Ġ 0 , Ġ 0 , Ġx Size Ġ- Ġ 3 4 , Ġtop Height ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// ĠFilters Ġand / or Ġportable Ġgrid Ġdisk Ċ // ĠĠĠĠĠĠĠ Ġblit ( matrix Stack , Ġx Ġ+ Ġx Size Ġ- Ġ 3 4 Ġ+ Ġ 4 , Ġy , Ġ 1 9 7 , Ġ 0 , Ġ 3 0 , Ġif Ġ( grid Ġis ĠI Portable Grid ) Ġ 1 1 4 Ġelse Ġ 8 2 ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġvisible Rows Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġrows ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġyy Ġ+= Ġ 1 8 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġblit ( matrix Stack , Ġx , Ġyy , Ġ 0 , Ġtop Height Ġ+ Ġif Ġ( i Ġ> Ġ 0 ) Ġif Ġ( i Ġ== Ġrows Ġ- Ġ 1 ) Ġ 1 8 Ġ* Ġ 2 Ġelse Ġ 1 8 Ġelse Ġ 0 , Ġx Size Ġ- Ġ 3 4 , Ġ 1 8 ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġyy Ġ+= Ġ 1 8 Ċ // ĠĠĠĠĠĠĠ Ġblit ( matrix Stack , Ġx , Ġyy , Ġ 0 , Ġtop Height Ġ+ Ġ 1 8 Ġ* Ġ 3 , Ġx Size Ġ- Ġ 3 4 , Ġbottom Height ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . PATTERN ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġty Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Over Create Pattern ( mouse X Ġ- Ġgui Left , ĠmouseY Ġ- Ġgui Top )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġty Ġ= Ġ 1 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(!( grid Ġas ĠGrid Network Node ?) !!. can Create Pattern ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġty Ġ= Ġ 2 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġblit ( matrix Stack , Ġx Ġ+ Ġ 1 7 2 , Ġy Ġ+ Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ġ+ Ġ 2 2 , Ġ 2 4 0 , Ġty Ġ* Ġ 1 6 , Ġ 1 6 , Ġ 1 6 ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtabs . draw Foreground ( matrix Stack , Ġx , Ġy Ġ- Ġtabs . height , Ġmouse X , ĠmouseY , Ġtrue ) Ċ // ĠĠĠĠĠĠĠ Ġsearch Field !!. render ( matrix Stack , Ġ 0 , Ġ 0 , Ġ 0 f ) Ċ // ĠĠĠĠĠĠĠ Ġscrollbar !!. render ( matrix Stack ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġrender ( matrix Stack : ĠMatrix Stack ?, Ġmouse X : ĠInt , ĠmouseY : ĠInt , Ġpartial Ticks : ĠFloat ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . render ( matrix Stack , Ġmouse X , ĠmouseY , Ġpartial Ticks ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// ĠDraw n Ġin Ġhere Ġfor Ġbug Ġ# 1 8 4 4 Ġ( https :// github . com / ref ined mods / ref ined storage / issues / 1 8 4 4 ) Ċ // ĠĠĠĠĠĠĠ Ġ// ĠItem Ġtooltip s Ġcan 't Ġbe Ġrendered Ġin Ġthe Ġforeground Ġlayer Ġdue Ġto Ġthe ĠX Ġoffset Ġtranslation . Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( is Over Slot With Stack ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Grid Tooltip ( matrix Stack , Ġview . stacks [ slot Number ], Ġmouse X , ĠmouseY ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġrender Foreground ( matrix Stack : ĠMatrix Stack ?, Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġrender String ( matrix Stack , Ġ 7 , Ġ 7 , Ġtitle . getString ()) Ċ // ĠĠĠĠĠĠĠ Ġrender String ( matrix Stack , Ġ 7 , Ġy Player Inventory Ġ- Ġ 1 2 , ĠI 1 8 n . format (" container . inventory ")) Ċ // ĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 8 Ċ // ĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ 1 9 Ċ // ĠĠĠĠĠĠĠ Ġslot Number Ġ= Ġ- 1 Ċ // ĠĠĠĠĠĠĠ Ġvar Ġslot Ġ= Ġif Ġ( scrollbar Ġ!= Ġnull ) Ġscrollbar !!. offset Ġ* Ġ 9 Ġelse Ġ 0 Ċ // ĠĠĠĠĠĠĠ ĠRender Helper . setup Gui 3 DD iff use Lighting () Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 9 Ġ* Ġvisible Rows ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Render Utils . in Bounds ( x , Ġy , Ġ 1 6 , Ġ 1 6 , Ġmouse X . toDouble (), ĠmouseY . toDouble ()) Ġ|| Ġ! grid !!. is Grid Active ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslot Number Ġ= Ġslot Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( slot Ġ< Ġview . stacks . size ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . stacks [ slot ] !!. draw ( matrix Stack , Ġthis , Ġx , Ġy ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Render Utils . in Bounds ( x , Ġy , Ġ 1 6 , Ġ 1 6 , Ġmouse X . toDouble (), ĠmouseY . toDouble ()) Ġ|| Ġ! grid !!. is Grid Active ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġif Ġ( grid !!. is Grid Active ) Ġ- 2 1 3 0 7 0 6 4 3 3 Ġelse Ġ- 0 xa 4 a 4 a 5 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . push Matrix () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . disable Lighting () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . disable Depth Test () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . color Mask ( true , Ġtrue , Ġtrue , Ġfalse ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Gradient ( matrix Stack , Ġx , Ġy , Ġx Ġ+ Ġ 1 6 , Ġy Ġ+ Ġ 1 6 , Ġcolor , Ġcolor ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . color Mask ( true , Ġtrue , Ġtrue , Ġtrue ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . pop Matrix () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġslot ++ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 8 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( i Ġ+ Ġ 1 ) Ġ% Ġ 9 Ġ== Ġ 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 8 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġ 1 8 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( is Over Clear ( mouse X . toDouble (), ĠmouseY . toDouble ())) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrender Tooltip ( matrix Stack , Ġmouse X , ĠmouseY , ĠI 1 8 n . format (" misc . ref ined storage . clear ")) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( is Over Create Pattern ( mouse X . toDouble (), ĠmouseY . toDouble ())) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrender Tooltip ( matrix Stack , Ġmouse X , ĠmouseY , ĠI 1 8 n . format (" gui . ref ined storage . grid . pattern _ create ")) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtabs . draw Tooltip ( matrix Stack , Ġfont , Ġmouse X , ĠmouseY ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġdraw Grid Tooltip ( matrix Stack : ĠMatrix Stack ?, Ġgrid Stack : ĠI Grid Stack ?, Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtext Lines : ĠList < Text ?> ? Ġ= Ġgrid Stack . get Tooltip () Ċ // ĠĠĠĠĠĠĠ Ġval Ġsmall Text Lines : ĠMutable List < String > Ġ= ĠLists . newArrayList () Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! grid Stack !!. is Craft able ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsmall Text Lines . add ( I 1 8 n . format (" misc . ref ined storage . total ", Ġgrid Stack . formatted Full Quantity )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( grid Stack . tracker Entry Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsmall Text Lines . add ( Time Utils . get Ago ( grid Stack . tracker Entry . getTime (), Ġgrid Stack . tracker Entry . getName ())) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġif Ġ( grid Stack Ġis ĠItem Grid Stack ) Ġgrid Stack . stack Ġelse ĠItemStack . EMPTY Ċ // ĠĠĠĠĠĠĠ ĠRender Utils . draw Tooltip With Small Text ( matrix Stack , Ġtext Lines , Ġsmall Text Lines , ĠRS . CLIENT _ CONFIG . grid . get Detailed Tooltip (), Ġstack , Ġmouse X , ĠmouseY , Ġwidth , Ġheight , Ġfont ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġmouse Clicked ( mouse X : ĠDouble , ĠmouseY : ĠDouble , Ġclicked Button : ĠInt ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( tabs . mouse Clicked ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( scrollbar !!. mouse Clicked ( mouse X , ĠmouseY , Ġclicked Button )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( RS . CLIENT _ CONFIG . grid . get Prevent Sorting While Shift Is Down ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdo Sort Ġ= Ġ! is Over Slot Area ( mouse X Ġ- Ġgui Left , ĠmouseY Ġ- Ġgui Top ) Ġ&& Ġ! is Over Craft ing Output Area ( mouse X Ġ- Ġgui Left , ĠmouseY Ġ- Ġgui Top ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġclicked Clear Ġ= Ġclicked Button Ġ== Ġ 0 Ġ&& Ġis Over Clear ( mouse X Ġ- Ġgui Left , ĠmouseY Ġ- Ġgui Top ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġclicked Create Pattern Ġ= Ġclicked Button Ġ== Ġ 0 Ġ&& Ġis Over Create Pattern ( mouse X Ġ- Ġgui Left , ĠmouseY Ġ- Ġgui Top ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( clicked Create Pattern ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġm inecraft . get Sound Handler (). play ( Simple Sound . master ( Sound Events . UI _ BUTTON _ CLICK , Ġ 1 . 0 f )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Pattern Create Message (( grid Ġas ĠGrid Network Node ?) !!. pos )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid !!. is Grid Active ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clicked Clear ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm inecraft . get Sound Handler (). play ( Simple Sound . master ( Sound Events . UI _ BUTTON _ CLICK , Ġ 1 . 0 f )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Clear Message ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheld : ĠItemStack Ġ= Ġcontainer . getPlayer (). inventory . getItem Stack () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Over Slot Area ( mouse X Ġ- Ġgui Left , ĠmouseY Ġ- Ġgui Top ) Ġ&& Ġ! held . isEmpty Ġ&& Ġ( clicked Button Ġ== Ġ 0 Ġ|| Ġclicked Button Ġ== Ġ 1 )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grid . grid Type Ġ=== ĠGrid Type . FL UID ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Fluid Insert Hel d Message ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Item Insert Hel d Message ( clicked Button Ġ== Ġ 1 )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Over Slot With Stack ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Middle Click Pull ing Ġ= Ġ! held . isEmpty Ġ&& Ġclicked Button Ġ== Ġ 2 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Pull ing Ġ= Ġheld . isEmpty Ġ|| Ġis Middle Click Pull ing Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġview . stacks [ slot Number ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Pull ing ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view . can Craft () Ġ&& Ġstack !!. is Craft able ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm inecraft . display Gui Screen ( Craft ing Settings Screen ( this , Ġplayer Inventory . player , Ġstack )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( view . can Craft () Ġ&& Ġ! stack !!. is Craft able Ġ&& Ġstack . other Id Ġ!= Ġnull Ġ&& Ġhas Shift Down () Ġ&& Ġhas Control Down ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm inecraft . display Gui Screen ( Craft ing Settings Screen ( this , Ġplayer Inventory . player , Ġview [ stack . other Id ])) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid . grid Type Ġ=== ĠGrid Type . FL UID Ġ&& Ġheld . isEmpty ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Fluid Pull Message ( view . stacks [ slot Number ]. id , Ġhas Shift Down ())) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid . grid Type Ġ!== ĠGrid Type . FL UID ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġflags Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clicked Button Ġ== Ġ 1 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠI Item Grid Handler . EXTRACT _ HALF Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Shift Down ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠI Item Grid Handler . EXTRACT _ SHIFT Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clicked Button Ġ== Ġ 2 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠI Item Grid Handler . EXTRACT _ SINGLE Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRS . NETWORK _ HANDLER . send ToServer ( Grid Item Pull Message ( stack . id , Ġflags )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġsuper . mouse Clicked ( mouse X , ĠmouseY , Ġclicked Button ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġis Over Craft ing Output Area ( mouse X : ĠDouble , ĠmouseY : ĠDouble ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( grid !!. grid Type Ġ!== ĠGrid Type . CR AFT ING ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse ĠRender Utils . in Bounds ( 1 3 0 , Ġtop Height Ġ+ Ġvisible Rows Ġ* Ġ 1 8 Ġ+ Ġ 1 8 , Ġ 2 4 , Ġ 2 4 , Ġmouse X , ĠmouseY ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġmouse Moved ( mx : ĠDouble , Ġmy : ĠDouble ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġscrollbar !!. mouse Moved ( mx , Ġmy ) Ċ // ĠĠĠĠĠĠĠ Ġsuper . mouse Moved ( mx , Ġmy ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġmouse Released ( mx : ĠDouble , Ġmy : ĠDouble , Ġbutton : ĠInt ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġscrollbar !!. mouse Released ( mx , Ġmy , Ġbutton ) Ġ|| Ġsuper . mouse Released ( mx , Ġmy , Ġbutton ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġmouse Sc rolled ( x : ĠDouble , Ġy : ĠDouble , Ġdelta : ĠDouble ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġscrollbar !!. mouse Sc rolled ( x , Ġy , Ġdelta ) Ġ|| Ġsuper . mouse Sc rolled ( x , Ġy , Ġdelta ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġchar Typed ( p _ char Typed _ 1 _: ĠChar , Ġp _ char Typed _ 2 _: ĠInt ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( search Field !!. char Typed ( p _ char Typed _ 1 _, Ġp _ char Typed _ 2 _)) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġsuper . char Typed ( p _ char Typed _ 1 _, Ġp _ char Typed _ 2 _) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġkey Released ( key : ĠInt , Ġp _ 2 2 3 2 8 1 _ 2 _: ĠInt , Ġp _ 2 2 3 2 8 1 _ 3 _: ĠInt ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( key Ġ== ĠGLFW . GLFW _ KEY _ LEFT _ SHIFT Ġ|| Ġkey Ġ== ĠGLFW . GLFW _ KEY _ RIGHT _ SHIFT ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġview . sort () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġsuper . key Released ( key , Ġp _ 2 2 3 2 8 1 _ 2 _, Ġp _ 2 2 3 2 8 1 _ 3 _) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġkey Pressed ( key : ĠInt , Ġscan Code : ĠInt , Ġmodifiers : ĠInt ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( search Field !!. key Pressed ( key , Ġscan Code , Ġmodifiers ) Ġ|| Ġsearch Field . can Write ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġsuper . key Pressed ( key , Ġscan Code , Ġmodifiers ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġupdate Exact Pattern ( checked : ĠBoolean ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( exact Pattern Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġexact Pattern !!. setChecked ( checked ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġupdate Scrollbar () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġscrollbar !!. isEnabled Ġ= Ġrows Ġ> Ġvisible Rows Ċ // ĠĠĠĠĠĠĠ Ġscrollbar !!. setMax Offset ( rows Ġ- Ġvisible Rows ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun Ġcan Sort (): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġdo Sort Ġ|| Ġ! has Shift Down () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġcompanion Ġobject Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġsort ers : ĠList < IG rid Sorter > Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsort ers : ĠMutable List < IG rid Sorter > Ġ= ĠLinkedList () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort ers . add ( default Sorter ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort ers . add ( Quantity Grid Sorter ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort ers . add ( Id Grid Sorter ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort ers . add ( LastModified Grid Sorter ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort ers . add ( Inventory T weak s Grid Sorter ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsort ers Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġdefault Sorter : ĠI Grid Sorter Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠName Grid Sorter () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġinit Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġview Ġ= Ġif Ġ( grid !!. grid Type Ġ=== ĠGrid Type . FL UID ) ĠFluid GridView ( this , Ġdefault Sorter , Ġsort ers ) Ġelse ĠItem GridView ( this , Ġdefault Sorter , Ġsort ers ) Ċ // ĠĠĠĠĠĠĠ Ġwas Connected Ġ= Ġgrid !!. is Grid Active Ċ // ĠĠĠĠĠĠĠ Ġtabs Ġ= ĠTab List Widget ( this , ĠElement Draw ers ( this , Ġfont ), Ġgrid :: tabs !! , Ġgrid :: total Tab Pages !! , Ġgrid :: tabPage !! , Ġgrid :: tab Selected !! , ĠI Grid . TAB S _ PER _ PAGE ) Ċ // ĠĠĠĠĠĠĠ Ġtabs . addListener ( object Ġ: ĠI Tab List Listener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Selection Changed ( tab : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . on Tab Selection Changed ( tab ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Changed ( page : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . on Tab Page Changed ( page ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠ Ġ} Ċ //}