/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġ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 . structure Ċ Ċ import Ġcom . android . tools . adt ui . common . secondary Panel Background Ċ import Ġcom . android . tools . idea . res . RESOURCE _ ICON _ SIZE Ċ import Ġcom . android . tools . idea . ui builder . structure . Nl Visibility Model . Visibility Ċ import Ġcom . intellij . ide . ui . l af . dar cul a . Dar cul a UI Util Ċ import Ġcom . intellij . util . ui . Empty Icon Ċ import Ġcom . intellij . util . ui . JB Insets Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġicons . Studio Icons Ċ import Ġjava . awt . Alpha Composite Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . Graphics Ċ import Ġjava . awt . Graphics 2 D Ċ import Ġjava . awt . Rectangle Ċ import Ġjava . awt . Rendering Hints Ċ import Ġjava . awt . geom . Round Rectangle 2 D Ċ import Ġjavax . swing . Border Factory Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . JButton Ċ Ċ /** Ċ Ġ* ĠButton Ġthat Ġpaint s Ġviews Ġvisibility Ġusing ĠStudio Icons . Ċ Ġ*/ Ċ class ĠN l Visibility Button : ĠJButton () Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠP ADDING _ X Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġconst Ġval ĠP ADDING _ Y Ġ= Ġ 4 ĊĠĠĠ Ġconst Ġval ĠWIDTH Ġ= ĠN l Visibility G utter Panel . WIDTH Ġ- ĠP ADDING _ X ĊĠĠĠ Ġconst Ġval ĠHEIGHT Ġ= ĠRESOURCE _ ICON _ SIZE Ġ+ ĠP ADDING _ Y ĊĠ Ġ} ĊĊĠ Ġ// ĠUsed Ġfor Ġpaint ing Ġinner Ġbackground Ġwhen Ġclicked . ĊĠ Ġprivate Ġval Ġin sets Ġ= ĠJ B Insets . create ( 1 , Ġ 2 ) ĊĊĠ Ġvar Ġvisibility : ĠVisibility ? Ġ= Ġnull ĊĠ Ġvar Ġis Clicked Ġ= Ġfalse ĊĠ Ġvar Ġis Hover ed Ġ= Ġfalse ĊĠ Ġvar Ġnormal Icon : ĠIcon Ġ= ĠEmpty Icon . ICON _ 1 6 ĊĠ Ġvar Ġhover ed Icon : ĠIcon Ġ= ĠEmpty Icon . ICON _ 1 6 ĊĠ Ġvar Ġclicked Icon : ĠIcon Ġ= ĠEmpty Icon . ICON _ 1 6 ĊĠ Ġvar Ġupdate Bg When Hover ed Ġ= Ġfalse ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġbackground Ġ= Ġsecondary Panel Background ĊĠĠĠ Ġpreferred Size Ġ= ĠDimension ( WIDTH , ĠHEIGHT ) ĊĊĠĠĠ Ġ// ĠThese Ġare Ġrequired Ġto Ġremove Ġblue Ġborder Ġwhen Ġclicked . ĊĠĠĠ Ġborder Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠ Ġis Border Paint ed Ġ= Ġfalse ; ĊĠĠĠ Ġis Focus Paint ed Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate ( presentation : ĠButton Presentation ) Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= Ġpresentation . visibility ĊĠĠĠ Ġthis . is Clicked Ġ= Ġpresentation . is Clicked ĊĠĠĠ Ġthis . is Hover ed Ġ= Ġpresentation . is Hover ed ĊĠĠĠ Ġthis . normal Icon Ġ= Ġpresentation . icon ĊĠĠĠ Ġthis . hover ed Icon Ġ= Ġpresentation . hover Icon ĊĠĠĠ Ġthis . clicked Icon Ġ= Ġpresentation . click Icon ĊĠĠĠ Ġthis . update Bg When Hover ed Ġ= Ġpresentation . update Bg When Hover ed ĊĠĠĠ Ġtool Tip Text Ġ= Ġpresentation . hint ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpaint Component ( g : ĠGraphics ?) Ġ{ ĊĠĠĠ Ġval Ġg Ġ= Ġg Ġas ĠGraphics 2 D ĊĠĠĠ Ġif Ġ( is Clicked ) Ġ{ ĊĠĠĠĠĠ Ġpaint Background ( g , ĠJ BU I . Current Theme . ActionButton . pressed Background ()) ĊĠĠĠĠĠ Ġpaint Icon On Center ( g , Ġclicked Icon ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( is Hover ed ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( update Bg When Hover ed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpaint Background ( g , ĠJ BU I . Current Theme . ActionButton . hover Background ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġpaint Icon On Center ( g , Ġhover ed Icon ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġpaint Icon On Center ( g , Ġnormal Icon ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġpaint Icon On Center ( g : ĠGraphics 2 D , Ġicon : ĠIcon ) Ġ{ ĊĠĠĠ Ġval Ġx Ġ= Ġwidth Ġ/ Ġ 2 Ġ- Ġicon . icon Width Ġ/ Ġ 2 ĊĠĠĠ Ġval Ġy Ġ= Ġheight Ġ/ Ġ 2 Ġ- Ġicon . icon Height Ġ/ Ġ 2 ĊĠĠĠ Ġicon . paint Icon ( this , Ġg , Ġx , Ġy ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġpaint Background ( g : ĠGraphics 2 D , Ġbg Color : ĠColor ) Ġ{ ĊĠĠĠ Ġval Ġrect Ġ= ĠRectangle ( size ) ĊĠĠĠ ĠJ B Insets . remove From ( rect , Ġin sets ) ĊĊĠĠĠ Ġval Ġg 2 Ġ= Ġg . create () Ġas ĠGraphics 2 D ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġg 2 . set Rendering Hint ( Rendering Hints . KEY _ ANTI ALIAS ING , ĠRendering Hints . VALUE _ ANTI ALIAS _ ON ) ĊĠĠĠĠĠ Ġg 2 . set Rendering Hint ( Rendering Hints . KEY _ ST RO KE _ CONTROL , ĠRendering Hints . VALUE _ ST RO KE _ NORMAL IZE ) ĊĠĠĠĠĠ Ġg 2 . color Ġ= Ġbg Color ĊĠĠĠĠĠ Ġval Ġarc Ġ= ĠDar cul a UI Util . BUTTON _ ARC . float ĊĠĠĠĠĠ Ġg 2 . fill ( Round Rectangle 2 D . Float ( rect . x . toFloat (), Ġrect . y . toFloat (), Ġrect . width . toFloat (), Ġrect . height . toFloat (), Ġarc , Ġarc )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfinally Ġ{ ĊĠĠĠĠĠ Ġg 2 . dispose () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPresentation Ġfor Ġthe Ġ[ Nl Visibility Button ] Ċ Ġ*/ Ċ class ĠButton Presentation Ġ{ ĊĊĠ Ġ// ĠThe Ġvisibility Ġthis Ġitem Ġrepresents . Ġnull Ġif Ġit Ġrepresents ĊĠ Ġ// Ġnon - view Ġor Ġrefer ent Ġitem . ĊĠ Ġvar Ġvisibility : ĠVisibility ? Ġ= Ġnull ĊĠ Ġ// ĠTrue Ġif Ġthis Ġitem Ġrepresents ĠTools Ġattribute . ĊĠ Ġ// ĠFalse Ġif Ġit Ġrepresents Ġandroid Ġattribute . ĊĠ Ġvar Ġis Tools Attr : ĠBoolean Ġ= Ġfalse ĊĠ Ġ// ĠTrue Ġif Ġvisibility . none Ġshould Ġhide Ġicon . ĠFalse Ġotherwise . ĊĠ Ġvar Ġhide None : ĠBoolean Ġ= Ġfalse ĊĊĠ Ġvar Ġmodel : ĠN l Visibility Model ? Ġ= Ġnull ĊĠ Ġ// ĠNormal ĠIcon ĊĠ Ġvar Ġicon : ĠIcon Ġ= ĠEmpty Icon . ICON _ 1 6 ĊĠ Ġvar Ġhover Icon : ĠIcon Ġ= ĠEmpty Icon . ICON _ 1 6 ĊĠ Ġvar Ġclick Icon : ĠIcon Ġ= ĠEmpty Icon . ICON _ 1 6 ĊĊĠ Ġvar Ġis Clicked Ġ= Ġfalse ĊĠ Ġvar Ġis Hover ed Ġ= Ġfalse ĊĠ Ġvar Ġhint Ġ= Ġ"" ĊĠ Ġvar Ġupdate Bg When Hover ed Ġ= Ġfalse ĊĊĠ Ġconstructor () ĊĊĠ Ġconstructor ( model : ĠN l Visibility Model ) Ġ{ ĊĠĠĠ Ġthis . model Ġ= Ġmodel ĊĠĠĠ Ġthis . visibility Ġ= Ġmodel . getCurrent Visibility () ĊĠĠĠ Ġthis . is Tools Attr Ġ= Ġmodel . is Tools Attr Available () ĊĠĠĠ Ġthis . hide None Ġ= Ġtrue ĊĠĠĠ Ġupdate () ĊĠ Ġ} ĊĊĠ Ġconstructor ( visibility : ĠVisibility , Ġis Tools Attr : ĠBoolean ) Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= Ġvisibility ĊĠĠĠ Ġthis . is Tools Attr Ġ= Ġis Tools Attr ĊĠĠĠ Ġthis . hide None Ġ= Ġfalse ĊĠĠĠ Ġupdate () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠ Ġwhen Ġ( visibility ) Ġ{ ĊĠĠĠĠĠ ĠVisibility . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hide None ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġhover Icon Ġ= ĠAlpha Icon ( Studio Icons . Layout Editor . Properties . VISIBLE , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠ Ġclick Icon Ġ= ĠStudio Icons . Layout Editor . Properties . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠStudio Icons . Common . REMOVE ĊĠĠĠĠĠĠĠĠĠ Ġhover Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠĠĠ Ġclick Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" Visibility Ġnot Ġset " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠVisibility . VISIBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġif Ġ( is Tools Attr ) ĊĠĠĠĠĠĠĠĠĠ ĠStudio Icons . Layout Editor . Properties . VISIBLE _ TOOLS _ ATTRIBUTE Ġelse ĊĠĠĠĠĠĠĠĠĠ ĠStudio Icons . Layout Editor . Properties . VISIBLE ĊĠĠĠĠĠĠĠ Ġhover Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġclick Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" visible " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠVisibility . IN VISIBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġif Ġ( is Tools Attr ) ĊĠĠĠĠĠĠĠĠĠ ĠStudio Icons . Layout Editor . Properties . IN VISIBLE _ TOOLS _ ATTRIBUTE Ġelse ĊĠĠĠĠĠĠĠĠĠ ĠStudio Icons . Layout Editor . Properties . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġhover Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġclick Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" invisible " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠVisibility . GONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġif Ġ( is Tools Attr ) ĊĠĠĠĠĠĠĠĠĠ ĠStudio Icons . Layout Editor . Properties . GONE _ TOOLS _ ATTRIBUTE Ġelse ĊĠĠĠĠĠĠĠĠĠ ĠStudio Icons . Layout Editor . Properties . GONE ĊĠĠĠĠĠĠĠ Ġhover Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġclick Icon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" g one " ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠApply Ġalpha Ġto Ġthe Ġexisting Ġicon . Ċ Ġ* Ġ@ param Ġalpha Ġ[ 0 . 0 : 1 . 0 ] Ġwhere Ġ 0 Ġis Ġfully Ġtransparent . Ċ Ġ*/ Ċ class ĠAlpha Icon ( ĊĠ Ġprivate Ġval Ġstudio Icon : ĠIcon , ĊĠ Ġvar Ġalpha : ĠFloat Ġ= Ġ 1 . 0 f ) Ġ: ĠIcon Ġ{ ĊĊĠ Ġoverride Ġfun Ġget Icon Height (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġstudio Icon . icon Height ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Icon Width (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġstudio Icon . icon Width ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpaint Icon ( c : ĠComponent ?, Ġg : ĠGraphics ?, Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( g Ġ== Ġnull ) Ġ{ Ġreturn Ġ} ĊĠĠĠ Ġval Ġg Ġ= Ġg . create () Ġas ĠGraphics 2 D ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġg . composite Ġ= ĠAlpha Composite . Src Over . derive ( alpha ) ĊĠĠĠĠĠ Ġstudio Icon . paint Icon ( c , Ġg , Ġx , Ġy ) ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠ Ġg . dispose () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ