package Ġapplication . controller . dialogs . search Ċ Ċ import Ġapplication . controller . dialogs . Random Soup Dialog Ċ import Ġapplication . model . rules . Rule Ċ import Ġapplication . model . search . Search Parameters Ċ import Ġapplication . model . search . c search . Br ute Force Search Parameters Ċ import Ġjavafx . event . ActionEvent Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . scene . control .* Ċ import Ġjavafx . scene . control . Spinner Value Factory . Integer Spinner Value Factory Ċ Ċ class ĠBr ute Force Search Parameters Dialog ( rule : ĠRule ) Ġ: ĠSearch Parameters Dialog () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrule : ĠRule ĊĠĠĠ Ġprivate Ġval Ġrandom Soup Dialog : ĠRandom Soup Dialog ĊĊĠĠĠ Ġprivate Ġval Ġbr ute Force : ĠCheckBox ĊĠĠĠ Ġprivate Ġval Ġspinner Max Period : ĠSp inner < Int > ĊĊĠĠĠ Ġprivate Ġval Ġspinner Bound X : ĠSp inner < Int > ĊĠĠĠ Ġprivate Ġval Ġspinner Bound Y : ĠSp inner < Int > ĊĊĠĠĠ Ġoverride Ġvar Ġsearch Parameters : ĠBr ute Force Search Parameters ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLabel Ġfor Ġthe Ġmaximum Ġperiod ĊĠĠĠĠĠĠĠ Ġgrid . add ( Label (" Max ĠPeriod :" ), Ġ 0 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġmaximum Ġperiod Ġfor Ġperiod Ġdetection ĊĠĠĠĠĠĠĠ Ġval Ġmax Period Factory : ĠSp inner Value Factory < Int > Ġ= ĠInteger Spinner Value Factory ( 1 0 , Ġ 2 0 0 0 0 , Ġ 7 0 ) ĊĠĠĠĠĠĠĠ Ġspinner Max Period Ġ= ĠSp inner () ĊĠĠĠĠĠĠĠ Ġspinner Max Period . is Editable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġspinner Max Period . value Factory Ġ= Ġmax Period Factory ĊĠĠĠĠĠĠĠ Ġgrid . add ( spinner Max Period , Ġ 0 , Ġ 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBounding Ġbox Ġfor Ġenumeration ĊĠĠĠĠĠĠĠ Ġval Ġbounding Box Factory 3 : ĠSp inner Value Factory < Int > Ġ= ĠInteger Spinner Value Factory ( 0 , Ġ 2 0 0 0 0 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġgrid . add ( Label (" Soup ĠWidth :" ), Ġ 0 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġspinner Bound X Ġ= ĠSp inner () ĊĠĠĠĠĠĠĠ Ġspinner Bound X . is Editable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġspinner Bound X . value Factory Ġ= Ġbounding Box Factory 3 ĊĠĠĠĠĠĠĠ Ġgrid . add ( spinner Bound X , Ġ 0 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġgrid . add ( Label (" Soup ĠHeight :" ), Ġ 0 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbounding Box Factory 4 : ĠSp inner Value Factory < Int > Ġ= ĠInteger Spinner Value Factory ( 0 , Ġ 2 0 0 0 0 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġspinner Bound Y Ġ= ĠSp inner () ĊĠĠĠĠĠĠĠ Ġspinner Bound Y . is Editable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġspinner Bound Y . value Factory Ġ= Ġbounding Box Factory 4 ĊĠĠĠĠĠĠĠ Ġgrid . add ( spinner Bound Y , Ġ 0 , Ġ 7 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBr ute - force Ġenumeration Ġor Ġrandom Ġsoup Ġsearch ĊĠĠĠĠĠĠĠ Ġbr ute Force Ġ= ĠCheckBox (" Br ute ĠForce ?") ĊĠĠĠĠĠĠĠ Ġgrid . add ( br ute Force , Ġ 0 , Ġ 8 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRandom ĠSo up ĠParameters ĊĠĠĠĠĠĠĠ Ġrandom Soup Dialog Ġ= ĠRandom Soup Dialog ( rule . num States , Ġ 5 0 , Ġ" C 1 ", ĠlistOf ( 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġrandom Soup Parameters Button Ġ= ĠButton (" Set ĠRandom ĠSo up ĠParameters ") ĊĠĠĠĠĠĠĠ Ġrandom Soup Parameters Button . on Action Ġ= ĠEventHandler Ġ{ Ġevent : ĠAction Event ? Ġ-> Ġrandom Soup Dialog . show And Wait () Ġ} ĊĠĠĠĠĠĠĠ Ġgrid . add ( random Soup Parameters Button , Ġ 0 , Ġ 9 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetting Ġthe Ġrule Ġto Ġsearch ĊĠĠĠĠĠĠĠ Ġthis . rule Ġ= Ġrule ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfirm Parameters (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . confirm Parameters () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Parameters Ġ= ĠBr ute Force Search Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule , Ġspinner Max Period . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner Bound X . value , Ġspinner Bound Y . value , Ġ! br ute Force . isSelected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Soup Dialog . sym metry , Ġrandom Soup Dialog . states , Ġrandom Soup Dialog . density ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalert Ġ= ĠAlert ( Alert . Alert Type . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . title Ġ= Ġ" Error !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . header Text Ġ= Ġexception . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . content Text Ġ= Ġexception . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . show And Wait () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }