From 04cd80b561e6653e62d8360ba1356cd9d4095334 Mon Sep 17 00:00:00 2001 From: bancika Date: Sat, 29 Jan 2011 08:59:53 +0000 Subject: [PATCH] added TO220 transistor improved status text --- .../DIYLC/config.xml | 8 +- .../DIYLC/library/main.jar | Bin 65466 -> 70346 bytes .../components/AbstractLeadedComponent.java | 14 +- .../swing/plugins/statusbar/StatusBar.java | 9 +- .../DIYLC/update.xml | 8 + .../Library/lib/diylc.jar | Bin 321913 -> 329708 bytes .../components/connectivity/CopperTrace.java | 12 +- .../components/connectivity/CurvedTrace.java | 1 - .../diylc/components/connectivity/Jumper.java | 10 - .../components/connectivity/TraceCut.java | 2 +- .../electromechanical/MiniToggleSwitch.java | 2 +- .../passive/AxialFilmCapacitor.java | 12 +- .../passive/ElectrolyticRadial.java | 21 +- .../passive/RadialCeramicDiskCapacitor.java | 12 +- .../passive/RadialFilmCapacitor.java | 12 +- .../diylc/components/passive/Resistor.java | 12 +- .../components/semiconductors/DIL_IC.java | 2 +- .../semiconductors/DiodePlastic.java | 30 +- .../semiconductors/TransistorTO220.java | 265 ++++++++++++++++++ .../semiconductors/TransistorTO92.java | 37 ++- 20 files changed, 347 insertions(+), 122 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index 197268d1..617573b7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,15 +1,15 @@ - lastPath - C:\Documents and Settings\Branislav Stojkovic\workspace\DIYLC\templates + metric + true zoom 1.0 - metric - true + lastPath + C:\Documents and Settings\Branislav Stojkovic\workspace\DIYLC\templates default.org.diylc.components.misc.Label:Color diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index 698fe03f8b9e48f4fc5e3bcd602a0c46c8dcef11..a54cc0a7de495922cdffda57fa6c3d27901950a1 100644 GIT binary patch delta 31163 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 diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java index d1370e65..71d5cb22 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java @@ -40,8 +40,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp protected Point[] points = new Point[] { new Point((int) (-DEFAULT_SIZE.convertToPixels() / 2), 0), new Point(DEFAULT_SIZE.convertToPixels() / 2, 0) }; - protected Color bodyColor = getDefaultBodyColor(); - protected Color borderColor = getDefaultBorderColor(); + protected Color bodyColor = Color.white; + protected Color borderColor = Color.black; protected Color labelColor = LABEL_COLOR; protected Display display = Display.NAME; @@ -162,16 +162,6 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp */ protected abstract Shape getBodyShape(); - /** - * @return default component body color. - */ - protected abstract Color getDefaultBodyColor(); - - /** - * @return default component border color. - */ - protected abstract Color getDefaultBorderColor(); - /** * @return default lead thickness. Override this method to change it. */ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java index b9d15b18..f8808038 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java @@ -277,12 +277,13 @@ public class StatusBar extends JPanel implements IPlugIn { } else { count = "second"; } - statusText = "Click on the canvas to set the " + count + " control point of a new " - + componentSlot.getName() + " or press Esc to cancel"; + statusText = "Click on the canvas to set the " + count + + " control point of a new " + componentSlot.getName() + + " or press Esc to cancel"; break; case SINGLE_CLICK: - statusText = "Click on the canvas to create a new " + componentSlot.getName() - + " or press Esc to cancel"; + statusText = "Click on the canvas to create a new " + + componentSlot.getName() + " or press Esc to cancel"; break; } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml index 796e3141..7132c0a9 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -94,6 +94,14 @@ NEW_FEATURE Added support for creating and loading templates + + NEW_FEATURE + Added TO-92 transistor + + + NEW_FEATURE + Added TO-220 transistor + http://code.google.com/p/diy-layout-creator/downloads/list diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar index b81007a04c85052a0d4c8902b81ffa4863d179df..1f1d96737440285c1654ae8d4fd8245c93dcf43f 100644 GIT binary patch delta 28822 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 delta 21762 zcmZu(2Rv2p8+Y$L_TGCF8Cj_iQAUKKB9THys7OjlHzl%@I0&VTY!a6uJ2FDb2qB5e zY?0OfJ?Gr~e)reE&*yX=&+~o8`@G}4i>YX?U#~cs_w6A-3{=R!7jfHTm}LpgaodZx z>EV!f>?NEi`cB13qwnW91p`4qH`{N4z&%|O)uft`Xj#xhg0q7W58@1|z|L&GCV5N&J(H3P~>q}D~>gVg%y zTaso6`gW$#M&B7UTIhR>=1+-~SU|RPvSDL7H;9UgKo@IHD?yAr_{nO(kZX;G>DKi= z(<|E)BX9A1F3L9B1t(;hCF`DOw=9cK-xIWb3*KhTM3v_4*?^GLZeF*`S=vorEgAt= zbPjZDsU8a%PyXE0<~Eb!Up>1??f1%Z?=aP=_q@!z686oNg`MAA8NR?Z*wcBHp814n z%bR6^nGpiD=<}|ir$o7#6U`&fuF?uqoGRC# zKQD_n*D}7bshB3s<|`qFRyXp~HoiO(9C-1=RfY>HjLuET86Ql4S;f@NDL(6-Cqlz&Qf&e$ z!N*?B^Pi5@HJI~zC-*eXf;U=pzi*Jnc=@I0@^QNy+Y}jgF7SJ(!u|}GJLexn{5mGA zmeS1c`aN=c|D`~^7ZbPz+41+{uZ#45slIoT|8V*2o;~%EEABCSwoWOWUc4`% zwOO^-J?@6A1>e(ca;~{Lt2@udpSyOG*TX?)gHgbIHPbC=b*@tNALl>YMJ9}m6SL1> z>=56e@x5gz<$?X7#Kh9=@(j&XquCCz?LNJ&FMfuaI7Tf6rCnRf(L2+kSKrw+%3tBfzM06r`?BFW9i;5H&K*1{ zHSroO=I-}uVW^3>4uy=&-!uNh3`u*tj4*grV3)>=# ziE{P=;Roj*eOK?C-1GU_&MYHVZ(l`+sjI#vT)6yT|-?!@9QaF(zs_2H30wB(D*30idMpT8MoL&Zczr652> zr5cM<5`(R>AZ}t6--SyD#=ST655YqL8e)ORHG*V6-?|cWPnI5k$Meb?X}w2Rt}rM) zjc%7zTJ8x@68hO=b$Gy?)wUG;e_iD9bvj0O1OK;gm!IvO4(NYsWvltEinOrv``wQV ztqbi7?U&TPwYP0mJAHR)Rx*p~o}ijeA4`*T^F;^2%8d9;#)qUv&?UQIUe4t`dx!wN2zvy+ZtL7vZi(S?Gh&qe(E3avHT)X>i zt=se`lM=DEQ|ZDYk=tX=L*(+SlinFn9iyr!?R?VeJN=vK1P0^lle)5%4~Vjwk7HPj&ddAX-sD{P z=FRCz!%W^Zy%DD`606qCEKIDD$(-t{FA9Rnjz*tvjEs1zULf~T-%$N&aH-%yP4N)g zo}euTPFlf|12k-d{>0KC^{^5CgQXuH8tA_5w2Ti`KIyMFNb~MN{X2Ha;-k%mbJ2W> zK}p_LI!E{|d|kz*H>>5#FSEPEJyg>UNd|T zjwrT`wB=roQKs**e38cf^|gq4_fxNuAVrRsH@z~0@;S;voptMMI9|qkMFsgtZ>M!I z+$l{XC8ty#?RmY^>d292Ua=bPrjwzg7Sd^k2c;bt_IU1cGtIF&G?ZaF*~2rS{p}iK z))~+Jqn(;fuDMPWv^9I|w)I$houWUnsn3NgmgiThbjg~^lYv7f z>Sng8r!~0tT-{%u7513NQLm$}h3^Sn^<^gsXL?2hPeyLZPa?I=buCv;cC|S^atPln zl~sNtVQPC}M5{~tYs1Y)N`9VJKC5UR#F*fb_<8(*RA!fgb(Zv@0@I))#MEy$oZuS6 zC$U=!7~-D@m}D@i(mK+;O6?aOM86Y)3TD`DDily0uP#CeXb2w!?GHAn4R-%p04u%TS*4~`PMn-|;hQ)6_k z<53#UDo5kBFS)Q!4~`@n+Z-bfg_X}p3CdR|dbkX0O`KZl; zx7MFjoeE~>KjrEcA?7)e!6M0#DnEAN<}HWhkluR1<951)DG5U_`CZ1l_Yu$X9GLAj zj@GLeNZp+k8IiGp=4a!Z&9sbfg7Ez#L8pu!CcWTn_S3N!s}~$Klqn(7)R@Oc994%3*_F=8E8n+6{_3K)X zR|>)VGjA8uzR)qww9_-Jk@w0VM&x>xMu<m`g*v%5jC6j}^uYceiefP~qP?>cUSd(kQIWS3Olft!f|MYwTAQ zq2;AD?!kZlzJz%3Hhq&ChaM^OcePNCYD52X1}z6T!dNKIqJHQ=_scK#Pl$Q5Uvd0R z`?5y1+eYl!w#kWs`RCSbUxEN#_)CHP$?|XXb&_SBo_%0T-)f)H+1b6#O_i$U zx#atsd1#;PcMve~VR{p@^4##fG5bT#gZsrr>Yq2zoi<;c2m?FZbTQye%agz!Kc!vx93Q zM4$fJVZK*e%}4U?zfL?5>Aif=hnW>_3>_?4--T@R^O1t2jw8B5$LkRoF}^G5iGk1&^YnV_o$#ug+FIe)~2uUUp|ap(}8$ zkLt*&cU-G%>>*o&dkP|%3Nj|kIt+qoe7x;C;yao5tLLZb*Uh*}U%D_G_=EH%WD}Efx$@RtR*XHL!lgp%6vH zE%*O?Yj%C?yCp*w2fY29e>97Y;o6W)qoCL}-r|5-6OA}#Kkw>|sb_V{KH2QIJ!hD{ zx_zgMos^wu_1)x6`3I#2lybJmSd}HF?mN53O+MgRY4r`4?!A}81-u(K&9rkzX0Cqy zLn~@w>MXy4`;ur74okz47cGf315~_kx5C^R8X1a`MznUpdn97t@PmLjtw^i zw%qa}+$K20`XJuCFt zkN8uB_GpvTV)QlB{j1(?BSX&>HVcQGU^3@D_D%d@xCq|*yR30l(&k}iMMv{mrdP7N zk{;_$pLlCXZz_^^nSR5=fne>T-k$y+OuLnt@BLhhavI5={@C><<$7Z4kW^Nw5yS4i zb%Yd|w8(het8I)WkCdOrTKUXusN!*UIK}f)oMEdUIW8Kk3bx*FD-L z)}?WDX3$yq0_%}yd8vC}KD_(ZrmW)a;ERF5Cl7otho9{G7&*Mqy@E@7+ZLQWxKFOvN6nhPIl_ zJvvNp|FUp}JBzqc{-8k*o8?t&oxR2*o0IWGZUK6GgYH~uKW5$FW?HEFZMK{6%dAn3 zn;j;h7nrl|x5_V1oihsIz3`rzZnsyr0R1VR&h~sYV}Ssirp*)k*Lc-2i+RrM@ajFn z2MF!WZoLkHXXZmn5>ETNEH!Ye1^9>mI+q$s8!)Z8JxNG}SYXVz{r&EH(e|_hX7_FU zY_nFAwZcZvljKe@y^WZ zA-jIJ(CT3FD^C&PLa0f^oX8Tfkbd^Tr^|j~L{ZzLdyQnctA(l;tj8yETW0l=Sga-{ zTIaR&-(`Q;ntyAUwyc)+#1h-3a)Ig-8ka+Izk29MR!1M0=uIA5uvk3AeVLj1vPf;T zadb_Wd!B%&m9KK*tYQ5Ak@?~Gp9J^T&FxbDF56I6RRC|pD0COM;2IX85v&90A3Fs=~%s3?%2+|)bQORh^3@2 z`4y&>f0qf}|gVI0QhdW`65WygZu zxxCze2zcI)23tbgaRQGn`^G&)Bsd6ERLrq+6?`ReU6PpI)7R}75#E=B5!(i%F`{KS z2J>eBeh0?6H@<{%QYPG##oZy}~83>}e1mE0+<167_xs7S({oaTYq&_^(AEn@`GMog-j|O)J6HL?Nc+iZI zXjpLJn5)i{uEw#zS`^&ngyV~^fM`io>^RUGKy{FgbK|lxij5!l9SxgAD}*z`cow2K z3yhZ`j+4a{kV`l1dKa*y+)@ zo1Ad9n9Xok+)a!U@xVR9sNqvM4y^DwjaD-Ppzz!t+62F5Bz^JrTTscPB-N(&hlzApj6QjbjaRpc`+jDV8v3g0($5msz zV}-bf7>=<7SBO!dJ>ACQJD&eT*#g983U?ZU%+)kPbfn8qaJCq3unOmiQG06tSkAA< z?Zk8qhK6~M0^P%Kp*YYbHbK~oNH(I(spOf9?x7lBa%FL7J2fcAIbn9(7LseF{9 zqI!3nib@h#;DZy}K$8s?#LuCp3#1E%cz#|MU{FV}@?*3<=-ZP7xb_@@C;lm(1vYDk z_(+3C@a9;IipTIZ=x|J$bHck~)L~bA2SzD);Jfk6h$)SXC}%IQv1Jb{UBqu7sh+~$ zLW zJlT0XUK`_iCgGPco_i{O71MA}!%ty6n+$v-Mu}(REiet=eEc_z=TVFYLpM?h!KL_W zOm}xV{x(JpKf$+RRDKm+kp{&L)#Kf;D&O6R&&8;p&+*qW+~pVetLR6HMCih=;LtoD zdA>vAB94kG6%Vs?;iX6_-S}`!ulhB95z~9pi@!iXQ>k8GL+AlJcQUZ<0Dcp3{{;K* zyNbVFbg(MB2q+6mC>=N4jc36PFtHEZ>>EjFbNyvQcU*hIm?pU@smiE3UG2zYW{S9aG&``#YoPF&Hi-|O2}Cogb0)2ZzHj$Re( zrK6JxN~^h=JSM;Q2#06!6->H$658tFnw!v?;I^N@wJ6a4b_@d`(0wj zukhgN&)fKoHm{g9ZQLdi+q-$?NR!;kF8vEbAw-5b=0MrewTw|S;V*Ni11mq)+u|<` zggkilyD8*+I@j%dCjH@oTC>;L5gR^jPRyL#9GCfNb4m*_5tk%xSDDsjDtsiH;PUHXol!}^=B%KP zueRgbUEe>hF=A9doGxh+uC8fp6tRLYyq(!%^yXFXwI@So-m`0!Dfa2#YY*~{Jg1PV>=Zif@_6{G#1ErOcFkeZ z3a+{QCHI3~v_Ear{`gGy(rGCk7Eh~v8x9MVUgX#W_SoyRx;c;5&G>{!A2}!Cu<)eh zy-rh@d`pl<*w9R~?q;s$D+Jqa$;_j#JPaKbt%!NmwZ~VoD@@D147)F0=yUwZzCrf3 zE>VJmSy}gxXLyj4%l+YEI(Z-KFZ;V6zIgqXgN5^m_EOLrkAxfSs!slGeusaR+C*gS zTYhb_{bn8GW|y>YKkqN?R=9Pj-sP+HDH%V3=~EvKqisW{WBk(PTR5YMAqsK9LanBU zm|X@f8Hi5ZQLMJ1@t*3Y3)WE?H@r{Mt3AGB;IWna&8=PnLzT z{9BfnWx)tfeD5mPR^%LYerxylc!sK;-`C%T+9huO;k+{-v-&GvOuMycSkAKZh>4x^ zi2b1Jh}Gb8@3f75{e#=iR|GCtR_SGN9<5c)(DFGg(aGf?Xrg?3T#f1Qo-a(5q6;Mp ztRbOhE|+A6WejUqX=WOZToPB~x>|LqaI?Ge!h9MJ zo+E~v^fe^cd$>nV|Mh8@ohjRfV5z zSGCmhGM(B!(_l^fo$#_kS-vD}ix!in(crO{#pe~JYwnr9br`{IpS)RU0Z8!>~uDv={u%16knfHw#-R$M3?u8))}>ueN~+`Kgt7r z_Byp>PfDmV4=UW-*ss-h&F)NPcKFE2(v${s!d8aNtopETb&5pQpJgf>N`vVCzP zmtE%^_Plo3vn}ZQxstcnt&|;pWR690JP1@Ob^e;&+vUG)--nM+*##RNd&8Bt?)H&v zdXYSpzAeIQ&Ek^4SQ9}-OQKv9d~8f!xxjsW}R5wzvb!m zM#sd*Kawm8uE-}v2g-elAb!z~J9KF4sf?}3o>FQI=NLmK*X&`hl23H!K6&*Vp4j%0 z%39CBrBZ`q;?;?m9nrVsN?IKBV)3_}d2W4H-k|(q2ZvEm3f#eN>HMBXt%29!%AURK zyR;Q|#wYK1Ld92V92BenvdHt~gl4Scz3rqy?>t>E|Ax1@J#vPy#EH}UiC^sMRIIz) zG`Al3AfIwvCE?N3%2@oCdSCzC((}1a;b(qX-WeJawxb^KH#i;7@Znp@O4Hl=G=-bt zX>N*hv__5@GX^a2l_D?8mKG0eiG`)lEVen)WZtiklT;f z)R1Rww&ZO|ym~8Q{+-6^@8N=XT4QHK;=f)rHx}N}Ex^Yf{z`7B)^J2?=b_}&>PL6W zPjNm?O`=_e=oh~|)S4Ak;J*I4kdcG%D0HKkq$wZnz55-~;~cLY8m=L^50f_&d5^nV z)Y=Y6R%>~F8tv6K8vba(_x0jTaf-cK%_5s<~Zy0+$sr^wGe3qv|&)!R9afeE81$%IPydh}e0P(@I$B zy~vk%I24{;>hFabXE^PT$!<3a9BJf*wLS(r(^a5W^hL~M2N88Pb4K=H8%7Yzx zzm`+=&Np2r2@FsE+*+~Peu@}A@J;gI4?Dfw)Vr|h#3}V>Av-R=`09tRU;Oc6dYOv& zwWd{aq&-KqL#*=Pbz`oB%z9sv4{bZ|SgUbuPTImwoh~I%I^~)&i=*Aau5P|z8$T+} zTe2s=d>5+GSDzEnO=Mzmu;hqkbuc-|vH!yGWAhElt6~hfsrsXAEzX*fp^4d_6cVkD zXO=i?%BZEtcV9^SbSZIDvng-O*%;H1qC>>zGQ#?S3iH-CYrnRdWN4Y)4~xmAJ`k%v zJ(evhJN_c>6T zBBIN=Hq_VuraF4i*Q`<8)9lWe_@&p42`zGQ!^9Zh+JyHSK_w!-zeaj*hIhXRYCP_- z_}KeRi1#_%fX^eX6Y@1aZm0XBFYI!g%@b)T<0-ZD;TvG=s#kQq8dYTEixf3*QWcmo1de`84@D3ZAdr_kA`hE4=VPcuB&tg=)~I9-m2@ zXUB%3UHdi#{@jveve?l%x6xNQExdZ~n1l6xCB6M`BW}>e%h!d^#r;rz^ZC)7!;}IQ zv@Htl5iw@q7Gf}&I9a3`X?|3nO zM#TE*sY4S#{Vj)xl$($`I4w1PJOQjJ)u>^;Spv_Wt8I*M(I6y7dPE>FVN1AL8p0-Q z^(^+0;JNe;p;OlcE0p%h!B1*_7_i2^7M%&tw4fG-IW7)V0=1QiUoPmlmMHjqVSqzFM6 zqw>WG$1y3F6yYjHC2k;)mz=g63CY+pbV-pQjYpS_CsSwEwg4Z;Ah`1ko(I0dOkjkG z?;#n6QarXcM$Gi)YhE@8jRA_C)~xM3r)xH>{=RN ze+bswNl+z;7!r6f$hO^tPgpQgW`ynZXfQ_X0Uw4zUTT=&z^#x7d~7Fy1>W}&VkTu- z0W^wf?5xPT0n+~tPl=%+b=ndVvEV$95W2DA@leIQYXaz^ztF^Eggy*?*pV>Ef)-E1 zn-GfW$z`7CPXb~8f?$1blUE5Dn8wW@0@&R~aB;zee)Rex$vcMd0@KxwBXnXETOy$qquwPGS}-d29-)#N z)pgG#Okq}RvI&M*)5`4CZDRxJQ>Oz>3sz|%h><#T31FuZakgCeC#bGR1SyQSSVoY? z%x$P7Bx5CiMpCQU12Se$&KPnl6OOJSu#)iA1Usw<4mAYwzQ?`>LMLWHvW0LF3+P@O z!3(1}I|w?MRbAnM;h)qXG-mi-FhPVA&_&?Kb~+M!3D+>R=v#s;R!oy2!e-2B;Cq5K zCLQ=dD8{Jh34#JfJ^MsR!YJD*LLWwLnFY-eZF;6gm4{bA9V)`ad^|5)G(iv|v48#3 zp~Zd>?qM4B3xpMHTZ^-Vexw5I)SU(i+y-|o5Y$Q3OMhynYn3367611dAq?A7i(r5z zut3kTL2{V%0Xw9MQGFcHMr?CNV_%HW2)HB5i9fqC8W8khf?g@; zHfHbC1}FmCGFnxHNEnZ#1XW_Zb6cT3SVg^mrwM(>DrHd{TEp~y z?ST5Ra=AgYACH3+Z-h`Zycb7JOXA-Nk-J2gJ|u>2E0XdLKnz&6pIAZUjmwrpkRo|F zvV-EN(cT?nofpsw3~Ext^L$`979&uz!7zcEnbheBy}>LzbcVKI)Tk@Ofl)tCKuj1# z?FsEgt-{t`&}THi`rgnsYzLEg5ds_XNO$lEfKFo02Ld5mCX}ZU^+zfl1I3{u9$b|O zZYYDZ0eCSH+JO?9NstmscqT#WD3P87ZAT2iV@VKt4H@2W2fN=4>!v`0@Z~!Ydg~a@ zy94b)fnV>CHB^#;RYX-K4FIE(Au;r);y>&TM4u%Ectk+Jnjz{D7!rijQy^KC4L~L+ zA(RU3{zC}DS5qOye|~EJ^Al>4?=IOS`jhjYpWwUDK2+uNUFZNx=-q?%qD1UH$P6XM z?m>G{0)&iSs)j)!1mUnWNa{aVs^Q8sP)sCw%b;}lKE~Kl0Zv%{KD0p$Fm)zO1YZ?` zx~`|8qLTX8E%Nlh9wylPKBS7G{Ix|Dkp1JMU|7Ge-# z*7F0VENt9LMk=QRW}*OKa>cd^GQlU)$%0FWAYKp=!1?Kr5Ne_gVfKom%++*=2aVZ- zsi~J2#M}a6mY|4vP7EM9VZ#ha7)9P($ToZokUU@{r9>J@BFI=jDR#7UD0@mH$XKiUFn$#obT}@4L65Nb@XcBdUHe3#cdPqs)RV zXcL;LVT8$PgfL@uc1ysWS>zfHa^umT0wWx9Bq&K?ce^p{@DNf#%ig<_q|g9R8~;L` z*b^IIDy{IJ(&<=w6+WZ}sf9qoC{ugN3?^hl%Bb0U$7LU01Ws>&N1DQU$==weeKPRH zY>-VPC!yIOey@FSW;W=gNEhfr7~d`6nQTZ7WeDZ~#>PXj+BP!q(HyecDTJwi7`}1` z5{4hqOPK3K`i*jQXj(}k?mt1K|xj#d;x7^cPa#qxW;*YR@$g>Pt|Iluf?$GVD+QZANSH;G(&P z3-Ip_9!gu60?`7&9R*~!vJND5x_--5C>|4)iTZID=5JZ}pG!c{uvrnrkG8fGMZj6g9l(@<^MN|btVEa( zQ&HsCB8V4dG8F?RDGe~WVu$Zj|1}O+Ao5okK+XvV7K5rq#`33c+*1O;3AP`2L@C0S zd59om&9hnl>T~yBvhyAXsX`7%`6!e|%Te>(k04GoCizFer++2NwEe^MMwoOpaB&G3 z%9LyA;G9R~a#bJ_`g&9Xe|`jUp+;~efJ@Va;Wsri!8#>mycr^CYr*iBOCV0PO#fVu z_-}Y4?Fe)OYV|Fmd#V%DWqb_!8PeOu9s_P!HyZH1#}E(7Jb^HSd(nL4_x-CH%M@ek z4}&Be{Hxul4WK5*A4A-ziB-fz<2%&EmG^Y8dMU()21|FU9$cQGqFMzlL4qQeHlt)T zI~-a{Za3PJ-=HdhEdL9A=K~o{4|kQ4EBDMTi!Fx%@*sG?q3`;?^uUCPKj_%zNw&Y5 zif$Q*R`WB0fxXJeSqMd#H|G8@Y2lhOh!rgZ=T!l{3{Zx9;Nf5Qg0y|k?wE{Dnkr2up~G zZX7KB1mc9{%E{jJ$^qAc8smDGlgkl?a3|>yE*H$kfTQ`V_?-v>$BZDjVL28Y3(QtQ zb|hK>MA2-RsGJ?g1Rwb$@OxeyT#e7Ax;Nze_^6?h8DPzD~#X%HhH0u_R-iXb*o zq%SsBrwlQG6jFmnf+CH0SnLV;19{c3yg>-qLM9%Rc`+4%y`PXjTFFm9Ece6^2b^%* z6Nneh>6J>Gos+;gvQD6^r&cKp%JY<*I>o2Jz-L*Ed*ms(Qsg-kZp8t|H^DG1-nG=PWldvj*Tx*8*FQ3>&( z4al<+1RJ;$6D3!YgN0LV(+xmLb^j`DtpVIs3CWmRvz#~NAA=m{|)Ahj7!UE4A z^l}oc_zc9!@4hZ#g*~5<+oV4tdV3NRv*=m>T3PA5l|DPaFco-Q@d47?s&P?AWmU_jJv4@qJhE9BNlkJnp}=G zM1Jk^x*QuF_SOJyW+28T){y7)$q2XWD#jHCw~pX9HRPdo8WG`x*G0l;J!{tjE>kGR zJy}bh*GC}SD-rN~Ef@=`z<+3!J|jJjz5vRT2_{aI-?z4C1d4q?1nPjUe=MfEr;cpV z9pNU#W84}TNB>vGu9GDAb_46Xz(d)Cg_1C}4|U{TxQrM}PQikfuP2B1weXr`IZ!SE z4`tJ_PQ##=?}H0s0rlj(M$`i<#u=E%D-*}~S4hUfL7u)~*6jx#%0VjlA*Pm}jbr{x zt?#ztiagS_!9zKoY|X*c>~nE+@Zkn>ASW6?Ac=XHs3!ma^os2l48+fZVx0yLrA6BU zOzmR>IXA0_F`7phSFw>i2||bb@=}aDT!v%#YjD5W2=w+=kb`I>=d@Ik%~%~cRsJid zy_FbrtqRBZmof3@z?fkThB#S^WB&``jUXP@VTg`;FgoTwC#T~HBARZ5#hV~Ln}W>I<0cPh(E@}Fn0+f!pai;L?-sB^33vgqz!#grtPWWt-E0PK zJiGrTdh;t`u(o1abIv!gGrM&=FtlqA3nPKB$ z@S1q{N7ZG+}k;dh{%q9AFTC`#~P5`kjdJVgMGZ~u%GoCgM1=eV#H z0AgUv8K2}9b}A|Zuu!6$zArCfc#T#_NF0Hh&2hzL0$;(PEXowVXqmy@>uYeWGQ1U% zMX{IiF8tgGmhthN|BY*zykv$O=jPcy>5v7-B*d zC~ovoL}MmER!C@r1W|07zpVT#9}32Z?@7^WQ?r9z~#7vO5voFOCR992Pr{=Yj)XlFh2T1fqj3nCSFN z@@@pU3n7S?amSq5df)|71=QpE1wydDt4>kKRZk4B+yP0V(6Ld`ty!QQR{-c%3TTb@ zIuwEz&)~WL3Fv7Da9w#0lh2*Uv;E`Ri`AsA0~D6yFV|uhFg&RfVufY8z_5g*>|!S{ zwKHH{gf-{^gzFTDas9jgt)SBdM8VhBMVP`}gj*1baR<8~Vbu5v!aW~>adRW_tpCKh z^f`q!6U2EHtg|UwrCJPzw~fa$z^SjmfQPi=@>d^&zXQA`C>Ldqk%?Q!V|hSbvv&j6 zu8Ek)yqg@*DTM2sLJsH;w-x2y!?^phf!p=;Y|&#Gokry9ay_keYh0molIPh6E;Hl=9=;R|l)~ zLJDZy$9h5ByBgrYw_t2L*$B=}a(c<#tpX9vH?E6V;pJZPXv)?HL>HPd(XKv76!pkt z+yA=~ctkegC@Bl6Oob-5s%2SjLS>-S&5#D_9(DsR{E^zcGIIeFMQF>*{yMYV$>&$}m3Jos}c z=$SE=#o<9n5SImCc?M?!?EHlC0zC{4tLaczXp|KQXv=R(5bHmsu3}X_ z^BR;I205lIwGSSyeFru~O-INDJ~aYN#Zs?xv9h8ydtc~4Dl$zm0=c6cz?Nv?v{6V7 zW*sGu6pYp5wPyh|=`Sde0fV0W107b#9^MaNIe!f*ddvtE`&NyNg0M!|v9Q1)I{3wi z_kU(B>*wtM{hrWqt>dxdoSgSa;ds`$T=3$1az!$a0g0W)QjP!F4$eeA*k-3X(;%HU4vtfQm|kBK5h} z|55@s3os?LIF*yYX!2o9zBCC*qFk|0fNN=oaqT~m=PAL)>BS|WZf}B4Ls_@=_6QU^ z51c}DUpl}lU%(eZ_A?}d2B)I1m%AT~&kbOFR-*_m{Wt>M1gCr^H{T^YD=TXNwF0gv zp)Xx9=-MCX;bW)2J_gW`zo6&b5U3vNTg1lBDiRzn9TNNR=gr?8K`Fx3U&zhZ^`nRG z84zMOm?v(h2-DgZp8rBV`_!2NMU=dNFqB~bI0E}W)3O{y^z#xXGEXG@>*LRb|Mb8I z*dF-HcEc46FO)(6zm(KPZV$w1U@9gE5y`?0)8tmrk8t;eAzTUgPA2#gpa+u3SNEp6 z=;|8C#u9Ksxmwu~iQ&Vt3C!^28M1@O8DQ!L*d9PkwatJXH^j>2;69D(AfJAq2UDhh z6l@$ImHPV;xGJMOOCH%$zdY{g10E&8a78(JAb~9fGMt?!#;lafbTG+M{3@k_H$R+fg10~G8zbe($_^&=&>K#`nS&m(UynnA{ID!o}B$Vh={%b6ZOtRa%jrVRa}hZ1F_YE z*t98HO>hw`{*`=&eflfV{RLM4UqNf%*8%=`+4|~Y1QBV1Er73}G2ZL~LlIJLG?*RV zfQa}MuKfn7!cpJIeWakF}Qx=qlGD3>Db+JGl&A2-o#F z-1P&r-s<-tX~@b9Ey#hu&hCA{tUah0LkhFC%@|(f2PBO`v;3}1bb-bu2g4oeio^F7z+NDT z0mn>g`lM9HR$%i7cnm0PlSVNp+Y-b8cPx_c zRxBY_#^3)-r12ZvOF@>lXc}@EXY-;#g>Pm2Z!jF~eOFW5@^<;Eb!}9vX#$>m5X%$5^1fGMHXv7bbw)9 z#0(d00J&OwPfpV#14q~6AYgakY8yqsW9($5-{2mY&L)Tseg|@kwrHW>U@nsa>n=m! zTEK7eYVrzT;_U=saUAs~xb-*L|0u%E5k|Rj3e=ov1DNj`kt+gDk>Adx{8YRX$B>a^ zWU^UhIC6<>9E3-S9G1k8Gi2mH*S!9Vd@79~u}^x)GbWqY;MYnYiU0TO;ROzWaMX%$ zA&webi~4@2^(Y6f^Fff54JdXSJc^?>KvS_1PYq6=G!cd>?1!hub`7HtZqasxs{#+= zsj-U<^9XlD7vajo8U$(~G#UR~C;RW$*Uu1vN+5U3_)+Ml34OI;5K=e@iE@?^WsE`l zoxv&F`utcJ0uGz@U?Mw+S_a)3OL;dOU<;D+TOoH4 zL8-t!)YRB?as~V;M!d5<#;v{xI?no}mHyR}DjpEgH(-e}6&4N{J~sejhNr2iu_oI^ z15DLABO+y3gqB>#ZD%SY?}IeF1(qnUjfkE>pgeF5Ex6owDhjmz%d})uk+i@Rqwl(0 Tghd;tjjQvZqDl(@cBuXb`{${W diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java index 3886a69b..dec9f8cb 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CopperTrace.java @@ -15,7 +15,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "Trace", description = "", zOrder = IDIYComponent.TRACE) +@ComponentDescriptor(name = "Copper Trace", author = "Branislav Stojkovic", category = "Connectivity", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "Trace", description = "Straight copper trace", zOrder = IDIYComponent.TRACE) public class CopperTrace extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; @@ -109,16 +109,6 @@ public class CopperTrace extends AbstractLeadedComponent { public void setValue(Void value) { } - @Override - protected Color getDefaultBodyColor() { - return null; - } - - @Override - protected Color getDefaultBorderColor() { - return null; - } - @Override protected Shape getBodyShape() { return null; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java index 956a1942..f5db6e5e 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java @@ -8,7 +8,6 @@ import org.diylc.common.ObjectCache; import org.diylc.components.AbstractCurvedComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; -import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java index 3078d6e2..fb6b4296 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Jumper.java @@ -74,16 +74,6 @@ public class Jumper extends AbstractLeadedComponent { public void setValue(Void value) { } - @Override - protected Color getDefaultBodyColor() { - return null; - } - - @Override - protected Color getDefaultBorderColor() { - return null; - } - @Override protected Shape getBodyShape() { return null; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java index 252a3f19..57772ae8 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/TraceCut.java @@ -16,7 +16,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Trace Cut", category = "Connectivity", author = "Branislav Stojkovic", description = "test", instanceNamePrefix = "Cut", stretchable = false, zOrder = IDIYComponent.BOARD + 1) +@ComponentDescriptor(name = "Trace Cut", category = "Connectivity", author = "Branislav Stojkovic", description = "Designates the place where a trace on the vero board needs to be cut", instanceNamePrefix = "Cut", stretchable = false, zOrder = IDIYComponent.BOARD + 1) public class TraceCut extends AbstractComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java index 0713233c..64b0379d 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java @@ -20,7 +20,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electromechanical", author = "Branislav Stojkovic", description = "", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "SW") +@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electromechanical", author = "Branislav Stojkovic", description = "Panel mounted mini toggle switch", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "SW") public class MiniToggleSwitch extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java index ed3ce7cc..ce604209 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialFilmCapacitor.java @@ -29,6 +29,8 @@ public class AxialFilmCapacitor extends AbstractLeadedComponent { public AxialFilmCapacitor() { super(); + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; } @EditableProperty @@ -60,16 +62,6 @@ public class AxialFilmCapacitor extends AbstractLeadedComponent { return DEFAULT_WIDTH; } - @Override - protected Color getDefaultBodyColor() { - return BODY_COLOR; - } - - @Override - protected Color getDefaultBorderColor() { - return BORDER_COLOR; - } - @Override protected Shape getBodyShape() { return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(), diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java index 6a9b3778..6e66ec64 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/ElectrolyticRadial.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.CapacitanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Electrolytic Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT) +@ComponentDescriptor(name = "Electrolytic Capacitor", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "Vertical mounted electrolytic capacitor, polarized or bipolar", zOrder = IDIYComponent.COMPONENT) public class ElectrolyticRadial extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; @@ -27,8 +27,12 @@ public class ElectrolyticRadial extends AbstractLeadedComponent { private Capacitance value = new Capacitance(1d, CapacitanceUnit.uF); + private Color coverColor = COVER_COLOR; + public ElectrolyticRadial() { super(); + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; } @EditableProperty @@ -51,10 +55,10 @@ public class ElectrolyticRadial extends AbstractLeadedComponent { protected void decorateComponentBody(Graphics2D g2d) { int totalDiameter = getClosestOdd(getWidth().convertToPixels()); int coverDiameter = getClosestOdd(totalDiameter * 3 / 4); - g2d.setColor(COVER_COLOR); + g2d.setColor(coverColor); int position = (totalDiameter - coverDiameter) / 2; g2d.fillOval(position, position, coverDiameter, coverDiameter); - g2d.setColor(COVER_COLOR.darker()); + g2d.setColor(coverColor.darker()); g2d.drawLine(position + coverDiameter / 5, position + coverDiameter / 5, position + 4 * coverDiameter / 5, position + 4 * coverDiameter / 5); g2d.drawLine(position + coverDiameter / 5, position + 4 * coverDiameter / 5, position + 4 @@ -84,14 +88,13 @@ public class ElectrolyticRadial extends AbstractLeadedComponent { return super.getWidth(); } - @Override - protected Color getDefaultBodyColor() { - return BODY_COLOR; + @EditableProperty(name = "Cover") + public Color getCoverColor() { + return coverColor; } - @Override - protected Color getDefaultBorderColor() { - return BORDER_COLOR; + public void setCoverColor(Color coverColor) { + this.coverColor = coverColor; } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java index 38f6b763..898a4ab4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java @@ -29,6 +29,8 @@ public class RadialCeramicDiskCapacitor extends AbstractLeadedComponent { public RadialFilmCapacitor() { super(); + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; } @EditableProperty @@ -60,16 +62,6 @@ public class RadialFilmCapacitor extends AbstractLeadedComponent { return DEFAULT_WIDTH; } - @Override - protected Color getDefaultBodyColor() { - return BODY_COLOR; - } - - @Override - protected Color getDefaultBorderColor() { - return BORDER_COLOR; - } - @Override protected Shape getBodyShape() { double radius = getHeight().convertToPixels() * 0.7; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java index 2195439b..ec25540e 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Resistor.java @@ -32,6 +32,8 @@ public class Resistor extends AbstractLeadedComponent { public Resistor() { super(); + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; } @EditableProperty @@ -63,16 +65,6 @@ public class Resistor extends AbstractLeadedComponent { return DEFAULT_WIDTH; } - @Override - protected Color getDefaultBodyColor() { - return BODY_COLOR; - } - - @Override - protected Color getDefaultBorderColor() { - return BORDER_COLOR; - } - @EditableProperty(name = "Color code") public ResistorColorCode getColorCode() { return colorCode; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java index b0dc7591..812a6b6f 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java @@ -25,7 +25,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", description = "test", stretchable = false, zOrder = IDIYComponent.COMPONENT) +@ComponentDescriptor(name = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", description = "IC with rectangular housing and two parallel rows of pins", stretchable = false, zOrder = IDIYComponent.COMPONENT) public class DIL_IC extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java index d0118346..493cb3c5 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java @@ -13,7 +13,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Diode (plastic)", author = "Branislav Stojkovic", category = "Semiconductors", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "D", description = "test", zOrder = IDIYComponent.COMPONENT) +@ComponentDescriptor(name = "Diode (plastic)", author = "Branislav Stojkovic", category = "Semiconductors", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "D", description = "Plastic diode, like most rectifier, zener, schottky, etc.", zOrder = IDIYComponent.COMPONENT) public class DiodePlastic extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; @@ -27,10 +27,13 @@ public class DiodePlastic extends AbstractLeadedComponent { public static Color BORDER_COLOR = BODY_COLOR.darker(); private String value = ""; + private Color markerColor = MARKER_COLOR; public DiodePlastic() { super(); this.labelColor = LABEL_COLOR; + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; } @EditableProperty @@ -65,16 +68,6 @@ public class DiodePlastic extends AbstractLeadedComponent { return DEFAULT_WIDTH; } - @Override - protected Color getDefaultBodyColor() { - return BODY_COLOR; - } - - @Override - protected Color getDefaultBorderColor() { - return BORDER_COLOR; - } - @Override protected Shape getBodyShape() { return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(), @@ -83,10 +76,19 @@ public class DiodePlastic extends AbstractLeadedComponent { @Override protected void decorateComponentBody(Graphics2D g2d) { - g2d.setColor(MARKER_COLOR); + g2d.setColor(markerColor); int width = getWidth().convertToPixels(); int markerWidth = MARKER_WIDTH.convertToPixels(); - g2d.fillRect(width - markerWidth, 0, markerWidth, getClosestOdd(getHeight().convertToPixels())); - super.decorateComponentBody(g2d); + g2d.fillRect(width - markerWidth, 0, markerWidth, getClosestOdd(getHeight() + .convertToPixels())); + } + + @EditableProperty(name = "Marker") + public Color getMarkerColor() { + return markerColor; + } + + public void setMarkerColor(Color markerColor) { + this.markerColor = markerColor; } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java new file mode 100644 index 00000000..3f4662e0 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java @@ -0,0 +1,265 @@ +package org.diylc.components.semiconductors; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Shape; +import java.awt.geom.Rectangle2D; + +import org.diylc.common.ObjectCache; +import org.diylc.common.Orientation; +import org.diylc.components.AbstractTransparentComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +@ComponentDescriptor(name = "Transistor (TO-220 package)", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "Transistors with metal tab for heat sink mounting", stretchable = false, zOrder = IDIYComponent.COMPONENT) +public class TransistorTO220 extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + public static Color BODY_COLOR = Color.gray; + public static Color BORDER_COLOR = Color.gray.darker(); + public static Color PIN_COLOR = Color.decode("#00B2EE"); + public static Color PIN_BORDER_COLOR = PIN_COLOR.darker(); + public static Color TAB_COLOR = Color.decode("#C3E4ED"); + public static Color TAB_BORDER_COLOR = TAB_COLOR.darker(); + public static Color LABEL_COLOR = Color.white; + public static Size PIN_SIZE = new Size(0.03d, SizeUnit.in); + public static Size PIN_SPACING = new Size(0.1d, SizeUnit.in); + public static Size BODY_WIDTH = new Size(0.4d, SizeUnit.in); + public static Size BODY_HEIGHT = new Size(4.5d, SizeUnit.mm); + public static Size TAB_THICKNESS = new Size(0.05d, SizeUnit.in); + + private String value = ""; + private Orientation orientation = Orientation.DEFAULT; + private Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0) }; + private Shape[] body; + private Color bodyColor = BODY_COLOR; + private Color borderColor = BORDER_COLOR; + private Color tabColor = TAB_COLOR; + private Color tabBorderColor = TAB_BORDER_COLOR; + + public TransistorTO220() { + super(); + updateControlPoints(); + } + + @EditableProperty + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @EditableProperty + public Orientation getOrientation() { + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + controlPoints[index].setLocation(point); + body = null; + } + + private void updateControlPoints() { + int pinSpacing = PIN_SPACING.convertToPixels(); + // Update control points. + int x = controlPoints[0].x; + int y = controlPoints[0].y; + switch (orientation) { + case DEFAULT: + controlPoints[1].setLocation(x, y + pinSpacing); + controlPoints[2].setLocation(x, y + 2 * pinSpacing); + break; + case _90: + controlPoints[1].setLocation(x - pinSpacing, y); + controlPoints[2].setLocation(x - 2 * pinSpacing, y); + break; + case _180: + controlPoints[1].setLocation(x, y - pinSpacing); + controlPoints[2].setLocation(x, y - 2 * pinSpacing); + break; + case _270: + controlPoints[1].setLocation(x + pinSpacing, y); + controlPoints[2].setLocation(x + 2 * pinSpacing, y); + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + } + + public Shape[] getBody() { + if (body == null) { + body = new Shape[2]; + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int pinSpacing = PIN_SPACING.convertToPixels(); + int bodyWidth = getClosestOdd(BODY_WIDTH.convertToPixels()); + int bodyHeight = getClosestOdd(BODY_HEIGHT.convertToPixels()); + int tabThickness = TAB_THICKNESS.convertToPixels(); + + switch (orientation) { + case DEFAULT: + body[0] = new Rectangle2D.Double(x - bodyHeight / 2, + y + pinSpacing - bodyWidth / 2, bodyHeight, bodyWidth); + body[1] = new Rectangle2D.Double(x + bodyHeight / 2 - tabThickness, y + pinSpacing + - bodyWidth / 2, tabThickness, bodyWidth); + break; + case _90: + body[0] = new Rectangle2D.Double(x - pinSpacing - bodyWidth / 2, + y - bodyHeight / 2, bodyWidth, bodyHeight); + body[1] = new Rectangle2D.Double(x - pinSpacing - bodyWidth / 2, y + bodyHeight / 2 + - tabThickness, bodyWidth, tabThickness); + break; + case _180: + body[0] = new Rectangle2D.Double(x - bodyHeight / 2, + y - pinSpacing - bodyWidth / 2, bodyHeight, bodyWidth); + body[1] = new Rectangle2D.Double(x - bodyHeight / 2, + y - pinSpacing - bodyWidth / 2, tabThickness, bodyWidth); + break; + case _270: + body[0] = new Rectangle2D.Double(x + pinSpacing - bodyWidth / 2, + y - bodyHeight / 2, bodyWidth, bodyHeight); + body[1] = new Rectangle2D.Double(x + pinSpacing - bodyWidth / 2, + y - bodyHeight / 2, bodyWidth, tabThickness); + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + } + return body; + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project, + IDrawingObserver drawingObserver) { + int pinSize = PIN_SIZE.convertToPixels() / 2 * 2; + Shape mainArea = getBody()[0]; + Shape tabArea = getBody()[1]; + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha + / MAX_ALPHA)); + } + g2d.setColor(bodyColor); + g2d.fill(mainArea); + g2d.setColor(tabColor); + g2d.fill(tabArea); + g2d.setComposite(oldComposite); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + g2d.setColor(tabBorderColor); + g2d.draw(tabArea); + g2d.setColor(componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); + g2d.draw(mainArea); + + for (Point point : controlPoints) { + g2d.setColor(PIN_COLOR); + g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.setColor(PIN_BORDER_COLOR); + g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + } + + // Draw label. + g2d.setFont(LABEL_FONT); + g2d.setColor(LABEL_COLOR); + FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); + Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d); + int textHeight = (int) (rect.getHeight()); + int textWidth = (int) (rect.getWidth()); + // Center text horizontally and vertically + Rectangle bounds = mainArea.getBounds(); + int x = bounds.x + (bounds.width - textWidth) / 2; + int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + g2d.drawString(getName(), x, y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.setColor(BODY_COLOR); + int margin = 2 * width / 32; + int thickness = 7 * width / 32; + g2d.fillRect(margin, (height - thickness) / 2, width - margin * 2, thickness); + g2d.setColor(TAB_COLOR); + g2d.fillRect(margin, (height + thickness) / 2 - margin - 1, width - margin * 2, margin); + g2d.setColor(BORDER_COLOR); + g2d.drawRect(margin, (height - thickness) / 2, width - margin * 2, thickness); + } + + @EditableProperty(name = "Body") + public Color getBodyColor() { + return bodyColor; + } + + public void setBodyColor(Color bodyColor) { + this.bodyColor = bodyColor; + } + + @EditableProperty(name = "Border") + public Color getBorderColor() { + return borderColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } + + @EditableProperty(name = "Tab") + public Color getTabColor() { + return tabColor; + } + + public void setTabColor(Color tabColor) { + this.tabColor = tabColor; + } + + @EditableProperty(name = "Tab border") + public Color getTabBorderColor() { + return tabBorderColor; + } + + public void setTabBorderColor(Color tabBorderColor) { + this.tabBorderColor = tabBorderColor; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java index b7dc9a87..303a0200 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java @@ -7,7 +7,6 @@ import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; -import java.awt.Shape; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; @@ -25,7 +24,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Transistor (TO-92 package)", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "test", stretchable = false, zOrder = IDIYComponent.COMPONENT) +@ComponentDescriptor(name = "Transistor (TO-92 package)", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "Transistor with small plastic or epoxy body", stretchable = false, zOrder = IDIYComponent.COMPONENT) public class TransistorTO92 extends AbstractTransparentComponent { private static final long serialVersionUID = 1L; @@ -42,17 +41,9 @@ public class TransistorTO92 extends AbstractTransparentComponent { private String value = ""; private Orientation orientation = Orientation.DEFAULT; private Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0) }; - // new Point(0, pinSpacing.convertToPixels()), - // new Point(0, 2 * pinSpacing.convertToPixels()), - // new Point(0, 3 * pinSpacing.convertToPixels()), - // new Point(3 * pinSpacing.convertToPixels(), 0), - // new Point(3 * pinSpacing.convertToPixels(), - // pinSpacing.convertToPixels()), - // new Point(3 * pinSpacing.convertToPixels(), 2 * - // pinSpacing.convertToPixels()), - // new Point(3 * pinSpacing.convertToPixels(), 3 * - // pinSpacing.convertToPixels()) }; private Area body; + private Color bodyColor = BODY_COLOR; + private Color borderColor = BORDER_COLOR; public TransistorTO92() { super(); @@ -182,11 +173,11 @@ public class TransistorTO92 extends AbstractTransparentComponent { g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); } - g2d.setColor(BODY_COLOR); + g2d.setColor(bodyColor); g2d.fill(mainArea); g2d.setComposite(oldComposite); g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : BORDER_COLOR); + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); g2d.draw(mainArea); @@ -222,4 +213,22 @@ public class TransistorTO92 extends AbstractTransparentComponent { g2d.setColor(BORDER_COLOR); g2d.draw(area); } + + @EditableProperty(name = "Body") + public Color getBodyColor() { + return bodyColor; + } + + public void setBodyColor(Color bodyColor) { + this.bodyColor = bodyColor; + } + + @EditableProperty(name = "Border") + public Color getBorderColor() { + return borderColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } }