/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . cargo . project Ċ Ċ import Ġcom . intellij . openapi . action System . Action Manager Ċ import Ġcom . intellij . openapi . action System . Action Toolbar Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Simple Tool Window Panel Ċ import Ġcom . intellij . openapi . wm . Tool Window Ċ import Ġcom . intellij . openapi . wm . Tool Window Factory Ċ import Ġcom . intellij . ui . Color Util Ċ import Ġcom . intellij . ui . Colo red List Cell Renderer Ċ import Ġcom . intellij . ui . JB Color Ċ import Ġcom . intellij . ui . Simple Text Attributes Ċ import Ġcom . intellij . ui . components . JB List Ċ import Ġcom . intellij . ui . content . Content Factory Ċ import Ġcom . intellij . ui . layout . CC Flags Ċ import Ġcom . intellij . ui . layout . panel Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġorg . rust . cargo . icons . Cargo Icons Ċ import Ġorg . rust . cargo . project . model .* Ċ import Ġorg . rust . cargo . project . model . Cargo Project . Update Status Ċ import Ġjavax . swing . J Editor Pane Ċ import Ġjavax . swing . J List Ċ import Ġjavax . swing . List Selection Model ĊĊ Ċ class ĠC argo Tool Window Factory Ġ: ĠTool Window Factory Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Tool Window Content ( project : ĠProject , Ġtool Window : ĠTool Window ) Ġ{ ĊĠĠĠĠĠĠĠ Ġguess And Setup Rust Project ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġtool window Panel Ġ= ĠC argo Tool Window Panel ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġtab Ġ= ĠContent Factory . SERVICE . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Content ( tool window Panel , Ġ"", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtool Window . content Manager . add Content ( tab ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠC argo Tool Window Panel ( project : ĠProject ) Ġ: ĠSimple Tool Window Panel ( true , Ġfalse ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcargo Tab Ġ= ĠC argo Tool Window ( project ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Toolbar ( cargo Tab . toolbar . component ) ĊĠĠĠĠĠĠĠ Ġcargo Tab . toolbar . setTarget Component ( this ) ĊĠĠĠĠĠĠĠ Ġset Content ( cargo Tab . content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetData ( data Id : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Detach Cargo Project Action . C ARG O _ PROJECT _ TO _ DET ACH .` is `( data Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcargo Tab . selected Project ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getData ( data Id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠC argo Tool Window ( ĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ cargo Projects : ĠList < Cargo Project > Ġ= Ġempty List () ĊĠĠĠ Ġprivate Ġvar Ġcargo Projects : ĠList < Cargo Project > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ cargo Projects ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( Application Manager . getApplication (). is Dispatch Thread ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cargo Projects Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject List . set List Data ( cargo Projects . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtoolbar : ĠAction Toolbar Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Manager Ġ= ĠAction Manager . getInstance () ĊĠĠĠĠĠĠĠ Ġaction Manager . create Action Toolbar (" Cargo ĠToolbar ", Ġaction Manager . getAction (" Rust . Cargo ") Ġas ĠDefault Action Group , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnote Ġ= ĠJ Editor Pane (" text / html ", Ġhtml (" ")). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġbackground Ġ= ĠUI Util . get Tree Background () ĊĠĠĠĠĠĠĠ Ġis Editable Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġproject List Ġ= ĠJ B List < Cargo Project >( emptyList ()). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġempty Text . text Ġ= Ġ" There Ġare Ġno ĠC argo Ġprojects Ġto Ġdisplay ." ĊĠĠĠĠĠĠĠ Ġselection Mode Ġ= ĠList Selection Model . SINGLE _ SELECTION ĊĠĠĠĠĠĠĠ Ġcell Renderer Ġ= Ġobject Ġ: ĠCo lo red List Cell Renderer < Cargo Project >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcustomize Cell Renderer ( list : ĠJ List < out ĠC argo Project >, Ġvalue : ĠC argo Project , Ġindex : ĠInt , Ġselected : ĠBoolean , Ġhas Focus : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠC argo Icons . ICON ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġattrs Ġ= ĠSimple Text Attributes . REG ULAR _ ATTRIBUTES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġvalue . merged Status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUpdate Status . Update Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ= Ġattrs . derive ( Simple Text Attributes . STYLE _ W AV ED , Ġnull , Ġnull , ĠJ B Color . RED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= Ġstatus . reason ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUpdate Status . Needs Update Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ= Ġattrs . derive ( Simple Text Attributes . STYLE _ W AV ED , Ġnull , Ġnull , ĠJ B Color . GRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= Ġ" Project Ġneeds Ġupdate " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUpdate Status . Up ToDate Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= Ġ" Project Ġis Ġup - to - date " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( value . present able Name , Ġattrs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġselected Project : ĠC argo Project ? Ġget () Ġ= Ġproject List . selected Value ĊĊĠĠĠ Ġval Ġcontent Ġ= Ġpanel Ġ{ ĊĠĠĠĠĠĠĠ Ġrow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject List ( CC Flags . push , ĠCC Flags . grow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( project . message Bus . connect ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe ( Cargo Projects Service . C ARG O _ PROJECT S _ TOPIC , Ġobject Ġ: ĠC argo Projects Service . Cargo Projects Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcargo Projects Updated ( projects : ĠCollection < Cargo Project >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcargo Projects Ġ= Ġprojects . sorted By Ġ{ Ġit . manifest Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcargo Projects Ġ= Ġproject . cargo Projects . all Projects . sorted By Ġ{ Ġit . manifest Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Cargo Tool Window ( workspaces Ġ= Ġ$_ cargo Projects )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhtml ( body : ĠString ): ĠString Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġ< html > ĊĠĠĠĠĠĠĠ Ġ< head > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ UI Util . getC ss Font Declaration ( UI Util . getLabel Font ()) } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< style > body Ġ{ background : Ġ# ${ Color Util . to Hex ( UI Util . get Tree Background ()) }; Ġtext - align : Ġcenter ; Ġ}</ style > ĊĠĠĠĠĠĠĠ Ġ</ head > ĊĠĠĠĠĠĠĠ Ġ< body > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ body ĊĠĠĠĠĠĠĠ Ġ</ body > ĊĠĠĠĠĠĠĠ Ġ</ html > ĊĠĠĠ Ġ""" Ċ } Ċ