import Ġjava . awt . Dimension č Ċ import Ġjava . awt . Font č Ċ import Ġjava . io . IOException č Ċ import Ġjava . net . NetworkInterface č Ċ import Ġjava . net . Unknown Host Exception č Ċ import Ġjava . util . Locale čĊč Ċ import Ġjavax . swing . JButton č Ċ import Ġjavax . swing . J Frame č Ċ import Ġjavax . swing . JLabel č Ċ import Ġjavax . swing . JPanel č Ċ import Ġjavax . swing . J ProgressBar č Ċ import Ġjavax . swing . J Tabbed Pane č Ċ import Ġjavax . swing . Swing Constants č Ċ import Ġjavax . swing . Swing Worker čĊč Ċ class ĠServer Layout Ġ: ĠJ Frame () Ġ{ čĊĠĠĠ Ġval Ġm FilePath : ĠJLabel čĊĠĠĠ Ġval Ġm FileName : ĠJLabel čĊĠĠĠ Ġprivate Ġval Ġm Pc Name : ĠJLabel čĊĠĠĠ Ġprivate Ġval Ġm Ip Info : ĠJLabel čĊĠĠĠ Ġval Ġm Connect Info : ĠJLabel čĊĠĠĠ Ġval Ġm ProgressBar : ĠJ ProgressBar čĊĠĠĠ Ġval Ġm Remain Files : ĠJLabel čĊĠĠĠ Ġval Ġm Last Date : ĠJLabel čĊčĊĠĠĠ Ġinit Ġ{ č Ċ // ĠĠĠĠĠĠĠ Ġadd WindowListener ( object Ġ: ĠWindow Adapter () Ġ{ č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwindow Closing ( e : ĠWindow Event ?) Ġ{ č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġfalse č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispose () č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . exit ( 0 ) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} č Ċ // ĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Picture ĠServer " čĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġsize Ġ= ĠDimension ( 6 5 5 , Ġ 3 6 5 ) čĊĠĠĠĠĠĠĠ Ġlayout Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġdefault Close Operation Ġ= ĠEXIT _ ON _ CLOSE čĊčĊĠĠĠĠĠĠĠ Ġval Ġinfo Tab Ġ= ĠJ Tabbed Pane ( Swing Constants . TOP ) čĊĠĠĠĠĠĠĠ Ġinfo Tab . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 4 ) čĊĠĠĠĠĠĠĠ Ġinfo Tab . setBounds ( 0 , Ġ 0 , Ġ 6 3 5 , Ġ 3 2 3 ) Ġ// Ġ( x , y , w , h ) čĊĠĠĠĠĠĠĠ Ġadd ( info Tab ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġsend Information Ġ= ĠJPanel () čĊĠĠĠĠĠĠĠ Ġinfo Tab . add Tab (" ìłĦ ìĨ ¡ Ġìłķë³´ ", Ġnull , Ġsend Information , Ġnull ) čĊĠĠĠĠĠĠĠ Ġsend Information . locale Ġ= ĠLocale . K ORE A čĊĠĠĠĠĠĠĠ Ġsend Information . layout Ġ= Ġnull čĊčĊĠĠĠĠĠĠĠ Ġval Ġconnection State Ġ= ĠJLabel (" ìĹ° ê²° Ġìĥģíĥľ Ġ: ") čĊĠĠĠĠĠĠĠ Ġconnection State . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 4 ) čĊĠĠĠĠĠĠĠ Ġconnection State . setBounds ( 1 2 , Ġ 1 0 , Ġ 7 9 , Ġ 3 4 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( connection State ) čĊčĊĠĠĠĠĠĠĠ Ġm Connect Info Ġ= ĠJLabel (" ìĹ° ê²° ĠëĮĢ ê¸° ì¤ĳ ") čĊĠĠĠĠĠĠĠ Ġm Connect Info . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 4 ) čĊĠĠĠĠĠĠĠ Ġm Connect Info . setBounds ( 1 0 2 , Ġ 1 0 , Ġ 3 8 1 , Ġ 3 4 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( m Connect Info ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġno Name Ġ= ĠJLabel (" íĮĮ ìĿ¼ Ġê²½ ë¡ľ Ġ: ") čĊĠĠĠĠĠĠĠ Ġno Name . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 4 ) čĊĠĠĠĠĠĠĠ Ġno Name . setBounds ( 1 2 , Ġ 5 4 , Ġ 7 9 , Ġ 5 1 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( no Name ) čĊčĊĠĠĠĠĠĠĠ Ġm FilePath Ġ= ĠJLabel ("") čĊĠĠĠĠĠĠĠ Ġm FilePath . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġm FilePath . setBounds ( 1 0 2 , Ġ 5 4 , Ġ 3 8 1 , Ġ 5 1 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( m FilePath ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġlast Date Label Ġ= ĠJLabel (" ë§Ī ì§Ģ ë§ ī ĠëıĻ ê¸° íĻĶ ĠëĤ ł ì§ ľ Ġ: Ġ") čĊĠĠĠĠĠĠĠ Ġlast Date Label . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 4 ) čĊĠĠĠĠĠĠĠ Ġlast Date Label . setBounds ( 1 2 , Ġ 1 2 7 , Ġ 1 4 4 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( last Date Label ) čĊčĊĠĠĠĠĠĠĠ Ġm Last Date Ġ= ĠJLabel ("") čĊĠĠĠĠĠĠĠ Ġm Last Date . font Ġ= ĠFont ( null , ĠFont . BOLD , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġm Last Date . setBounds ( 1 6 8 , Ġ 1 2 7 , Ġ 3 1 5 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( m Last Date ) čĊčĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= ĠJLabel (" íĮĮ ìĿ¼ ëªħ Ġ: ") čĊĠĠĠĠĠĠĠ ĠfileName . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 4 ) čĊĠĠĠĠĠĠĠ ĠfileName . setBounds ( 1 2 , Ġ 1 8 1 , Ġ 5 7 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( fileName ) čĊčĊĠĠĠĠĠĠĠ Ġthis . m FileName Ġ= ĠJLabel ("") čĊĠĠĠĠĠĠĠ Ġthis . m FileName . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġthis . m FileName . setBounds ( 8 1 , Ġ 1 8 1 , Ġ 4 0 2 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( this . m FileName ) čĊčĊĠĠĠĠĠĠĠ Ġm ProgressBar Ġ= ĠJ ProgressBar () čĊĠĠĠĠĠĠĠ Ġm ProgressBar . setBounds ( 1 2 , Ġ 2 3 0 , Ġ 4 7 1 , Ġ 4 5 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( m ProgressBar ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġopen Button Ġ= ĠJButton (" ìłĢ ìŀ¥ ìľĦ ì¹ĺ ĠìĹ ´ ê¸° ") čĊĠĠĠĠĠĠĠ Ġopen Button . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġopen Button . addActionListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġruntime Ġ= ĠRuntime . get Runtime () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġruntime . exec (" cmd . exe Ġ/ c Ġexplorer Ġ" Ġ+ Ġm FilePath . text ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e 1 : ĠIOException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġcatch Ġblock čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 . printStackTrace () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġopen Button . setBounds ( 4 9 5 , Ġ 5 5 , Ġ 1 2 3 , Ġ 5 1 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( open Button ) čĊčĊĠĠĠĠĠĠĠ Ġm Remain Files Ġ= ĠJLabel ("") čĊĠĠĠĠĠĠĠ Ġm Remain Files . setBounds ( 4 9 5 , Ġ 1 8 1 , Ġ 1 2 3 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġsend Information . add ( m Remain Files ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġpc Information Ġ= ĠJPanel () čĊĠĠĠĠĠĠĠ Ġinfo Tab . add Tab (" PC Ġìłķë³´ ", Ġnull , Ġpc Information , Ġnull ) čĊĠĠĠĠĠĠĠ Ġpc Information . layout Ġ= Ġnull čĊčĊĠĠĠĠĠĠĠ Ġval Ġpc Name Ġ= ĠJLabel (" PC ĠìĿ´ë¦Ħ Ġ: Ġ") čĊĠĠĠĠĠĠĠ Ġpc Name . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġpc Name . setBounds ( 1 2 , Ġ 3 6 , Ġ 1 6 0 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġpc Information . add ( pc Name ) čĊčĊĠĠĠĠĠĠĠ Ġm Pc Name Ġ= ĠJLabel ("") čĊĠĠĠĠĠĠĠ Ġm Pc Name . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġpc Information . add ( m Pc Name ) čĊĠĠĠĠĠĠĠ Ġm Pc Name . setBounds ( 8 1 , Ġ 3 6 , Ġ 2 2 9 , Ġ 3 0 ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġip Info Ġ= ĠJLabel (" IP Ġ: ") čĊĠĠĠĠĠĠĠ Ġip Info . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġip Info . setBounds ( 1 2 , Ġ 9 3 , Ġ 6 0 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġpc Information . add ( ip Info ) čĊčĊĠĠĠĠĠĠĠ Ġm Ip Info Ġ= ĠJLabel ("") čĊĠĠĠĠĠĠĠ Ġm Ip Info . font Ġ= ĠFont ( null , ĠFont . PLAIN , Ġ 1 3 ) čĊĠĠĠĠĠĠĠ Ġm Ip Info . setBounds ( 8 1 , Ġ 9 3 , Ġ 2 2 9 , Ġ 3 0 ) čĊĠĠĠĠĠĠĠ Ġpc Information . add ( m Ip Info ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinternal Ġfun Ġset PC Name () Ġ{ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Machine Ġ= Ġjava . net . Inet Address . getLocal Host () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Pc Name . text Ġ= Ġlocal Machine . host Name čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnknown Host Exception ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinternal Ġfun Ġset IP () Ġ{ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġen Ġ= ĠNetwork Interface . get Network Interfaces () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( en . hasMore Elements ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork If Ġ= Ġen . nextElement () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġip Address Ġ= Ġnetwork If . inet Addresses čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( ipAddress . hasMore Elements ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinet Address Ġ= Ġip Address . nextElement () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! inet Address . is Loop back Address Ġ&& Ġ! inet Address . is Link Local Address Ġ&& Ġinet Address . is Site Local Address ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ip Info . text Ġ= Ġinet Address . host Address . toString () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ// Ġmirror ing Image Ġ: ĠìĥĪ ë¡ľ ìļ´ Ġwindow ĠìĹĲ ĠìĿ´ë¯¸ ì§Ģë¥¼ Ġ 3 ì ´Ī Ġì£¼ ê¸° ë¡ľ Ġë Ŀ Ħ ìĽĮ ì¤Ģ ëĭ¤ . čĊĠĠĠ Ġinner Ġclass ĠImage Mirror ing Ġ: ĠSw ing Worker < Int , ĠInt >() Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġm Path : ĠString ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Is Running Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Image Preview : ĠImage Preview ? Ġ= Ġnull čĊčĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) čĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background (): ĠInt ? Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Path Ġ= Ġ" 0 " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m Path Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Image Preview Ġ= ĠImage Preview () Ġ// Ġshow Ġimage Ġmirror ing čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m Is Running ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Path Ġ!== Ġm Path ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Path Ġ= Ġm Path Ġas ĠString čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Image Preview ?. setImage ( current Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 5 0 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess ( chunks : ĠList < Int > ?) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Running () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġis Image Preview (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Image Preview Ġ!= Ġnull čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġstop Running () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Running Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Image Preview ?. close Window () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }