/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . android . tools . idea . ui builder . property . inspector Ċ Ċ import Ġcom . android . tools . adt ui . actions . DropDown Action Ċ import Ġcom . android . tools . adt ui . common . secondary Panel Background Ċ import Ġcom . android . tools . adt ui . util . Action Toolbar Util Ċ import Ġcom . android . tools . idea . common . model . Nl Component Ċ import Ġcom . android . tools . idea . common . surface . Design Surface Ċ import Ġcom . android . tools . idea . ui builder . api . actions . Direct View Action Ċ import Ġcom . android . tools . idea . ui builder . api . actions . View Action Ċ import Ġcom . android . tools . idea . ui builder . api . actions . View Action Menu Ċ import Ġcom . android . tools . idea . ui builder . handlers . View Editor Impl Ċ import Ġcom . android . tools . idea . ui builder . model . view Handler Ċ import Ġcom . android . tools . idea . ui builder . property . Nl Properties Model Ċ import Ġcom . android . tools . idea . ui builder . property . Nl Property Item Ċ import Ġcom . android . tools . property . panel . api . Inspector Builder Ċ import Ġcom . android . tools . property . panel . api . Inspector Panel Ċ import Ġcom . android . tools . property . panel . api . Properties Table Ċ import Ġcom . intellij . openapi . action System . Action Manager Ċ import Ġcom . intellij . openapi . action System . Action Places Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . action System . impl . ActionButton . HIDE _ DROP DOWN _ ICON Ċ import Ġjava . awt . Border Layout Ċ import Ġjavax . swing . JPanel Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ Inspector Builder ] Ġfor Ġthe Ġcomponent Ġactions Ġshown Ġon Ġtop Ġin Ġthe ĠNe le Ġinspector . Ċ Ġ*/ Ċ class ĠComponent Actions Inspector Builder ( private Ġval Ġmodel : ĠN l Properties Model ) Ġ: ĠIns pector Builder < Nl Property Item > Ġ{ ĊĊĠ Ġoverride Ġfun Ġattach To Inspector ( inspector : ĠIns pector Panel , Ġproperties : ĠProperties Table < Nl Property Item >) Ġ{ ĊĠĠĠ Ġval Ġsurface Ġ= Ġmodel . surface Ġ?: Ġreturn ĊĠĠĠ Ġval Ġselected Components Ġ= Ġsurface . selection Model . selection ĊĠĠĠ Ġif Ġ( selected Components . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Border Layout ()). apply Ġ{ ĊĠĠĠĠĠ Ġbackground Ġ= Ġsecondary Panel Background ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgroup Ġ= ĠDefault Action Group (" Property Panel Actions ", Ġfalse ) ĊĊĠĠĠ Ġval Ġprimary Ġ= Ġselected Components [ 0 ] ĊĠĠĠ Ġval Ġparent Actions Ġ= Ġprimary . parent ?. view Handler ?. getProperty Actions ( selected Components ) Ġ?: Ġempty List () ĊĠĠĠ Ġif Ġ( parent Actions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( action Ġin Ġparent Actions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup . add ( convertTo An Action ( action , Ġsurface , Ġselected Components )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( selected Components . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġchildren Actions Ġ= Ġselected Components [ 0 ]. view Handler ?. getProperty Actions ( selected Components ) Ġ?: Ġempty List () ĊĠĠĠĠĠ Ġif Ġ( children Actions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( parent Actions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠBoth Ġparent Ġand Ġchildren Ġactions Ġare Ġnot Ġempty ĊĠĠĠĠĠĠĠĠĠ Ġgroup . add Separator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġchildren Actions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġgroup . add ( convertTo An Action ( action , Ġsurface , Ġselected Components )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( group . children Count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġaction Manager Ġ= ĠAction Manager . getInstance () ĊĠĠĠĠĠ Ġval Ġtoolbar Ġ= Ġaction Manager . create Action Toolbar ( Action Places . UNKNOWN , Ġgroup , Ġtrue ) ĊĠĠĠĠĠ ĠAction Toolbar Util . make Toolbar Navig able ( toolbar ) ĊĠĠĠĠĠ Ġtoolbar . setTarget Component ( panel ) ĊĠĠĠĠĠ Ġpanel . add ( toolbar . component . apply Ġ{ Ġbackground Ġ= Ġsecondary Panel Background Ġ}, ĠBorderLayout . WEST ) ĊĠĠĠĠĠ Ġinspector . addComponent ( panel ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠconvertTo An Action ( view Action : ĠView Action , Ġsurface : ĠDesign Surface , Ġselected Component : ĠList < Nl Component >): ĠAn Action Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( view Action ) Ġ{ ĊĠĠĠĠĠ Ġis ĠView Action Menu Ġ-> ĠNo Arrow DropDown Button ( view Action , Ġsurface , Ġselected Component ) ĊĠĠĠĠĠ Ġis ĠDirect View Action Ġ-> ĠView Action Wrapper ( view Action , Ġsurface , Ġselected Component ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Un accept able ĠView Action Ġclass Ġ${ view Action :: java Class }") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠView Action Wrapper ( private Ġval Ġview Action : ĠView Action , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsurface : ĠDesign Surface , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġnl Components : ĠList < Nl Component >) ĊĠ Ġ: ĠAn Action ( view Action . label , Ġview Action . label , Ġview Action . icon ) Ġ{ ĊĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġif Ġ( nl Components . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġprimary Ġ= Ġnl Components [ 0 ] ĊĠĠĠ Ġval Ġscene Ġ= Ġsurface . scene Ġ?: Ġreturn ĊĠĠĠ Ġval Ġhandler Ġ= Ġprimary . view Handler Ġ?: Ġreturn ĊĠĠĠ Ġview Action . perform ( View Editor Impl ( primary . model , Ġscene ), Ġhandler , Ġprimary , Ġnl Components , Ġe . modifiers ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠNo Arrow DropDown Button ( menu : ĠView Action Menu , Ġsurface : ĠDesign Surface , Ġnl Components : ĠList < Nl Component >) ĊĠ Ġ: ĠDrop Down Action ( menu . label , Ġmenu . label , Ġmenu . icon ) Ġ{ ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġadd All ( menu . actions . map Ġ{ ĠView Action Wrapper ( it , Ġsurface , Ġnl Components ) Ġ}) ĊĠĠĠ Ġtemplate Presentation . put Client Property ( HIDE _ DROP DOWN _ ICON , Ġtrue ) ĊĠ Ġ} Ċ } Ċ