package Ġuno . reb elli ous . advanced factory . gui Ċ Ċ import Ġnet . minecraft . client . Minecraft Ċ import Ġnet . minecraft . client . gui . Font Renderer Ċ import Ġnet . minecraft . client . gui . Gui Button Ċ import Ġnet . minecraft . client . renderer . Gl StateManager Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . util . Resource Location Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . world . World Ċ import Ġorg . apache . logging . log 4 j . Level Ċ import Ġuno . reb elli ous . advanced factory . Advanced Factory Ċ import Ġuno . reb elli ous . advanced factory . block . Blocks Ċ import Ġuno . reb elli ous . advanced factory . tile . I Advanced Factory Tile Ċ import Ġuno . reb elli ous . advanced factory . tile . TileEntity Advanced Factory Ċ import Ġuno . reb elli ous . advanced factory . tile . TileEntity Controller Ċ import Ġuno . reb elli ous . advanced factory . util . Types Ċ import Ġjava . lang . Math . max ĊĊ Ċ class ĠGui Controller ( val Ġtile : ĠTile Entity Controller ?, Ġval Ġworld : ĠWorld ) Ġ: ĠGui Base () Ġ{ ĊĠĠĠ Ġprivate Ġenum Ġclass ĠController Buttons ( val Ġbutton Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNEXT (" Next "), ĠPRE V (" Prev "), ĠADD _ LINK (" Add ĠLink "), ĠNEW _ FLOW (" New ĠFlow "); ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= ĠMinecraft . getM inecraft (). font Renderer . getString Width ( button Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠAdvanced Factory . logger ĊĊĠĠĠ Ġprivate Ġvar Ġx Size : ĠInt Ġ= Ġ 1 7 6 ĊĠĠĠ Ġprivate Ġvar Ġy Size : ĠInt Ġ= Ġ 1 3 8 ĊĊĠĠĠ Ġprivate Ġvar Ġgui Left : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġgui Top : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġpage No Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġtotal Pages : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġflow . size ĊĊĠĠĠ Ġprivate Ġvar Ġblock Click Area Ġ= ĠHashMap < Pair < Pair < Int , ĠInt >, ĠPair < Int , ĠInt >>, ĠI Advanced Factory Tile ?> () ĊĠĠĠ Ġprivate Ġvar Ġselected Tile : ĠMap . Entry < Pair < Pair < Int , ĠInt >, ĠPair < Int , ĠInt >>, ĠI Advanced Factory Tile ?> ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġflow : ĠArrayList < ArrayList < I Advanced Factory Tile >> ĊĊĊĠĠĠ Ġoverride Ġfun Ġinit Gui () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Gui () ĊĠĠĠĠĠĠĠ Ġgui Left Ġ= Ġ( width Ġ- Ġx Size ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġgui Top Ġ= Ġ( height Ġ- Ġy Size ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġmake Button List () ĊĠĠĠĠĠĠĠ Ġflow Ġ= Ġconvert Program To Flows ( tile ?. factory Program ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Screen ( mouse X : ĠInt , ĠmouseY : ĠInt , Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw Screen Pre () ĊĠĠĠĠĠĠĠ Ġsuper . draw Screen ( mouse X , ĠmouseY , Ġpartial Ticks ) ĊĠĠĠĠĠĠĠ Ġdraw Screen Post () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Screen Pre () Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw Default Background () ĊĠĠĠĠĠĠĠ ĠGl StateManager . color ( 1 F , Ġ 1 F , Ġ 1 F ) ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠResource Location ( Advanced Factory . MOD _ ID , Ġ" textures / gui / gui _ controller . png ") ĊĊĠĠĠĠĠĠĠ Ġthis . mc . texture Manager . bind Texture ( res ) ĊĠĠĠĠĠĠĠ Ġthis . draw Text ured Modal Rect ( this . gui Left , Ġthis . gui Top , Ġ 0 , Ġ 0 , Ġthis . x Size , Ġthis . y Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Screen Post () Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw Program () ĊĠĠĠĠĠĠĠ Ġpage Text () ĊĠĠĠĠĠĠĠ Ġdraw Factory Contents () ĊĠĠĠĠĠĠĠ Ġdraw Selected () ĊĠĠĠĠĠĠĠ Ġdraw Energy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Energy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtile Entity Controller Ġ= Ġtile Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġstored Ratio Ġ= Ġtile Entity Controller . get Stored Energy (). toDouble () Ġ/ Ġtile Entity Controller . getMax Energy (). toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠResource Location ( Advanced Factory . MOD _ ID , Ġ" textures / gui / gui _ energy _ blob . png ") ĊĠĠĠĠĠĠĠ Ġthis . mc . texture Manager . bind Texture ( res ) ĊĠĠĠĠĠĠĠ Ġval Ġtexture X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġtexture Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġtexture Height Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġval Ġtexture Width Ġ= Ġ 1 8 4 ĊĠĠĠĠĠĠĠ Ġval Ġenergy Left Ġ= Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġval Ġenergy Bottom Ġ= Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġdraw Text ured Modal Rect ( energy Left , Ġenergy Bottom , Ġtexture X , Ġtexture Y , Ġtexture Width , Ġtexture Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Program () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġgui Left Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġgui Top Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġval Ġhorizontal Gap Ġ= Ġ 2 8 ĊĠĠĠĠĠĠĠ Ġval Ġvertical Gap Ġ= Ġ 2 8 ĊĠĠĠĠĠĠĠ Ġvar Ġslot Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġrow Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġassert ( flow . isNotEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġflow [ page No ]. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= ĠBlocks . getBlock From Type ( it . factory BlockType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ItemStack ( ItemStack ( stack ), Ġx , Ġy , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġslot Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( slot Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 1 .. 6 , Ġin Ġ 8 .. 1 2 , Ġin Ġ 1 4 .. 1 8 , Ġin Ġ 2 0 .. 2 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rowCount Ġ% Ġ 2 Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġhorizontal Gap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ-= Ġhorizontal Gap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 , Ġ 1 3 , Ġ 1 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġgui Top Ġ+ Ġ 1 0 Ġ+ Ġ( rowCount Ġ* Ġvertical Gap ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Factory Contents () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġtile ?. factory Contents ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ItemStack ( ItemStack ( Blocks . getBlock From Type ( it . value )), Ġx Ġ+ Ġpadding , Ġy Ġ+ Ġpadding , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Click Area [ Pair ( Pair ( x , Ġy ), ĠPair ( x Ġ+ Ġ 2 1 , Ġy Ġ+ Ġ 2 1 ))] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . get TileEntity ( it . key ) Ġas ? ĠI Advanced Factory Tile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġ( 2 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġselected Tile Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġdraw Box ( selection . key , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpage Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" Page Ġ${ page No Ġ+ Ġ 1 } Ġof Ġ$ total Pages " ĊĠĠĠĠĠĠĠ Ġval Ġtext Width Ġ= Ġfont Renderer . getString Width ( text ) ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġval Ġtext Bottom Ġ= Ġgui Top Ġ+ Ġy Size Ġ- Ġfont Renderer . FONT _ HEIGHT Ġ- Ġpadding ĊĠĠĠĠĠĠĠ Ġval Ġtext Left Ġ= Ġ( gui Left Ġ+ Ġ( x Size Ġ/ Ġ 2 )) Ġ- Ġ( text Width Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġfont Renderer . draw String ( text , Ġtext Left , Ġtext Bottom , Ġ 4 2 1 0 7 5 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Button List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbutton Height Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġbutton Bottom Ġ= Ġgui Top Ġ+ Ġy Size Ġ- Ġbutton Height Ġ- Ġpadding ĊĠĠĠĠĠĠĠ Ġval Ġbutton Width Ġ= Ġ 1 0 Ġ+ Ġmax ( Controller Buttons . NEXT . width , ĠController Buttons . PREV . width ) ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Button X Ġ= Ġgui Left Ġ+ Ġpadding ĊĠĠĠĠĠĠĠ Ġval Ġright Button X Ġ= Ġgui Left Ġ+ Ġx Size Ġ- Ġbutton Width Ġ- Ġpadding ĊĊĠĠĠĠĠĠĠ Ġval Ġprev Button Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGui Button ( Controller Buttons . PREV . ordinal , Ġleft Button X , Ġbutton Bottom , ĠController Buttons . PREV . button Text ) ĊĠĠĠĠĠĠĠ Ġprev Button . setWidth ( button Width ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Button Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGui Button ( Controller Buttons . NEXT . ordinal , Ġright Button X , Ġbutton Bottom , ĠController Buttons . NEXT . button Text ) ĊĠĠĠĠĠĠĠ Ġnext Button . setWidth ( button Width ) ĊĠĠĠĠĠĠĠ Ġval Ġadd Link Button Ġ= ĠGui Button ( Controller Buttons . ADD _ LINK . ordinal , Ġ 5 0 , Ġ 0 , ĠController Buttons . ADD _ LINK . button Text ) ĊĠĠĠĠĠĠĠ Ġadd Link Button . setWidth ( Controller Buttons . ADD _ LINK . width Ġ+ Ġ 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Flow Button Ġ= ĠGui Button ( Controller Buttons . NEW _ FLOW . ordinal , Ġ 5 0 , Ġ 2 0 , ĠController Buttons . NEW _ FLOW . button Text ) ĊĠĠĠĠĠĠĠ Ġnew Flow Button . setWidth ( Controller Buttons . NEW _ FLOW . width Ġ+ Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġbutton List . add ( prev Button ) ĊĠĠĠĠĠĠĠ Ġbutton List . add ( next Button ) ĊĠĠĠĠĠĠĠ Ġbutton List . add ( add Link Button ) ĊĠĠĠĠĠĠĠ Ġbutton List . add ( new Flow Button ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Flow sTo Program ( flows : ĠArrayList < ArrayList < I Advanced Factory Tile >> ): ĠArrayList < Pair < Block Pos , ĠBlockPos >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram : ĠArrayList < Pair < Block Pos , ĠBlockPos >> Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġflows . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġas ĠTile Entity Advanced Factory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġflow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow . indices . forEach Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfirst Ġ= Ġflow [ index Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsecond Ġ= Ġflow [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . add ( Pair ( first . pos , Ġsecond . pos )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprogram ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Program To Flows ( program : ĠArrayList < Pair < Block Pos , ĠBlockPos >> ?): ĠArrayList < ArrayList < I Advanced Factory Tile >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġflow Ġ= ĠArrayList < ArrayList < I Advanced Factory Tile >>() ĊĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Flow Ġ= ĠArrayList < I Advanced Factory Tile >() ĊĠĠĠĠĠĠĠ Ġflow . add ( current Flow ) ĊĊĠĠĠĠĠĠĠ Ġprogram ?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Tile Ġ= Ġworld . get TileEntity ( it . first ) Ġas ? ĠI Advanced Factory Tile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Tile Ġ= Ġworld . get TileEntity ( it . second ) Ġas ? ĠI Advanced Factory Tile ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( first Tile , Ġsecond Tile ) ĊĠĠĠĠĠĠĠ Ġ} ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfirst Tile Ġ= Ġit . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsecond Tile Ġ= Ġit . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Tile Ġ!= Ġnull Ġ&& Ġsecond Tile Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Flow . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Flow . add ( first Tile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Flow . last () Ġ!= Ġfirst Tile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Flow Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow . add ( current Flow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Flow . add ( first Tile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Flow . add ( second Tile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġflow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( mouse X : ĠInt , ĠmouseY : ĠInt , Ġmouse Button : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . mouse Clicked ( mouse X , ĠmouseY , Ġmouse Button ) ĊĠĠĠĠĠĠĠ Ġval Ġclick Area Ġ= Ġblock Click Area . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 1 Ġ= Ġit . key . first . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 1 Ġ= Ġit . key . first . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 2 Ġ= Ġit . key . second . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġit . key . second . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmouse X Ġ> Ġx 1 Ġ&& Ġmouse X Ġ< Ġx 2 Ġ&& ĠmouseY Ġ> Ġy 1 Ġ&& ĠmouseY Ġ< Ġy 2 ĊĠĠĠĠĠĠĠ Ġ}. as Sequence (). first OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( click Area Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Tile Ġ= Ġif Ġ( selected Tile Ġ== Ġclick Area ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Area ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGui Button (- 1 , Ġ 0 , Ġ 0 , Ġ""). play Press Sound ( mc . sound Handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( button : ĠGui Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( button . id Ġ== ĠController Buttons . PREV . ordinal Ġ&& Ġpage No Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage No -- ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( button . id Ġ== ĠController Buttons . NEXT . ordinal Ġ&& Ġpage No Ġ< Ġtotal Pages Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage No ++ ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( button . id Ġ== ĠController Buttons . ADD _ LINK . ordinal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Link Action () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( button . id Ġ== ĠController Buttons . NEW _ FLOW . ordinal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow . add ( ArrayList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . action Performed ( button ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Link Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselection ToAdd Ġ= Ġselected Tile ?. value ĊĠĠĠĠĠĠĠ Ġif Ġ( selection ToAdd Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflows Ġ= Ġflow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Flow Ġ= Ġflows [ page No ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Flow . add ( selection ToAdd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Tile Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Flow . size Ġ> Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile ?. update Factory Program ( convert Flow sTo Program ( flows )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ