From 382600f8661808f1bf4ce85c2a3bffa531497e23 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 28 Sep 2023 18:50:35 +0200 Subject: [PATCH] Implement dark component icons --- .../componenticons/altimeter_dark-small.png | Bin 0 -> 1732 bytes .../pix/componenticons/battery_dark-small.png | Bin 0 -> 1530 bytes .../deployment-charge_dark-small.png | Bin 0 -> 2015 bytes .../ellipticalfin_dark-large.png | Bin 0 -> 1594 bytes ..._dark.png => ellipticalfin_dark-small.png} | Bin .../componenticons/flight-comp_dark-small.png | Bin 0 -> 1574 bytes .../componenticons/freeformfin_dark-large.png | Bin 0 -> 1598 bytes ...ll_dark.png => freeformfin_dark-small.png} | Bin .../componenticons/launchlug_dark-large.png | Bin 0 -> 1779 bytes ...mall_dark.png => launchlug_dark-small.png} | Bin ...ass-large_dark.png => mass_dark-large.png} | Bin ...ass-small_dark.png => mass_dark-small.png} | Bin ...arge_dark.png => parachute_dark-large.png} | Bin ...mall_dark.png => parachute_dark-small.png} | Bin ...ods-large_dark.png => pods_dark-large.png} | Bin ...ods-small_dark.png => pods_dark-small.png} | Bin .../recovery-hardware_dark-small.png | Bin 0 -> 1805 bytes ...arge_dark.png => shockcord_dark-large.png} | Bin ...mall_dark.png => shockcord_dark-small.png} | Bin ...large_dark.png => streamer_dark-large.png} | Bin ...small_dark.png => streamer_dark-small.png} | Bin .../pix/componenticons/tracker_dark-small.png | Bin 0 -> 1579 bytes .../openrocket/gui/main/ComponentIcons.java | 141 +++++-- .../net/sf/openrocket/gui/util/UITheme.java | 372 +++++++++++++++++- 24 files changed, 471 insertions(+), 42 deletions(-) create mode 100644 core/resources/pix/componenticons/altimeter_dark-small.png create mode 100644 core/resources/pix/componenticons/battery_dark-small.png create mode 100644 core/resources/pix/componenticons/deployment-charge_dark-small.png create mode 100644 core/resources/pix/componenticons/ellipticalfin_dark-large.png rename core/resources/pix/componenticons/{ellipticalfin-small_dark.png => ellipticalfin_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/flight-comp_dark-small.png create mode 100644 core/resources/pix/componenticons/freeformfin_dark-large.png rename core/resources/pix/componenticons/{freeformfin-small_dark.png => freeformfin_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/launchlug_dark-large.png rename core/resources/pix/componenticons/{launchlug-small_dark.png => launchlug_dark-small.png} (100%) rename core/resources/pix/componenticons/{mass-large_dark.png => mass_dark-large.png} (100%) rename core/resources/pix/componenticons/{mass-small_dark.png => mass_dark-small.png} (100%) rename core/resources/pix/componenticons/{parachute-large_dark.png => parachute_dark-large.png} (100%) rename core/resources/pix/componenticons/{parachute-small_dark.png => parachute_dark-small.png} (100%) rename core/resources/pix/componenticons/{pods-large_dark.png => pods_dark-large.png} (100%) rename core/resources/pix/componenticons/{pods-small_dark.png => pods_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/recovery-hardware_dark-small.png rename core/resources/pix/componenticons/{shockcord-large_dark.png => shockcord_dark-large.png} (100%) rename core/resources/pix/componenticons/{shockcord-small_dark.png => shockcord_dark-small.png} (100%) rename core/resources/pix/componenticons/{streamer-large_dark.png => streamer_dark-large.png} (100%) rename core/resources/pix/componenticons/{streamer-small_dark.png => streamer_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/tracker_dark-small.png diff --git a/core/resources/pix/componenticons/altimeter_dark-small.png b/core/resources/pix/componenticons/altimeter_dark-small.png new file mode 100644 index 0000000000000000000000000000000000000000..3506a26e5c0d37131e02b0ae32f53609270c281a GIT binary patch literal 1732 zcmb_dPl()97@sP%+qFeR5G~pbDTunw-^on!9?h=n%<2v_>$082)r0sZ?`0+yW+u^*EtX;+$;*4c_x<_( zzW3$bt<6_XFP>SfR4S)i8_jKapN0F8h2!w-ExT9Xbu!s_J%hQ&#eJ;u!G}*)D#uTR z?cIFWyNG=rsf6+lQ%6w(=t||n>L?-p9?PW;>xQu_|NhlCvJ_HRey!%|UeaK_aN{s# zmku}E{^6dFsJyx&T^M075V4#{qo^Nec;w0xyBNk|T9c&-B;Rx8HQ`X&^|qu2Pnm>N zL-BRpkZc%Pb<;t}w(awhshd?zuWM#aF{`*{W5beWmkb_L8sP2b%QJuQ<;uN0Pq3y9 zheLH(Re9Rg41|!To0@4VfKak=oRg6fXXgqFO_up-nB*akC1H_t_#k&>h<2Jrl$2)U zY(^E3rj1CV8LBSQngFR^;*vqypE#$!#`-K`ah?IzD6vV8=RE82dzdbl=NtgNo>%%f zGL|SRU1a(C0i-b_PuraL zL06xrv2?)FOt5LGHPsXbXDHSrIdf&9s-h#su-m4It2VBg%eskmeG2tB4TJGK)O6a0 zgDnSF>vK>jD@tK0!Hi9D)u+IKM=|n`zh?Vkb`JI4aG!+ zDOO#tDo#)}lq%FaLR6>Bv5Wn$rXid@(tmI}LMccsN>Y{yL0q{eihfc@cq7a}w(;y3 zU1IyQQ9qO>rGtqtj)W^`wu(a|nKf0Hp7V$w#^M+~Uqt8kNZe)6s5Du7;B@X!<9nwwSEc`FI-2NCQ=znf zYdBf^M<;{qCsWWK#jxzn@KJVm76Vf$^zP2xtEZsv`>p0$+j;M|t80swUtC!K;?C0k z8y63+Jn?niJ9Sh3|o{acGGX!ye~m#;0YezbJ=kmEs>uvkZ)s-K`f2Os*+5GIK Hx8D8>p(r3p literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/battery_dark-small.png b/core/resources/pix/componenticons/battery_dark-small.png new file mode 100644 index 0000000000000000000000000000000000000000..72b498ebde75df5cabf56e2bee852d0fac3cb9ba GIT binary patch literal 1530 zcmbVM&u`pB6kgPVAP_D{2sl)uX_10b|F+}x5Vs2Jl&lnoC|%SbE==s%wUxEU*iLqn zBDE@qs6}ufhf0VG0*OOaZk!N;167Lz9QYr4D3=N@9FQn)cGsqhiV(GA&v@pW?|tvR zdGGT2+N-lOFU&L=joJ2!w*liZc%OXyG5ALF?iCoG$X4DcVC@<4KGOK;YKPYW`1@rakeTr4XXjUeT=i(3hX{g@pXiZ|8 z#B`>haIHdG(*FdD43HL2vYZt{nu{%r!hm#no=|W-PH2xQS=z&>4k+OJJO?!(*%(Rl zebP>glBNM`doBj=5|=a%&o5O*oGEX=RF?mh#Xhv z!~c2ywLFHBr2U8H5rrx)2U&>=NZa0|jLx#RC$oNxM)!fxK$L`w3%bid|9CNeX#dCO z2N46x>IOU@tz%fhyXAo9Y^evas@lbRRS8J9WEIW%G>B7C8!uJrf{3O)28~L=3b><) zavpo8{L|^t-hHKC!J(gsY2D1=r*4NV1?n7{UFXs#J!q6s+gs{1-~aJ&Y35t>)X~Gm z&kp{)*JejfwXWRx{=K;qAO0+#yfydqQD%Iq;A^w5U;kk>`1+kUSG^Z6-~8_Sm&UsX zH*o&Db#eRZ!Hw1jCyqV)`OW#CE=1i0=^}ag?(J*m&tGtUId|{ZBl~~Qt7m>Yd|q_t N_VSwd#Vc=J`U|k+;*^A6JjuQp~`mTLv3?`5aiTnx}(11}yObjLp5=~qP7({%%-JQ&!5@M6KukU@{ z_s8e+ecyIBH`N!7eRM2_VMPt0U>Ln8qkG)wk?5Hy5A>kd7&ElMMsvmPU4U)wn}}f} zN2!q(r$w40%7*3viV=mLv}PhShE-OjO(3^I2am$Ist1T)4jd$KRS6LDIf<6cT9{Bn zofe$i*%XmGTV+8Zs-DIx(;_mUK?mSzEvegLIzVLXifHUkQv{xYIIRJq#&w9dNX>Yy zVL@E*Fr-Y=4DLrGUj@qxg5U3d5@%`FOVJe+%aN>C4S;>rZMW$d9YEXAI%xSr795wbAox^s! zEBUxgvDSjXF|3GTB$2MNVd;1~v}~76pNI3XuE8t{27v`V;#exEFWQb(Z`F7e;5>%l>!{_pI}86V}_*xM2M<^IHXKHPT+Z(#abh2 zSjaJo&YOuslEenxc7QI!hG2j|DR@*>5g`Dyz{4o%V>pKNaWO9`a4bVIGAr|buPm_8 zm)jpSX0Hct6GzLiqK%Rzt%wHko{Xb)===6c)z1wk> zLaAw{1#MT50KvIMpQ$4;q}oWfj_fg-3zud`NfpnOjtFG;NCXHQv_pl+PO5hxs;C*))ug4ssQNdXJi#1VnHcF~+WG&sw7XuM1UvZ}ksXhtqNIRW%I zM2(6fsC!Q5?lk_FbZ)QG|1%xR?M_2NQGeGkvvyl2L)mAhP`xAJ%0GZbv^68{q@krV_gTY-B=Q8?7mgamrW&J z-0*x&P$C|BtLcZsgO#h+9=@{d$I|Zj{qwMI3KNAP_Gn4L`hoYazPEJOyz`f?c6ROD zxp4pPuGJt3**AYOjO&kGY}^)h7GL|UZE^pSJ=5MeIrX*1tHs?bi#HxSUGPNxJD+cV zyNn8-n7zKZ5R>P09qiH0pX?i4j_uf|RV_VbOq5#(j&2KI+P%oLXWznIW9FAVyjA^r z)kXe%&GaqhUz&Vh`AmLN%c#LRy+EY_~3=;??v*dTW7K6UGq|_CX9OJP<7*s871o;=|6Yn*=BWl z@6GDq3MQ7`vcozxg_HVMP8k33b9?{z^m@5-;6l;K4?6n>AK1S6=a0^o+n4(T)S3}% Q-CuA+T~l!P%okSt38wh0KL7v# literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/ellipticalfin_dark-large.png b/core/resources/pix/componenticons/ellipticalfin_dark-large.png new file mode 100644 index 0000000000000000000000000000000000000000..cb186f3ebc68bb58223366d564c6748515c34d79 GIT binary patch literal 1594 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 OdAT%WUpR8&oxcI4vjC<5 literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/freeformfin_dark-large.png b/core/resources/pix/componenticons/freeformfin_dark-large.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f1e694d1a67868ad4cda167fe9dfbb07338d20 GIT binary patch literal 1598 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 V-3t4UEzJM`002ovPDHLkV1gIMH=O_g literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/launchlug-small_dark.png b/core/resources/pix/componenticons/launchlug_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/launchlug-small_dark.png rename to core/resources/pix/componenticons/launchlug_dark-small.png diff --git a/core/resources/pix/componenticons/mass-large_dark.png b/core/resources/pix/componenticons/mass_dark-large.png similarity index 100% rename from core/resources/pix/componenticons/mass-large_dark.png rename to core/resources/pix/componenticons/mass_dark-large.png diff --git a/core/resources/pix/componenticons/mass-small_dark.png b/core/resources/pix/componenticons/mass_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/mass-small_dark.png rename to core/resources/pix/componenticons/mass_dark-small.png diff --git a/core/resources/pix/componenticons/parachute-large_dark.png b/core/resources/pix/componenticons/parachute_dark-large.png similarity index 100% rename from core/resources/pix/componenticons/parachute-large_dark.png rename to core/resources/pix/componenticons/parachute_dark-large.png diff --git a/core/resources/pix/componenticons/parachute-small_dark.png b/core/resources/pix/componenticons/parachute_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/parachute-small_dark.png rename to core/resources/pix/componenticons/parachute_dark-small.png diff --git a/core/resources/pix/componenticons/pods-large_dark.png b/core/resources/pix/componenticons/pods_dark-large.png similarity index 100% rename from core/resources/pix/componenticons/pods-large_dark.png rename to core/resources/pix/componenticons/pods_dark-large.png diff --git a/core/resources/pix/componenticons/pods-small_dark.png b/core/resources/pix/componenticons/pods_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/pods-small_dark.png rename to core/resources/pix/componenticons/pods_dark-small.png diff --git a/core/resources/pix/componenticons/recovery-hardware_dark-small.png b/core/resources/pix/componenticons/recovery-hardware_dark-small.png new file mode 100644 index 0000000000000000000000000000000000000000..b3eb482b9f3d2196e6799dd14ee451853ac98ef0 GIT binary patch literal 1805 zcmbVNe^3-v9A6ngz+t43)SP0rH78W=c5m;;-tBNP2ZzGMAp-}V73s43?r!65cimm? z4iYQSOhwF5gc_q9$4Fc#(ro;Z;!i68k;6}W_RDd z_j#Z1=llJ>?{{}rl&{UqSeAhxNM>n?vl6~@;JqL%6+Zo|?YrPBT`Jk2z_~@*Jr8;L z&{70RvGQ(@>T#9PtQgcYoLC3+k)Q<82$EkAkr=ifsAwJV@q!(jKJ`9^@|+!8Z*~zb zsR;P_k|r5cHI=*Brh3-KVFiz%`4Jit1cAz+kzhbj=!hMQ^3rguP2(6Eg{bv*%%K@X zJ+2D0NR$C;(;IXwK^Ra9j!YKPYO_%km4}i9X~YQ&PMUS3kv3Db!Gy*x3|f>qFJ0+e z6SD`u?3iCwB^t-W;jlhz)QhqYH`r`8oFH+M)Io$!X%ti@q7#(maRw()SechpUKCJ` zk*O0KR67RM&bkql610L63l$6+9$_ThpeHo9qCl1R{w-h*Qd^k=<=6zJ)F20I|`QAOD;iUF8cR+I%a1Y|{vrb%zsleeLOlTm>k)3T}~Y&rww zCP~^z(PnZrLDB><3w4Pc?`@n5C9Q6Ql{T4Z12qQp8Nml&qrx#9x`S)wJnI?$Pp6}6x0QYz z4*Q8VOf)n2k!XiNfYh?q>?Z$s4MFBTUFvkWt$R)%a6Fpi$UZl5Es*)ti+QbeEkdXM ztDDKSEvFA&SaN;x!NIN_+tKsgN&6~?+M81g3bP6yXkDD0{d_If|M{1m&=2mZws(t1 zXDrh*-mPNJ-W}e7`?lO$nD$=P$;-{j&whff8+-c(_$AUln77$_e|PRKdCEEx%1Z7U z*!bJ;PrljXId~%(L5KU-rWwk{1}m%I8Mx9sw0=}L+4nlXaHkWiI_ADu*EfD>W8UJ! z6VnS89y^}VTXXfNz-5bR*`6gIj@Pd0_+k+~Jb%rRPkH*4iw(6C9{2ZRb#Ki?*;xLF zcR(rV{B=+lG{1Ft+MH(b183q*ZBCp60Z7*7uFn^y!B^!ZdX=aSbco- z{L)n-XK(OQ!}>0VrkXirNnB@FFpm%Nhh72%mT0gfs|dy=hQn2?e%l zC`8u{V2M%gkXf*8%d#E=rfz06{g7tn6*G(S7BX_6_dsDW@oQ+teX?gy%pBO@JVu(< zYPHl>R%Jy8wHcbS#e~qwB_VTEIv%59LNRAa zg|Vi{D`80lmS~d7Xy(+sYTkgNF6PvMGOLPiD~44uO_a4z-aM$ANY}eikNH7uc^GOI zDn7rM2$k$w#=%cQyVKe%OZ+hFnlr1;k=*Ek}R$E&%2B) z${hF4`~UO&;Uo|xiJP~~BMVht4pa(Kk+$Vt86BYuy-_m&o%?_=ktN~46faR9_7;O% z_Pt2%hZ!z74gZ9LjnM;bV)Q_-k2 zs0nv8S8#o8o%uzE7$TTzv4vx$R5w3Ge*59j8}E;T!Az zNapCVmv{WCZ(QG)yA0;We%v~>b@vzVUD`Tu{nRgOvzM=4iQN4s&us2}w)oC(_Q*#g z&wsu6+C${%&tKgePcQsYTzL5R&)2rgtM8uOxAokMWP9#g=gh?X;q}`3r>kIm=jQt# U@8#d$Cfj*=a>_mX#PJvY0?Tp%EdT%j literal 0 HcmV?d00001 diff --git a/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java b/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java index d5e9b3a28..39dd7ec91 100644 --- a/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java +++ b/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java @@ -9,6 +9,8 @@ import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; +import net.sf.openrocket.gui.util.GUIUtil; +import net.sf.openrocket.gui.util.UITheme; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.AxialStage; import net.sf.openrocket.rocketcomponent.BodyTube; @@ -41,77 +43,138 @@ public class ComponentIcons { private static final String SMALL_SUFFIX = "-small.png"; private static final String LARGE_SUFFIX = "-large.png"; + // Component image file keys + private static String noseCone; + private static String bodyTube; + private static String transition; + private static String trapezoidFinSet; + private static String ellipticalFinSet; + private static String freeformFinSet; + private static String tubeFinSet; + private static String launchLug; + private static String railButton; + private static String innerTube; + private static String tubeCoupler; + private static String centeringRing; + private static String bulkhead; + private static String engineBlock; + private static String parachute; + private static String streamer; + private static String shockCord; + private static String mass; + private static String stage; + private static String boosters; + private static String pods; + + private static String mass_altimeter; + private static String mass_battery; + private static String mass_deployment_charge; + private static String mass_payload; + private static String mass_flight_comp; + private static String mass_recovery_hardware; + private static String mass_tracker; + private static final HashMap, ImageIcon> SMALL_ICONS = new HashMap, ImageIcon>(); private static final HashMap, ImageIcon> LARGE_ICONS = new HashMap, ImageIcon>(); private static final HashMap, ImageIcon> DISABLED_ICONS = new HashMap, ImageIcon>(); private static final HashMap MASS_COMPONENT_SMALL_ICONS = new HashMap(); static { + initColors(); + // // Nose cone - load("nosecone", trans.get("ComponentIcons.Nosecone"), NoseCone.class); + load(noseCone, trans.get("ComponentIcons.Nosecone"), NoseCone.class); // // Body tube - load("bodytube", trans.get("ComponentIcons.Bodytube"), BodyTube.class); + load(bodyTube, trans.get("ComponentIcons.Bodytube"), BodyTube.class); //// Transition - load("transition", trans.get("ComponentIcons.Transition"), Transition.class); + load(transition, trans.get("ComponentIcons.Transition"), Transition.class); //// Trapezoidal fin set - load("trapezoidfin", trans.get("ComponentIcons.Trapezoidalfinset"), TrapezoidFinSet.class); + load(trapezoidFinSet, trans.get("ComponentIcons.Trapezoidalfinset"), TrapezoidFinSet.class); //// Elliptical fin set - load("ellipticalfin", trans.get("ComponentIcons.Ellipticalfinset"), EllipticalFinSet.class); + load(ellipticalFinSet, trans.get("ComponentIcons.Ellipticalfinset"), EllipticalFinSet.class); //// Freeform fin set - load("freeformfin", trans.get("ComponentIcons.Freeformfinset"), FreeformFinSet.class); + load(freeformFinSet, trans.get("ComponentIcons.Freeformfinset"), FreeformFinSet.class); //// Tube fin set - load("tubefin", trans.get("ComponentIcons.Tubefinset"), TubeFinSet.class); + load(tubeFinSet, trans.get("ComponentIcons.Tubefinset"), TubeFinSet.class); //// Launch lug - load("launchlug", trans.get("ComponentIcons.Launchlug"), LaunchLug.class); + load(launchLug, trans.get("ComponentIcons.Launchlug"), LaunchLug.class); //// Rail Button - load("railbutton", trans.get("ComponentIcons.RailButton"), RailButton.class); + load(railButton, trans.get("ComponentIcons.RailButton"), RailButton.class); //// Inner tube - load("innertube", trans.get("ComponentIcons.Innertube"), InnerTube.class); + load(innerTube, trans.get("ComponentIcons.Innertube"), InnerTube.class); //// Tube coupler - load("tubecoupler", trans.get("ComponentIcons.Tubecoupler"), TubeCoupler.class); + load(tubeCoupler, trans.get("ComponentIcons.Tubecoupler"), TubeCoupler.class); //// Centering ring - load("centeringring", trans.get("ComponentIcons.Centeringring"), CenteringRing.class); + load(centeringRing, trans.get("ComponentIcons.Centeringring"), CenteringRing.class); //// Bulkhead - load("bulkhead", trans.get("ComponentIcons.Bulkhead"), Bulkhead.class); + load(bulkhead, trans.get("ComponentIcons.Bulkhead"), Bulkhead.class); // // Engine block - load("engineblock", trans.get("ComponentIcons.Engineblock"), + load(engineBlock, trans.get("ComponentIcons.Engineblock"), EngineBlock.class); // // Parachute - load("parachute", trans.get("ComponentIcons.Parachute"), + load(parachute, trans.get("ComponentIcons.Parachute"), Parachute.class); // // Streamer - load("streamer", trans.get("ComponentIcons.Streamer"), Streamer.class); + load(streamer, trans.get("ComponentIcons.Streamer"), Streamer.class); // // Shock cord - load("shockcord", trans.get("ComponentIcons.Shockcord"), + load(shockCord, trans.get("ComponentIcons.Shockcord"), ShockCord.class); - load("mass", trans.get("ComponentIcons.Masscomponent"), + load(mass, trans.get("ComponentIcons.Masscomponent"), MassComponent.class); // // Component Assemblies - load("stage", trans.get("ComponentIcons.Stage"), + load(stage, trans.get("ComponentIcons.Stage"), AxialStage.class); - load("boosters", trans.get("ComponentIcons.Boosters"), + load(boosters, trans.get("ComponentIcons.Boosters"), ParallelStage.class); - load("pods", trans.get("ComponentIcons.Pods"), + load(pods, trans.get("ComponentIcons.Pods"), PodSet.class); // // Mass components - loadMassTypeIcon("mass", trans.get("ComponentIcons.Masscomponent"), - MassComponentType.MASSCOMPONENT); - loadMassTypeIcon("altimeter", trans.get("ComponentIcons.Altimeter"), - MassComponentType.ALTIMETER); - loadMassTypeIcon("battery", trans.get("ComponentIcons.Battery"), - MassComponentType.BATTERY); - loadMassTypeIcon("deployment-charge", - trans.get("ComponentIcons.Deploymentcharge"), + loadMassTypeIcon(mass, trans.get("ComponentIcons.Masscomponent"), MassComponentType.MASSCOMPONENT); + loadMassTypeIcon(mass_altimeter, trans.get("ComponentIcons.Altimeter"), MassComponentType.ALTIMETER); + loadMassTypeIcon(mass_battery, trans.get("ComponentIcons.Battery"), MassComponentType.BATTERY); + loadMassTypeIcon(mass_deployment_charge, trans.get("ComponentIcons.Deploymentcharge"), MassComponentType.DEPLOYMENTCHARGE); - loadMassTypeIcon("payload", trans.get("ComponentIcons.Payload"), - MassComponentType.PAYLOAD); - loadMassTypeIcon("flight-comp", - trans.get("ComponentIcons.Flightcomputer"), - MassComponentType.FLIGHTCOMPUTER); - loadMassTypeIcon("recovery-hardware", - trans.get("ComponentIcons.Recoveryhardware"), - MassComponentType.RECOVERYHARDWARE); - loadMassTypeIcon("tracker", trans.get("ComponentIcons.Tracker"), - MassComponentType.TRACKER); + loadMassTypeIcon(mass_payload, trans.get("ComponentIcons.Payload"), MassComponentType.PAYLOAD); + loadMassTypeIcon(mass_flight_comp, + trans.get("ComponentIcons.Flightcomputer"), MassComponentType.FLIGHTCOMPUTER); + loadMassTypeIcon(mass_recovery_hardware, + trans.get("ComponentIcons.Recoveryhardware"), MassComponentType.RECOVERYHARDWARE); + loadMassTypeIcon(mass_tracker, trans.get("ComponentIcons.Tracker"), MassComponentType.TRACKER); + } + + private static void initColors() { + updateColors(); + UITheme.Theme.addUIThemeChangeListener(ComponentIcons::updateColors); + } + + private static void updateColors() { + noseCone = GUIUtil.getUITheme().getComponentIconNoseCone(); + bodyTube = GUIUtil.getUITheme().getComponentIconBodyTube(); + transition = GUIUtil.getUITheme().getComponentIconTransition(); + trapezoidFinSet = GUIUtil.getUITheme().getComponentIconTrapezoidFinSet(); + ellipticalFinSet = GUIUtil.getUITheme().getComponentIconEllipticalFinSet(); + freeformFinSet = GUIUtil.getUITheme().getComponentIconFreeformFinSet(); + tubeFinSet = GUIUtil.getUITheme().getComponentIconTubeFinSet(); + launchLug = GUIUtil.getUITheme().getComponentIconLaunchLug(); + railButton = GUIUtil.getUITheme().getComponentIconRailButton(); + innerTube = GUIUtil.getUITheme().getComponentIconInnerTube(); + tubeCoupler = GUIUtil.getUITheme().getComponentIconTubeCoupler(); + centeringRing = GUIUtil.getUITheme().getComponentIconCenteringRing(); + bulkhead = GUIUtil.getUITheme().getComponentIconBulkhead(); + engineBlock = GUIUtil.getUITheme().getComponentIconEngineBlock(); + parachute = GUIUtil.getUITheme().getComponentIconParachute(); + streamer = GUIUtil.getUITheme().getComponentIconStreamer(); + shockCord = GUIUtil.getUITheme().getComponentIconShockCord(); + mass = GUIUtil.getUITheme().getComponentIconMass(); + stage = GUIUtil.getUITheme().getComponentIconStage(); + boosters = GUIUtil.getUITheme().getComponentIconBoosters(); + pods = GUIUtil.getUITheme().getComponentIconPods(); + mass_altimeter = GUIUtil.getUITheme().getComponentIconMassAltimeter(); + mass_battery = GUIUtil.getUITheme().getComponentIconMassBattery(); + mass_deployment_charge = GUIUtil.getUITheme().getComponentIconMassDeploymentCharge(); + mass_payload = GUIUtil.getUITheme().getComponentIconMassPayload(); + mass_flight_comp = GUIUtil.getUITheme().getComponentIconMassFlightComp(); + mass_recovery_hardware = GUIUtil.getUITheme().getComponentIconMassRecoveryHardware(); + mass_tracker = GUIUtil.getUITheme().getComponentIconMassTracker(); } private static void load(String filename, String name, diff --git a/swing/src/net/sf/openrocket/gui/util/UITheme.java b/swing/src/net/sf/openrocket/gui/util/UITheme.java index 59dcae0c4..96cb57ac1 100644 --- a/swing/src/net/sf/openrocket/gui/util/UITheme.java +++ b/swing/src/net/sf/openrocket/gui/util/UITheme.java @@ -11,19 +11,16 @@ import org.slf4j.LoggerFactory; import javax.swing.BorderFactory; import javax.swing.Icon; -import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.Border; import java.awt.Color; import java.awt.Font; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicReference; public class UITheme { private static final Translator trans = Application.getTranslator(); @@ -87,6 +84,36 @@ public class UITheme { void formatScriptTextArea(RSyntaxTextArea textArea); + // Rocket component icons + String getComponentIconNoseCone(); + String getComponentIconBodyTube(); + String getComponentIconTransition(); + String getComponentIconTrapezoidFinSet(); + String getComponentIconEllipticalFinSet(); + String getComponentIconFreeformFinSet(); + String getComponentIconTubeFinSet(); + String getComponentIconLaunchLug(); + String getComponentIconRailButton(); + String getComponentIconInnerTube(); + String getComponentIconTubeCoupler(); + String getComponentIconCenteringRing(); + String getComponentIconBulkhead(); + String getComponentIconEngineBlock(); + String getComponentIconParachute(); + String getComponentIconStreamer(); + String getComponentIconShockCord(); + String getComponentIconMass(); + String getComponentIconStage(); + String getComponentIconBoosters(); + String getComponentIconPods(); + String getComponentIconMassAltimeter(); + String getComponentIconMassBattery(); + String getComponentIconMassDeploymentCharge(); + String getComponentIconMassPayload(); + String getComponentIconMassFlightComp(); + String getComponentIconMassRecoveryHardware(); + String getComponentIconMassTracker(); + // Static list of listeners static List themeChangeListeners = new ArrayList<>(); @@ -361,6 +388,119 @@ public class UITheme { log.warn("Unable to load RSyntaxTextArea theme", ioe); } } + + @Override + public String getComponentIconNoseCone() { + return "nosecone"; + } + @Override + public String getComponentIconBodyTube() { + return "bodytube"; + } + @Override + public String getComponentIconTransition() { + return "transition"; + } + @Override + public String getComponentIconTrapezoidFinSet() { + return "trapezoidfin"; + } + @Override + public String getComponentIconEllipticalFinSet() { + return "ellipticalfin"; + } + @Override + public String getComponentIconFreeformFinSet() { + return "freeformfin"; + } + @Override + public String getComponentIconTubeFinSet() { + return "tubefin"; + } + @Override + public String getComponentIconLaunchLug() { + return "launchlug"; + } + @Override + public String getComponentIconRailButton() { + return "railbutton"; + } + @Override + public String getComponentIconInnerTube() { + return "innertube"; + } + @Override + public String getComponentIconTubeCoupler() { + return "tubecoupler"; + } + @Override + public String getComponentIconCenteringRing() { + return "centeringring"; + } + @Override + public String getComponentIconBulkhead() { + return "bulkhead"; + } + @Override + public String getComponentIconEngineBlock() { + return "engineblock"; + } + @Override + public String getComponentIconParachute() { + return "parachute"; + } + @Override + public String getComponentIconStreamer() { + return "streamer"; + } + @Override + public String getComponentIconShockCord() { + return "shockcord"; + } + @Override + public String getComponentIconMass() { + return "mass"; + } + @Override + public String getComponentIconStage() { + return "stage"; + } + @Override + public String getComponentIconBoosters() { + return "boosters"; + } + @Override + public String getComponentIconPods() { + return "pods"; + } + @Override + public String getComponentIconMassAltimeter() { + return "altimeter"; + } + @Override + public String getComponentIconMassBattery() { + return "battery"; + } + @Override + public String getComponentIconMassDeploymentCharge() { + return "deployment-charge"; + } + @Override + public String getComponentIconMassPayload() { + return "payload"; + } + @Override + public String getComponentIconMassFlightComp() { + return "flight-comp"; + } + @Override + public String getComponentIconMassRecoveryHardware() { + return "recovery-hardware"; + } + @Override + public String getComponentIconMassTracker() { + return "tracker"; + } }, DARK { private final String displayName = trans.get("UITheme.Dark"); @@ -591,6 +731,119 @@ public class UITheme { log.warn("Unable to load RSyntaxTextArea theme", ioe); } } + + @Override + public String getComponentIconNoseCone() { + return "nosecone"; + } + @Override + public String getComponentIconBodyTube() { + return "bodytube"; + } + @Override + public String getComponentIconTransition() { + return "transition"; + } + @Override + public String getComponentIconTrapezoidFinSet() { + return "trapezoidfin"; + } + @Override + public String getComponentIconEllipticalFinSet() { + return "ellipticalfin_dark"; + } + @Override + public String getComponentIconFreeformFinSet() { + return "freeformfin_dark"; + } + @Override + public String getComponentIconTubeFinSet() { + return "tubefin"; + } + @Override + public String getComponentIconLaunchLug() { + return "launchlug_dark"; + } + @Override + public String getComponentIconRailButton() { + return "railbutton"; + } + @Override + public String getComponentIconInnerTube() { + return "innertube"; + } + @Override + public String getComponentIconTubeCoupler() { + return "tubecoupler"; + } + @Override + public String getComponentIconCenteringRing() { + return "centeringring"; + } + @Override + public String getComponentIconBulkhead() { + return "bulkhead"; + } + @Override + public String getComponentIconEngineBlock() { + return "engineblock"; + } + @Override + public String getComponentIconParachute() { + return "parachute_dark"; + } + @Override + public String getComponentIconStreamer() { + return "streamer_dark"; + } + @Override + public String getComponentIconShockCord() { + return "shockcord_dark"; + } + @Override + public String getComponentIconMass() { + return "mass_dark"; + } + @Override + public String getComponentIconStage() { + return "stage"; + } + @Override + public String getComponentIconBoosters() { + return "boosters"; + } + @Override + public String getComponentIconPods() { + return "pods_dark"; + } + @Override + public String getComponentIconMassAltimeter() { + return "altimeter_dark"; + } + @Override + public String getComponentIconMassBattery() { + return "battery_dark"; + } + @Override + public String getComponentIconMassDeploymentCharge() { + return "deployment-charge_dark"; + } + @Override + public String getComponentIconMassPayload() { + return "payload"; + } + @Override + public String getComponentIconMassFlightComp() { + return "flight-comp_dark"; + } + @Override + public String getComponentIconMassRecoveryHardware() { + return "recovery-hardware_dark"; + } + @Override + public String getComponentIconMassTracker() { + return "tracker_dark"; + } }, AUTO { private final String displayName = trans.get("UITheme.Auto"); @@ -833,6 +1086,119 @@ public class UITheme { public void formatScriptTextArea(RSyntaxTextArea textArea) { getCurrentTheme().formatScriptTextArea(textArea); } + + @Override + public String getComponentIconNoseCone() { + return getCurrentTheme().getComponentIconNoseCone(); + } + @Override + public String getComponentIconBodyTube() { + return getCurrentTheme().getComponentIconBodyTube(); + } + @Override + public String getComponentIconTransition() { + return getCurrentTheme().getComponentIconTransition(); + } + @Override + public String getComponentIconTrapezoidFinSet() { + return getCurrentTheme().getComponentIconTrapezoidFinSet(); + } + @Override + public String getComponentIconEllipticalFinSet() { + return getCurrentTheme().getComponentIconEllipticalFinSet(); + } + @Override + public String getComponentIconFreeformFinSet() { + return getCurrentTheme().getComponentIconFreeformFinSet(); + } + @Override + public String getComponentIconTubeFinSet() { + return getCurrentTheme().getComponentIconTubeFinSet(); + } + @Override + public String getComponentIconLaunchLug() { + return getCurrentTheme().getComponentIconLaunchLug(); + } + @Override + public String getComponentIconRailButton() { + return getCurrentTheme().getComponentIconRailButton(); + } + @Override + public String getComponentIconInnerTube() { + return getCurrentTheme().getComponentIconInnerTube(); + } + @Override + public String getComponentIconTubeCoupler() { + return getCurrentTheme().getComponentIconTubeCoupler(); + } + @Override + public String getComponentIconCenteringRing() { + return getCurrentTheme().getComponentIconCenteringRing(); + } + @Override + public String getComponentIconBulkhead() { + return getCurrentTheme().getComponentIconBulkhead(); + } + @Override + public String getComponentIconEngineBlock() { + return getCurrentTheme().getComponentIconEngineBlock(); + } + @Override + public String getComponentIconParachute() { + return getCurrentTheme().getComponentIconParachute(); + } + @Override + public String getComponentIconStreamer() { + return getCurrentTheme().getComponentIconStreamer(); + } + @Override + public String getComponentIconShockCord() { + return getCurrentTheme().getComponentIconShockCord(); + } + @Override + public String getComponentIconMass() { + return getCurrentTheme().getComponentIconMass(); + } + @Override + public String getComponentIconStage() { + return getCurrentTheme().getComponentIconStage(); + } + @Override + public String getComponentIconBoosters() { + return getCurrentTheme().getComponentIconBoosters(); + } + @Override + public String getComponentIconPods() { + return getCurrentTheme().getComponentIconPods(); + } + @Override + public String getComponentIconMassAltimeter() { + return getCurrentTheme().getComponentIconMassAltimeter(); + } + @Override + public String getComponentIconMassBattery() { + return getCurrentTheme().getComponentIconMassBattery(); + } + @Override + public String getComponentIconMassDeploymentCharge() { + return getCurrentTheme().getComponentIconMassDeploymentCharge(); + } + @Override + public String getComponentIconMassPayload() { + return getCurrentTheme().getComponentIconMassPayload(); + } + @Override + public String getComponentIconMassFlightComp() { + return getCurrentTheme().getComponentIconMassFlightComp(); + } + @Override + public String getComponentIconMassRecoveryHardware() { + return getCurrentTheme().getComponentIconMassRecoveryHardware(); + } + @Override + public String getComponentIconMassTracker() { + return getCurrentTheme().getComponentIconMassTracker(); + } } }