From 566a2343c3dfd28e4275d5c17b779a92e8d13f78 Mon Sep 17 00:00:00 2001 From: plaa Date: Sat, 10 Oct 2009 13:13:32 +0000 Subject: [PATCH] updates for 0.9.4 git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@27 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .classpath | 4 - ChangeLog | 6 + TODO | 4 +- build.xml | 43 ++++++- lib-test/hamcrest-core-1.1.jar | Bin 33395 -> 0 bytes lib-test/hamcrest-library-1.1.jar | Bin 46692 -> 0 bytes lib-test/jmock-2.5.1.jar | Bin 241000 -> 0 bytes lib-test/jmock-junit4-2.5.1.jar | Bin 10247 -> 0 bytes src/net/sf/openrocket/database/Databases.java | 5 +- .../gui/components/DescriptionArea.java | 9 +- .../openrocket/gui/dialogs/AboutDialog.java | 3 +- .../gui/dialogs/ComponentAnalysisDialog.java | 5 +- .../dialogs/EditMotorConfigurationDialog.java | 9 +- .../gui/dialogs/UpdateInfoDialog.java | 4 +- .../preferences/PreferencesDialog.java | 109 +++++++++++++++++- .../gui/figureelements/RocketInfo.java | 7 +- .../sf/openrocket/gui/main/BasicFrame.java | 8 +- .../gui/main/SimulationEditDialog.java | 7 +- ...lotPanel.java => SimulationPlotPanel.java} | 22 ++-- .../gui/scalefigure/RocketPanel.java | 3 +- .../sf/openrocket/rocketcomponent/Rocket.java | 5 +- .../rocketcomponent/Transition.java | 15 ++- src/net/sf/openrocket/unit/DegreeUnit.java | 4 +- src/net/sf/openrocket/unit/Unit.java | 4 +- src/net/sf/openrocket/unit/UnitGroup.java | 94 ++++++++------- src/net/sf/openrocket/util/Chars.java | 50 ++++++++ .../util/ConcurrentProgressMonitor.java | 2 +- src/net/sf/openrocket/util/Pair.java | 36 ++++++ src/net/sf/openrocket/util/Prefs.java | 95 ++++++++------- .../sf/openrocket/motor/ManufacturerTest.java | 2 +- .../sf/openrocket/util/CoordinateTest.java | 10 +- test/net/sf/openrocket/util/MathUtilTest.java | 72 ++++++------ 32 files changed, 446 insertions(+), 191 deletions(-) delete mode 100644 lib-test/hamcrest-core-1.1.jar delete mode 100644 lib-test/hamcrest-library-1.1.jar delete mode 100644 lib-test/jmock-2.5.1.jar delete mode 100644 lib-test/jmock-junit4-2.5.1.jar rename src/net/sf/openrocket/gui/plot/{PlotPanel.java => SimulationPlotPanel.java} (94%) create mode 100644 src/net/sf/openrocket/util/Chars.java diff --git a/.classpath b/.classpath index fdfb5235..a98ed5b2 100644 --- a/.classpath +++ b/.classpath @@ -7,10 +7,6 @@ - - - - diff --git a/ChangeLog b/ChangeLog index 99ac81b1..91949f53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-10-10 Sampo Niskanen + + * Removed non-ASCII characters from source code files + * Created Chars class for non-ASCII characters + * Added styrofoam materials + 2009-10-04 Sampo Niskanen * [BUG] Fixed too high configuration dialogs diff --git a/TODO b/TODO index 9bca110f..9fff6762 100644 --- a/TODO +++ b/TODO @@ -10,18 +10,17 @@ Must-have: Bugs: -- Simulation plot dialog forces dialog one button row too high (All/None) - Unit tests fail from ant script Maybe: -- Windows executable wrapper (launch4j) - Inform user about software updates Postponed: +- Windows executable wrapper (launch4j) - Allow only one instance of OpenRocket running (RMI communication) - Only schedule rocket figure update instead of each time updating it - Reading (writing) .RKT format @@ -79,4 +78,5 @@ In 0.9.4: - JTree text is cropped unnecessarily - Allow editing user-defined materials - [BUG] All configuration dialogs too high +- Simulation plot dialog forces dialog one button row too high (All/None) diff --git a/build.xml b/build.xml index b77dd04f..94676a62 100644 --- a/build.xml +++ b/build.xml @@ -90,7 +90,7 @@ - + @@ -115,7 +115,7 @@ - + @@ -126,6 +126,9 @@ + + + @@ -134,6 +137,9 @@ + + + @@ -148,6 +154,31 @@ ${criticaltodos} + + + + Checking project for non-ASCII characters. + + + + + + + + + + + + + + + + Non-ASCII characters exist in project: +${nonascii} + No non-ASCII characters in project. + + + Building unit tests @@ -156,7 +187,7 @@ ${criticaltodos} Running unit tests - + @@ -164,6 +195,7 @@ ${criticaltodos} + @@ -173,7 +205,10 @@ ${criticaltodos} - + + + Unit tests passed successfully. + \ No newline at end of file diff --git a/lib-test/hamcrest-core-1.1.jar b/lib-test/hamcrest-core-1.1.jar deleted file mode 100644 index 5f1d5ce0c3d60472692cda24885c92042a693ac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33395 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íK>0FSofW22mD9Rv65WKwY%;O@%t50!DG)4nkbEx2XU%(jPHf#t6W;7 zS%uAG=xZtM=q>iy3alm;^u!jI;4LgjIca}p3g%nReJ8Qhm2jU+dn}Bboo~XBX+xwP zsWJM=UR{e8M`&G%>O%#vucO}kv-;^@b7MgDNmGpDNrGsyhB(f50B_uy1g?>$QU)f` zz*qNnHuJQ@#k@-7=uxu*p}NX+aHn`n{!BXcjlb??L0_@kEtBSMM`9iVv?pJA7Vg+r zDIt$jT~h*^?urv5#x+a4jD&sB#HhRy`cyncs^Z%9WA*5O4d(8Xibq|ty!(u(H-HF;_ zzydf6IXM~rqdc9eqU$^_j>dNuKjMT&31&>?NYqUJjYE_e%_7GjOW0x_2V@1FK9k?( zoE*7Gl0efi>#66SvY9dGR9gRbW=b%?jiTS#U&3Ev{YPWrhk|E?9aj)BVGg@~ z-Lxu|tHD-1Tw9+*;|!#oRVcAzza7ew!(#nFPR%6y?!rqJAa}NMbLR-g9q#3l2lX;c z=zYp%pWS924Su45QP$Qec3(!*iPFc>fALqZ_-JsmSy2i-3RHj?-ryVL~il%VEYjZW${_+brH*KEVC znaQJ4Ol!aqL1yn!U~tx!K&ByCik5T7K8p#gGO-l){-`_qb(* zc34W*k#lC61y0;P$EG^GdwumTRU^!$ReQKJ4ugSKFhe@F3~hT|L0D%{9eec-Fu*+Z zIX5qV(w%I)&8NNES-2m&OJ4n6_B-|-IQ4gv{$~1F+Q5AL)pFtlDc_6atS%AlTEpK2 zz)tYjZi^Pl)l=eI5x;w(GsVT^?v-g>Q`)rptlX{%(Dl?$dA!nec1Qe!^q@oQpj;V6 zz8Zi4qH+VsaL`NWks@X=?vcdef0C)(S& z7AaxvsO7tWKRysIa-ffrcD5-f+aWPK)7 zeSu#6ZNV?UVmbZ$(0WNdY~?TEBkiO;2SyWeunMn!1d+EYn*B?D1>Zcq*$jDW66R`Af~az6aQj zzA>6tJ=W(yo%2yWbq0BKdIxFDqUuUcDGY_b6{|Y}__U`2KbcPFgr<#Kb!v{UIYIqt zXyZq~v?~;Q2Mv0(K&iPCj?|7i*dAx8_gW-hto8OW%DB4HHsEIq&EV47TX9;;@njj18RBai5~L@I ze1`~2KeL2z)}$}5l+O{qY9ZT`tY=FJobQ5e=%4SH5|}T~{Ub7WT#>SxIKVtNr%jaCaP8 zB8e%lSyg&p(nuU^O154o8~xwtioTUBbhtj5ZwufGOiMJXrIA}E;OKNiql#{A3o7z( zK%PQ99#MnE{4^8lWROwcZv^$QF(0enhEwSyDdnIuR(gFDk*HFXc%C#dexbHnd+i7t z<2m};U{SZa2Kv$sso&XR+-8DN�AXD_w45daGL99;F%HDn%FWYPHhFl9dM}^hUT+ ze{b^tS2DSeph4XK2bnPbmE!(=D~Z_Kxfoj7S=yQZch^(bd0hpGPd$x(Tyc&=PG*zM zQb~B9agS{#ZK&7a78tlJYz-BHg;$41sxXcYT+=Me{S&ON>pBTCW4DN!6`uh66Wkwc zg|;GUf2DwNt!lIT_Djg1gMFkmph>4Nv1cFG?@jJm$%!Jr?a8ox^#;JP^M( zdRw?)-5%d)wOanBU#_p&Q!Cs1_U73%Ux~?M?VCw$51R7>Nm98|G+ZiPet|PH6oM_Jl>z&VFV)YeOrOtE#YAA1i@l^_)WdHntsQAW8Eq z({D^??SUGNV`r4Ldt^#t5y)x;P6_c4hePP24!0amPkwqVA<@~gJd@YC#h?4oaLK)A zp3rSml>B)?U~ZeYYq-t7|!I)nNF7EzUck4+40_C4v`>xF|uBirG^O;MVPO@8tO0 z-*>FUGP%*45RsCQM^3!PFT5RX zV|m-%{z*z{Xi6=5$|WZW*eE^b&2b)}rJ+N;1aq9)!7v4k7^HO)&%VHq`Q{+)nH-;z z!G0tpz|M`lG7Hs4Jy4efK=$V zEPzycFbfeBLzeFC{sBDcB-kX!pGY{(7yJqr>6aEtkoIk>aOyp5YQ+-g zR(P+EfW+GUJaaQAWn|kyB7c%$)3_I2Gu?@v+>x?bOFWTE%60?EK_U%TF&D`>K*GgG z-mK?2V8c>*8dFnuj`fJmub0~;DBcxEiq-o|uRw;{C-X6C+=`ShMYX(G&05HA~1Dezc(r06FP|6ut?hNG=wD$Yi-~g%+ zt{tNdH(mc?2o+I0XlLwFl7i5zppAvtQo|Jp)5wYP!J6QN;5V8bCoKeGr-<_|hT&00Tn}A$8@*Ng2lYurY*Z9AUX}gEfBX%`QWWUUsRyGW7Pt3>xW{0ai zzoc<_q_bvOf?9vBX##GGcCmc_G9<=>hj8!zCvi?k00LtBkH4VEKmX0)udtt^rtOZZ ziuOs7#PC1};sDi&;6)rqb{>ptCbb-DOloY>d4G0 zREfXeS+R}^f--8*yh{$er_v#*@aEiEF{vu;IjN;`2a)4)I0n9`p+ujv-7PY!w@3>j z$G(R?7FK|6(`{4QluG?&T4}RJqsXMr5-0NDaAvKYVEkhM=c$Va<2>b+yrTY7>Rt*fM`pGj(iPj-FygcK znpAMfDl77{XTG&cel2w3|3%q5uvxY+S;Cc-cBNHmXI9#_jY`|LZQHK2ZCBd1ZQJ3*KG|G?Q1D`G{gSi7ce>3dmdCIjLRi(_^X659f^6*n>U8A^6Y5~(_i zGRfaFbNI<~U-u0%sSD!9=hWN?Tq8;G7JEnu>d;PfXv1jnnj?3 zjN<%a3MMSSV;fXSF~LO1R2Z0h3Oa-P$-URuvR&=CgiCOM_;x3$3p$Fxxra9K$4q8D zxcJcTk3kdn%eHUVpIcDAxR-}zWv}Gpz^`)=>u@irt5-~J4fxy4&b2Y?$*ROeM&eO zz93=8;vv{(!1%S>9+7O5gs527EjB8@Xz$i<)Ime!LB5M)hu9f+&D5#;e#_XJ-ix=( zDm~?}PVO=HLkuTfcOC0wj%9dzOLueL;{a-# zfcm)kNI`33VQRk+xOaVL6skq|@0wl?*w<$FwhJ3C)viEGBzHcBB+bM(1q7tkI1AH+ zjnvhj^IIh&l-^Z+21&cC*o^Wn@+jeq2Whb+u>Q{tWf$y-Z~Jf;RxrMwi(kYslo>06 zkEjAbdg_bR@;rGm_e^1@F{QWyV&uI9j?mo9d%tjTn1aIb_VEcq9Fle1x2~`T@pUb? z90|bI9(t(uG`(@27o&5v@k~?9l#->JLdtc)9~DWp`LxVcL1eB8iiAw8^n*YC zdYgUdB3%e~a(jr`*77^+g*Grs$Ato1!c zbdY2jrT#7g&X<6mLL(DH)jfpVMKXz+U!K6&QCk7P7heT49J1l)cZh(p(DYdk*WH&H z>^B$~q>RgPr7d|kx;oF5L?ChzQ)A2Atp5)yk`j#i?gdlZjU0T!O{?<7Va5L zajG4BneF_D(8ftl)9})Vr*`HV--k9}6_^_c)eF+dGOKFwlIToHcjdHExARynD>GKwGu5et}TTxzwNBE6PkU|U|5VYg?iochd zL1?12`GNb-7GAX&jQtr?oNy6)VL?)0)b34bmSEzG}+Ofr`XS@-ZXfh z;AFG*t3y|1u@b6;QrIJyujits3}cO$!5?o!fliJ91Ho%^LUO1x6GA(vAMD3;^W#au z_)Hkd@!>t>ld;BZ)Y8{HxLG*2L44PSBO^JAfh9pIq&O^OwaJQJGAtY1IaQv`Ux63D z`6i!JAgojHTAB=NF()@*iJkqQlgr=i954=C*G{=BUBB5g+a79*oINO)OJO4K@Dz73 z9lyfifOP&`P8N3y`}jk!S6nI=5(XfH9sk*x%0I}UnALyqzr+Mf1tewU!B3VL3+81A z*fc*NsQVl`xm?S6B{C=oajYD1u%ed}qZZ#&qPDS%LWO~A;3v(O+{}`^BS{_~+|pTl zmeHWd^s%P{?yTF-O!tZ9_ovNQZ=kgbcBj5im$NB2YAXr#GFnQ(=IOLJ@`NWOv=Rr0n?bEsO9^=fe=E)rL=l;EN zm%Obobxf2bZL|5DHXK{d5OzNmB&Lt z#qs@;`sm*E|+4T?;c@#!;TA)Lx&>!dkntI1I_4s4>JqzC8z`dric^%ph5}l(1mI zuo^HI>`-o@d_kt?a2llR4^osWDcew&r2w1Q$?>)I$kCncntT!x81Ev~AS$*DWou(A z(jDz$_9_@~8IEaY7YSDe!`X%Gy{o=Z+Buw~HP7}tg^BmiH9#jX$-=n&Y29!8gs{)u zznIiH-BKB!4UP^}bM4KKa()FbzYT7!LTjQssHyC1ykFYrfa0Rr(Og0;z zec>BwxrVEM-)22lcQRvEj%s9Het!H2(K(c+x#TwIR#ods|IoUF3kyP=vB!l)7YY!| z;(lkZC=9#I5oB@DagIGcdvFyk8s8y*eQP@WwD#=DSL&JKsc2w_#y5DxMEwYoD`N=h zSOk-KU?Tw?)MOjBFPNR0%wOm|{N?dzV(;F=5&DtlXGP2UJKFD+Fkut$8S8st?Cub@E$TkE_j0^Xa_-n zkl_`4`Tl(H`Olg##jq-;52y*;0Gjr1mmq&;@?RC8B2H7Hmliqb@|6;@{|DP-pj=o$ zvhZZQAZkGkPGhrxmTSpVWJ9y_?RNkAP#w-ADmGUR8dmMCTsIe+uHiDl00=x;d(G?h zC=xq)nIz!wH^;u(2HG=L3&_)Dh7w#3_5K>)w_2Ri`3TYuFduX#ZpdAX5?9uZJJVqZ(w$+fML)E&e4)MF$Zj4`IW zFb!U6tcbz{IssQ_f7GeJl$!)E-g$9AEIsdfx2@cUBIWy5k*sOX*x?O}`Z@?x2!k8S zZh5DzN6kcKpJX@T9k#m14B;Zl{l^UV)kuP0IR@HzcKN^C$nR_?v$f znx?PX94Dg2D3!-aX9J-i%ZE2m&2YqF?v>6uq`~FK)21q(z_xE{j*58u(s)ia2o_iF z??@%{h_AnnIi!e@h^lbzjj_F+)%|`y@0jF%e*Lxi@x=yYv%eavN@P0d2mImAQ8$)t z#$X^T^$sF@a&I%D2#EE-HL7A3m2gbBJ|rgmD8e403Zy`EtZx~ehJdee867&=O?hAM zJ+0(NQg1a;U#013U1_5Fv?Sy@gAl_nH92MbLZwFeC{8N;wCUR*v!9YuJz2a3+kwY- z5T+yMW;wYnsHfz{fp(|WR!0jV0g43ZY%1(2iBp_P8U)5pV@E;E%Bq@kW1x;Tym1ey zdeT$|KNSue2rU|w?rH=0es^fp$WGZMX)(&j@2fU2Dlz^@++Ek&7jNRBAF#Y zsM1)OaT=|Hx1u_r+E@`O_baW;BU=;qNhKHw?fF_a)glUPrik1EJCG5krk8}YJP`Yb zV5A1>Me&mXe8CF;OZ9O`3V~@*(Lj$qI*Gg$-X#mO$l#pBIIeLm*m*HWO?vZa(vrxw zauA}N%4B8CaNXUFE6d@P7Izo~*LpRpki9%bF=g4I5>Tdf)-~DG7vJa5Eu8mnaDDXs zVX3py$8T8YK8`6~Th?sijb|)@tl^mo%dH2RcrF zV4sxbYEJzw5+V;Z|H=h!<+5M(7EQ=;a&#Qh??T$bnc`Ntsy!rXL}NH>f@J}?HW4Jc zkdNO|6})o78$-#;`qE6S(Zu+PLfhh!4kB?s-x=z+Z;pkbBRc{*vGn)GL0oOpJoKcY zavox-L~scWyFz>|L_j*Y%7~aZxynG_uMa$6#Ne8Ql>EO%0p?6X(J> zi)5CX$RVUiDT|`H^Ch+5vwP_pZf71WI$JxQobTUooL7@HE|D{MSFWW|ZI!KonIZ00J}78}Z{$Qy?BV{p*5Q?W4I$0msO3~Gf_)|d z=dRik9!2zikz0rPUJb4}K$$=qvdlW(e$>vgeUWK5tzE%i1a^`gJxfg}2+=|L<++%* zkr2(+h13Jl$UIMSK3lSlEH0e?t+h-}`bpNp3-Xsik5Fm}e`>`(zhc4{YEn-!PbLjk zZFMqxCNjt7vr=J<$DD{oo9%XsoH2JfrzrWvOxugTb_EnUVpn*s-?`3tP)2Pa2*(G`fBKco_K{CnDAMc^* z9RVq_w^T~F;Df^W6)XDux)+g42S$30Dq!xTO#|V1FNYZ1@>;Add*YJ@Q4X?|DAOQv zzK*B8pjK72Y&n-^o5tiaPk$i_#FtcogD-nF3f*b~s+m37L4`*(12U=8$mLNDvPcNa z3;|N43~p zv-5KH{bX&oIWZ0x;b@7s9w~g$wJd&}MxP*1k<7YNV8~xR&lxT_{T@2S12wr>2XusE zfc1M43#bdc5oiNtYuo8{$AG2A0s+lyo2(86af}?w54T}^rw*tsKO0zbRq43%sY;A0 zs&YddDYYf51-fVxtoYjc4|R2{1BEh}+zQC4rsK1))<{{z%-e<#BCOKu!8IDo-C+az zxhmr-^J?omPxe#t8+=ZJ8cyBL_v-uL(eVY}qXELt?WZeWkT-E@7o4Wkd-TZH5xGX3 z$8)4LH3OHi??ubsJKk>%^{;GaV-@W}6o1G*3hI}!L7sXr+C?gw(oGZsO5HHo@OaH` z?XaknB#``zEIT<*!Az6{Uw2{G1WOGO8(~AS3Od}lVkvFs0sg^N&M~iD`qcXVQp`yX#F2l(o<1g zL0%5vc#u7`O?IF;(?<=ZlI;YaCt3SrF4e~3%+h|T$9C)cfer0DX~*4~1UyrGQ<|yU zg$PrHC+|0F8u!aO>dmHwCe*k0$6FR3j31N`co+V-vo|SnQ=zJ$&bC#+kMAx%!813a zojA^0p=gkSJqPVB6qosEljth}hN-B)64UPKXk~smp3*E19AZH>6ez03S3gqNYQbk( z@s&yo%BvS#8by<`>PxP7*qa=lHCf!w{Iqn@CDN6+wYG@I5m7j-SY59RM);@8Lzo!4 zr&MC#Vmi=5SP}ANv6vj>QJ1Ej)>}R;iZHd)AZC zQpZIEY4oHyUwt2^vPj9kd;r^9-%=jn@ZAJdZ7xezw{N| zNIhr4X_Vj0+tpHhpj<6YWp3Z14f8g9SO=xUr7{;wS@CX2ABU!0MK-oaB8U$sw**>Z zk$=J{ko%+_Q+Oy`2&L*utsilt*d?5CoYlZ8$iy%CA|n4(|ADhAzEB^;tox|V&unXMOCoP!(Tyi z!F8sGa5Scextf1-lmJVo1y5+Pzi#CvP}jo65etSU1mVK~Pe}AI91=sW-xUtenJSTO z3OU=D;btAdH{S-E`tiYBikNVvnUZV z!{?Dn{2o7y{00|kZ2K*)_*hR66USttzSt z))d~qGr)C`-4kR=&z$V`tIHyb%mBBU)aLUUBCL^IlqNoaMcj-7l*J(BV8o6*$r!TA zM0J05(sy#Gd~V&mdiU1p2}*HB{y~u-iUxzR z5?j<4!-fh%T18_?VU{S57>u)~jm?xJaJ?4SDZj2f{8t;^I=#m!Vdb)O<9^n)EZTzh z&P?U5+qG1SB6QXgG(oplge9bNU({>XkGL0QX#bhJXt59ow6uDD1T+dtQYE$b}-Hy!rQ z9pKvSDKccUb+G+)blkIwA=Dv@Qr+|V;n%pwl5E+YTI>yGxZ<5WI< zIDecTKRzS9LVA?HMX`e{qZhVg?x2vPnWH)B1wMMv$^R@_gzo5TrvHIiHmEsskTDVK> z2kaM8LY-9gC?91qwSGr6cVC5;<0rOCGMDst)pG&iz*0x0tQ;X@z4 zZ3QV% z!C&z_X(a)8wF-!BlK)m*|AkqeavawFwBI(KQHmr%NmMSgz*ORTom#jyD-DZ5e!kdX=qD2*h>xT{TQD=Jx5AvaHpcp*e}1fj*K{L_qsoDB_Fy@EZ4og z-JgT|fG;H=bYnx_(u2jo==1T53nM!luJw9igo{e3#F5|XqDKqv)kKiGU=A=qPGW%7 zwdQcJ1@YSH2IDsyDKQ0^XtC6vE7g^&5^Gt-kS4KEw%7DhX|8chWGgIM1_id8&d)e* zl&hqj=fgHpYgU)06<{?m)w%K-HkvMB1m&a^*aqvIuIZ>q9y~td%dj-dNi-pW+8un| zQNK_;NfX-75!f(6xJ~iSgvgk6b(osRBugawPJY7V&p{Q=Nx3|8Q%fVAWM`kM5f|}0 z&gpCK-fPnKk(8xKlVhnm6U^*(lypU_cza@c`%cON0!pNtuxvFmcY{lw0et{gnq|`< z{fy^bz<%y>EyYS9bz15b#zpRtU^lHWy3w1~P}2KBgbGooj;PIiX7S2&K0C64l*Bwp z)k(_98Y1~ay04$Dq^OEg44+bu1Sng(9y&LcNlts!&+m|wP)gTnI;{q|9n7<9aef#; zb%i?ESTJVR6GBY4-p!VGZq({DD|f^8WGJ&UCcGE*7(^8u_X%h@>y!JVY#Y!mX5Ue` zXI5?+rAQy&!fE<5F8VbV&%z3l8%`)1SQYO#!n9h1L|}+^quU?7JuR143k7f!@ugqF zJ`2g+w&h-C5r2P6QBh&ncaVrT>`8xtdI-b;vx%JGTP)F;<5~ylqZ4K(Q2GYcmHm;nWCFVKVXRu|%=; ztDCWi2vMRD;Ii=erQH%}pwRCjMDGAU6k2zRElqGL94rFqeRSm)S!q|YU9N=d&ICx@ zk+R&?kA%8U$zhw-`-%5Ik|Lkg`b-l5QZIn1`M)vs|4UN*i>U+NOE2#?u5@iWkN{-y zt1Nl7dU5y_f1t_u@suEvHe07W)MIbw+Z&sBwHP?ju$E-tXqiKq za8E+NoKJ4u zJ8d~Eqa}JgkU6Y;PIN;uXXJPtdiEw%oc_HzRUEdOl||;Ffpk1eDRhv|PM}YKsn?~LA^}ko? zloEl85J^NCf?M0g+Zx1fp$}8&wif~sY+S#ryxM848erT)1Qvtb<-^q7qU zYbtdH2WpfOCv2GOX&t|XwnVz}D9rxiO!HjhGbWtr ztyW86@vThtaUA0P%wqyjYPT|_xSa(mCq5~Pj4MV$>(d!rDMuL3r2-`SU!4txSjlxX z2f%8-+R^W@O5ytIwG0LLw9(%*lkRdeW2nUGUZ(`wg~-s2MTP8roS1O5UtyX z_)ac#WF657UG(S>6_3J;jNhtoc*HH1MV|@8UNEOzt@y(56?Yg)FU)K37(^(TOpC}o zty~o?5~J03Q{$nfv*~$4y*}@I9+p(5F-ZH3!|w5~6bVm$ym!!U!ho+X(D-+7Ia{yN zIQq!IBh6*Fmq&xPV9;5eW45+3zqWs%ay6KVSl;v@41Bdgj>eOP?^*L&s8HJ(!Wdy; z=D+^#xF{pn=c<8+DsqjVIg$Q^y<>k;ai^P|0V;ig7}6ekl!NSgy47$&K<#Qfy5`i8 z9J^(F^9PN&5D8wT10bn5fS&%_FzP=^iN6puGp-vT4uuJt+#?@@Q*b|qj*x=D?*l#O z)$ST^XUdbx?Zd*WcP<)ViE|VZ-HQ=!^!Bc_48MVO1{pZ7MKnJivNsCj64QdnF*Ew(LXSux z!ZtDlJ8K9Tpt5w(37Dtr?u|>vVZ21KNmLOKbh)KRv^`7oI4~n`Zfv(+Hj;f{O%9D0 zt^1kak9`TwioT-27)phh}7U0Sx%N?*J%7@h2+&{g(qqZh!T14yJk* zhJV?P{x1=~IehP${K z@Az^dq3HUpOQ4e*N=LwFliRfTYvGN^8JEOjik6u5e2SqVNC;>}E<>BCJlBHyBx-o7 z6gy+myu~`={}?T zlW)JX3jC%SQ5@BG<5ADCOMiMv3=q-N8$^r_?d1A=@s24tlm8NJXt5I-Q8Wap!abQ{ zS55vBtS~IWQ;>5H2>k@TIPq&nL-G0-lf*b} zd?E$ytyjS|1dZ%XNHsn(FaB?kg#2wPr;NGC-Jxnn44Mt9Rj3ashhzjanj65$%936| zG>&1h@Hpq_*dPr{g-BfN2+&*(xgvw+;W+EWVbuD=bYEOfXZq!5KdjO3eP^@u#zG%g zpHR%7yED_zQ@#bM|15Qe7{2V2{|Q# z#E#)aa(X-DSF-8tKqFPQ+tckqX*hLFc>%pfmahu##>XLvJ(;mN$eAo?4^^LNefeXQ z&P_(~$N)gEZ9q{c|L>;KUl8Uf|1W)e`yr)L#+rmzc8*UNg{=>CEUWdJrJkt8=msjq zocExUwiT8~t&_3QU|l2G?`mS&N-B=;`Gk`NrrcsT^<;B8k-MV@46ershK6?z$X8)M zIP7-ELB*M^I5x_gk~VCGNCSH+)3wB6xZL1rysW^&%hR$5>PwAzc_iJAx5L!N3G>`i z#{fz@Lci_dVZb|&B-cPZrY>9v*U%M`&e0ON zbF-f}?U>NFPac*=xtu#7{z&w`(Q3f-PYz`84_W#gu!vCWp{FX&SqZUF4z_DOtgE#P zT?nE*jVWoCh%Vi-ic^lyOL~F@M~qj;iVnU%$l?sfBksGiN=5>mRP`pim{4UoQg|U8 zHhIB$h20TkV_!w_{wIh<0nIv<06;A8Kf7)H-ykOBWN76eY-erxzgnqHfCvqp%Q?Pw z*$@;FD6q6|r4YYHaHX^X4+VjODw`=pAD7)8GPzp1cJyq6_NM3wzMjUjngPX}WA@no zlWg#E!=i`eTVL|4`K9wj%i(M1`{()Q=hu`0eJs

aDFp%+4BH=*^Y-v>G~}Wn`;I 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 @_Hgha@QhXHHOV}HykhI0v>slD2r7`>cqHLH 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 H2Y>w!sRTga diff --git a/lib-test/jmock-2.5.1.jar b/lib-test/jmock-2.5.1.jar deleted file mode 100644 index 4415dfbc94f8515bef4495976bcdb0fa5e6b5981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241000 zcmd?S2b>hwl`ej&CscP&%?uNWLum3a0T@6a0YYSHBtTf8fGt^SW*TT|n8wqC069vQ zY)j7Bk{so=aFA^U1Cp^Vrgowd?0Hs$1uro6bGw+;h&|dreJkR`~CgH_f~b0w}SaFQ9 zZIQCY;nBj#aDK>oAx=a`@(V}vqiCIxFw}M%k$mBrKaB7)8H~@yg7KR|ZPM z1II^33d5sgytZJh*Aki|-qtOV_sge-NAo8wbS(bEo(JlFxI%<~vm?cKoIF+-7|pY0 z<>doI`EvQYzxv`=P^8cKP*x5&8P~~XCFNu?a+A}*4=;<4M%QV|itA+f(cIunaa#D% z+TgS~?fjU^2h$py>COz-nVEKGWo3%f!JD(Q&Kzehfz0DauECk_Ea25bK3K$$#r#;p zdrSGWlUK|5(Z!E$Lh0dEPuA&mmS<(Hvw}ZYW}QA~6|Yujoi)xSyjq)e);X8*>awh} z-r2ybjalb%XA`fk$U2*yExg*Ab+$R%d9{NdJBi~;*SU(o`(5YitX#_PYqGMQZL%vX z8=c**vnMN?`1{(dY%64a;>+H|UPUm`l+~7JlW~HA$`uXFgtn6|Q zxXw$nvWMR<%gSEoW}>~tbzYv8ea@}?aT`DKBl9q)kn0?FogjZ<*;hO~oF6?tQgCEj?D583;XDooS^w~zr2#b< ztZ}hbqu8(s5Sz?!HuoIqn=}|l>NggLi=&$ysp(vHgCn)uN`oM2gf zddv~y$YOBhfjf5P%cB<98}sFz$A^Ya?E~v69x4_F9dQdM!Cr?>IkKp;-$rEE*>#11 zLh;VR$hM*U@p1w6ts5vEA0BnY>Bn_xxNz+uN0xNzwi(I~A6{|o!Q0V>87Di7L z3d3lT&i)BiFnzQ*yiM0JeKdd4T-N7Dcb5n-ogW%1ohS|;c4VC%Wk>Qy2Sy-3tk|vB zK~z1Q;iegP7eM{?EC)2#g3 zDuZE+m-Ha1TA!CX(w+RaHR!gMN<)SGup(i3a&0yy7GDPNRZ(wsWCE~GjTRK%?g^J& z2EbL3?(m;H#p(dLq5Nt2BIgqP=X&E(74INOw-8mv;`8@)Pc5 zzwk1Eu8MX$Ci}R(yuEZBB8IAM@AzFDlwJnlwVf~JjHC-@$cl=T?q)2Y

yp`oB|TIsS@a|$Z; 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 T`L|HGhX2E^#N8J|U>5!#JIVK2 diff --git a/lib-test/jmock-junit4-2.5.1.jar b/lib-test/jmock-junit4-2.5.1.jar deleted file mode 100644 index fb3697af4bfae4c900a75d6dec89950f12ed8faf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10247 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 E0o}N=^8f$< diff --git a/src/net/sf/openrocket/database/Databases.java b/src/net/sf/openrocket/database/Databases.java index 9ec9f589..d5d7f465 100644 --- a/src/net/sf/openrocket/database/Databases.java +++ b/src/net/sf/openrocket/database/Databases.java @@ -79,7 +79,7 @@ public class Databases { BULK_MATERIAL.add(new Material.Bulk("Cardboard", 680, false)); BULK_MATERIAL.add(new Material.Bulk("Carbon fiber", 1780, false)); BULK_MATERIAL.add(new Material.Bulk("Cork", 240, false)); - BULK_MATERIAL.add(new Material.Bulk("Depron", 40, false)); + BULK_MATERIAL.add(new Material.Bulk("Depron (XPS)", 40, false)); BULK_MATERIAL.add(new Material.Bulk("Fiberglass", 1850, false)); BULK_MATERIAL.add(new Material.Bulk("Kraft phenolic",950, false)); BULK_MATERIAL.add(new Material.Bulk("Maple", 755, false)); @@ -90,7 +90,8 @@ public class Databases { BULK_MATERIAL.add(new Material.Bulk("Polystyrene", 1050, false)); BULK_MATERIAL.add(new Material.Bulk("PVC", 1390, false)); BULK_MATERIAL.add(new Material.Bulk("Spruce", 450, false)); - // TODO: CRITICAL: Add styrofoam + BULK_MATERIAL.add(new Material.Bulk("Styrofoam generic (EPS)", 20, false)); + BULK_MATERIAL.add(new Material.Bulk("Styrofoam / Blue Foam (XPS)", 32, false)); BULK_MATERIAL.add(new Material.Bulk("Quantum tubing",1050, false)); SURFACE_MATERIAL.add(new Material.Surface("Ripstop nylon", 0.067, false)); diff --git a/src/net/sf/openrocket/gui/components/DescriptionArea.java b/src/net/sf/openrocket/gui/components/DescriptionArea.java index ac26ae83..d3d568b2 100644 --- a/src/net/sf/openrocket/gui/components/DescriptionArea.java +++ b/src/net/sf/openrocket/gui/components/DescriptionArea.java @@ -13,11 +13,15 @@ public class DescriptionArea extends JScrollPane { private final JEditorPane editorPane; + public DescriptionArea(int rows) { - this(rows, -1); + this("", rows, -1); } - public DescriptionArea(int rows, float size) { + this("", rows, size); + } + + public DescriptionArea(String text, int rows, float size) { super(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); @@ -41,6 +45,7 @@ public class DescriptionArea extends JScrollPane { this.setPreferredSize(dim); this.setViewportView(editorPane); + this.setText(text); } public void setText(String txt) { diff --git a/src/net/sf/openrocket/gui/dialogs/AboutDialog.java b/src/net/sf/openrocket/gui/dialogs/AboutDialog.java index 41014f49..73d12576 100644 --- a/src/net/sf/openrocket/gui/dialogs/AboutDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/AboutDialog.java @@ -12,6 +12,7 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.URLLabel; +import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; import net.sf.openrocket.util.Prefs; @@ -42,7 +43,7 @@ public class AboutDialog extends JDialog { panel.add(new StyledLabel(" ", -1), "ax 50%, growy, wrap para"); } - panel.add(new StyledLabel("Copyright \u00A9 2007-2009 Sampo Niskanen"), + panel.add(new StyledLabel("Copyright " + Chars.COPY +" 2007-2009 Sampo Niskanen"), "ax 50%, growy, wrap para"); panel.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para"); diff --git a/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java b/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java index cd7d9c98..6ff42883 100644 --- a/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java @@ -1,6 +1,7 @@ package net.sf.openrocket.gui.dialogs; import static net.sf.openrocket.unit.Unit.NOUNIT2; +import static net.sf.openrocket.util.Chars.ALPHA; import java.awt.Color; import java.awt.Component; @@ -45,8 +46,8 @@ import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.MotorConfigurationModel; import net.sf.openrocket.gui.components.BasicSlider; -import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StageSelector; +import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.scalefigure.RocketPanel; import net.sf.openrocket.rocketcomponent.Configuration; @@ -203,7 +204,7 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { return unit.toString(cpData.get(row).cp.x); } }, - new Column("CN\u03b1") { + new Column("CN"+ALPHA+"") { @Override public Object getValueAt(int row) { return NOUNIT2.toString(cpData.get(row).cp.weight); } diff --git a/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java b/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java index 550dee56..44eba2e6 100644 --- a/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java @@ -31,6 +31,7 @@ import net.sf.openrocket.motor.Motor; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.GUIUtil; public class EditMotorConfigurationDialog extends JDialog { @@ -466,7 +467,7 @@ public class EditMotorConfigurationDialog extends JDialog { String str = motor.getDesignation(mount.getMotorDelay(id)); int count = mount.getMotorCount(); if (count > 1) { - str = "" + count + "\u00d7 " + str; + str = "" + count + Chars.TIMES + " " + str; } return str; } @@ -482,15 +483,11 @@ public class EditMotorConfigurationDialog extends JDialog { String name = mount.toString(); int count = mount.getMotorCount(); if (count > 1) { - name = name + " (\u00d7" + count + ")"; + name = name + " (" + Chars.TIMES + count + ")"; } return name; } - } - - - } diff --git a/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java b/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java index 518403c9..f288004f 100644 --- a/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java @@ -14,6 +14,7 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.communication.UpdateInfo; import net.sf.openrocket.gui.components.URLLabel; +import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.ComparablePair; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; @@ -45,7 +46,8 @@ public class UpdateInfoDialog extends JDialog { if (count >= 4 && n != updates.get(i).getU()) break; n = updates.get(i).getU(); - panel.add(new JLabel(" \u2022 " + updates.get(i).getV()), "wrap 0px"); + panel.add(new JLabel(" " + Chars.BULLET + " " + updates.get(i).getV()), + "wrap 0px"); count++; } } diff --git a/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java b/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java index 38cc36fe..e5f38260 100644 --- a/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java @@ -12,14 +12,21 @@ import java.util.List; import javax.swing.AbstractListModel; import javax.swing.ComboBoxModel; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JProgressBar; import javax.swing.JTabbedPane; +import javax.swing.Timer; import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.communication.UpdateInfo; +import net.sf.openrocket.communication.UpdateInfoRetriever; import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.gui.dialogs.UpdateInfoDialog; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.GUIUtil; @@ -40,7 +47,7 @@ public class PreferencesDialog extends JDialog { tabbedPane.addTab("Units", null, unitsPane(), "Default units"); tabbedPane.addTab("Materials", null, new MaterialEditPanel(), "Custom materials"); - tabbedPane.addTab("Confirmation", null, confirmationPane(), "Confirmation dialog settings"); + tabbedPane.addTab("Options", null, optionsPane(), "Miscellaneous options"); JButton close = new JButton("Close"); @@ -68,16 +75,39 @@ public class PreferencesDialog extends JDialog { } - private JPanel confirmationPane() { - JPanel panel = new JPanel(new MigLayout("fill")); + private JPanel optionsPane() { + JPanel panel = new JPanel(new MigLayout("fillx, ins 30lp n n n")); - panel.add(new JLabel("Position to insert new body components:")); + + panel.add(new JLabel("Position to insert new body components:"), "gapright para"); panel.add(new JComboBox(new PrefChoiseSelector(Prefs.BODY_COMPONENT_INSERT_POSITION_KEY, - "Always ask", "Insert in middle", "Add to end")), "wrap para, sg combos"); + "Always ask", "Insert in middle", "Add to end")), "wrap para, growx, sg combos"); panel.add(new JLabel("Confirm deletion of simulations:")); panel.add(new JComboBox(new PrefBooleanSelector(Prefs.CONFIRM_DELETE_SIMULATION, - "Delete", "Confirm", true)), "wrap para, sg combos"); + "Delete", "Confirm", true)), "wrap 40lp, growx, sg combos"); + + + final JCheckBox softwareUpdateBox = new JCheckBox("Check for software updates"); + softwareUpdateBox.setSelected(Prefs.getCheckUpdates()); + softwareUpdateBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Prefs.setCheckUpdates(softwareUpdateBox.isSelected()); + } + }); + panel.add(softwareUpdateBox); + + JButton button = new JButton("Check now"); + button.setToolTipText("Check for software updates now"); + button.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + checkForUpdates(); + } + }); + panel.add(button, "right, wrap"); + return panel; } @@ -350,6 +380,73 @@ public class PreferencesDialog extends JDialog { } + private void checkForUpdates() { + final UpdateInfoRetriever retriever = new UpdateInfoRetriever(); + retriever.start(); + + + // Progress dialog + final JDialog dialog = new JDialog(this, ModalityType.APPLICATION_MODAL); + JPanel panel = new JPanel(new MigLayout()); + + panel.add(new JLabel("Checking for updates..."), "wrap"); + + JProgressBar bar = new JProgressBar(); + bar.setIndeterminate(true); + panel.add(bar, "growx, wrap para"); + + JButton cancel = new JButton("Cancel"); + cancel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + dialog.dispose(); + } + }); + panel.add(cancel, "right"); + dialog.add(panel); + + GUIUtil.setDisposableDialogOptions(dialog, cancel); + + + // Timer to monitor progress + final Timer timer = new Timer(100, null); + final long startTime = System.currentTimeMillis(); + + ActionListener listener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (!retriever.isRunning() || startTime+10000 < System.currentTimeMillis()) { + timer.stop(); + dialog.dispose(); + } + } + }; + timer.addActionListener(listener); + timer.start(); + + + // Wait for action + dialog.setVisible(true); + + + // Check result + UpdateInfo info = retriever.getUpdateInfo(); + if (info == null) { + JOptionPane.showMessageDialog(this, + "An error occurred while communicating with the server.", + "Unable to retrieve update information", JOptionPane.WARNING_MESSAGE, null); + } else if (info.getLatestVersion() == null || + info.getLatestVersion().equals("") || + Prefs.getVersion().equalsIgnoreCase(info.getLatestVersion())) { + JOptionPane.showMessageDialog(this, + "You are running the latest version of OpenRocket.", + "No updates available", JOptionPane.INFORMATION_MESSAGE, null); + } else { + new UpdateInfoDialog(info).setVisible(true); + } + + } + //////// Singleton implementation //////// diff --git a/src/net/sf/openrocket/gui/figureelements/RocketInfo.java b/src/net/sf/openrocket/gui/figureelements/RocketInfo.java index a70e8731..f573e182 100644 --- a/src/net/sf/openrocket/gui/figureelements/RocketInfo.java +++ b/src/net/sf/openrocket/gui/figureelements/RocketInfo.java @@ -1,5 +1,7 @@ package net.sf.openrocket.gui.figureelements; +import static net.sf.openrocket.util.Chars.*; + import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; @@ -16,7 +18,6 @@ import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Prefs; - /** * A FigureElement that draws text at different positions in the figure * with general data about the rocket. @@ -166,10 +167,10 @@ public class RocketInfo implements FigureElement { at = "at M="+UnitGroup.UNITS_COEFFICIENT.getDefaultUnit().toStringUnit(mach); if (!Double.isNaN(aoa)) { - at += " \u03b1=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(aoa); + at += " "+ALPHA+"=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(aoa); } if (!Double.isNaN(theta)) { - at += " \u0398=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(theta); + at += " "+THETA+"=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(theta); } GlyphVector cgValue = createText( diff --git a/src/net/sf/openrocket/gui/main/BasicFrame.java b/src/net/sf/openrocket/gui/main/BasicFrame.java index fcf74ca2..f7777a00 100644 --- a/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -1248,9 +1248,15 @@ public class BasicFrame extends JFrame { public void actionPerformed(ActionEvent e) { if (!updateInfo.isRunning()) { timer.stop(); + + String current = Prefs.getVersion(); + String last = Prefs.getString(Prefs.LAST_UPDATE, ""); UpdateInfo info = updateInfo.getUpdateInfo(); - if (info != null && !Prefs.getVersion().equals(info.getLatestVersion())) { + if (info != null && info.getLatestVersion() != null && + !current.equals(info.getLatestVersion()) && + !last.equals(info.getLatestVersion())) { + Prefs.putString(Prefs.LAST_UPDATE, info.getLatestVersion()); new UpdateInfoDialog(info).setVisible(true); } } diff --git a/src/net/sf/openrocket/gui/main/SimulationEditDialog.java b/src/net/sf/openrocket/gui/main/SimulationEditDialog.java index 81234d3e..2b3829d7 100644 --- a/src/net/sf/openrocket/gui/main/SimulationEditDialog.java +++ b/src/net/sf/openrocket/gui/main/SimulationEditDialog.java @@ -42,7 +42,7 @@ import net.sf.openrocket.gui.components.SimulationExportPanel; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.plot.Axis; import net.sf.openrocket.gui.plot.PlotConfiguration; -import net.sf.openrocket.gui.plot.PlotPanel; +import net.sf.openrocket.gui.plot.SimulationPlotPanel; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.simulation.FlightData; import net.sf.openrocket.simulation.FlightDataBranch; @@ -52,6 +52,7 @@ import net.sf.openrocket.simulation.SimulationListener; import net.sf.openrocket.simulation.listeners.CSVSaveListener; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; +import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; import net.sf.openrocket.util.Prefs; @@ -393,7 +394,7 @@ public class SimulationEditDialog extends JDialog { spin.setToolTipText(tip); sub.add(spin,"w 65lp!"); - label = new JLabel("\u00b0 N"); + label = new JLabel(Chars.DEGREE + " N"); label.setToolTipText(tip); sub.add(label,"growx"); slider = new BasicSlider(m.getSliderModel(-90, 90)); @@ -745,7 +746,7 @@ public class SimulationEditDialog extends JDialog { if (true) - return new PlotPanel(simulation); + return new SimulationPlotPanel(simulation); JPanel panel = new JPanel(new MigLayout("fill")); diff --git a/src/net/sf/openrocket/gui/plot/PlotPanel.java b/src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java similarity index 94% rename from src/net/sf/openrocket/gui/plot/PlotPanel.java rename to src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java index a2cbea7c..cac00455 100644 --- a/src/net/sf/openrocket/gui/plot/PlotPanel.java +++ b/src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java @@ -7,6 +7,7 @@ import java.awt.event.ItemListener; import java.util.Arrays; import java.util.EnumSet; +import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; @@ -21,7 +22,7 @@ import javax.swing.table.TableColumnModel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.Simulation; -import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.simulation.FlightDataBranch; import net.sf.openrocket.simulation.FlightEvent; @@ -31,7 +32,7 @@ import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; import net.sf.openrocket.util.Pair; -public class PlotPanel extends JPanel { +public class SimulationPlotPanel extends JPanel { // TODO: LOW: Should these be somewhere else? public static final int AUTO = -1; @@ -82,7 +83,7 @@ public class PlotPanel extends JPanel { private int modifying = 0; - public PlotPanel(final Simulation simulation) { + public SimulationPlotPanel(final Simulation simulation) { super(new MigLayout("fill")); this.simulation = simulation; @@ -121,7 +122,7 @@ public class PlotPanel extends JPanel { } }); this.add(new JLabel("Preset plot configurations: "), "spanx, split"); - this.add(configurationSelector,"growx, wrap 30lp"); + this.add(configurationSelector,"growx, wrap 20lp"); @@ -160,9 +161,10 @@ public class PlotPanel extends JPanel { this.add(domainUnitSelector, "width 40lp, gapright para"); - StyledLabel desc = new StyledLabel("

The data will be plotted in time order " + - "even if the X axis type is not time.", -2); - this.add(desc, "width :0px:, growx, wrap para"); + DescriptionArea desc = new DescriptionArea("The data will be plotted in time order " + + "even if the X axis type is not time.", 2, -2f); + desc.setViewportBorder(BorderFactory.createEmptyBorder()); + this.add(desc, "width 1px, growx 1, wrap unrel"); @@ -192,7 +194,7 @@ public class PlotPanel extends JPanel { col0.setPreferredWidth(w); col0.setMaxWidth(w); table.addMouseListener(new GUIUtil.BooleanTableClickListener(table)); - this.add(new JScrollPane(table), "height 1px, width 200lp, grow 1, wrap rel"); + this.add(new JScrollPane(table), "height 10px, width 200lp, grow 1, wrap rel"); //// All + None buttons @@ -226,7 +228,7 @@ public class PlotPanel extends JPanel { @Override public void actionPerformed(ActionEvent e) { if (configuration.getTypeCount() >= 15) { - JOptionPane.showMessageDialog(PlotPanel.this, + JOptionPane.showMessageDialog(SimulationPlotPanel.this, "A maximum of 15 plots is allowed.", "Cannot add plot", JOptionPane.ERROR_MESSAGE); return; @@ -274,7 +276,7 @@ public class PlotPanel extends JPanel { @Override public void actionPerformed(ActionEvent e) { defaultConfiguration = configuration.clone(); - PlotDialog.showPlot(SwingUtilities.getWindowAncestor(PlotPanel.this), + PlotDialog.showPlot(SwingUtilities.getWindowAncestor(SimulationPlotPanel.this), simulation, configuration); } }); diff --git a/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java b/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java index e40ba387..716943c1 100644 --- a/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java +++ b/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java @@ -59,6 +59,7 @@ import net.sf.openrocket.simulation.listeners.ApogeeEndListener; import net.sf.openrocket.simulation.listeners.InterruptListener; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.ChangeSource; +import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Prefs; @@ -222,7 +223,7 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change // Add rotation slider // Minimum size to fit "360deg" - JLabel l = new JLabel("360\u00b0"); + JLabel l = new JLabel("360" + Chars.DEGREE); Dimension d = l.getPreferredSize(); add(new BasicSlider(theta.getSliderModel(0,2*Math.PI),JSlider.VERTICAL,true), diff --git a/src/net/sf/openrocket/rocketcomponent/Rocket.java b/src/net/sf/openrocket/rocketcomponent/Rocket.java index 3bd4dcda..145e4cf0 100644 --- a/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -13,6 +13,7 @@ import javax.swing.event.ChangeListener; import javax.swing.event.EventListenerList; import net.sf.openrocket.motor.Motor; +import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; @@ -694,7 +695,7 @@ public class Rocket extends RocketComponent { if (previous != null) { String s = ""; if (count > 1) { - s = "" + count + "\u00d7" + previous; + s = "" + count + Chars.TIMES + previous; } else { s = previous; } @@ -713,7 +714,7 @@ public class Rocket extends RocketComponent { if (previous != null) { String s = ""; if (count > 1) { - s = "" + count + "\u00d7" + previous; + s = "" + count + Chars.TIMES + previous; } else { s = previous; } diff --git a/src/net/sf/openrocket/rocketcomponent/Transition.java b/src/net/sf/openrocket/rocketcomponent/Transition.java index 7155a798..5478545f 100644 --- a/src/net/sf/openrocket/rocketcomponent/Transition.java +++ b/src/net/sf/openrocket/rocketcomponent/Transition.java @@ -1,9 +1,8 @@ package net.sf.openrocket.rocketcomponent; -import static java.lang.Math.sin; -import static java.lang.Math.sqrt; -import static net.sf.openrocket.util.MathUtil.pow2; -import static net.sf.openrocket.util.MathUtil.pow3; +import static java.lang.Math.*; +import static net.sf.openrocket.util.Chars.*; +import static net.sf.openrocket.util.MathUtil.*; import java.util.Collection; @@ -594,14 +593,14 @@ public class Transition extends SymmetricComponent { "Radius × (x / Length)" + "k "+ "where k is the shape parameter. For k=0.5 this is a "+ - "½-power or parabolic nose cone, for k=0.75 a "+ - "¾-power, and for k=1 a conical nose cone.", + "" + FRAC12 +"-power or parabolic nose cone, for k=0.75 a "+ + "" + FRAC34 +"-power, and for k=1 a conical nose cone.", "A power series transition has a profile of "+ "Radius × (x / Length)" + "k "+ "where k is the shape parameter. For k=0.5 the transition is "+ - "½-power or parabolic, for k=0.75 a ¾-power, and for " + - "k=1 conical.",true) { + "" + FRAC12 + "-power or parabolic, for k=0.75 a " + + "" + FRAC34 + "-power, and for k=1 conical.",true) { @Override public boolean usesParameter() { // Range 0...1 return true; diff --git a/src/net/sf/openrocket/unit/DegreeUnit.java b/src/net/sf/openrocket/unit/DegreeUnit.java index e694aa69..240e0b84 100644 --- a/src/net/sf/openrocket/unit/DegreeUnit.java +++ b/src/net/sf/openrocket/unit/DegreeUnit.java @@ -2,10 +2,12 @@ package net.sf.openrocket.unit; import java.text.DecimalFormat; +import net.sf.openrocket.util.Chars; + public class DegreeUnit extends GeneralUnit { public DegreeUnit() { - super(Math.PI/180.0,"\u00b0"); + super(Math.PI/180.0, ""+Chars.DEGREE); } @Override diff --git a/src/net/sf/openrocket/unit/Unit.java b/src/net/sf/openrocket/unit/Unit.java index 55b4f160..53e19c80 100644 --- a/src/net/sf/openrocket/unit/Unit.java +++ b/src/net/sf/openrocket/unit/Unit.java @@ -2,10 +2,12 @@ package net.sf.openrocket.unit; import java.text.DecimalFormat; +import net.sf.openrocket.util.Chars; + public abstract class Unit { /** No unit with 2 digit precision */ - public static final Unit NOUNIT2 = new GeneralUnit(1,"\u200b", 2); // zero-width space + public static final Unit NOUNIT2 = new GeneralUnit(1,""+Chars.ZWSP, 2); protected final double multiplier; // meters = units * multiplier protected final String unit; diff --git a/src/net/sf/openrocket/unit/UnitGroup.java b/src/net/sf/openrocket/unit/UnitGroup.java index 6b6d4997..ffe80f22 100644 --- a/src/net/sf/openrocket/unit/UnitGroup.java +++ b/src/net/sf/openrocket/unit/UnitGroup.java @@ -1,5 +1,6 @@ package net.sf.openrocket.unit; +import static net.sf.openrocket.util.Chars.*; import static net.sf.openrocket.util.MathUtil.pow2; import java.util.ArrayList; @@ -89,11 +90,11 @@ public class UnitGroup { UNITS_DISTANCE.addUnit(new GeneralUnit(1609.344,"mi")); UNITS_AREA = new UnitGroup(); - UNITS_AREA.addUnit(new GeneralUnit(pow2(0.001),"mm\u00b2")); - UNITS_AREA.addUnit(new GeneralUnit(pow2(0.01),"cm\u00b2")); - UNITS_AREA.addUnit(new GeneralUnit(1,"m\u00b2")); - UNITS_AREA.addUnit(new GeneralUnit(pow2(0.0254),"in\u00b2")); - UNITS_AREA.addUnit(new GeneralUnit(pow2(0.3048),"ft\u00b2")); + UNITS_AREA.addUnit(new GeneralUnit(pow2(0.001),"mm" + SQUARED)); + UNITS_AREA.addUnit(new GeneralUnit(pow2(0.01),"cm" + SQUARED)); + UNITS_AREA.addUnit(new GeneralUnit(1,"m" + SQUARED)); + UNITS_AREA.addUnit(new GeneralUnit(pow2(0.0254),"in" + SQUARED)); + UNITS_AREA.addUnit(new GeneralUnit(pow2(0.3048),"ft" + SQUARED)); UNITS_AREA.setDefaultUnit(1); @@ -111,8 +112,8 @@ public class UnitGroup { UNITS_VELOCITY.addUnit(new GeneralUnit(0.44704, "mph")); UNITS_ACCELERATION = new UnitGroup(); - UNITS_ACCELERATION.addUnit(new GeneralUnit(1, "m/s\u00b2")); - UNITS_ACCELERATION.addUnit(new GeneralUnit(0.3048, "ft/s\u00b2")); + UNITS_ACCELERATION.addUnit(new GeneralUnit(1, "m/s" + SQUARED)); + UNITS_ACCELERATION.addUnit(new GeneralUnit(0.3048, "ft/s" + SQUARED)); UNITS_MASS = new UnitGroup(); @@ -126,18 +127,18 @@ public class UnitGroup { UNITS_ANGLE.addUnit(new FixedPrecisionUnit("rad",0.01)); UNITS_DENSITY_BULK = new UnitGroup(); - UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000,"g/cm\u00b3")); - UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1,"kg/m\u00b3")); - UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1729.99404,"oz/in\u00b3")); - UNITS_DENSITY_BULK.addUnit(new GeneralUnit(16.0184634,"lb/ft\u00b3")); + UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000,"g/cm" + CUBED)); + UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1,"kg/m" + CUBED)); + UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1729.99404,"oz/in" + CUBED)); + UNITS_DENSITY_BULK.addUnit(new GeneralUnit(16.0184634,"lb/ft" + CUBED)); UNITS_DENSITY_SURFACE = new UnitGroup(); - UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(10,"g/cm\u00b2")); - UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.001,"g/m\u00b2")); - UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(1,"kg/m\u00b2")); - UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(43.9418487,"oz/in\u00b2")); - UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.305151727,"oz/ft\u00b2")); - UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(4.88242764,"lb/ft\u00b2")); + UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(10,"g/cm" + SQUARED)); + UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.001,"g/m" + SQUARED)); + UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(1,"kg/m" + SQUARED)); + UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(43.9418487,"oz/in" + SQUARED)); + UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.305151727,"oz/ft" + SQUARED)); + UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(4.88242764,"lb/ft" + SQUARED)); UNITS_DENSITY_SURFACE.setDefaultUnit(1); UNITS_DENSITY_LINE = new UnitGroup(); @@ -152,7 +153,7 @@ public class UnitGroup { UNITS_IMPULSE = new UnitGroup(); UNITS_IMPULSE.addUnit(new GeneralUnit(1,"Ns")); - UNITS_IMPULSE.addUnit(new GeneralUnit(4.44822162, "lbf\u00b7s")); + UNITS_IMPULSE.addUnit(new GeneralUnit(4.44822162, "lbf"+DOT+"s")); UNITS_TIME_STEP = new UnitGroup(); UNITS_TIME_STEP.addUnit(new FixedPrecisionUnit("ms", 1, 0.001)); @@ -174,8 +175,8 @@ public class UnitGroup { UNITS_TEMPERATURE = new UnitGroup(); UNITS_TEMPERATURE.addUnit(new FixedPrecisionUnit("K", 1)); - UNITS_TEMPERATURE.addUnit(new TemperatureUnit(1, 273.15, "\u00b0C")); - UNITS_TEMPERATURE.addUnit(new TemperatureUnit(5.0/9.0, 459.67, "\u00b0F")); + UNITS_TEMPERATURE.addUnit(new TemperatureUnit(1, 273.15, DEGREE+"C")); + UNITS_TEMPERATURE.addUnit(new TemperatureUnit(5.0/9.0, 459.67, DEGREE+"F")); UNITS_TEMPERATURE.setDefaultUnit(1); UNITS_PRESSURE = new UnitGroup(); @@ -188,18 +189,19 @@ public class UnitGroup { UNITS_PRESSURE.addUnit(new GeneralUnit(1, "Pa")); UNITS_RELATIVE = new UnitGroup(); - UNITS_RELATIVE.addUnit(new FixedPrecisionUnit("\u200b", 0.01)); + UNITS_RELATIVE.addUnit(new FixedPrecisionUnit(""+ZWSP, 0.01, 1.0)); UNITS_RELATIVE.addUnit(new FixedPrecisionUnit("%", 1, 0.01)); + UNITS_RELATIVE.addUnit(new FixedPrecisionUnit(""+PERMILLE, 1, 0.001)); UNITS_RELATIVE.setDefaultUnit(1); UNITS_ROUGHNESS = new UnitGroup(); - UNITS_ROUGHNESS.addUnit(new GeneralUnit(0.000001, "\u03bcm")); + UNITS_ROUGHNESS.addUnit(new GeneralUnit(0.000001, MICRO+"m")); UNITS_ROUGHNESS.addUnit(new GeneralUnit(0.0000254, "mil")); UNITS_COEFFICIENT = new UnitGroup(); - UNITS_COEFFICIENT.addUnit(new FixedPrecisionUnit("\u200b", 0.01)); // zero-width space + UNITS_COEFFICIENT.addUnit(new FixedPrecisionUnit(""+ZWSP, 0.01)); // zero-width space HashMap map = new HashMap(); @@ -235,45 +237,45 @@ public class UnitGroup { UNITS_LENGTH.setDefaultUnit("cm"); UNITS_MOTOR_DIMENSIONS.setDefaultUnit("mm"); UNITS_DISTANCE.setDefaultUnit("m"); - UNITS_AREA.setDefaultUnit("cm\u00b2"); + UNITS_AREA.setDefaultUnit("cm"+SQUARED); UNITS_STABILITY.setDefaultUnit("cal"); UNITS_VELOCITY.setDefaultUnit("m/s"); - UNITS_ACCELERATION.setDefaultUnit("m/s\u00b2"); + UNITS_ACCELERATION.setDefaultUnit("m/s"+SQUARED); UNITS_MASS.setDefaultUnit("g"); - UNITS_ANGLE.setDefaultUnit(0); - UNITS_DENSITY_BULK.setDefaultUnit("g/cm\u00b3"); - UNITS_DENSITY_SURFACE.setDefaultUnit("g/m\u00b2"); + UNITS_ANGLE.setDefaultUnit(""+DEGREE); + UNITS_DENSITY_BULK.setDefaultUnit("g/cm"+CUBED); + UNITS_DENSITY_SURFACE.setDefaultUnit("g/m"+SQUARED); UNITS_DENSITY_LINE.setDefaultUnit("g/m"); UNITS_FORCE.setDefaultUnit("N"); UNITS_IMPULSE.setDefaultUnit("Ns"); UNITS_TIME_STEP.setDefaultUnit("s"); UNITS_FLIGHT_TIME.setDefaultUnit("s"); UNITS_ROLL.setDefaultUnit("r/s"); - UNITS_TEMPERATURE.setDefaultUnit(1); + UNITS_TEMPERATURE.setDefaultUnit(DEGREE+"C"); UNITS_PRESSURE.setDefaultUnit("mbar"); UNITS_RELATIVE.setDefaultUnit("%"); - UNITS_ROUGHNESS.setDefaultUnit("\u03bcm"); + UNITS_ROUGHNESS.setDefaultUnit(MICRO+"m"); } public static void setDefaultImperialUnits() { UNITS_LENGTH.setDefaultUnit("in"); UNITS_MOTOR_DIMENSIONS.setDefaultUnit("in"); UNITS_DISTANCE.setDefaultUnit("ft"); - UNITS_AREA.setDefaultUnit("in\u00b2"); + UNITS_AREA.setDefaultUnit("in"+SQUARED); UNITS_STABILITY.setDefaultUnit("cal"); UNITS_VELOCITY.setDefaultUnit("ft/s"); - UNITS_ACCELERATION.setDefaultUnit("ft/s\u00b2"); + UNITS_ACCELERATION.setDefaultUnit("ft/s"+SQUARED); UNITS_MASS.setDefaultUnit("oz"); - UNITS_ANGLE.setDefaultUnit(0); - UNITS_DENSITY_BULK.setDefaultUnit("oz/in\u00b3"); - UNITS_DENSITY_SURFACE.setDefaultUnit("oz/ft\u00b2"); + UNITS_ANGLE.setDefaultUnit(""+DEGREE); + UNITS_DENSITY_BULK.setDefaultUnit("oz/in"+CUBED); + UNITS_DENSITY_SURFACE.setDefaultUnit("oz/ft"+SQUARED); UNITS_DENSITY_LINE.setDefaultUnit("oz/ft"); UNITS_FORCE.setDefaultUnit("N"); UNITS_IMPULSE.setDefaultUnit("Ns"); UNITS_TIME_STEP.setDefaultUnit("s"); UNITS_FLIGHT_TIME.setDefaultUnit("s"); UNITS_ROLL.setDefaultUnit("r/s"); - UNITS_TEMPERATURE.setDefaultUnit(2); + UNITS_TEMPERATURE.setDefaultUnit(DEGREE+"F"); UNITS_PRESSURE.setDefaultUnit("mbar"); UNITS_RELATIVE.setDefaultUnit("%"); UNITS_ROUGHNESS.setDefaultUnit("mil"); @@ -337,24 +339,20 @@ public class UnitGroup { } /** - * Set the default unit based on the unit name. Does nothing if the name - * does not match any of the units. + * Set the default unit based on the unit name. Throws an exception if a + * unit with the provided name is not available. * - * @param name the unit name (null ok). - * @return true if the the default was set, - * false if a matching unit was not found. + * @param name the unit name. + * @throws IllegalArgumentException if the corresponding unit is not found in the group. */ - public boolean setDefaultUnit(String name) { - if (name == null) - return false; - + public void setDefaultUnit(String name) throws IllegalArgumentException { for (int i=0; i < units.size(); i++) { - if (name.equals(units.get(i).getUnit())) { + if (units.get(i).getUnit().equals(name)) { setDefaultUnit(i); - return true; + return; } } - return false; + throw new IllegalArgumentException("name="+name); } diff --git a/src/net/sf/openrocket/util/Chars.java b/src/net/sf/openrocket/util/Chars.java new file mode 100644 index 00000000..08d2f827 --- /dev/null +++ b/src/net/sf/openrocket/util/Chars.java @@ -0,0 +1,50 @@ +package net.sf.openrocket.util; + +/** + * A class defining various non-ASCII characters for easier use. + * + * @author Sampo Niskanen + */ +public class Chars { + + /** The fraction 1/2 */ + public static final char FRAC12 = '\u00BD'; + /** The fraction 1/4 */ + public static final char FRAC14 = '\u00BC'; + /** The fraction 3/4 */ + public static final char FRAC34 = '\u00BE'; + + /** Degree sign */ + public static final char DEGREE = '\u00B0'; + + /** Squared, superscript 2 */ + public static final char SQUARED = '\u00B2'; + /** Cubed, superscript 3 */ + public static final char CUBED = '\u00B3'; + + /** Per mille sign */ + public static final char PERMILLE = '\u2030'; + + /** Middle dot, multiplication */ + public static final char DOT = '\u00B7'; + /** Multiplication sign, cross */ + public static final char TIMES = '\u00D7'; + + /** No-break space */ + public static final char NBSP = '\u00A0'; + /** Zero-width space */ + public static final char ZWSP = '\u200B'; + + /** Micro sign (Greek letter mu) */ + public static final char MICRO = '\u00B5'; + + /** Alpha */ + public static final char ALPHA = '\u03b1'; + /** Theta */ + public static final char THETA = '\u0398'; + + /** Copyright symbol */ + public static final char COPY = '\u00A9'; + /** A centered bullet */ + public static final char BULLET = '\u2022'; +} diff --git a/src/net/sf/openrocket/util/ConcurrentProgressMonitor.java b/src/net/sf/openrocket/util/ConcurrentProgressMonitor.java index 21017940..7253c890 100644 --- a/src/net/sf/openrocket/util/ConcurrentProgressMonitor.java +++ b/src/net/sf/openrocket/util/ConcurrentProgressMonitor.java @@ -10,7 +10,7 @@ import javax.swing.SwingUtilities; * A thread-safe ProgressMonitor. This class may be instantiated * and the method {@link #setProgress(int)} called safely from any thread. *

- * Why the FSCK&!¤#&%¤ isn't the default API version thread-safe?!?! + * Why the FSCK&!#&% isn't the default API version thread-safe?!?! * * @author Sampo Niskanen */ diff --git a/src/net/sf/openrocket/util/Pair.java b/src/net/sf/openrocket/util/Pair.java index e13b9b94..e95587b5 100644 --- a/src/net/sf/openrocket/util/Pair.java +++ b/src/net/sf/openrocket/util/Pair.java @@ -26,4 +26,40 @@ public class Pair { return v; } + + /** + * Compare both components of the Pair to another object. + * The pair is equal iff both items are equal (or null). + */ + @SuppressWarnings("unchecked") + @Override + public boolean equals(Object other) { + if (!(other instanceof Pair)) + return false; + Object otherU = ((Pair)other).getU(); + Object otherV = ((Pair)other).getV(); + + if (otherU == null) { + if (this.u != null) + return false; + } else { + if (!otherU.equals(this.u)) + return false; + } + + if (otherV == null) { + if (this.v != null) + return false; + } else { + if (!otherV.equals(this.v)) + return false; + } + return true; + } + + @Override + public int hashCode() { + return ((u != null) ? u.hashCode() : 0) + ((v != null) ? v.hashCode() : 0); + } + } diff --git a/src/net/sf/openrocket/util/Prefs.java b/src/net/sf/openrocket/util/Prefs.java index f4f26133..dc3e0db4 100644 --- a/src/net/sf/openrocket/util/Prefs.java +++ b/src/net/sf/openrocket/util/Prefs.java @@ -52,50 +52,62 @@ public class Prefs { */ public static final String NODENAME = (DEBUG?"OpenRocket-debug":"OpenRocket"); - - - private static final String BUILD_VERSION; - private static final String BUILD_SOURCE; + public static final String DEFAULT_BUILD_SOURCE = "default"; - private static final boolean DEFAULT_CHECK_UPDATES; + - static { - try { - InputStream is = ClassLoader.getSystemResourceAsStream("build.properties"); - if (is == null) { - throw new MissingResourceException( - "build.properties not found, distribution built wrong" + - " path:"+System.getProperty("java.class.path"), - "build.properties", "build.version"); - } - - Properties props = new Properties(); - props.load(is); - is.close(); - - BUILD_VERSION = props.getProperty("build.version"); - if (BUILD_VERSION == null) { + /* + * Load property file only when necessary. + */ + private static class BuildPropertyHolder { + + public static final String BUILD_VERSION; + public static final String BUILD_SOURCE; + public static final boolean DEFAULT_CHECK_UPDATES; + + static { + try { + InputStream is = ClassLoader.getSystemResourceAsStream("build.properties"); + if (is == null) { + throw new MissingResourceException( + "build.properties not found, distribution built wrong" + + " classpath:"+System.getProperty("java.class.path"), + "build.properties", "build.version"); + } + + Properties props = new Properties(); + props.load(is); + is.close(); + + String version = props.getProperty("build.version"); + if (version == null) { + throw new MissingResourceException( + "build.version not found in property file", + "build.properties", "build.version"); + } + BUILD_VERSION = version.trim(); + + BUILD_SOURCE = props.getProperty("build.source"); + if (BUILD_SOURCE == null) { + throw new MissingResourceException( + "build.source not found in property file", + "build.properties", "build.source"); + } + + String value = props.getProperty("build.checkupdates"); + if (value != null) + DEFAULT_CHECK_UPDATES = Boolean.parseBoolean(value); + else + DEFAULT_CHECK_UPDATES = true; + + } catch (IOException e) { throw new MissingResourceException( - "build.version not found in property file", + "Error reading build.properties", "build.properties", "build.version"); } - - BUILD_SOURCE = props.getProperty("build.source"); - - String value = props.getProperty("build.checkupdates"); - if (value != null) - DEFAULT_CHECK_UPDATES = Boolean.parseBoolean(value); - else - DEFAULT_CHECK_UPDATES = true; - - } catch (IOException e) { - throw new MissingResourceException( - "Error reading build.properties", - "build.properties", "build.version"); } } - public static final String BODY_COMPONENT_INSERT_POSITION_KEY = "BodyComponentInsertPosition"; @@ -111,6 +123,7 @@ public class Prefs { public static final String PLOT_SHOW_POINTS = "ShowPlotPoints"; private static final String CHECK_UPDATES = "CheckUpdates"; + public static final String LAST_UPDATE = "LastUpdateVersion"; /** * Node to this application's preferences. @@ -178,12 +191,12 @@ public class Prefs { public static String getVersion() { - return BUILD_VERSION; + return BuildPropertyHolder.BUILD_VERSION; } public static String getBuildSource() { - return BUILD_SOURCE; + return BuildPropertyHolder.BUILD_SOURCE; } @@ -256,7 +269,7 @@ public class Prefs { public static boolean getCheckUpdates() { - return PREFNODE.getBoolean(CHECK_UPDATES, DEFAULT_CHECK_UPDATES); + return PREFNODE.getBoolean(CHECK_UPDATES, BuildPropertyHolder.DEFAULT_CHECK_UPDATES); } public static void setCheckUpdates(boolean check) { @@ -502,7 +515,9 @@ public class Prefs { if (group == null) continue; - group.setDefaultUnit(prefs.get(key, null)); + try { + group.setDefaultUnit(prefs.get(key, null)); + } catch (IllegalArgumentException ignore) { } } } catch (BackingStoreException e) { diff --git a/test/net/sf/openrocket/motor/ManufacturerTest.java b/test/net/sf/openrocket/motor/ManufacturerTest.java index f9b676f0..6870c5f2 100644 --- a/test/net/sf/openrocket/motor/ManufacturerTest.java +++ b/test/net/sf/openrocket/motor/ManufacturerTest.java @@ -73,7 +73,7 @@ public class ManufacturerTest { assertTrue(m1.matches("a/")); assertTrue(m1.matches("a/rcs")); assertTrue(m1.matches("a/rms")); - assertTrue(m1.matches("aerotech ...-/%¤#_!")); + assertTrue(m1.matches("aerotech ...-/%#_!")); assertTrue(m1.matches(" .isp/")); assertFalse(m1.matches("aero/tech")); diff --git a/test/net/sf/openrocket/util/CoordinateTest.java b/test/net/sf/openrocket/util/CoordinateTest.java index 97c78a7a..0c74a3a1 100644 --- a/test/net/sf/openrocket/util/CoordinateTest.java +++ b/test/net/sf/openrocket/util/CoordinateTest.java @@ -38,11 +38,11 @@ public class CoordinateTest { assertCoordinateEquals(new Coordinate(2,4,6,8), y.multiply(2)); - assertEquals(1+2+3, y.dot(x)); - assertEquals(1+2+3, x.dot(y)); - assertEquals(1+2+3, Coordinate.dot(x,y)); - assertEquals(x.dot(x), x.length2()); - assertEquals(y.dot(y), y.length2()); + assertEquals(1+2+3, y.dot(x), EPS); + assertEquals(1+2+3, x.dot(y), EPS); + assertEquals(1+2+3, Coordinate.dot(x,y), EPS); + assertEquals(x.dot(x), x.length2(), EPS); + assertEquals(y.dot(y), y.length2(), EPS); assertEquals(Math.sqrt(1+4+9), y.length(), EPS); assertEquals(1, y.normalize().length(), EPS); diff --git a/test/net/sf/openrocket/util/MathUtilTest.java b/test/net/sf/openrocket/util/MathUtilTest.java index 8c135c8a..3f410acb 100644 --- a/test/net/sf/openrocket/util/MathUtilTest.java +++ b/test/net/sf/openrocket/util/MathUtilTest.java @@ -17,24 +17,24 @@ public class MathUtilTest { assertEquals(PI*PI*PI, MathUtil.pow3(PI), EPS); assertEquals(PI*PI*PI*PI, MathUtil.pow4(PI), EPS); - assertEquals(1.0, MathUtil.clamp(0.9999, 1.0, 2.0)); - assertEquals(1.23, MathUtil.clamp(1.23, 1.0, 2.0)); - assertEquals(2.0, MathUtil.clamp(2 + EPS/100, 1.0, 2.0)); + assertEquals(1.0, MathUtil.clamp(0.9999, 1.0, 2.0), 0); + assertEquals(1.23, MathUtil.clamp(1.23, 1.0, 2.0), 0); + assertEquals(2.0, MathUtil.clamp(2 + EPS/100, 1.0, 2.0), 0); - assertEquals(1.0f, MathUtil.clamp(0.9999f, 1.0f, 2.0f)); - assertEquals(1.23f, MathUtil.clamp(1.23f, 1.0f, 2.0f)); - assertEquals(2.0f, MathUtil.clamp(2.0001f, 1.0f, 2.0f)); + assertEquals(1.0f, MathUtil.clamp(0.9999f, 1.0f, 2.0f), 0); + assertEquals(1.23f, MathUtil.clamp(1.23f, 1.0f, 2.0f), 0); + assertEquals(2.0f, MathUtil.clamp(2.0001f, 1.0f, 2.0f), 0); assertEquals(1, MathUtil.clamp(-3, 1, 5)); assertEquals(3, MathUtil.clamp(3, 1, 5)); assertEquals(5, MathUtil.clamp(6, 1, 5)); - assertEquals(-1.0, MathUtil.sign(Double.NEGATIVE_INFINITY)); - assertEquals(-1.0, MathUtil.sign(-100)); - assertEquals(-1.0, MathUtil.sign(Math.nextAfter(0.0, -1.0))); - assertEquals( 1.0, MathUtil.sign(Math.nextUp(0.0))); - assertEquals( 1.0, MathUtil.sign(100)); - assertEquals( 1.0, MathUtil.sign(Double.POSITIVE_INFINITY)); + assertEquals(-1.0, MathUtil.sign(Double.NEGATIVE_INFINITY), EPS); + assertEquals(-1.0, MathUtil.sign(-100), EPS); + assertEquals(-1.0, MathUtil.sign(Math.nextAfter(0.0, -1.0)), EPS); + assertEquals( 1.0, MathUtil.sign(Math.nextUp(0.0)), EPS); + assertEquals( 1.0, MathUtil.sign(100), EPS); + assertEquals( 1.0, MathUtil.sign(Double.POSITIVE_INFINITY), EPS); } @Test @@ -68,33 +68,33 @@ public class MathUtilTest { @Test public void minmaxTest() { - assertEquals(1.0, MathUtil.min(1.0, Math.nextUp(1.0))); - assertEquals(1.0, MathUtil.min(1.0, Double.POSITIVE_INFINITY)); - assertEquals(1.0, MathUtil.min(NaN, 1.0)); - assertEquals(1.0, MathUtil.min(1.0, NaN)); - assertEquals(NaN, MathUtil.min(NaN, NaN)); + assertEquals(1.0, MathUtil.min(1.0, Math.nextUp(1.0)), 0); + assertEquals(1.0, MathUtil.min(1.0, Double.POSITIVE_INFINITY), 0); + assertEquals(1.0, MathUtil.min(NaN, 1.0), 0); + assertEquals(1.0, MathUtil.min(1.0, NaN), 0); + assertEquals(NaN, MathUtil.min(NaN, NaN), 0); - assertEquals(Math.nextUp(1.0), MathUtil.max(1.0, Math.nextUp(1.0))); - assertEquals(Double.POSITIVE_INFINITY, MathUtil.max(1.0, Double.POSITIVE_INFINITY)); - assertEquals(1.0, MathUtil.max(NaN, 1.0)); - assertEquals(1.0, MathUtil.max(1.0, NaN)); - assertEquals(NaN, MathUtil.max(NaN, NaN)); + assertEquals(Math.nextUp(1.0), MathUtil.max(1.0, Math.nextUp(1.0)), 0); + assertEquals(Double.POSITIVE_INFINITY, MathUtil.max(1.0, Double.POSITIVE_INFINITY), 0); + assertEquals(1.0, MathUtil.max(NaN, 1.0), 0); + assertEquals(1.0, MathUtil.max(1.0, NaN), 0); + assertEquals(NaN, MathUtil.max(NaN, NaN), 0); - assertEquals(1.0, MathUtil.min(1.0, 2.0, 3.0)); - assertEquals(1.0, MathUtil.min(1.0, NaN, NaN)); - assertEquals(1.0, MathUtil.min(NaN, 1.0, NaN)); - assertEquals(1.0, MathUtil.min(NaN, NaN, 1.0)); - assertEquals(1.0, MathUtil.min(2.0, NaN, 1.0)); - assertEquals(1.0, MathUtil.min(1.0, 2.0, NaN)); - assertEquals(1.0, MathUtil.min(NaN, 2.0, 1.0)); + assertEquals(1.0, MathUtil.min(1.0, 2.0, 3.0), 0); + assertEquals(1.0, MathUtil.min(1.0, NaN, NaN), 0); + assertEquals(1.0, MathUtil.min(NaN, 1.0, NaN), 0); + assertEquals(1.0, MathUtil.min(NaN, NaN, 1.0), 0); + assertEquals(1.0, MathUtil.min(2.0, NaN, 1.0), 0); + assertEquals(1.0, MathUtil.min(1.0, 2.0, NaN), 0); + assertEquals(1.0, MathUtil.min(NaN, 2.0, 1.0), 0); - assertEquals(3.0, MathUtil.max(1.0, 3.0, 2.0)); - assertEquals(1.0, MathUtil.max(1.0, NaN, NaN)); - assertEquals(1.0, MathUtil.max(NaN, 1.0, NaN)); - assertEquals(1.0, MathUtil.max(NaN, NaN, 1.0)); - assertEquals(2.0, MathUtil.max(2.0, NaN, 1.0)); - assertEquals(2.0, MathUtil.max(1.0, 2.0, NaN)); - assertEquals(2.0, MathUtil.max(NaN, 2.0, 1.0)); + assertEquals(3.0, MathUtil.max(1.0, 3.0, 2.0), 0); + assertEquals(1.0, MathUtil.max(1.0, NaN, NaN), 0); + assertEquals(1.0, MathUtil.max(NaN, 1.0, NaN), 0); + assertEquals(1.0, MathUtil.max(NaN, NaN, 1.0), 0); + assertEquals(2.0, MathUtil.max(2.0, NaN, 1.0), 0); + assertEquals(2.0, MathUtil.max(1.0, 2.0, NaN), 0); + assertEquals(2.0, MathUtil.max(NaN, 2.0, 1.0), 0); } @Test -- 2.30.2