package Ġy an dex . cloud . toolkit . ui . component Ċ Ċ import Ġcom . intellij . openapi . action System . Action Toolbar Position Ċ import Ġcom . intellij . openapi . ui . ComboBox Ċ import Ġcom . intellij . openapi . ui . Dialog Builder Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . ui . An ActionButton Ċ import Ġcom . intellij . ui . Collection ListModel Ċ import Ġcom . intellij . ui . Toolbar Decorator Ċ import Ġcom . intellij . ui . components . JB List Ċ import Ġy an dex . cloud . api . iam . v 1 . Role OuterClass Ċ import Ġy an dex . cloud . toolkit . ui . action . CopyTo Buffer Action Ċ import Ġy an dex . cloud . toolkit . util .* Ċ import Ġjava . awt . Border Layout Ċ import Ġjavax . swing . Default ComboBox Model Ċ import Ġjavax . swing . JLabel Ċ Ċ class ĠService Account Roles List ( ĊĠĠĠ Ġval Ġavailable Roles : ĠList < Role OuterClass . Role > Ċ ) Ġ: ĠY CP anel ( Border Layout ()) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlist Model Ġ= ĠCollection ListModel < String >() ĊĠĠĠ Ġprivate Ġval Ġlist Ġ= ĠJ B List ( list Model ) ĊĊĠĠĠ Ġvar Ġroles : ĠSet < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlist Model . items . toSet () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġlist Model . set Items ( value . toList ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . set Empty Text (" No ĠRoles ") ĊĊĠĠĠĠĠĠĠ ĠY C UI . separator (" Roles ") Ġadd As ĠBorderLayout . NORTH ĊĊĠĠĠĠĠĠĠ ĠToolbar Decorator . create Decorator ( list ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Toolbar Position ( Action Toolbar Position . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Move Down Action ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Move Up Action ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Edit Action ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Add Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Add Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy Action Ġ= ĠAn ActionButton . from Action ( CopyTo Buffer Action Ġ{ Ġlist . single Selected Value Ġ?: Ġ"" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Action . add Custom Updater Ġ{ Ġlist . is Single Value Selected Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Extra Action ( copy Action ) ĊĠĠĠĠĠĠĠ Ġ}. create Panel () Ġadd As ĠBorderLayout . CENTER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Add Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Builder ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle (" Add ĠRole ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Roles Ġ= Ġroles ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavailable Roles Ġ= Ġavailable Roles . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . id Ġin Ġcurrent Roles ) Ġnull Ġelse Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroles Box Ġ= ĠCombo Box < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroles Box . model Ġ= ĠDefault ComboBox Model ( available Roles ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ok Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Cancel Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok Action . setText (" Add ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ok Action Enabled ( available Roles . isNotEmpty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Panel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY C UI . grid Panel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY C UI . grid Bag ( horizontal Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJLabel (" Role ") Ġadd As Ġnext ln ( 0 . 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroles Box Ġadd As Ġnext ( 0 . 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. with Preferred Width ( 3 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ok Operation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Model . add ( roles Box . item !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Wrapper . close ( Dialog Wrapper . OK _ EXIT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cancel Operation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Wrapper . close ( Dialog Wrapper . CANCEL _ EXIT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} Ċ }