From 19f96849abc6943351e6b428a928c45f70eb93d3 Mon Sep 17 00:00:00 2001 From: Vassiliy Date: Fri, 25 Apr 2014 14:22:07 +0400 Subject: [PATCH] Start plugins wizard #20 icons for categories --- community-resources/src/plugins/Android.png | Bin 0 -> 1610 bytes .../src/plugins/Android@2x.png | Bin 0 -> 3137 bytes .../src/plugins/ApplicationServers.png | Bin 0 -> 429 bytes .../src/plugins/ApplicationServers@2x.png | Bin 0 -> 908 bytes .../src/plugins/BuildTools.png | Bin 0 -> 1086 bytes .../src/plugins/BuildTools@2x.png | Bin 0 -> 2744 bytes community-resources/src/plugins/Clouds.png | Bin 0 -> 2100 bytes community-resources/src/plugins/Clouds@2x.png | Bin 0 -> 4545 bytes .../src/plugins/DatabaseTools.png | Bin 0 -> 1936 bytes .../src/plugins/DatabaseTools@2x.png | Bin 0 -> 3661 bytes .../src/plugins/JavaFrameworks.png | Bin 0 -> 2155 bytes .../src/plugins/JavaFrameworks@2x.png | Bin 0 -> 4711 bytes .../src/plugins/OtherTools.png | Bin 0 -> 2344 bytes .../src/plugins/OtherTools@2x.png | Bin 0 -> 5449 bytes .../src/plugins/PluginDevelopment.png | Bin 0 -> 1633 bytes .../src/plugins/PluginDevelopment@2x.png | Bin 0 -> 3271 bytes community-resources/src/plugins/Swing.png | Bin 0 -> 711 bytes community-resources/src/plugins/Swing@2x.png | Bin 0 -> 1226 bytes community-resources/src/plugins/TestTools.png | Bin 0 -> 711 bytes .../src/plugins/TestTools@2x.png | Bin 0 -> 1503 bytes .../src/plugins/VersionControls.png | Bin 0 -> 967 bytes .../src/plugins/VersionControls@2x.png | Bin 0 -> 2013 bytes .../src/plugins/WebDevelopment.png | Bin 0 -> 2247 bytes .../src/plugins/WebDevelopment@2x.png | Bin 0 -> 5416 bytes .../customize/CustomizePluginsStepPanel.java | 29 ++++---- .../src/com/intellij/ide/customize/IdSet.java | 2 +- .../intellij/ide/customize/PluginGroups.java | 63 +++++++++--------- 27 files changed, 48 insertions(+), 46 deletions(-) create mode 100644 community-resources/src/plugins/Android.png create mode 100644 community-resources/src/plugins/Android@2x.png create mode 100644 community-resources/src/plugins/ApplicationServers.png create mode 100644 community-resources/src/plugins/ApplicationServers@2x.png create mode 100644 community-resources/src/plugins/BuildTools.png create mode 100644 community-resources/src/plugins/BuildTools@2x.png create mode 100644 community-resources/src/plugins/Clouds.png create mode 100644 community-resources/src/plugins/Clouds@2x.png create mode 100644 community-resources/src/plugins/DatabaseTools.png create mode 100644 community-resources/src/plugins/DatabaseTools@2x.png create mode 100644 community-resources/src/plugins/JavaFrameworks.png create mode 100644 community-resources/src/plugins/JavaFrameworks@2x.png create mode 100644 community-resources/src/plugins/OtherTools.png create mode 100644 community-resources/src/plugins/OtherTools@2x.png create mode 100644 community-resources/src/plugins/PluginDevelopment.png create mode 100644 community-resources/src/plugins/PluginDevelopment@2x.png create mode 100644 community-resources/src/plugins/Swing.png create mode 100644 community-resources/src/plugins/Swing@2x.png create mode 100644 community-resources/src/plugins/TestTools.png create mode 100644 community-resources/src/plugins/TestTools@2x.png create mode 100644 community-resources/src/plugins/VersionControls.png create mode 100644 community-resources/src/plugins/VersionControls@2x.png create mode 100644 community-resources/src/plugins/WebDevelopment.png create mode 100644 community-resources/src/plugins/WebDevelopment@2x.png diff --git a/community-resources/src/plugins/Android.png b/community-resources/src/plugins/Android.png new file mode 100644 index 0000000000000000000000000000000000000000..9d55c0e3409c997b45429385427321e641c0b469 GIT binary patch literal 1610 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 Eg2h7n(EtDd literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/BuildTools@2x.png b/community-resources/src/plugins/BuildTools@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd58cfeab83b62929415ce3f53fb575fc54ed04 GIT binary patch literal 2744 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 literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/JavaFrameworks.png b/community-resources/src/plugins/JavaFrameworks.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba077ca27ca51613517e26b997c0faa5543f86a GIT binary patch literal 2155 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 literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/OtherTools.png b/community-resources/src/plugins/OtherTools.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb7ae56774c2f4c32c17057349b9b8c614e133c GIT binary patch literal 2344 zcmV+@3D@?CP) zeBb-M@Asakp8Ef51HU5lHb1Brx(B_o@eJhKz80B3B#{MB{*WCeezBnpq!gJyv;E~9 ziPZH=O!0_B8HVlQ8)YUi`T>BpMr60ijvt?uxI&A>m0pynf?@mqJnM;d4IiendX5{r71G+Xx?yj1yHfB5@UCa=7-A9K+~;w{t;GbYEL|sq5P2br&+h zIRhVqfkwhdVANxgC0WS zq?~2L@5wg#!9ZPz13nfZlZa72+H^&Zwa&?Lz^8UxmE&#mI5zXl65ziHT`4Rql*YzJ z>FVkdlgT6&i$!cUn^>(@DK0K1ykXh!L767MJ=p_BgpNcMsPNO0tiaDpYTH$1^cDEV zE1Z=t`w0Iz=vH%cvjW=F(<7~|t!q%)PEkusivnL-T1xmDhS;*< zcW3m4WAyEzc{YhgPCr;ZB}ol4auhM23?O=8T~BN?-}<|*ct#%4r9R{LFmwcs}48JJUnO|{~-GsZa?Wq|5lKOOjA`SrY4K+zIg0Cjs0>_^GKW>Fw>MiFcsq zy#PF<0nPwNp6?7RD8L8!&qIIVAb3ulIRo?R=pV%5gn>7qQ0Qss3(#wjHKArY383wc zkyo2zW=8r_+A7uw>@Kz@GyBNL9ipYH+w)6gGSGdO!*4TR`y52H)QB(8GmBbeB> z*tAwxS7)cEr+YK8)dl9A!NEbLfblvvCJLRi5I%2)uG28DThu_9e&}vA@_tOkM7OV5 z3nntXn79pXa{{`_G|EumHI!bjSBjZa1uk=JH8w%BtQ)FnUktnvRf49ZtQ!tL-^#~HGw{=7mjy%|3F#Oz7>j(bq zysHUjCwv}+UdYJJdj+5m%x1F^HiRR%ClkC6;dw8nUB0t|!@!?CuK}$sHB3KzYq>=b zP-mS@K)q1lIZghr5bt&ZaP!8(Rasf7fN3-uwa^Sf&x3k#u=VsnDq7aDPh6wG=IZU=R$QBnc2_o(0PlzPr0yv|8;4fchi!F7ywVhKBmcQLXuU_KCpbkA4k!@dVEidp{~{&%y(OG(4tRz(a#$PYUoGP?4jT z9f$IuuRG42=4g9^=UM>#2PchvnMrk*)8fj8Za-DY*A7zQjz{LJjZRHwo-gxtaBXte)4Sv_zb{d5}o>KklJ*{UX>>pOrg{C>Sn z*pKYVGQGAI22L@RG3^nCDUPtnB8mvj?*t}zMn=Zt@VT15yl%+om2720bXGxMF6hro1JnEbR?EPj2*fbqXybboK=086*91)voV!O> zPa0*2;dgI2_p#`&Gu`#qM-WPhcvKmOXRDD#7leH|`f~|P?`_z1zSn;>4BVjsE>3)Y z)p2Yupzk`H$jZu6w#EFdqX_+16OKN+z+Ios{`(LXH9NuxJUrf~waD(weu06mo#%Q2 zR%$?P|6X@F9t;!jv#N6QMHAfTI5jEBuJ?+szT}72w9H+<%|0CG+;*C>&hiazl6KXGut8g6a zfthJc_UFR{9 z7Bx(S!bA`<6V}50wSwQl2e-^T>L!jRaO`)BU3;KxJOHCT%%>r);w*4IL>7%I>2-HT zf9qPnM>88Sd{~v$>g-s=KlSAv(PiVCVk#ylVk-&#xNux>9#0HMMzN?jtv39Lyu7@B zGnF#t3D1;@{gHjC&-f3N!bJJRl~@3~DyD2=1pWHQR~!CS$nMBc|8f+qIj8{Ix}1CB zxzuKa)O8pURro%F#r$NNnbmkj6_0%?x^#T_K-t87ytm=|#)1Ezd;JI1;XM{s6ZM+_ O0000Z-+_% literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/OtherTools@2x.png b/community-resources/src/plugins/OtherTools@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fa3b2021761aa80e25713b38679d0d4e0ada554e GIT binary patch literal 5449 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 literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/PluginDevelopment.png b/community-resources/src/plugins/PluginDevelopment.png new file mode 100644 index 0000000000000000000000000000000000000000..68a4a9ccf205deaed63a97947272fe1ec7aca82a GIT binary patch literal 1633 zcmV-n2A=teP)EmTB71EOM33YZww3mV8jR9d5VfZ$iq#26App+HNc zU~l}OmR4&dh{g-4P(&fb1dxwXZA%G6OZci-?0)Zz@9dstyUDiBEL++pzR8nwF_64Z z&+nWAl`zXQ;{;k-TFSZnj4UUOtsUY3toycYh>31M7Bg-er0`hdG3zU;f zqWt*mCEtJJBNV#dp>jDvwvp?khP*_cjFfMmsQlMR6Tur7C>iXilO(AXk_0=JXRNF`G@Ov|z*h6^nJ6>^xUS(3 z>%6Mc;n%fh!_a=A`n(s}zcNmNNH~UQG>$|(Bk`)dHXwFjk(=@&7s$q<3Iqn)D>*V( zR8=YS8ybv&|Cpw!&5}pzP9~C-(MTNO(dd}OUu}v1RMZ+m;s^Q43#nts%_H&&@}Ot} z!GY6dEPsu2zu4>Z!bkjmA5@>(sCeb$JO~##K1*^W63JT`iO)sFNVqOv6ak~ZO_DwG zd5+FTySPeZ*^@z0;PuLlvLZLZf-SK$8i^qsrbHwyafcEc06fFEj8^WLsQh{|Sj=mb zqjP$ns(KqVzYl)h2Z}%fz+&M1r$x96O|mQ>6B1P!3HwaM>~XqlnpX9gM0m-LuX1Ue zynK-a0)1^&idVVC;;L?F>9OG$v8RP(B4uBnl(2+^(!}*BKXs3n5ND!?!qwrWbzuOv z$-5^hUp#@({r2DTy8N_VUe`770K>zw>pQP z(>-fYNOZ&3%kouR!9$!bmM0mB@#AEUNhp-?90Jngw0uk=mL8{+V+rXedp?9hGN&{U zGXk2*pMLt_il4p%2~$W&wnQ@}z6am}zr8Ob5f>84zYB?>$pyZ&8g8R$zIlOw_KX7Q zM~jabL>x$@a(BWjH*>Wmy7+B{T|S)Mi9R9m&j|&7yxYBip=%2RLI1woJ-@Ar*b<|$Rsf&RE6}-bEnG)JeK4q<(i{jll}J#+%1V5L63wu% zB_2;&qoc8N0HS%TocY!|xXH-K=xSZ}{h5bY)ikeT0p~jb-fGe?fVaUxq~9If05^I5 z^xwO5T|JS0fwk-dRxAmgix<3gw%g~xk-%^Ee;jV|@?|(==)TK_;aj1m-v9~4h-s!J z201dH%Kp~D$qpQ-hMPPp+bX|f=;x)pLeG1>@(0BmP>fx;M1i*eJb{ZyT@9PyGy|b6 zo4Nd&Tq%hSd~tr_b~^>u;PsMV`Tg911^^~pM*2g;MmR}-s7B$^ODd4bolyM2mie(8 zrzo)&h2DBHksBW_O$>HYV(iz4b>tq=iA-LR5%L_4Q~Vw1;xf@6e*fa(U-s}u zS}(?I2yZA-*P-hFeRxZ^2DzljS@KC_^NbuMCy0q@h|~X4-X)(QkIApdyGRRZBcl+R z$pQmJA)84L+-KSa4v=q)8>C*`9?97xpp!20Q8>>Na*Z^R%hM_#;wRrEwPX>I;Vdaq zL(WaFfcwlRJH_bTA}eQ=fQUvSBu2E^CZLN0|3flJ%BNbu!qjCaX_;*T!{jD8NzP9H fEi^UxzrcS1`N)&f#C?`g00000NkvXXu0mjfT0RoI literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/PluginDevelopment@2x.png b/community-resources/src/plugins/PluginDevelopment@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f02ae30b598d52369ea4a7782cbef193adbd1cea GIT binary patch literal 3271 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 literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/Swing@2x.png b/community-resources/src/plugins/Swing@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a0712688ac8c8b6a07469bb8ebe2ff22a6f8db31 GIT binary patch literal 1226 zcmV;*1U37KP)?yf;6g(SbZ+i6)NI)Ej!UVG3 zgn%9*Lti11Ot?}-2sJEEnvbnaPjXuyB7|>-+kra78U(Z?3!>b^qL@WN!SKBo<9xU+}!-c z0!-=KA5OHRz)dtTmH+*22-`sQK&It^%R>H#OwoY?6d@O2+65sOAnyY10D?P!Z^A)$ zz{i2PqS0KoSji5cy_FTd_O)uPhch8}3G%)F0wNP~|vj9)DDIvjqq^Z{z&>!@i zz_}<}g6V+S;Lgs@oVvfK1&Hy>18EGyVcH1JfpZZ-72xp#1-MUPO4ky2YJCXn8_nPx zI2RH8dw>G>QKmTVLz2dj4wFW34xEcB33q@H5%l^I^!uU_oI{9Hg6{x18yt;Bb87w` zBTY&vP|^`~T1mJA=z=*G_M31UPeDpbSf-M22S_FHI;6>FEOUha9^gE*0|2kzjsR5} zz6VGN;Nnu#flJU-%LuiEryylgAVDcd;Ixu(2Y|~P?gAy@&w@^_-O>?tN@@5#K*BPG z{~q8pmJU!(-hu<{0PX<(EXey)5O)AL{Okv);5$GazWmOXOY}Y9=Qqb&cV54~b^Fy( zBRGei>%0agoy!(cEgm``G&I4#2ZScr0zAD`HEN2Xif zemD6Ke`?Bf{ow3X3sn;=B5VUqBc)s^zIK1XbJp4|rD=+ySSh}Cf5CIs+AXDN@;rwu z%e=sIQ@(b8!E@HyEyW&C61Ai332$M*n^{{nEh09=64 zXw(KSz-opI;P@CX7P7k o;11wR5QhuE1>kT2xB#4g0qu%nHX9})LI3~&07*qoM6N<$g86qn*#H0l literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/TestTools.png b/community-resources/src/plugins/TestTools.png new file mode 100644 index 0000000000000000000000000000000000000000..9d79fa47ea6b91fc35818381607cfcc17cf5809b GIT binary patch literal 711 zcmV;&0yzDNP)F$QWJLSV?yQf-r>8)YMwvLKUHJA?qaF1&AU8aS{`xSJBVH15B3zk_gf~AxP^g z;3|pVDb(U6i`&35&hr!s0_uH&^r|XA2?QMms45GRm5os`fk=A|;2J+(TgckK53ir; zwgShH)-BmST?VMEq|KY9-@gZJT`i9G)q=(L3-Eh^yoRlwNE#Cyy$?9`X<|$SveP!P+1Xke7Zu`a^t|f6;rSWZoe+k$ZkU t`YA-|uOOSuRpizG;TitXJp>p6`~e)i@o&11R2%>R002ovPDHLkV1mB)Jiq_| literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/TestTools@2x.png b/community-resources/src/plugins/TestTools@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..95af9f268ef43e742ac61c83e2e14e6b7b57c987 GIT binary patch literal 1503 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 literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/VersionControls@2x.png b/community-resources/src/plugins/VersionControls@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..427637d7848bed3db2ef329e52a8c2e78ca387d2 GIT binary patch literal 2013 zcmV<32O{{1P)9q3n@iq2wT#)o3&fp+@AmVAG}WYoOAEF=iJ#l_Z)a&nYnjn zcz)OO@;}ePDN|f?%{A9tb4}6O+uOY$sqTBSd;80fC(#Dyu0;S0;Z+5MXPv`#0W?6{ zBmhcKn{(L`03U=s3JA-c(*dooudk)Ev(xMD?)G|nd&{D~J32Z%dM^TmM(B_P!UVL$ zIew-2txys21iC=iM1=5;1j66YBIo>N^Gg!*D=I~V&;%WmKp2M}&ARzHe!9JoqHFUJ zAY2W7Ac1fZdML{Px+0igQFoN@fWgzD4j8iHy=1|~l*06;ngH5q`gfQxh@2q&o0 znpFS|&|wLL9VUJU41NR}lR$V6nwB{L3}HI-g#^M%Ll7S0Jp&Ph!?f{}IRFe{7BnmX zFb>T(1fi9;Fhvmd(mr(N05F94Y<3U?f-}nygk?bxRu*=6t6$mcJ-xO6{4=i~8eA>?>576gD6ZwpQQKJMSWi0ZC; z01V-7E=vSKpfbi>0{{jz01RaU07F>H1-c*zvG)*orV|ywcxC`FgdWLw5Ni)X6ToQJ z05r1EA_zT6c0m}lf5;R7hS1Dij?p~?ok19jwTVn(FPDlG7l=l#Jt$Wwo|I+b_@jT0_zY6_(kV1rk zCr1R*b~>5|*{A@9;sW5}ohl4m`v|1%bTrHy(*Q7T0suo$g@J1ufwY~D)&wwW3IIdM zDZ;?Di$H32L4%gNph1%W7=kJcT$>1Fy$-^H4INb&IQa-<)O57QG&FB(8X6S|$s{V*W@}^Z&OHqZKeO#8jyW z4g>!>sUnb~bhK_UE&xJ{zZkcF<8l1`ez`ywwis7c4=Tn5MkgWiA5k&0KiHr0tP><2m>b*flL7aYpIA3 zVc_l7A*29+)l`H(3|z^cQi=QWK12Vo)$D1V0*I7~fcZ~gGw0u$WKZj~3mS~_8%@r# z+#nn=nrLH|Rc`?DHVvwI_B3k?u_R|%bpwEnlBOc~y;hCSt!?%+EdT*I4JNx)WNVtMY^G1hRJZC)d6Mp?eBeS%kcuEv*<6|V z1m`B3>kO6oR!+$H%%^Nn(ZmTEUp+{big+Am^>DW$Gk-62Pqr6&D)Unl%!+bEiDokr z<7psXkV%BeL2V4uY#fyv)=~MP7R5dhfK;83(JU8}Y3HB?wXC+91W>aRGMWG;sMH+7?5Q!< z8B>$&f@*d`#@3c045TURDD)LHCoBNEmhYi^m$*S#vtAGLe)buB8k(sBK-ciKmDkVe z07%sd8C$6cm{+Va`6SdNSwl4OHU8I%ZXu>wuZMYs0F(Dg00h0aInH35suMD%QxPz) zG2n@gqLY;hYV2ZM8cxUr7UN>p>tSFsG^AlZ-DBopUzSr5zOwaj1oMaevnB_?z(NW4 z&x8I9VLn|m&uz$9SgGPOmMO~E^xiVJBWAHwfX`Vk0q~;RlC%$iGDH0VpWh#)pyvR@ vgFp+eL(nfQ`nx{=`xMt)bImo^thE0Cy?%{hVNUiN00000NkvXXu0mjfnUjRN literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/WebDevelopment.png b/community-resources/src/plugins/WebDevelopment.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e7430921dee689a1af10b4e6de1d0e3ea73372 GIT binary patch literal 2247 zcmV;&2srnNP){Ox*uk({FsD&);?Y(+A*;{)C7}q$a|RDkT!@TT$Ft zhN_l)G~dre!@VqA$!enzM>R*}L&x|C0L*wdBK?<=36yt~L$8hn4B<8k!`e6>f*jS_Yg|QJZxOD`M(}dkAJE+ZHoRe&2u4ChgE=B{I`(@6V8;KE zXyJP0Fb4b6@Jtg4><}@-GAAE_8J!!zFtFo^^}(rm_hYb%h8PKS5yq zEYijd*j~=Z)L=S+%x7TO5pZd>9Yg^9h*0foO zl`EhbiGo{RAHHr`2T!3#Snn=kho2*5@+Hz#KO;l+0)s;$2eaN z0zsqTO8~rpO)ng-Q-GT|T=d84<4Cxd44WhI>1hJUugONSJrfL%^!xa#X%)WhTL|ek zAV&EN$rCS_@l~@LC@1B3r4wRmq73*U19+NDAmRxCpA|N?18vfX0+2M)5`ZOt9Lxt| zvONwLN~c&&oE*T~ZNR(Jip$AOxZ0qF*ZoZdbZ#TEZx40KE=VTlfoC}|{!j$`Bm$n7 z0zVd#Ygq&!l>poVc5Tz>rhOe~c^rTy5C?O?sIAB`7q+Y80M@T9NcS`;Mq)5 zM~9Fe1LB7aEJc3V%wPccQD_3Vdko;frVb_^N4*i?->Ogq6t?bDy@F4=#Un@1t z``7Pn;AV%8xFKim>6F~jL%~!q@BEtp`P0)sFC4dI}Gzm z0Ww-1;MK~_*QU_HY%mU{L$RQU#rcvMP#aDHFh>Mu;{7kH7D(=|!TZ4`{JzyQfb@qW z=zE-py~R{K>MKXq)Eh~cyTjJpVZvaqg(HNM*v_0U@79MCo!z}m?1hU zZ&NgQ48~qO3d!zywd{+U)&l&x%wxts9S=f4dKE5LYUsEuMcu14_+>Z>HKHsyk-2NC zOW{0AU<_iw{JrQKnGeWA1r7w>!rw+am#+=F=OZ_Qdfoe1H&$GRDW zMZ}~VCb3+n(W3Xzd)YJNU2*8|&V;C{1Yb3-Qse3S0v+EX=Q7T5L3b43#Y!AbA#Jf# zgr&|nIG0YdfiG1rvI!Gw+aMBWqF7php7tazpVxgj7*1BB*O=klYP;;m7AzwvU_p-5 z?0s5ab^sU3<}CStAxG(O5i1hP8d*z=6w2wqw(Zm+zZMNLDr>2ML_9mOYbz$hm;70; z|JPg)V$+M^VQLCj<#yhuYtGREcDRj3UzZHQI359Aj{q(uD)S_CQagyKHWiGE{?tf& zEm8$g!`VjdAF5!4q)KVqG(StDY6svVRlg1(+7WQE(;Oeb{MUh`BzbcJQR%-n)J`kY_CEsKU`zo5E_yqgsuaiifsi(GBD8d7pRE7aG0IV6;QfP#^Q2d+iclDEYMLk82`= z)ly`t1Ti(;SnN!NM3`%N)>Zbq#_OpKr}9c^ABnl6kzi`6FJy*tiiB~D(>_V9wDdx_ zif558t-?>eWFbp=@D|TAxt-ce{c#BPo?r*yS*3#hQ7nw#MZq{~79VSEakyAA#qMzv zj>0MF5se}}se6<0@>4%nu?}vZQm!&9NPx5tKR=Fvaah3gvNr}-l3MLLjf-@iI^a#l zvtyO_aN=n9jaZo&lTzoB{lo>OX3z Vz^9H40R;d6002ovPDHLkV1kj_9!CHG literal 0 HcmV?d00001 diff --git a/community-resources/src/plugins/WebDevelopment@2x.png b/community-resources/src/plugins/WebDevelopment@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..52f6be48c8a5984e8640be49e0e5fc6d1eea168e GIT binary patch literal 5416 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 groups = PluginGroups.getInstance().getTree(); - for (Map.Entry> entry : groups.entrySet()) { + Map>> groups = PluginGroups.getInstance().getTree(); + for (final Map.Entry>> entry : groups.entrySet()) { final String group = entry.getKey(); if (PluginGroups.CORE.equals(group)) continue; @@ -74,18 +76,19 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple }; gridPanel.setOpaque(true); GridBagConstraints gbc = new GridBagConstraints(); - gbc.insets = new Insets(0, 0, 10, 0); gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1; - JLabel titleLabel = new JLabel("

" + group + "

") { + JLabel titleLabel = new JLabel("

" + group + "

", SwingConstants.CENTER) { @Override public boolean isEnabled() { return isGroupEnabled(group); } }; + groupPanel.add(new JLabel(IconLoader.getIcon(entry.getValue().getFirst())), gbc); + //gbc.insets.bottom = 5; groupPanel.add(titleLabel, gbc); - JLabel descriptionLabel = new JLabel(PluginGroups.getInstance().getDescription(group)) { + JLabel descriptionLabel = new JLabel(PluginGroups.getInstance().getDescription(group), SwingConstants.CENTER) { @Override public Dimension getPreferredSize() { Dimension size = super.getPreferredSize(); @@ -107,18 +110,16 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple gbc.weighty = 1; groupPanel.add(Box.createVerticalGlue(), gbc); gbc.weighty = 0; + JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 5)); + buttonsPanel.setOpaque(false); if (PluginGroups.getInstance().getSets(group).size() == 1) { - groupPanel.add(createLink(SWITCH_COMMAND + ":" + group, getGroupSwitchTextProvider(group)), gbc); + buttonsPanel.add(createLink(SWITCH_COMMAND + ":" + group, getGroupSwitchTextProvider(group))); } else { - JPanel buttonsPanel = new JPanel(new GridLayout(1, 2, 10, 5)); - buttonsPanel.setOpaque(false); - LinkLabel customizeButton = createLink(CUSTOMIZE_COMMAND + ":" + group, CUSTOMIZE_TEXT_PROVIDER); - buttonsPanel.add(customizeButton); - LinkLabel disableAllButton = createLink(SWITCH_COMMAND + ":" + group, getGroupSwitchTextProvider(group)); - buttonsPanel.add(disableAllButton); - groupPanel.add(buttonsPanel, gbc); + buttonsPanel.add(createLink(CUSTOMIZE_COMMAND + ":" + group, CUSTOMIZE_TEXT_PROVIDER)); + buttonsPanel.add(createLink(SWITCH_COMMAND + ":" + group, getGroupSwitchTextProvider(group))); } + groupPanel.add(buttonsPanel, gbc); gridPanel.add(groupPanel); } @@ -133,7 +134,7 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple protected Color getColor() { return ColorUtil.withAlpha(JBColor.foreground(), .2); } - }, BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP))); + }, BorderFactory.createEmptyBorder(GAP / 2, GAP, GAP / 2, GAP))); cursor++; } } diff --git a/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java b/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java index 66a0b462908a..af4da5358aac 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java @@ -24,7 +24,7 @@ import java.util.Arrays; import java.util.List; class IdSet { - private static final List BLACK_LIST = Arrays.asList("Support", "Integration", "integration"); + private static final List BLACK_LIST = Arrays.asList("Support", "support", "Integration", "integration"); String myTitle; String[] myIds; diff --git a/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java b/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java index e3af6525cda5..3712905f766b 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java @@ -22,6 +22,7 @@ import com.intellij.idea.StartupUtil; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; @@ -32,12 +33,12 @@ import java.util.*; class PluginGroups { static final String CORE = "Core"; - private static final int MAX_DESCR_LENGTH = 50; + private static final int MAX_DESCR_LENGTH = 55; private static PluginGroups instance = null; - final Map> myTree = new LinkedHashMap>(); + final Map>> myTree = new LinkedHashMap>>(); final Map myFeaturedPlugins = new LinkedHashMap(); private final Map> myGroups = new LinkedHashMap>(); @@ -67,7 +68,7 @@ class PluginGroups { PluginManager.loadDisabledPlugins(new File(PathManager.getConfigPath()).getPath(), myDisabledPluginIds); - myTree.put(CORE, Arrays.asList( + myTree.put(CORE, Pair.create((String)null, Arrays.asList( "com.intellij.copyright", "com.intellij.java-i18n", "org.intellij.intelliLang", @@ -76,8 +77,8 @@ class PluginGroups { "Structural Search", "Type Migration", "ZKM" - )); - myTree.put("Java Frameworks", Arrays.asList( + ))); + myTree.put("Java Frameworks", Pair.create("/plugins/JavaFrameworks.png", Arrays.asList( "com.intellij.appengine", "org.intellij.grails", "com.intellij.gwt", @@ -112,13 +113,13 @@ class PluginGroups { "GuiceyIDEA", "com.intellij.aspectj", "Osmorc" - )); - myTree.put("Build Tools", Arrays.asList( + ))); + myTree.put("Build Tools", Pair.create("/plugins/BuildTools.png", Arrays.asList( "AntSupport", "Maven:org.jetbrains.idea.maven,org.jetbrains.idea.maven.ext", "org.jetbrains.plugins.gradle" - )); - myTree.put("Web Development", Arrays.asList( + ))); + myTree.put("Web Development", Pair.create("/plugins/WebDevelopment.png", Arrays.asList( "HTML:HtmlTools,QuirksMode,W3Validators", "org.jetbrains.plugins.haml", "com.jetbrains.plugins.jade", @@ -131,8 +132,8 @@ class PluginGroups { "com.intellij.flex", "com.intellij.plugins.html.instantEditing", "com.jetbrains.restClient" - )); - myTree.put("Version Controls", Arrays.asList( + ))); + myTree.put("Version Controls", Pair.create("/plugins/VersionControls.png", Arrays.asList( "ClearcasePlugin", "CVS", "Git4Idea", @@ -141,15 +142,15 @@ class PluginGroups { "PerforceDirectPlugin", "Subversion", "TFS" - )); - myTree.put("Test Tools", Arrays.asList( + ))); + myTree.put("Test Tools", Pair.create("/plugins/TestTools.png", Arrays.asList( "JUnit", "TestNG-J", "cucumber-java", "cucumber", "Coverage:Coverage,Emma" - )); - myTree.put("Application Servers", Arrays.asList( + ))); + myTree.put("Application Servers", Pair.create("/plugins/ApplicationServers.png", Arrays.asList( "com.intellij.javaee.view", "Geronimo", "GlassFish", @@ -161,26 +162,26 @@ class PluginGroups { "WebSphere", "com.intellij.dmserver", "JSR45Plugin" - )); - myTree.put("Clouds", Arrays.asList( + ))); + myTree.put("Clouds", Pair.create("/plugins/Clouds.png", Arrays.asList( "CloudFoundry", "CloudBees", "Heroku", "OpenShift" - )); + ))); //myTree.put("Groovy", Arrays.asList("org.intellij.grails")); //TODO Scala -> Play 2.x (Play 2.0 Support) - myTree.put("Swing", Arrays.asList( + myTree.put("Swing", Pair.create("/plugins/Swing.png", Arrays.asList( "com.intellij.uiDesigner"//TODO JavaFX? - )); - myTree.put("Android", Arrays.asList( + ))); + myTree.put("Android", Pair.create("/plugins/Android.png", Arrays.asList( "org.jetbrains.android", - "com.intellij.android-designer")); - myTree.put("Database Tools", Arrays.asList( + "com.intellij.android-designer"))); + myTree.put("Database Tools", Pair.create("/plugins/DatabaseTools.png", Arrays.asList( "com.intellij.sql", "com.intellij.persistence.database" - )); - myTree.put("Other Tools", Arrays.asList( + ))); + myTree.put("Other Tools", Pair.create("/plugins/OtherTools.png", Arrays.asList( "ByteCodeViewer", "com.intellij.dsm", "org.jetbrains.idea.eclipse", @@ -190,8 +191,8 @@ class PluginGroups { "com.intellij.diagram", "org.jetbrains.plugins.yaml", "XSLT and XPath:XPathView,XSLT-Debugger" - )); - myTree.put("Plugin Development", Arrays.asList("DevKit")); + ))); + myTree.put("Plugin Development", Pair.create("/plugins/PluginDevelopment.png", Arrays.asList("DevKit"))); myFeaturedPlugins.put("Scala", "Custom Languages:Plugin for Scala language support:org.intellij.scala"); myFeaturedPlugins.put("Live Edit Tool", "Web Development:Provides live edit HTML/CSS/JavaScript:com.intellij.plugins.html.instantEditing"); @@ -204,13 +205,13 @@ class PluginGroups { private void initIfNeed() { if (myInitialized) return; myInitialized = true; - for (Map.Entry> entry : myTree.entrySet()) { + for (Map.Entry>> entry : myTree.entrySet()) { final String group = entry.getKey(); if (CORE.equals(group)) continue; List idSets = new ArrayList(); StringBuilder description = new StringBuilder(); - for (String idDescription : entry.getValue()) { + for (String idDescription : entry.getValue().getSecond()) { IdSet idSet = new IdSet(idDescription); String idSetTitle = idSet.getTitle(); if (idSetTitle == null) continue; @@ -226,12 +227,12 @@ class PluginGroups { int lastWord = description.lastIndexOf(",", MAX_DESCR_LENGTH); description.delete(lastWord, description.length()).append("..."); } - description.insert(0, ""); + description.insert(0, "
"); myDescriptions.put(group, description.toString()); } } - Map> getTree() { + Map>> getTree() { initIfNeed(); return myTree; }