package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . event . PopupMenu Event Ċ import Ġjavax . swing . event . PopupMenu Listener Ċ import Ġjavax . swing . text . Default Editor Kit Ċ import Ġjavax . swing . text . J Text Component Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġpopup 1 Ġ= Ġmake PopupMenu () ĊĊĠ Ġval Ġtext Field 1 Ġ= ĠJTextField (" Default Ġset Component PopupMenu ") ĊĠ Ġtext Field 1 . component PopupMenu Ġ= Ġpopup 1 ĊĠ Ġtext Field 1 . name Ġ= Ġ" textField 1 " ĊĊĠ Ġval Ġpopup 2 Ġ= ĠText Component PopupMenu () ĊĠ Ġval Ġtext Field 2 Ġ= ĠJTextField (" Override ĠJ PopupMenu # show (...) ") ĊĠ Ġtext Field 2 . component PopupMenu Ġ= Ġpopup 2 ĊĠ Ġtext Field 2 . name Ġ= Ġ" textField 2 " ĊĊĠ Ġval Ġcombo 3 Ġ= ĠJ ComboBox ( array Of (" J PopupMenu Ġdoes Ġnot Ġopen ?? ?", Ġ" 1 1 1 ", Ġ" 2 2 2 ")) ĊĠ Ġcombo 3 . is Editable Ġ= Ġtrue ĊĠ Ġ// ĠNOT Ġwork : Ġcombo 3 . set Component PopupMenu ( popup 2 ); ĊĠ Ġval Ġtext Field 3 Ġ= Ġcombo 3 . editor . editor Component ĊĠ Ġ( textField 3 Ġas ? ĠJ Component )?. component PopupMenu Ġ= Ġpopup 2 ĊĠ Ġtext Field 3 . name Ġ= Ġ" textField 3 " ĊĠ Ġ// ĠTEST : Ġtext Field 3 . put Client Property (" do Not Cancel Popup ", Ġnull ); ĊĊĠ Ġval Ġcombo 4 Ġ= ĠJ ComboBox ( array Of (" add Mouse Listener ", Ġ" 1 1 1 ", Ġ" 2 2 2 ")) ĊĠ Ġcombo 4 . is Editable Ġ= Ġtrue ĊĠ Ġval Ġtext Field 4 Ġ= Ġcombo 4 . editor . editor Component ĊĠ Ġ( textField 4 Ġas ? ĠJ Component )?. component PopupMenu Ġ= Ġpopup 2 ĊĠ Ġtext Field 4 . name Ġ= Ġ" textField 4 " ĊĠ Ġval Ġml 4 Ġ= Ġobject Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġprintln (" Close Ġall ĠJ PopupMenu ( exclude s Ġdropdown Ġlist Ġof Ġown ĠJ ComboBox )") ĊĠĠĠĠĠ Ġfor Ġ( m Ġin ĠMenu Selection Manager . default Manager (). selected Path ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( combo 4 . is Popup Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Ġis ĠJ PopupMenu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġtext Field 4 . add Mouse Listener ( ml 4 ) ĊĊĠ Ġval Ġbox Ġ= ĠBox . create Vertical Box () ĊĠ ĠlistOf < Component >( textField 1 , Ġtext Field 2 , Ġcombo 3 , Ġcombo 4 ). forEach Ġ{ ĊĠĠĠ Ġbox . add ( it ) ĊĠĠĠ Ġbox . add ( Box . create Vertical Str ut ( 5 )) ĊĠ Ġ} ĊĊĠ Ġval Ġtext Area Ġ= ĠJ TextArea (" dummy ") ĊĠ Ġtext Area . component PopupMenu Ġ= Ġpopup 2 ĊĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . border Ġ= ĠBorder Factory . create Empty Border ( 5 , Ġ 5 , Ġ 5 , Ġ 5 ) ĊĠĠĠ Ġit . add ( box , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġit . add ( J ScrollPane ( textArea )) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġmake PopupMenu (): ĠJ PopupMenu Ġ{ ĊĠ Ġval Ġcut Action Ġ= ĠDefault Editor Kit . Cut Action () ĊĠ Ġval Ġcopy Action Ġ= ĠDefault Editor Kit . Copy Action () ĊĠ Ġval Ġpaste Action Ġ= ĠDefault Editor Kit . Paste Action () ĊĊĠ Ġval Ġpopup 1 Ġ= ĠJ PopupMenu () ĊĠ Ġpopup 1 . add ( cut Action ) ĊĠ Ġpopup 1 . add ( copy Action ) ĊĠ Ġpopup 1 . add ( paste Action ) ĊĠ Ġval Ġp ml 1 Ġ= Ġobject Ġ: ĠPopup Menu Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpopup Menu Canceled ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopup Menu Will Be come In visible ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopup Menu Will Be come Visible ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠĠĠ Ġval Ġpop Ġ= Ġe . source Ġas ? ĠJ PopupMenu Ġ?: Ġreturn ĊĠĠĠĠĠ Ġ( pop . inv oker Ġas ? ĠJ Text Component )?. also Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("${ it . java Class . name }: Ġ${ it . name }") ĊĠĠĠĠĠĠĠ Ġ// ĠTEST : ĊĠĠĠĠĠĠĠ Ġ// Ġit . request Focus In Window (); ĊĠĠĠĠĠĠĠ Ġ// Ġit . selectAll (); ĊĠĠĠĠĠĠĠ Ġval Ġhas Selected Text Ġ= Ġit . selected Text Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġcut Action . isEnabled Ġ= Ġhas Selected Text ĊĠĠĠĠĠĠĠ Ġcopy Action . isEnabled Ġ= Ġhas Selected Text ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġpopup 1 . add PopupMenu Listener ( pml 1 ) ĊĠ Ġreturn Ġpopup 1 Ċ } Ċ Ċ private Ġclass ĠText Component PopupMenu Ġ: ĠJ PopupMenu () Ġ{ ĊĠ Ġprivate Ġval Ġcut Action Ġ= ĠDefault Editor Kit . Cut Action () ĊĠ Ġprivate Ġval Ġcopy Action Ġ= ĠDefault Editor Kit . Copy Action () ĊĠ Ġprivate Ġval Ġpaste Action Ġ= ĠDefault Editor Kit . Paste Action () ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġadd ( cut Action ) ĊĠĠĠ Ġadd ( copy Action ) ĊĠĠĠ Ġadd ( paste Action ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow ( c : ĠComponent , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġprintln ("${ c . java Class . name }: Ġ${ c . name }") ĊĠĠĠ Ġval Ġtc Ġ= Ġc Ġas ? ĠJ Text Component Ġ?: Ġreturn ĊĠĠĠ Ġtc . request Focus In Window () ĊĠĠĠ Ġvar Ġhas Selected Text Ġ= Ġtc . selected Text Ġ!= Ġnull ĊĠĠĠ Ġif Ġ( tc Ġis ĠJTextField Ġ&& Ġ! tc . is Focus Owner () Ġ&& Ġ! has Selected Text ) Ġ{ ĊĠĠĠĠĠ Ġtc . selectAll () ĊĠĠĠĠĠ Ġhas Selected Text Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġcut Action . isEnabled Ġ= Ġhas Selected Text ĊĠĠĠ Ġcopy Action . isEnabled Ġ= Ġhas Selected Text ĊĠĠĠ Ġsuper . show ( tc , Ġx , Ġy ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠ ĠUI Manager . set Look And Feel ( UI Manager . getSystem Look And Feel ClassName ()) ĊĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠ ĠToolkit . getDefault Toolkit (). be ep () ĊĠĠĠ Ġ} ĊĠĠĠ ĠJ Frame (). apply Ġ{ ĊĠĠĠĠĠ Ġdefault Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠĠĠ Ġcontent Pane . add ( make UI ()) ĊĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠ Ġset Location Relative To ( null ) ĊĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ