From ef07d109cfc1fcf6b33d07f9e72bcf1cae59e31a Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 21 Dec 2016 15:23:22 +0100 Subject: [PATCH] added text editor next to slider --- .../diylc/core/annotations/PercentEditor.java | 10 +++ diylc/diylc-library/lib/diylc-core.jar | Bin 229778 -> 230151 bytes .../src/org/diylc/components/misc/Image.java | 4 +- .../components/smd/PassiveSMDComponent.java | 24 +++---- diylc/diylc-swing/lib/diylc-core.jar | Bin 229778 -> 230151 bytes diylc/diylc-swing/library/main.jar | Bin 333952 -> 341868 bytes .../diylc/swing/gui/editor/ByteEditor.java | 67 ++++++++++++++++-- .../gui/editor/PropertyEditorDialog.java | 1 + diylc/diylc-swing/update.xml | 6 +- 9 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 diylc/diylc-core/src/org/diylc/core/annotations/PercentEditor.java diff --git a/diylc/diylc-core/src/org/diylc/core/annotations/PercentEditor.java b/diylc/diylc-core/src/org/diylc/core/annotations/PercentEditor.java new file mode 100644 index 00000000..c89dd919 --- /dev/null +++ b/diylc/diylc-core/src/org/diylc/core/annotations/PercentEditor.java @@ -0,0 +1,10 @@ +package org.diylc.core.annotations; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface PercentEditor { + + public byte _100PercentValue(); +} diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index eb443f00d7d38eff8ac3c2b0cf3fd3861763be6d..1dd5bfe04f7b5fff29c45450d94056ce5b4a586e 100644 GIT binary patch delta 8313 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 sJD^wE{09R#5)M z40y}@og>?&WiFtp%@Bnf4NM_bMGKlE3O52Qo+nqw>)VdEsa+hA`aMuZg-_){tV|a~pXbT#=k-;{+iSZ`Tci%2E~lF^ z9ULrlLlkaCaBZ6&wRc97tOfKjS^U*wS9&5+_=E^M~b}pci35aeS z11YHI1M#Rdw^YUi)bGwVV~`J*R(7xXokKnte;jxZU<7LT8>S&YA)j>=uB&!$X?q?h zFJSc3P!DGz)j0<)n19Nb598N-$nrrpsyfeO9fX%-PV0@F*wx;dSfEMN}2>r86R|DGqO{rWZy&b%7__L(Z*TfJYyPy6Y80-hcP z*Bjx%YN@YgBXuiK#gjTPA7)^ak0@IpQKtofc9@T7GN2;kd;3yd@*&$;n3vXVMS)7i z`=ct=c6p%+bmX>;hv$l{q>3nOMG1lpz*m#~s3j`ZnWq#mcM+!UnY~2{?zi{bim4lI|?t&vzy@0_{Y6rV^Mbx!JWPI$FPpD kHtZk~?WgXpevH@mXD;@!(WbB)DoQQ { private Point point = new Point(0, 0); @XStreamConverter(IconImageConverter.class) private ImageIcon image = ICON; - private byte scale = 50; + private byte scale = DEFAULT_SCALE; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, @@ -108,6 +109,7 @@ public class Image extends AbstractTransparentComponent { this.image = image; } + @PercentEditor(_100PercentValue = 50) @EditableProperty(defaultable = false) public byte getScale() { return scale; diff --git a/diylc/diylc-library/src/org/diylc/components/smd/PassiveSMDComponent.java b/diylc/diylc-library/src/org/diylc/components/smd/PassiveSMDComponent.java index 704cfdce..c8e66640 100644 --- a/diylc/diylc-library/src/org/diylc/components/smd/PassiveSMDComponent.java +++ b/diylc/diylc-library/src/org/diylc/components/smd/PassiveSMDComponent.java @@ -24,6 +24,8 @@ import org.diylc.core.Project; import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.PositiveMeasureValidator; +import org.diylc.core.measures.Capacitance; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @@ -165,26 +167,26 @@ public abstract class PassiveSMDComponent extends AbstractTransparentComponen case DEFAULT: width = smdWidth; height = smdLength; - x -= smdWidth / 2; - y -= pinSize / 2; + x = controlPoints[0].x - smdWidth / 2; + y = controlPoints[0].y - pinSize / 2; break; case _90: width = smdLength; height = smdWidth; - x -= width - pinSize / 2; - y -= smdWidth / 2; + x = controlPoints[1].x - pinSize / 2; + y = controlPoints[1].y - smdWidth / 2; break; case _180: width = smdWidth; height = smdLength; - x -= smdWidth / 2; - y -= height - pinSize / 2; + x = controlPoints[1].x - smdWidth / 2; + y = controlPoints[1].y - pinSize / 2; break; case _270: width = smdLength; height = smdWidth; - x -= pinSize / 2; - y -= smdWidth / 2; + x = controlPoints[0].x - pinSize / 2; + y = controlPoints[0].y - smdWidth / 2; break; default: throw new RuntimeException("Unexpected orientation: " + orientation); @@ -302,13 +304,11 @@ public abstract class PassiveSMDComponent extends AbstractTransparentComponen int textWidth = (int) (rect.getWidth()); do { - System.out.println("trying font size: " + g2d.getFont().getSize2D()); g2d.setFont(g2d.getFont().deriveFont(g2d.getFont().getSize2D() - 1)); fontMetrics = g2d.getFontMetrics(g2d.getFont()); rect = fontMetrics.getStringBounds(label, g2d); textHeight = (int) (rect.getHeight()); textWidth = (int) (rect.getWidth()); - System.out.println("width: " + rect.getWidth()); } while (textWidth > length && g2d.getFont().getSize2D() > 2); double centerX = textTarget.getX() + textTarget.getWidth() / 2; @@ -358,7 +358,7 @@ public abstract class PassiveSMDComponent extends AbstractTransparentComponen g2d.setColor(PIN_COLOR); g2d.fill(contactArea); } - + @EditableProperty(name = "Body") public Color getBodyColor() { return bodyColor; @@ -391,7 +391,7 @@ public abstract class PassiveSMDComponent extends AbstractTransparentComponen public static enum SMDSize { - _0805(new Size(1.25d, SizeUnit.mm), new Size(2.0d, SizeUnit.mm)), _1206(new Size(1.6d, SizeUnit.mm), new Size(3.2d, + _0805(new Size(0.05d, SizeUnit.in), new Size(0.08d, SizeUnit.in)), _1206(new Size(1.6d, SizeUnit.mm), new Size(3.2d, SizeUnit.mm)), _1210(new Size(2.5d, SizeUnit.mm), new Size(3.2d, SizeUnit.mm)), _1806(new Size(1.6d, SizeUnit.mm), new Size(4.5d, SizeUnit.mm)), _1812(new Size(3.2d, SizeUnit.mm), new Size(4.5d, SizeUnit.mm)); diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index eb443f00d7d38eff8ac3c2b0cf3fd3861763be6d..1dd5bfe04f7b5fff29c45450d94056ce5b4a586e 100644 GIT binary patch delta 8313 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 sJD^wE{09R#5)M z40y}@og>?&WiFtp%@Bnf4NM_bMGKlE3O52Qo+nqw>)VdEsa+hA`aMuZg-_){tV|a~pXbT#=k-;{+iSZ`Tci%2E~lF^ z9ULrlLlkaCaBZ6&wRc97tOfKjS^U*wS9&5+_=E^M~b}pci35aeS z11YHI1M#Rdw^YUi)bGwVV~`J*R(7xXokKnte;jxZU<7LT8>S&YA)j>=uB&!$X?q?h zFJSc3P!DGz)j0<)n19Nb598N-$nrrpsyfeO9fX%-PV0@F*wx;dSfEMN}2>r86R|DGqO{rWZy&b%7__L(Z*TfJYyPy6Y80-hcP z*Bjx%YN@YgBXuiK#gjTPA7)^ak0@IpQKtofc9@T7GN2;kd;3yd@*&$;n3vXVMS)7i z`=ct=c6p%+bmX>;hv$l{q>3nOMG1lpz*m#~s3j`ZnWq#mcM+!UnY~2{?zi{bim4lI|?t&vzy@0_{Y6rV^Mbx!JWPI$FPpD kHtZk~?WgXpevH@mXD;@!(WbB)DoQQvx{d2qlib)fQqjHh5h*40m}c;zJh-J-~Gwm1)xyzwt!Cq zF97>TM+1QCqrCtK{x3t$kJb{5?W6SqP$b9rfJ4SlfWdqymci)%YwKabH4#4q6V%_} z9|99r7W{`WMLzwhDWWO=v{B)~{%~7w_s#zUrv6^`;!`+OHv)W&lK+m6`61Za&%=EP z5HMh?E&5EoUb2Q04B@}pDWl7uiGBeAVZ=(l z5C_MNzZ`>)_o{)d@2*$0 z0z!|QoYM;UKue}O2S=z!+u{5SSMEX|@L}qk_2TY^3<6?B8gGw^n_R;Kijo|C4h~=c za2105aajjWv0$MAARroGARxTSR}i2a$<`O((9IKIpeUah7LEITR_Gug$F#}9xL}_k z&A5=DA?W{w)m(%N`s1T)%}@lOh8Q0@Yc^1rkD!~~IYALVr7#}Q+fO@Re$cZ|$zBLF z?^D7M0oBC$2IBB zkNPnzC<}D+(~)^DD8nZ}S^?+2aTl?*p(n^%NBL1EuyYOj`Hf9oUAR{1Y5Nl>GZ16dnlWhV~o% zO?*NAOB^{9Jyz>he1JC=E~maL)3mE7*!8VNnmT9&Q4L`#1uMWRzNCuOa2 zM*mObL9(csjQ%6Ji;mRWtQNBOu_`&&axmc3!`kWjnCJW7gAUG%NCKbhHz<$_)G028 z{x*^p(kPsE-XN29afFM+zD%G)i!{PT_|EI25WPT18|h;W8b4WZpMAr22;O;QK8AQ< zcLW+gMdEpU-xb&SZy4?eMQ$${SV5%x^WS@yIT?Sy!DaUs7hD$a9hmN3D!^qA927+U zk@iCrzYOGp=%fl}6umO0eodt6#OYbsb_3Uq-o!&XX2Y|v=quA?oi(-rgZf1VOzRD8-FoN z7h;;5nxU`xRw+w)MlDCFjQU&>JEGwZOP2z1bYUj%I<;-$tI)%8g8oiy~JjHA}LKC$zY`#K`^ZZRI zJ6`(ySlw}TO(6deOEk1o-bPW+dzmJRqJIBPo1zpG)-&umfY>(Kb12x65#vohA4AV-MgYy)Sr=GMSUE|%xYMDVpR@8g)A`=h4LFY*d z4(1yy1F>&mah?>g*o1cY312-@aO+5~=LNyU!6cVt>iPGrUqQZRYsI!%dfa;+cj$D* z*pIqD5w;6oXk3uJc>OM*zmZd>5&=fbgDDc@1mI*-HBBRAlw?ww`;2}~PnT>l6=&on zDobwY%Z}7{%jBtK+A8KS$68dm$Xsh0rs);wFsxssq+Y!OS2+?7H&q4LoKwa!j!rKc z9ZZ7!4kVqjd0&-SpqsMi^8&IHmhBTTl-FV8*s|-Wv=5s#eQet5iby-g@u)60CI2>R z8b%AGD$jtbW+F98C$(dZak7n;Z16WaF^9{K9$7u$48S?6Db*Me%pvNwyHs+Pju;9# zLm97$z*BGlrFoH;k4&&*tIVs^sL5l6n_t*eB;dZAG>r$|&f}uK8Jp+&bWUtL^kgAB z8x@$1-!6}MoK-#zCl=-7x+$#2VT_gQ1dNAH;d`4CII9cTa!L9qbIjXD?K_*+Nt9L{ zi&l6C+-dyb0u$x8#k|cUo>|pe+uRrwGZ_3^Daqpw45#MDQAci<2!pBM*J+W;$qdS* zPJ`eyBW7gmeI`o>rxn{Vxn?@c=&UZ?sJ)NU`a1^qkfE=S(-?N$Ze=>BYQEo_a&5+W zs>f|^uwQFtoZj9!t5^0TmD#AmGhBO@8m@ps%=~;X%V3@=h;z;pAMMM-ZiM+#XV9!v zw{>|Vuuh#jmAM(WU#uc@X{P1b$#ad5mU3-wjeT*BbG56{v^dCxsT@-+ON{%k4!rs{ z4g86HY7hsvb`&j}RWCZSmweyD71%s0ykLJc$z!dMGK~JLp68jN0n;~bL!ATn%=vqQ(Nzif-gR6L)kh#=h|U@m^w>?Q5X_deT8E%<1u8Op+=4f99- zx16o$$9S?EQ+U+J@Sv`34|rgF-^Num^jqnc?qb!}#$$BQ@5`1T%1a~g_c;yOKnja* zLVdC=?k+opR?~L0S>;<8e8K2Lg)9BD6A_%;YVkdWYr9x8PJhT-5<1m|J4#|qZ`Jrk zft*nxITT+>#zfQ`7wvwNkl0V8B3q&|-?Zu+~X65;}YU|$VV%}w4L^|%wp%$)4 zt?p)`s(a*{g*3KRVNE;!B063YS(%~&y}*`DZSP6_0%y-Mkz1AFapxvRj5LZ*tBQq< z7fjl}a~tV094XLt7wM^swriwQ)SvT7Q@2p(Q6hfTo+%7>F38YZB(sSx$d!> zEHD8FWc$s_Ccr)(PDO5IQDY?28^Pi)nmMEzQQ_7Jk?buaiP!#Q^Nn|=e<1PD z%Lsw0pzW(<4Z#=J-Yh$;JA|1%-?y-XO#7?RE$#;S1(6Oux~NLvy?#YTk7i|7Q?bV2r5^TxKdT1$8oI*yatKdUvH|f< zV?^wc36cj^DSpHZQ@#-^8z+#N?ZQam+(1L%TQYv}zQ5CPzEh#onR5is+Ci&Yr%t%_ z$QotrpbMl}r!y*N&br4H9C|_gp@<+@dyKX7PmDgJOK6c!R7Ib)D4j*wU1IdvZq!4V zZeWZSSFBy0y_e~?Gq9kEf=1DcqfXTpF!;pN}+y7ImO zA$06I;(mZ;+Ja6*5$#~>^c5$R!K~}_B9y1D*F}_58*5_(6}yvXqp*{~tnVnV=O+Ad zf{-fsx+nse-lQ7jOBv-$N&A`It$-~i3zJ_Ipl?teY#$hm%ojl+7{A4mpa(;)@fBNq zLS#t{8(S;&OnCow$;TFGimfEl!`|vg-jYHC_qF3paUG+5XZI^oG z6*;S`1#8hL_4)6}8>*@jDocg|>O9$OzikS1X<|kXf_c0FL$2Szi}v(#1+;6L!#_4# z3tm6wPWNS}XSA#Lxm|~fAM;rD^ZGOHvSac(Gm-v05LMl`BUzezBOOd^@(Ipfvy@zG zdw~8Z$+5|0?m{)O>jct{mU9t@tw^06P?)r_)&A1IL)KR4I)^5K54DaoqtKB4bw@m# zDRgqK_Ut;29I#&oJk~soV3`x)3XbK?hBsly*a6HpgLi$G+QqEl$5(iDU_QPwXb*4+ zMhoN0F48SK?1W=f|D#@l_FX>KfAt6yx4OUFsvW1g_Ue24#Ndg2TO{XZWTqSHI!i$F zwlz!Zy3Hnj#ri`D-ge|q^cT{QSH%BK1EK$;fs)Ncpa7-Mg|9O>paJ1ySxkotQ2o>e zU;wNU|D%S@x8#6N-qPGi2MB=pu;XI^D1NYz<`@A0{RgvZ?iL3OeM;eqfR#_lTnk|P zxy)YC0SKaejK#MDIDfF7=0sP3#%J%PJD~4VYVrcafBKN|1I$5xE}yaCWrGnxK-Nf- zb6f$W$qMh_kj)z5fc(#;_gfkO1?I!hc^|^E`5y(N#Eu7*!%f-)KsO5)0RDV3s;Vt? z5muOgi*VHcSiygti7OCj&8js3{?A|&TLGe^2fu9oDFcS`NlvXwvtvvDLFYgu6N`Z2CdY{VgC3Cw8~CI-dv_h_<=Ee zhAkfe*7ZTGn~_7on6N%_?xqip0z!g-6v8Dl1^yRU85mNs4jcqlb6hT1=w})PC18@D z2o_~v|Eu7?E5RH;b^JA8`Jc3HXAsQuQ>Q-+X7yQ?$z3p~Po4MynAE3Fb9k9C(tlyb zfqgK_|7wx^iU@(xyzvf3|7nZ}01y8J&BOvP`wT;h5FGBa3Yrw)`k%TEI&kvO>%PYb zj`3NUH!kqX&w7Mua(?}<9^qig-9}(|$+D;rn8~L?;M{<*-_4Z5;MbrZHP9>1DD?fu zgtK5j;*mjxAO{wzt~jC^qrH2No4BH?QROnB#g@uA$2G)!X+YC5tJy<=#?+*OR9G#N z{*_`iLO~5!zv@xcZ6D)04oB?d+TlWyIvP5>JO%b-Z-wu0w@FKWr88U$zBqNAxOkb^ z5%wb(#LiG<%G=b&0&~ku=F^(EaR3s_jEbV$mbkG-NV|nUh+)l8 zm0+nbkw(A2;0ta9>u)p8!2dW2jU{9MM-AEa$#8^2KwBB3Z7J{R#aYM;2X1B=p8Hct$%rvm1pqkg02@QqmMg!5VCpqea+ ztcppA@`*!|byi7ovFt$vvkpn*c3pNmogG_Rn*nePH#ANk6V+q9_H^6Ks_}}XRjP+d z7CUM{|3xFtIzhIHA3eAXuimP>Nq5sJn5~YM)63Y>DvV^og#K7hqB*Qdku<&A?e;yc zOtju*B0Z$j>{OE#nZ#*=@JplG6%Fbk@gIaUy>n^-Y+oU^B=P}`++EiYG_+TV_!Z%{ z9|Sotd{f(3RGs;%RMDB-t8~_kvedma z4wq*+BQ2%$irKX0iB5mH*~VCLdnKotaPuGm}7?Szhxs_Sqa*hsJCVS zC8vPKKi^m_iju`4h*EEjN0QBT&kaHu2(;7@>QC2uAN;TnbsI6Oh4d0!RwS=cZG`CZ zPKW``=9ElgJ zlzWAfcaTH{BS?LwVd64mnL0rV`PXdIr{SOb0ZUO67Hv0(_?buHo4kn1HdZs+;n1SJ zvFzcK%iKOz+mlJ$4qWGs1+U;L+io^6mO%5H_tIhAyI0kWe=8qdxJgi!!fOzql0Y59 zCCJ(nL4|H_5TwVsVSe*QLwi^Bxa-u3U$aEkmHWbDFN@pC^*Y2u>n5gumi^z6O&`pc zxYg9BJvF;oh~Eh=MNykA&%C){@VCeArM?3EgjPAae@5ZI-L+2(X?K0GH+ApqApQ$? zFmRxOq`Qe6Y12)ZqwF@GSX>)VVhiOik(s#;;8%7{3sM0zxUU$cZJ0%mRK&a1gP@NB{s9`YG6PzQZyZsWpwxm6NiS*48I# zm8z3XO*ncvg-X`t4Nc1fO$^p^O%~;Arv|UuF&Dsd&(wAq3WeR@tFFn8fB64$KlJWg zc>je)o-;=m_!UOm&X@S-ayn7_2v}(OBy*Hmc*926+A0M(_ake9eL9_Zd}(^@Hn%i! zolZ0JY>y|4ly@Sw)zP~l{sdx|k5FOaZhDUIPp~15Q&#m2fH2W6F!)dM#aDBN7?ap& z3j2IaiL?Uq`BqVv=HvEnF-=b;ami0+G(e#=*v#a=C28tIIU;Ft<_x!2Qo!@L{I)_( z^1ivcR}%C2M>qQF_}1_aFBn}KBEp0%4|9&k#Xq?Gw|Ny1Mo6>VyL+;$q_Wj|(0|Q{ zZIisUyzsUJ%=7BFDP+5TYE#H+rv;3W7jhEuHjUV&v#szuMUI`um=v=SUS9>f#|~YS zPHUfU(FSDFc6g!d(vPzXyaB0nPj+0^$;WL7ff0fXq=oe1S8T^uB3vHP0w8^q4x^5?3+tj zfj2&&a2lh>)M~{IJxHhK+v@g?))NQg#)K})*+%Y7CJ#{ape-e27-$wQCUUhOA{Yxz z?(_y5zuwqhNZZcZuMz`2(DycUtiXpHC92-o$aKY0w7Rds7JDlmU;Y~F8#B5ck=mYV zO*_x&+TdEzzkWadR{8e*y~)Vhkq#yN&+h~}PUi|Ma~*E*#F_QQ+2t&P#wI#*ovymt zLTgpbC=0{up`@xNXJDmFapUi8{>GlmD2W^nr0`&izhB?_h4>Om&<%Xo8&!w&Y1rhW z9`pGd@o_nW0g`kcZN2=8K$J_FsB@dK-Tv(@1-2u3zebr;Z|_<&>))3=-I*}tanG@K zueDTqD2<_=de)TRu-0+>ZqtG>Xy_FUfHp)JvV(@P6B<~!DZoJ;J~|?HC@g*~xm)oU z-V};xisAun)E^v!e!K|^Jp+Rpe9*6{q`LiG%xJZca-fDZP585@VRv&JgCah9_KeWt zeZzrB;;MHRLY%+-HW|D4@!%`54p*?kT>o;4C2$#nF8(A;`dQ0NstD8eF-Jp=tnyDAXKM0r#Hs3cZ+6hsqCld;rG1cbW-8%Sf($-E!&q}K zRjoU-2fM)ho=F#?FO;X7I>UB)U;4NDi=1VOP4$#L5X5_j@iS{BxInt4da`m4WvK9y zvxmsaOK9RtIP@pxY#A^kDBNF!fRov9?9sR08%1_}u?;cDuUjS5dW>XC1Y!4No}eW4 zuWv$J%Rn$@h~_^@F2AkN+lo`mtd-9BYs);~piD!;K(|1b!+V8$j+ae*);etb-k zpC}-4+V|4>A_sbdj~naX6tq1Oraio_perF78w;FVV`0QLQRX_1W?K?5=uER{9uO6m z*Fn-}rhT$I>V^)}m#5U1WEmD>@vCXo7FGB`$-};6kj945mqW)DC;BZqUJCSy2Lpx% z7DYd|YADO3Qj^#mwV{bGA;OayJ}VFZ&@*#r|KpI_saTx2DF?Tt&ux}Td? zSO5q@>JY_iuvE@kwU`;F|IJ*3Tr1GN)Y#((wuVb76w!o&7kt4&96{yWlTGG@BJkm` zUH!n*xf9VjdqQ{a$+ASv`R&)lLtmI^oHZy+cYJ-iak_(w>nb4}B3V%6@-;76eRq-> zm2cv;3?x#CA89KS-A4UbX-%1jQ|V5`^8ipGvnU!T6q$EW-Pi_c`x@V& zie130%~X|(a%5|0>`fMgZ%E>f`2F3IJ{G)u&d+^*BSF6ty6Q)UzosCP=95w$xV?LdVc|tZ1%?$uf-hOsb=^$ z1VN)q`oR3g1C6jL{!d-c|@XzdP(Dgtpd|7yb5yYbxks?-kE2BjETF}JvHIv^t@?X|H zAH}Ens;oM_WW>wymYopa7dNvnQ6UAX$K{`39^-lhcd~I`zW9vf6dxu-zQ+NLFRP!- z{j;}mx=wv3jZbbV$v-*=kfmgN=RR*?9*`Yw*W#x@`HXuLAc^`=Kg;Un3^yqFF(k=IzA zNb`bn&C~iOGis1awri?d;l_cLM?w2j?Lqr}4N0VtxqCR@vyyDhAe{Oq2h9V6IDXK^ zwHo-JqrrB`ED$SXGFz%C>(HL}JYX+_Tj%A<0%E_1RwQN}Hsx8y!&`@`m021Gxum)9 zI29(cj&mhGhne3~^D@%hE7NQ#IA`4WSO~N|t;Eee(&b_spTgYG)~N&U;ljqe;;hUO znbf|~jU+)UavD8%W%@Q)Zk;m~%@|Yh)n5izHZ(BUXwR)jnsxZNtW|h;m5)`hnOBey zJQ<4aIB0w8l;f_bH%6JbIhmh)pZfL7**HmxMA|!@bP2G)9N&4BZ=sb-PZ)|4C*$&) zr*B0hHh^ZSr$U`2Ch-}_dZDdZwLe4C))W};`$OA^2K0NW5Us2Yt$2uJ8x|%2e^{=J z16&9Q1X6`LoSl|UkxSi`P}5rd`SY{6ZY^|^e|RxwKfFu~43Ni#3xO01l~*&8G9!mK zPux_7aVLJi1hGDMa>29O5`FR)YrzxpvI?v5y7zr0EF6g%&{TG5lG6^>=?}4eaSJP*l!&^&^&t|i0aEWBD1D^9gkeBqYi@ zHe4!EXL!G&-FW!sD~=J`PY*`s4QNc)io>LbQe@;+kDQn)EU&>l5BHi5rYb^=(3a3v z%Z#-u`V9AZ3m#z^+(3^C+C-usxnV#Uxbktz;aFnw$~?a@?$Aek+V6YYlT#hDaP_h% zqA1vJrd|HPP(Y=fi7!W_Is5&pVzg_+0r+OuS4JaYm^lLw}ZOc{vQ=hE1Z@Uz+YuYoos! zges6M5pO9o5$Cp)SL7Tc1ObkdesH@8)Nbso3In}>;chLKTGe3!9EtGgN54E=&lkz4 z^9HI+Q9(3Dwz!rso~u3b9636n-h2Nz`wQ@CnJg8kay$-iOZV$*l=Z$) zam!EwGL+x7%|2MP_HOYax7Z1OYs1W68TKboJh}DnpMjF(6+-aJfEr?7yF+SS;6aey z;gaxJ_bF~>C`1;cIWb&p= z57IWYFr!DR^bcb29b&*25!vQgV!uVguZ^;-0fDRk)sL)<_};@!<7o- z9L{R3t(4wspsz7L1rt;X#THGeJY}sD8fneW-iNnZ4rFF;NMjln09zFvSaYZ-!TL` zoy-|2{bJW(qohTcDQFBXH98Yc)8--L(6oDk$bN~D#)`O_n~2QvF=y`z$El`cMkdmv=E;`4`Q zp;A5{6(6?RofqD+-mY@Uo;HgXQtt{dT!|KEpWJ>isqpj`xL~F+ylN;09wrx+;UQB^ zLY7@X*&{yWo=ps$*=^Y1Y~l@Dj) zTw5+Zzqec}Eef7M`C{PKljqS*-Z=~Em}YSTJ2+)u7z-+$N#8!6@3{HzrrDrzW|Z{4 zpfj>T$CM(2Mu)S6wZgV=;96Vw-I~8s(KCKQJ;HPYWV8@oK^dfNZJS0{I!3bFIRD%} zLGmfLL`d0;l8T{L01QT(U%v3Yk|QK+^G_p@+O`G_bqO)w1UDtN{C?$a*{P*GEAh}` z>COq1>Su)FUVfFxd$p83YiO8eWtfO-xZV8k2|QmE_8S0sgfTEFz-tbywMM4xKRrlY zKaaQ6W)XG2es3kD-eXdFLr&Qv9qNznrOWQ_`Hrisxmk_g zx|O`_o;V5_VO3V~WaTCd&>DA`Wp80-ZxcRku!-4U6-BjN1qQ*nSP$B%-y&tk=Q&!A z*ic*$&0UD5Nl&>`r)eo~%T2YXq2QNmWO#?*z#bq@`=MpNGtpaJPGA*$IVUC*2)`ei zAM7YN%`NSzPadhOfZg7Ql#g7TSWOd|H7F=y7Y&~imJZM`)$wmW#o#G6iAe(NlcA03 z8_pbzN@f4a16H$*mU+f3Pw&E9ljj&}h6%(#c*^a+x%6a_E_!RW*mAb&u5XqjqwLQM zk<%*8PQ@rMF6rs*eVyI$R1hsP+xu~MB&GN;Ia0=7fY?{LE>d6VMzR?~6^JRR(UX5(PV8cAs_NZif zhpwPptVP^kVMFDxc@d(%-RO>LH*Nd%wFKLkwN8M8(y|yg1kSvTZdctL5)b5s-VJ5)yh&{j7}15% zq1bAosje`xHymrRZ@-e>d@XlQTKZq1xYmVw-xz7mo00q0h2cCguXeCV#yoFvG(7PU z-gRB3S56HGPrN9WX(qPBCJxB8yGPymTpgLKw}3FKqw$Y8S-ov72^YH#>wV}iAo6>! zUXX&ri7#+2?@7g1wAzK}_K_Tcre+6MGL^BGjT~8pIzx^PNZI)VkJ{Ey3zq6v?#sX3 zt6Xq7%^q&N&Y&4533dXPPue9s<8d3CTbFuPx9zSC#1Ry$sWM%GfpZDv^20;6>esiPJ7SB9F60DMrGcT+q)P zJ=)hC#G-`93Swd89Gx;HOZNSmm@sS!JUMk}%z4M)cGMX^Y!CM$Iz#E+ZJi}5wKAqRpjnMU}p2*sXF|=`E0b#^%u=rA9fY|xm#wKcN`-L#r;LCe) zCCKkOd52ZrhEptOZoD7W>LM2Y1Gs8iKtWhzBUukk#xr`V=vm&%YDUQJwve{fMks8YOm&jqN*&ik-U@pGe{) zRRL*Pt_;&k=n|2%6MNdfQ(%d9`|umNX$s#^tAj?hzd^JIQQUkl+jpKFNS+>e5x&0h zfW3hXtIck@5&Pv2c1wydHParNbwJ<&gFrDbMqYF|{ZN%0yb629T2>LeUS9^RxSG7+ zQcq-uxTT#?HXb)ZlX@zvIP!Dvg84mf&U;R>Ekm#(yS0~_p7)aPn)ExsXb?St^!>*0 zYm|qK9zpicHYUG~04sUo;fP|Sb4pBIjzQ&+_G)8q*jS+9pRcb%6n9`3!OxP92}Z>} zMDfq~IX(wivp{#5W6I*vW(c-J4V=Xy4LUMOl=jk~o z@_)~DN>8Ph8%qLc+?g2zZB-rHyxs}_$HVJpI$dzG&kaarLvU#DkIgs7siq*De|vN; zVDY*z?mx|J}7BMmhpQD9G*A1}|mlNHnM_&hH1QU|0UtMMc| z{?$aitk(VCY0h+CyVnr$ug`FyJ77V#$}6ayAz931Uj|4at>t+b`c!lt&$n_m?EN_| z+!|PwlQ|xu+=$TL8&mBzSm@^EpSYX(&Rr`-mT(q3((L$)all#JdYP8OT3*x6QL}T? zS%F4c4oHhOvLysFl_qTt?+|mBRc)2uW4-2@`LSWUR_yY#oSb%@(csW(%{O7;z+7vM zHwl`sG2SX{x|NK{A&jkJd5uERwG3j(O{Xb&ztW!a&R--mjl$_MA$V=T-}4a!*$lb6~uNKx1#vS7|w||tdxq1(N z@M+<=T<_Y4Qg|u(paqZgDcJ35gIVbIFm##L|S>_eITF-#-jVb0^3nhhxmJ!XD|j=VLo2SZKyjl)5;e-tU0)8emlsw_hy?jcvI zamQZ-!+A8zH-N28I)+%Esjr4_Qs1y2<5Rf9gR>))d2nd!H>=7C&k3_&ZY)Wgufgz& z`ahpPj-+I-HhOckyF=GR-$4;M`}Ux)Z~ z^;wJn8do|JXsS8bLjcT`FWsnyTC>)wjpPgKAQYk3rLZO7TmID&p)nt;Rl|UVO!II? z7Wcv53FC>e2g2-50M?)fe=pVo6VO)@;s9-Rb}}kKqlmq3Rf#!&yD3O>4CXZ|$epg_ z5NRZ@dtG&kewQDe|0_f3Av#Otrhv%WJanJAp|Q1_QQxiAO!Ezcf0m2R`8cmhZub|s zoz(VZ+4Dt4d|LB8M^E?UHXmZmp))dahq;EVbj@{j$#|4gLj!EgQ8NGOW*~F2rY;*6 zMb@ko_8Mnqo`eNWR!J%uU-rfpTqO3&-sr$8$HV-Xb+8NCaOZWxmJi>}*eYjy)R9Si z(8ZDsM`8*454!kf8S!(46e6`nc1P{Sw-6Ckxs|H3KTHkklBAi7L=9b*%9zLSyeDZs zQ=~--+E^-rz|-H8IPxl_>cINd4J2nNi8PKPddiSy6-W)I@YbVcsjOV4v{*(Dj4sP? zgY?mk;BRpFrUQK0Gglzk5Qx}fmN13+h@(6xhYR-Tl8{XUAP}@XYF84!k>X$pPMB&i z+?;cy#hW!e`lrJget{;cvVNlr-p;n#8o6h+c~V)~dzVVouXuUf^#)3*;+Bsb_HQ^% zhlusqUzctZ_~Q^wq5tO=HbW)o-$6Sfeoz0b zC>M`ZlKRZNc#z?9p?mN;^`RmL`|e$AQT~Y?02V`>OKibo1Ii-kaVPO@7F&??biCCm z`qRUf!=_*mPpFxha0~DqI@T8Yi;xb)ChY4%^qLv;_OzU-Yp4G_DgGIU((l{T>JDZo4yxT-c`(dG<+}9L#zbXsL_aSvar-zS)R|gu(X_8R$l4) zj=1}t{@}f2#erKBdD{Na!D+kRo(gn#TQT?{lGJcDx63zQJGMzb4&0Hpf13HoxFr7In5mA=5ksA54R z*-pVjYt0GY_D1g{X2P2%m|tbgnjuPJg>iESkVlXcVfJ&1?Z&TBtSgdEeW~$0lHy-+gHGafQIU)4K-+70(zQdWo;TfZ?KR<3H4XK5uy7#Wj_Ss}9Z> zUENQ1)O>Tq)M0U5R{r{|pX&Kdgc;TLXR}8jhM4P}GvR;|2=cYmUblm0d%kz5nqiPo}wu!Fd?PbI$Vc#$fMxUG5 zBV{dvm{!lmDhkft)UjpOdN*eqV^+YWr`cVHRmI~oks`wVwH#8J(VXc zu5@%-uV)DzN#OsKXktW(5+}{Qmq7ZGGH8v1QGo*%b&fdrEV8a66EA)HRs73Oo zBZbX1k|Z&U_?iyX&5CiACNlC~gorFg!-VMTc|@Vm(sakH!6oq- zqHQL}LTEs^wTAh|+oAPU$`6?^LOjaP)^d{I0)88bRUnP6CcT_eZy8%zSks-N5Umm$ z`nSKgZ)^KR!Ax6DJ$z5Q+r>%s_dJdc8f){*z>*5FIm>1c4ISt4sA$jv8N$dhwzNYc?zCN-ISUkXhg5+ksh zLqB3Z(>5AkVi-k46NOsZ?*>N63MHYOE0qA|a|nQ4AL6thM2{9DuZB@6N; zWC^zxxdAf)_-b1aI1Z>;ig75#Az>mip17oGHIJ9s8BH4%*X0&xIz>DMuhpYN?;s_( zwe~ML)o6%4nq{*X5%bU0^HTRDL%Rj7RVgW6(%`{p8jUQhS5-)wP^rh8n6i~Sh&1`P z3o1CqI>|Jh?e@!mN@JCz>;bB8n`MiZXgEozg>wB15Dok6;aRU0DIR!$=i9bl;#P+d zZa3ty$3l^m7`?@YmA9?q!1(-f;^&ilyr|zau`X0ojG5l{+}=~Oxnq}FYV;)I86!`| zh*U3lyw-Djg{D~%;_=thzf;3`r`M^K18xZ>f{#F>h1r`RO3$(zld!R>6}fHm(pn1% zsTnE{I1+|;wf=MQFu>_l4jZc8eXXa4QziS@#BokRI;^_!PUY_w2}@n{$vJKh^XU

)gLuOf=lkUwi!RwGqI?6-7mGfK21Y?h$ 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 delta 15273 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 AF#rGn diff --git a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/ByteEditor.java b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/ByteEditor.java index 1a47f028..fe31ab3c 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/ByteEditor.java +++ b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/ByteEditor.java @@ -1,36 +1,91 @@ package org.diylc.swing.gui.editor; import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import javax.swing.JLabel; +import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.diylc.common.PropertyWrapper; +import org.diylc.core.annotations.PercentEditor; +import org.diylc.swingframework.DoubleTextField; import org.diylc.utils.Constants; -public class ByteEditor extends JSlider { +public class ByteEditor extends JPanel { private static final long serialVersionUID = 1L; private Color oldBg = getBackground(); + private static final byte default100Percent = 127; + + private byte _100PercentValue; + public ByteEditor(final PropertyWrapper property) { super(); - setMinimum(0); - setMaximum(127); - setValue((Byte) property.getValue()); - addChangeListener(new ChangeListener() { + + setLayout(new FlowLayout()); + + try { + PercentEditor percentEditor = property.getGetter().getAnnotation(PercentEditor.class); + if (percentEditor == null) + _100PercentValue = default100Percent; + else + _100PercentValue = percentEditor._100PercentValue(); + } catch (Exception e) { + _100PercentValue = default100Percent; + } + + final JSlider slider = new JSlider(); + final DoubleTextField valueField = new DoubleTextField(); + + final double percentFactor = (double) default100Percent / _100PercentValue; + + slider.setMinimum(0); + slider.setMaximum(default100Percent * 100); + + slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { property.setChanged(true); setBackground(oldBg); - property.setValue(new Integer(getValue()).byteValue()); + slider.setBackground(oldBg); + property.setValue(new Integer(slider.getValue() / 100).byteValue()); + valueField.setText(Integer.toString((int) Math.round(percentFactor * (double) slider.getValue() + / default100Percent))); } }); + slider.setValue((Byte) property.getValue() * 100); + + valueField + .setText(Integer.toString((int) Math.round(percentFactor * (double) slider.getValue() / default100Percent))); + valueField.setColumns(3); + valueField.addKeyListener(new KeyAdapter() { + + @Override + public void keyReleased(KeyEvent e) { + try { + int newPosition = (int) (Double.parseDouble(valueField.getText()) * default100Percent / percentFactor); + System.out.println("keyReleased, pos: " + newPosition); + slider.setValue(newPosition); + } catch (Exception ex) { + } + } + }); + if (!property.isUnique()) { setBackground(Constants.MULTI_VALUE_COLOR); + slider.setBackground(Constants.MULTI_VALUE_COLOR); } + + add(slider); + add(valueField); + add(new JLabel("%")); } } diff --git a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/PropertyEditorDialog.java b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/PropertyEditorDialog.java index 4fa184cd..302e9624 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/PropertyEditorDialog.java +++ b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/PropertyEditorDialog.java @@ -85,6 +85,7 @@ public class PropertyEditorDialog extends ButtonDialog { gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0; gbc.insets = new Insets(4, 2, 2, 2); + gbc.anchor = GridBagConstraints.WEST; editorPanel.add(new JLabel(property.getName() + ": "), gbc); gbc.gridx = 1; diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 0fbfc07a..2931a0ee 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1420,7 +1420,11 @@ IMPROVEMENT - Better line representation when zoomed in + Added percent text box next to the slider for editors like Alpha or Scale + + + IMPROVEMENT + Better object line representation when zoomed in IMPROVEMENT