package Ġeu . k 5 . soap ui . swing . kar ate Ċ Ċ import Ġeu . k 5 . soap ui . swing . Main Model Ċ import Ġeu . k 5 . soap ui . swing . Main View Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Dimension Ċ import Ġjava . io . File Ċ import Ġjava . util . prefs . Preferences Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . event . List Selection Event ĊĊ Ċ class ĠKar ate Exporter View ( ĊĠĠĠ Ġprivate Ġval Ġmodel : ĠKar ate Exporter Model Ċ ) Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġcontroller Ġ= ĠKar ate Exporter Controller ( model , Ġthis ) ĊĠĠĠ Ġprivate Ġval Ġmain Panel Ġ= ĠJPanel () Ġ// Ġ= ĠJ Frame (" Kar ate ĠExport ") ĊĠĠĠ Ġprivate Ġval Ġmain Layout : ĠBorderLayout Ġ= ĠBorderLayout ( 2 , Ġ 2 ) ĊĠĠĠ Ġprivate Ġval Ġbutton Panel Ġ= ĠJPanel () ĊĠĠĠ Ġprivate Ġval Ġcontent Ġ= ĠJ TextArea () ĊĠĠĠ Ġprivate Ġval Ġartifacts ScrollPane : ĠJ ScrollPane ĊĠĠĠ Ġprivate Ġval Ġcontent ScrollPane Ġ= ĠJ ScrollPane ( content ) ĊĊĠĠĠ Ġprivate Ġval Ġartifacts : ĠJ List < Kar ate Exporter Model . Artifact > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Panel . layout Ġ= Ġmain Layout ĊĊĠĠĠĠĠĠĠ Ġartifacts Ġ= ĠJ List ( model . artifacts ) ĊĠĠĠĠĠĠĠ Ġartifacts . selection Mode Ġ= ĠList Selection Model . SINGLE _ INTERVAL _ SELECTION ĊĠĠĠĠĠĠĠ Ġartifacts . layout Orientation Ġ= ĠJ List . VERTICAL ĊĠĠĠĠĠĠĠ Ġartifacts . visible RowCount Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġartifacts . add List Selection Listener Ġ{ Ġupdate SelectedItem ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġartifacts ScrollPane Ġ= ĠJ ScrollPane ( artifacts ) ĊĠĠĠĠĠĠĠ Ġartifacts ScrollPane . preferred Size Ġ= ĠDimension ( 2 5 0 , Ġ 8 0 ) ĊĊĠĠĠĠĠĠĠ Ġcontent . is Editable Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġmodel . current . register On Ed t Ġ{ Ġold , Ġnew Ġ-> Ġupdate Content () Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Buttons ( button Panel , Ġcontroller , Ġmodel ) ĊĊĊĠĠĠĠĠĠĠ Ġmain Panel . add ( artifacts ScrollPane , ĠBorderLayout . WEST ); ĊĠĠĠĠĠĠĠ Ġmain Panel . add ( content ScrollPane , ĠBorderLayout . CENTER ); ĊĠĠĠĠĠĠĠ Ġmain Panel . add ( button Panel , ĠBorderLayout . SO UTH ) ĊĠĠĠĠĠĠĠ Ġ/* Ġ Ġmain Frame . pack () ĊĠĠĠĠĠĠĠĠĠ Ġmain Frame . setSize ( 8 0 0 , Ġ 8 0 0 ) */ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Content () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent . text Ġ= Ġmodel . current . getEntry ()?. content Ġ?: Ġ"" ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate SelectedItem ( event : ĠList Selection Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! event . value Is Adjust ing Ġ&& Ġartifacts . selectedIndex Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . current . update ( artifacts . selected Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġas Panel (): ĠJPanel Ġ= Ġmain Panel ĊĊ Ċ /* ĠĠĠ Ġfun Ġdisplay () Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Frame . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġfun Ġget Target Folder (): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcho oser Ġ= ĠJ FileChooser () ĊĊĠĠĠĠĠĠĠ Ġval Ġprefs : ĠPreferences Ġ= ĠPreferences . user Node For Package ( Kar ate Exporter View :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġcho oser . file Selection Mode Ġ= ĠJ FileChooser . DIRECT ORIES _ ONLY ; ĊĊĠĠĠĠĠĠĠ Ġval Ġparent Folder Ġ= ĠFile ( prefs . get (" folder ", Ġ"")) ĊĠĠĠĠĠĠĠ Ġif Ġ( parent Folder . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . current Directory Ġ= Ġparent Folder ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcho oser . show Open Dialog ( null ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected File Ġ= Ġcho oser . selected File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . put (" folder ", Ġselected File . parent File . canonical Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcho oser . selected File ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġadd Buttons ( button Panel : ĠJPanel , Ġcontroller : ĠKar ate Exporter Controller , Ġmodel : ĠKar ate Exporter Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox Layout ( button Panel , ĠBox Layout . X _ AXIS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= ĠJLabel ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Panel . add ( label ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Save Folder Ġ= ĠJButton (" Save Ġin ĠFolder ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Save Folder . addActionListener Ġ{ Ġcontroller . do Save In Folder () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Panel . add ( button Save Folder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Save Zip Ġ= ĠJButton (" Save Ġas Ġzip ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Save Zip . addActionListener Ġ{ Ġcontroller . do Save Zip () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Panel . add ( button Save Zip ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }