package Ġcom . is ys core . kotlin . swing . component Ċ Ċ import Ġcom . is ys core . kotlin . common . is Mac Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjava . awt . event . Key Listener Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . awt . event . Mouse Listener Ċ import Ġjavax . swing . J MenuItem Ċ import Ġjavax . swing . J PopupMenu Ċ import Ġjavax . swing . text . J Text Component Ċ Ċ class ĠEdit PopupMenu ( comp : ĠJ Text Component ): ĠJ PopupMenu () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Cut "). apply Ġ{ Ġadd ActionListener Ġ{ Ġcomp . cut () Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Copy "). apply Ġ{ Ġadd ActionListener Ġ{ Ġcomp . copy () Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Paste "). apply Ġ{ Ġadd ActionListener Ġ{ Ġcomp . paste () Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġadd Separator () ĊĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Select ĠAll "). apply Ġ{ Ġadd ActionListener Ġ{ Ġcomp . selectAll () Ġ} Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠEdit Key Listener ( private Ġval Ġcomp : ĠJ Text Component ): ĠKey Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġkey Typed ( e : ĠKeyEvent ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġkey Pressed ( e : ĠKeyEvent ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġkey Released ( e : ĠKeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġctrl Ġ= Ġif Ġ( is Mac ) Ġe . is Meta Down Ġelse Ġe . is Control Down ĊĠĠĠĠĠĠĠ Ġif Ġ( ctrl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( e . keyCode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . VK _ X Ġ-> Ġcomp . cut () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . VK _ C Ġ-> Ġcomp . copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . VK _ V Ġ-> Ġcomp . paste () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . VK _ A Ġ-> Ġcomp . selectAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠEdit Mouse Listener ( private Ġval Ġcomp : ĠJ Text Component , Ġprivate Ġval Ġpopup : ĠJ PopupMenu ): ĠMouse Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠMouseEvent ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġmouse Released ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e . button Ġ== ĠMouseEvent . BUTTON 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup . show ( comp , Ġe . x , Ġe . y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġmouse Entered ( e : ĠMouseEvent ) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġmouse Exit ed ( e : ĠMouseEvent ) Ġ{} Ċ }