package Ġbr . com . dev srs ou za . kotlin bukkit api . tool ing . wizard . utils Ċ Ċ import Ġcom . intellij . ui . ScrollPane Factory Ċ import Ġcom . intellij . ui . components . JB ScrollPane Ċ import Ġcom . intellij . ui Designer . core .* Ċ import Ġjava . awt .* Ċ import Ġjavax . swing .* Ċ Ċ data Ġclass ĠT d Pos ( val Ġcol : ĠInt , Ġval Ġrow : ĠInt ) Ċ Ċ @ Dsl Marker Ċ annotation Ġclass ĠTable Tag Marker Ċ Ċ @ Table Tag Marker Ċ class ĠTable Builder Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠLinkedHashMap < Td Pos , ĠPair < Component , ĠGrid Constraints >>() ĊĠĠĠ Ġvar Ġrow Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġcol Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġfill : ĠT d Fill Ġ= ĠT d Fill . BOTH ĊĠĠĠ Ġvar Ġanchor : ĠT d Align Ġ= ĠT d Align . CENTER _ CENTER ĊĠĠĠ Ġvar Ġh policy : ĠT d Size Ġ= ĠT d Size . CAN _ SH R INK _ GRO W ĊĠĠĠ Ġvar Ġv policy : ĠT d Size Ġ= ĠT d Size . CAN _ SH R INK _ GRO W ĊĠĠĠ Ġvar ĠminWidth : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar ĠminHeight : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar ĠmaxWidth : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar ĠmaxHeight : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġn rows Ġget () Ġ= Ġitems . values . map Ġ{ Ġit . second . row Ġ+ Ġit . second . row Span Ġ}. max () Ġ?: Ġ 0 ĊĠĠĠ Ġval Ġn cols Ġget () Ġ= Ġitems . values . map Ġ{ Ġit . second . column Ġ+ Ġit . second . col Span Ġ}. max () Ġ?: Ġ 0 Ċ } Ċ Ċ fun Ġtable ( callback : ĠTable Builder . () Ġ-> ĠUnit ): ĠJPanel Ġ{ ĊĠĠĠ Ġval Ġtb Ġ= ĠTable Builder () ĊĠĠĠ Ġtb . callback () ĊĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Grid LayoutManager ( tb . nrows , Ġtb . n cols , ĠIn sets ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ), Ġ 0 , Ġ 0 , Ġfalse , Ġfalse )) ĊĠĠĠ Ġfor Ġ( item Ġin Ġtb . items . values ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpanel . add ( item . first , Ġitem . second ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// add ( panel ) ĊĠĠĠ Ġreturn Ġpanel Ċ } Ċ Ċ fun ĠTable Builder . tr ( ĊĠĠĠĠĠĠĠ Ġfill : ĠT d Fill Ġ= ĠT d Fill . BOTH , ĊĠĠĠĠĠĠĠ Ġalign : ĠT d Align Ġ= ĠT d Align . CENTER _ CENTER , ĊĠĠĠĠĠĠĠ Ġpolicy : ĠT d Size Ġ= ĠT d Size . CAN _ SH R INK _ GRO W , ĊĠĠĠĠĠĠĠ Ġh policy : ĠT d Size Ġ= Ġpolicy , ĊĠĠĠĠĠĠĠ Ġv policy : ĠT d Size Ġ= Ġpolicy , ĊĠĠĠĠĠĠĠ ĠminWidth : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠmaxWidth : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠminHeight : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠmaxHeight : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġcallback : ĠTable Builder . () Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġthis . fill Ġ= Ġfill ĊĠĠĠ Ġthis . anchor Ġ= Ġalign ĊĠĠĠ Ġthis . h policy Ġ= Ġh policy ĊĠĠĠ Ġthis . v policy Ġ= Ġv policy ĊĠĠĠ Ġthis . min Width Ġ= ĠminWidth ĊĠĠĠ Ġthis . maxWidth Ġ= ĠmaxWidth ĊĠĠĠ Ġthis . min Height Ġ= ĠminHeight ĊĠĠĠ Ġthis . max Height Ġ= ĠmaxHeight ĊĠĠĠ Ġcallback () ĊĠĠĠ Ġrow ++ ĊĠĠĠ Ġcol Ġ= Ġ 0 Ċ } Ċ Ċ // fun ĠTable Builder . td ( col span : ĠInt Ġ= Ġ 1 , Ġrowspan : ĠInt Ġ= Ġ 1 , Ġcallback : ĠTable Builder . () Ġ-> ĠUnit ) Ġ{ Ċ // ĠĠĠ ĠGrid Constraints () Ċ //} Ċ Ċ fun ĠTable Builder . td ( ĊĠĠĠĠĠĠĠ Ġcomponent : ĠComponent , Ġcolspan : ĠInt Ġ= Ġ 1 , Ġrowspan : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġfill : ĠT d Fill ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġanchor : ĠT d Align ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġh policy : ĠT d Size ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġv policy : ĠT d Size ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠminWidth : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠmaxWidth : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠminHeight : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠmaxHeight : ĠInt ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġitems [ Td Pos ( col , Ġrow )] Ġ= ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent , ĠGrid Constraints ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow , Ġcol , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrowspan , Ġcolspan , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( anchor Ġ?: Ġthis . anchor ). value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( fill Ġ?: Ġthis . fill ). value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( h policy Ġ?: Ġthis . h policy ). value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( v policy Ġ?: Ġthis . v policy ). value , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDimension (( min Width Ġ?: Ġthis . min Width ) Ġ?: Ġ- 1 , Ġ( min Height Ġ?: Ġthis . min Height ) Ġ?: Ġ- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDimension (- 1 , Ġ- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDimension (( maxWidth Ġ?: Ġthis . maxWidth ) Ġ?: Ġ- 1 , Ġ( max Height Ġ?: Ġthis . max Height ) Ġ?: Ġ- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġcol ++ Ċ } Ċ Ċ enum Ġclass ĠT d Fill ( val Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ ĠNONE ( Grid Constraints . FILL _ NONE ), ĊĠĠĠ ĠH ORIZONTAL ( Grid Constraints . FILL _ HORIZONTAL ), ĊĠĠĠ ĠV ERT ICAL ( Grid Constraints . FILL _ VERTICAL ), ĊĠĠĠ ĠBOT H ( Grid Constraints . FILL _ BOTH ) Ċ } Ċ Ċ enum Ġclass ĠT d Align ( val Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ ĠTOP _ LEFT ( Grid Constraints . AN CH OR _ NORTH WEST ), ĊĠĠĠ ĠTOP _ CENTER ( Grid Constraints . AN CH OR _ NORTH ), ĊĠĠĠ ĠTOP _ RIGHT ( Grid Constraints . AN CH OR _ N ORT HE AST ), ĊĊĠĠĠ ĠC ENTER _ LEFT ( Grid Constraints . AN CH OR _ WEST ), ĊĠĠĠ ĠC ENTER _ CENTER ( Grid Constraints . AN CH OR _ CENTER ), ĊĠĠĠ ĠC ENTER _ RIGHT ( Grid Constraints . AN CH OR _ EAST ), ĊĊĠĠĠ ĠBOTTOM _ LEFT ( Grid Constraints . AN CH OR _ SO UTH WEST ), ĊĠĠĠ ĠBOTTOM _ CENTER ( Grid Constraints . AN CH OR _ SO UTH ), ĊĠĠĠ ĠBOTTOM _ RIGHT ( Grid Constraints . AN CH OR _ SO UT HE AST ), Ċ } Ċ Ċ enum Ġclass ĠT d Size ( val Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ ĠFIX ED ( Grid Constraints . SIZE POLICY _ FIXED ), ĊĠĠĠ ĠCAN _ SH R INK ( Grid Constraints . SIZE POLICY _ CAN _ SH R INK ), ĊĠĠĠ ĠCAN _ GRO W ( Grid Constraints . SIZE POLICY _ CAN _ GRO W ), ĊĠĠĠ ĠCAN _ SH R INK _ GRO W ( Grid Constraints . SIZE POLICY _ CAN _ SH R INK Ġor ĠGrid Constraints . SIZE POLICY _ CAN _ SH R INK ), ĊĠĠĠ ĠW ANT _ GRO W ( Grid Constraints . SIZE POLICY _ W ANT _ GRO W ), Ċ } Ċ Ċ val Ġ< T > ĠJ ComboBox < T >. items Ġget () Ġ= Ġ( 0 Ġuntil Ġthis . item Count ). map Ġ{ ĠgetItem At ( it ) Ġ} Ċ Ċ /** Ċ Ġ* ĠAPI Ġfrom : Ġhttps :// github . com / ktor io / ktor - init - tools / blob / master / ktor - intellij - plugin / src / io / ktor / start / intellij / util / Utils . kt Ċ Ġ*/ Ċ Ċ fun ĠJPanel . add At Grid ( ĊĠĠĠĠĠĠĠ Ġitem : ĠJ Component , ĊĠĠĠĠĠĠĠ Ġrow : ĠInt , Ġcolumn : ĠInt , ĊĠĠĠĠĠĠĠ Ġrow Span : ĠInt Ġ= Ġ 1 , Ġcol Span : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġanchor : ĠInt Ġ= ĠGrid Constraints . AN CH OR _ CENTER , ĊĠĠĠĠĠĠĠ Ġfill : ĠInt Ġ= ĠGrid Constraints . FILL _ NONE , ĊĠĠĠĠĠĠĠ ĠH Size Policy : ĠInt Ġ= ĠGrid Constraints . SIZE POLICY _ CAN _ GRO W Ġor ĠGrid Constraints . SIZE POLICY _ CAN _ SH R INK , ĊĠĠĠĠĠĠĠ ĠV Size Policy : ĠInt Ġ= ĠGrid Constraints . SIZE POLICY _ CAN _ GRO W Ġor ĠGrid Constraints . SIZE POLICY _ CAN _ SH R INK , ĊĠĠĠĠĠĠĠ Ġminimum Size : ĠDimension Ġ= ĠDimension (- 1 , Ġ- 1 ), ĊĠĠĠĠĠĠĠ Ġpreferred Size : ĠDimension Ġ= ĠDimension (- 1 , Ġ- 1 ), ĊĠĠĠĠĠĠĠ Ġmaximum Size : ĠDimension Ġ= ĠDimension (- 1 , Ġ- 1 ) Ċ ) Ġ{ ĊĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Constraints ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Span , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol Span , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanchor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH Size Policy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV Size Policy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠComponent . scroll Vertical () Ġ= ĠScroll Pane Factory . create ScrollPane ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ ĠJ B ScrollPane . VERTICAL _ SCROLL BAR _ ALWAYS , ĊĠĠĠĠĠĠĠ ĠJ B ScrollPane . HORIZONTAL _ SCROLL BAR _ NE VER Ċ )