From cf60ab972079ba8f2407f514795106b3de93ec34 Mon Sep 17 00:00:00 2001 From: DenisC Date: Wed, 2 Sep 2020 23:25:21 +0200 Subject: [PATCH] Added import/export of vehicle types --- resources/button/add.png | Bin 1681 -> 3077 bytes resources/button/delete.png | Bin 1322 -> 3375 bytes resources/button/edit.png | Bin 1547 -> 3453 bytes resources/button/editFollow.png | Bin 4597 -> 3836 bytes resources/button/export.png | Bin 1693 -> 3283 bytes resources/button/export2.png | Bin 0 -> 3685 bytes resources/button/import.png | Bin 0 -> 3800 bytes resources/button/map.png | Bin 1402 -> 3597 bytes resources/button/search.png | Bin 1232 -> 3405 bytes resources/button/settings.png | Bin 1836 -> 4068 bytes resources/button/template.png | Bin 0 -> 2758 bytes src/control/MogenControl.java | 8 +- src/control/ViewListener.java | 2 +- src/view/MogenView.form | 56 +++++++--- src/view/MogenView.java | 96 +++++++++++++++--- src/view/mapsimulation/FlowFrame.java | 1 - src/view/mapsimulation/TAZFrame.java | 1 - .../mapsimulation/ZoomableScrollPane.java | 8 +- 18 files changed, 131 insertions(+), 41 deletions(-) create mode 100644 resources/button/export2.png create mode 100644 resources/button/import.png create mode 100644 resources/button/template.png diff --git a/resources/button/add.png b/resources/button/add.png index 404f85f65d39ba7c318699eab041ca06a3eeaf09..30d1d3fc593deb9ed89db3763708847966c572c3 100644 GIT binary patch delta 3052 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 i!x@N_p5vvGm(eSwHdwYzNha0+0000(_`g8%^e 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 JPDHLkV1hlenUDYg delta 1530 zcmV(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ>kx4{BRCwC7m)~z(M-|6EXJ+obyX&m& zcnwbD)=r@zlvcPcC@K;VXeg8i6bL~;5mc=N5^qQeNbn9k5Pzih4**3-Km{a_f>5g_ zw77YQ5>d5M6BH2y8`qBQ)=77>>%G5bhKIGccG~ssw&FY<-I@8!_n!Hl89CgFKxc?8 z&^Y^L@|6l~e~oCOimQ#1F6<_}wThB_PqsAu5JCJ&;4WYXn`05UKvtLyCaO<6Z!V>; zP7_UEz&0yn&3|D+?Mb~O#~}y+hAtt>BHAJ*`M9f9j#%#wU=p^75nvA{Ihb944Bx$Knj$ssk#tFSy!{V=gV0QLaA# zuPu_4_U22szvAN3BPiRRR2;0y)`Q^9@0GO%b5m)bc*yjd$>{mZVhmHHBRQm^E3{Ll)#3)TIsng0^0F+FL;b@rL z<$VxXd|JTA<&UVe{Guv+>`%zp;!hFZ*Wv*6q|SJ8oZ|;iaQxs2Dy0g|w9%ggPJ=jt z(bs=6wD&2LX>Oas%4fa!zGZJ_t33YT6P?`SpMQCRmH0YZX*|8>5dmxc=d#t}luG`4 z&mr#&qVsoEU~~0(GMf_Wus4Lx@y?L_=e|SAhs}K=zVE_Qq9~doKYH$mo!qzn{3uEc zuijWBvsrHlFNk=En)~ECfBp8qfI9}+ZKNZrwJHeA)vt0RZE)B4oz#;XgeGEocqf4h zNPk`0X*ylvvH~UsmHS$Jjoo9rIeF+QUVQ94_fE{P)O?Llha@)PN`0QpWrV8d@0d`7 zF7CWzHCyHA{-1Ypzx&dYG_nTPTS65O+q7>8_0Bw1w#ieDC!zaGUP*~dJh@oDGSRiwGR|o?v0e|H|AjYCG{$0P!r+@t^=IU25I$+P(2Z-}{ z(|2u%c1=tVPZFts#N`|HTT&nw2UTIEwZi*G-p_O2c%IAOy~I85{V>bT^SRe!YW zr9X(u@z%WScE42{j`W*_nP#3a5DL3q{=LeF8duQ%85zI{OF@Yvrw(^=Up?`4hQe)I zw&it*Bu}Z<=1F||tQoD(y~B2Fs3-L`(^(+389TS#Lgsp3W~_FYRbkpr?u*>`tbFg{ z`i11q-`d*v*Q8Vfulg1}b2$r*Wq;y4A=Kge&9XauY^dE@f9Be*<%c9y$Pv%lm2A4$ zJokk;QMN*#ozbtEPUbSI^?8y!CDg%|1-!j65?AkCm^}B<^Vf7*L=LwiL}mEEQJ?+F z4A*zQB+=?X_q=t8EA@HeJSEb>TXb;VAtIE+@;+mOS=>e^6!39`x53LOzkk1{jyL^= zbj@z3h9@bQki=%2&V=*rr&u{0I;54Eb+|39_-|hP{octH@}Mt&5FptA5t)$GW_a;P zCIkd4sO|O0TvQrURi3)8*R;bpf9_ z^6mDI!BBL!@#d8Cw$End6>}{4W*R{`qt~ zKG=%lMW4Ste0Tfvs{MS*qBCmZ>KRS8CtJRK{dxW&;Fg<4Tm>#lUYMm)eY)V)rS$bN g$OLiH)hPcr0Ee2sf21eN0{{R307*qoM6N<$f{8!_ssI20 diff --git a/resources/button/editFollow.png b/resources/button/editFollow.png index 7a6b5a07f361c00b12a2da5bd57d28e5dc1ed071..17075e0c214f24ae8363230b76c2f4f4cc38047e 100644 GIT binary patch delta 3776 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

a{J`>&pFf2H$%{=)N!-(T*#_k+N# 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 delta 1659 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 D1LqJy literal 0 HcmV?d00001 diff --git a/resources/button/import.png b/resources/button/import.png new file mode 100644 index 0000000000000000000000000000000000000000..543c8e0d6867076e4dd9fd152d9e67e96361fc0e GIT binary patch literal 3800 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 TaRuXk00000NkvXXu0mjf2^-;G literal 1402 zcmV-=1%>*FP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ>07*naRCwB~ms@CDRTPH5wa#TOnHV!u6Yo?}L}@L-(&D8B6}(VU@k#JO5g$Zp zsn!P{6k4i2*rKA?3WBys5kWzOVkLcY0}JOGIQpfy?mG^&7_&+ zR9&#)us8es|JrN)Ywax?CNm%oq5|dbAI2uLSYeb*@g&K37s==q1eXp4RxYkeqRjn* ztuVL-C~(dy0!Iwl?}ha*rStT+jT2WlywVWFd7_Cf0)^NdF*d!)r=5v`SQbs5j7NK) z#>rB!8CzSd+u$m&)kze-z-aFQGQvc?%gKv1(=hiqV8R* z7WcYZ$DJaU5?m9cUU)7Uy=;%g!7a4exS)w)QT7(%V2{FcmeTXhV)6zM{%hdY(1ikT zfNefIi8%$QGh(g@0_zc8O7q_+i9kR_@x@pD0ge28LXcBJ87f-G#-SG*<+df0q?t2i_a?x1nJBu?nBX0g& zGDn~R+wR*wJ@?e^r|?u$crQpe`HK`zt^}#+a$&C@eNFKn4B*Q=bV zmr;=vNtnBt)7L+tW7ng(8~0@-tgX9{JesX`!!bNLLOGgPm;hk@9@otKaF1uZmC|tw;V1i&+Is$-eWY#Fy3jQZMM_`2UsImY7 zTcHMvFC^Ax&C%io4rdO-W}QHL0tSn9R(F~o+zeGkXUQtmutfpQ957DJPoUs8Nu;Z2 zA3m^S&b3_+e>DAl_s93(i$8q=r>Y|WbcO|-wMf|%khGrfIIv^h_09dSwuEF#1*fVb zbDe-FP)P$EdLdsQ9c1T$opY|g(*GI*!(S6oju%imH|3ajc4RU;Scn_Z*{Im(&zm+df?jh80+RIb~Ouv_B2A;Sp zj)K8wZY5yQl@zx1{JONPxzZnGdyefCKl-Jqys4^{Pz*}{soeHv zdRi|U21(8x8oP94`*86uWJBa3novKua&_%+-=JvXPsLU7=(9HrhKEc&8eAhwW#1#~rICGe>QZ4Cu{HR+I?9=-f+8T2 zwiXj;Fb!-Nc`v_FeQ#4ej1ZgoXmE-lZ;4QX<|R@P0tvaiqnA(v&eSUlw#t^Qo1u=Z zpLr+n!cD}`(a5*GI=^i2JSGt)(+RpLSK^{f=j{5tP#Z)La(;eO=!NUd3=_kt!>OD5 z#p2*i{KmZ!)_y!kz_=t=q$>>pYYvySgF!ZUDAaIc>gSS~AlZp;BtLqGIeiwj15OZvX%Q diff --git a/resources/button/search.png b/resources/button/search.png index 6feec413ec4eb23f3159b84bfae706a87de71811..abdf478c96ef75ce7221b2da2bc9ef203bde779f 100644 GIT binary patch literal 3405 zcmV-T4YKlyP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3yqdhDzbh5xgPEP<&Qmc#fw*+G_{w~)Hsp6<23 z#BvLS5LBI06K4JA-`o6)KQGCfD7mDXlI1VfSbd{Y?DbdA-Pw5V=g;4-cz!o-o-aH@ zfi_%^x!v;{^vP)y<;(V$o}Rs ze|q_w%j`WAB4^7JE9CNOxrm|6>77{+;`Ys(9DpC!O}~AyA50Yn<-lA}u-Ses(Z#*l zRyaHd<_YcP70%>&F91aBEePWR4A|s?xa4g1K061F1%euq`w)GH0Vm=oLi!j2@hJP^ zb#K1O?#%V#lhNSvggcRk*Os9-N zVO-A3c2Dl!nEMfLM#_(P^M7N`D0Tl2<_y$*=IsmCrslbE7`wbsF|`5jYc8&q%nYrU zvWs&a9i{0#P9FSf01gIVBtozvI8A++fP_%``J9rtDg0(i-F}ua(5c6SYQ2udoZaxI z*rPZ;BU&|InsUdpX#P@^@il@a?4@RWo4NTq#{~UNJY20w+B2z7rnF49szv8QA%r9JFXkF3l1r3>@o1Nbs3RQanxHr zLWVYCKepz(7e8((Ac3VBH4RJ(XKn+C6+CXZmQeh(x}^!uicqCPegZjuGlh&>Pva=h%QBF@v-9<63Z*(Pk_3GUe^UdC98vNen> zR=k*!4xj$?;;Q7rv=mMJLsKn9WmV5M(Y`^}2EgiSA)+yJ>Edf`1PZK*jcTPO3PYq% zIaR!(b@Vey`{k3oNsf9raZDIlt1u@Ab;cgkzhJGe5*ndUJGRYLwuGg1(cXk)RK@!i z;kj!x8^CBk_@Ff(2kzDvk$U3y#6d#BN!TRk2Ca+EXb_WQ7or#Kr!317-6Gv8 z{$wZa`cShx%28@2d;t(rHx{*4b1jsmt1}oLT9n@i`MzSST8ktPd=aNyl_Lpy!B~W&9%E9tNZH8kC_F2zi zVWM7+O>NNK5tI7kn~=%nTGXQfbql#auA%1!YLD8SdOjim8!JrKbfZ)Ci1n~a?>ooHsB0}V^0004mX+uL$Nkc;*aB^>EX>4Tx0C=2z zkv&MmKpe$i(@Iq;9oj*}AwzYtAS&W0RV;#q(pG5I!Q|2}XktiGTpR`0f`cE6RRc@j3CB zK^G)`i2Zvz+C9ZlW? zE_Z;zCtWfmNAlAYN+sa^jJ~M=L~eopRkyeHK29Hi9CfvH0~{Ozqh-oo^LTe}cW?im zY4`U71lw|ZhbwJC00006VoOIv01W_%07nOpi}C;f010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru493@ah+jsx~1D;7lK~z}7)mP7N8$}fU-puaWyN-=xJ2s(eDpA@9 zR3uZ7$^leyKxzac5*O5}9O<3h;EzC@5DMZHih4naQxI@KBoakcQB^>Y3JHQ+NSrva zm=FK>r~+? zY$}EAo7Wuywy6vnqlcu4J7Hb{mj_$Ui~Vw3up!H$bUx{FAc{b zZat=cDxZeo?=5*O4UuubJji6?Rt!RjgC^w{Ty5tpgnEh`ndxO*nwbZI;5qKyZ>^w> zj`AUeL}_OJKlYyEBKz6v{X{Ekd_5&#%ej7R6OPvn-|n;B*@kDkAOOZ_P*=PDX`u@7 z=Sv^%A+~oJ#G68l$1n6F;Hv-z=I(nYo&gcTbG*prSPmL~9a2bCW*7FC;jDW>P|TX> zM?e_`W*#cWxkL`yXap+k5e6$SM!oBlQ5e1$ML?1qR&NG^7@^)gSOWOp5MW<#jI8C;f=qZ zKZsm&JKPSwExm01s6GloYphMQT=%BWfaYa=yOsxGnq2!0k#R3l%qr}AJ>P151Ydo? jt#Ad*-RpRF$s_PLhKPHXa_EwU00000NkvXXu0mjf7;S7U delta 1227 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 ae+K}na0LbdQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+SONCmgFc5{O1&N1Q3#db21I;9fBM&c54x782uhjwikrYU{kvR?D-f{StLt z6Aw|YBbQUddlA16&jVb5(iF_fL@TEpk8?dG$md}=+HoeIhv$|hw}6haUXlQiSL)q; zjL!hQ0{OlQZ_$5Ty#b%>8qaUA)C(hAeE1;A$KW3jKW&^J64C1iR$_Ul&UNfP>)z|s z&RBt{UKSO@jgG&Ai5-yV<26MqI0V<_Xbr7Kiv#4$IATW|sU-p{J0wmsS=wnG{YV2M zGA%0Ti3Vu#v6>4t8sI8r_Lepkus3rBS%X%{8N>9DB^~>=W51CqcAg1SDPggMSAN;T z?;d`og}sMElwy5g1-ZyA7h*Vbe#R^ilJ>=$901?#qCY;_4@?yd$^mnQf)@L^M3?kp zTlwHQW1gTty&{D&uLS@R_7(_}G8l-OvLsEhAljq^94iPiNKTolgMlPM6G9T_tP~1W z^1bm+Nyl6gQu1NMCJ-T6a{)K-FObD7u%E&eHe`~8MMR}Y4bsFkE32q#Q4exfa^WIH zODVOqVl`K;Qni*^Ypd3%WyC;f+DfafH8To^jSOoU<{L&j_1w8j*Is(IgTDn-H zgDIa^9;{(BlyWbTJe-Jg2F8dJ7%$EM44Ry?SQ9fjbIw_81g8*!kmB5gnVd0D$SaZT z^x*D=xli#Hq<)Gw`V(`(srxUO3!v^jZy&HWJT>^OvIxUqi42duoAf7Na)D1o|8CaG8njsqT}io2`slXhM!dJVxBiR={MN zjPx~+4O$KN4yk8X6`ERHztR(`@iuUiP|V_I-ZTX#Ed8)#QJq^z;WfS0Y)h)8*~OFo1Q?=BEx+l0O%rdxXz@*^JHUP1MhZ9^&Q2bciVgl!dnPvoYff*xy92x`c`h-FF7T+KA zA1|~#(f8s;E^{m(tbH>qdO~ivPqGGPC$D-c=$SUYF_iE2pIB)0Ly&2Q$rZTE{J@vP z!yCuyUy4>aUlsH6rrR*E~njj<4eGh(J?#>L9@lDs2P4P%h|tKNCdFh$O!Yv@SRbz zAb2;VCd5e8MTq6%xd{1JxFNqx&0u>fqljQd8q?+3NNSUg?@{XsI;Qc6TltUCCVVA+ zjR;9)On{eH>B|c^$<|2v3X<9>efU6p ze+LN~li4duPZEX>4Tx0C=2zkv&MmKpe$i(@Iq;9oj*} zAwzYtAS&W0RV;#q(pG5I!Q|2}XktiGTpR`0f`cE6RRc@j3CBK^G)`i2Zvz+C9ZlW?E_Z;zCtWfmNAlAYN+sa^ zjJ~M=L~eopRkyeHK29Hi9CfvH0~{Ozqh-oo^LTe}cW?imY4`U71lw|ZhbwJC00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru3I~>r< z_mBVp0>?>2K~z}7?U&0>Q$ZAmf9K5HwzpU)uNE|Dq9V~?QrX}_<4S{x3**K>-0EKb z5aU|6V%!*)8g*fWM2*o9G*L)=Kv8)J^zvxAkD24bE=(*)MB0tte$M&k%;c9DO5eE% zFacIzCJT_Y0OUHLR2;G%LA-TPIsp)MQPR1>jqW9is|+e2zL~WP#UWXbZa`#Q3hUq| z7ZMnVAAuA@tN=YwlllNfqUJtqY z0ICEf^g%P__1L@zt@fqCP3|L98QqS`_3@WN4}vK+lLbU$GiRzT5Wf0)-h5nyRvir>MX#k8exRgNl{bN`26=8vJ%O=c z&enli>L9*3TAkSgX0ni@T`|zE7#N`iA`42zO40cDV>>?jm(! z>kD9H#7uh`5W2{9E_0K6iQ+oD;rD#8cnf}XQ;Oj@M9Sas^2jUj1K-&)q*x$83IG5A M07*qoM6N<$g8Od;s{jB1 literal 0 HcmV?d00001 diff --git a/src/control/MogenControl.java b/src/control/MogenControl.java index 230bd25..893baff 100644 --- a/src/control/MogenControl.java +++ b/src/control/MogenControl.java @@ -121,7 +121,8 @@ public MogenControl(String[] args) { view.update(model, MapConverter.DEFAULT_OPTIONS); view.update(model, MapConverter.DEFAULT_ROADS); System.out.println(Config.osmMap +" " +Config.sumoMap); - model.getvTypes().forEach((k, v) -> view.update(model, new Tuple(k, v))); + + view.update(model, new Tuple<>(TableTypes.VehicleType, model.getvTypes())); } @@ -298,15 +299,14 @@ public void producedEvent(Event event, Object obj) { } catch (FileNotFoundException | XMLStreamException ex) { view.update(model, ex); } finally{ - model.getvTypes().forEach((k, v) -> view.update - (model, new Tuple(k, v))); + view.update(model, new Tuple<>(TableTypes.VehicleType, model.getvTypes())); } break; case EXPORT_VEHICLES: try { - exportVehicles((String)obj); + exportVehicles((String)obj + ".add.xml"); } catch (IOException ex) { view.update(model, ex); } diff --git a/src/control/ViewListener.java b/src/control/ViewListener.java index 6be1a62..a7a2cf7 100644 --- a/src/control/ViewListener.java +++ b/src/control/ViewListener.java @@ -13,7 +13,7 @@ public enum Event {EXIT, NEW_MAP, NEW_VEHICLE_TYPE, NEW_SIMULATION, REMOVE_TAZ, REMOVE_OD_ELEMENT, REMOVE_FLOW, EDIT_FLOW, ROADS_OPTIONS,IMPORT_OD, IMPORT_VEHICLES, EXPORT_VEHICLES} - public enum TableTypes{TAZType, FlowType, ODElementType} + public enum TableTypes{TAZType, FlowType, ODElementType, VehicleType} public void producedEvent(Event event, Object obj); diff --git a/src/view/MogenView.form b/src/view/MogenView.form index cea6c2c..9a129d8 100644 --- a/src/view/MogenView.form +++ b/src/view/MogenView.form @@ -125,9 +125,9 @@ - - - + + + @@ -172,7 +172,7 @@ - + @@ -189,14 +189,14 @@ - - + - + + - + @@ -241,9 +241,9 @@ - + - + @@ -253,8 +253,8 @@ - - + + @@ -973,6 +973,10 @@ + + + + @@ -986,8 +990,12 @@ - - + + + + + + @@ -1066,6 +1074,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/MogenView.java b/src/view/MogenView.java index 1c90f82..75e5b9b 100644 --- a/src/view/MogenView.java +++ b/src/view/MogenView.java @@ -131,7 +131,8 @@ public class MogenView extends javax.swing.JFrame implements ActionListener, Ob private final static String MAP_ICON_IMG = "resources/button/map.png"; private final static String SETTINGS_ICON_IMG = "resources/button/settings.png"; private final static String EXPORT_ICON_IMG = "resources/button/export.png"; - private final static String EDIT_ICON_IMG = "resources/button/editFollowingModel.png"; + private final static String EXPORT2_ICON_IMG = "resources/button/export2.png"; + private final static String IMPORT_ICON_IMG = "resources/button/import.png"; private static final String ICON_LOCATION_16 = "resources/icon/icon16.png"; private static final String ICON_LOCATION_32 = "resources/icon/icon32.png"; @@ -147,7 +148,8 @@ public class MogenView extends javax.swing.JFrame implements ActionListener, Ob private ImageIcon MAP_ICON = new ImageIcon(MAP_ICON_IMG); private ImageIcon SETTINGS_ICON = new ImageIcon(SETTINGS_ICON_IMG); private ImageIcon EXPORT_ICON = new ImageIcon(EXPORT_ICON_IMG); - private ImageIcon EDIT_ICON = new ImageIcon(EDIT_ICON_IMG); + private ImageIcon EXPORT2_ICON = new ImageIcon(EXPORT2_ICON_IMG); + private ImageIcon IMPORT_ICON = new ImageIcon(IMPORT_ICON_IMG); private final ViewListener listenerUI; @@ -188,6 +190,8 @@ public MogenView(ViewListener listenerUI) { optionsMapButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); exportButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); addVTypeButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + exportVTypeButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + importVTypeButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //menuFileExit.addActionListener(this); options = new MapOptions(this); @@ -295,6 +299,8 @@ private void initComponents() { vehicleTypesScroll = new javax.swing.JScrollPane(); vehicleTypesPanel = new javax.swing.JPanel(); addVTypeButton = new javax.swing.JLabel(); + exportVTypeButton = new javax.swing.JLabel(); + importVTypeButton = new javax.swing.JLabel(); menuBar = new javax.swing.JMenuBar(); menuFile = new javax.swing.JMenu(); menuFileNew = new javax.swing.JMenuItem(); @@ -350,9 +356,9 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addContainerGap() .addComponent(mapInfoField, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(searchMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(searchMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(newMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(newMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); mapPanelLayout.setVerticalGroup( @@ -360,8 +366,8 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mapPanelLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(mapPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(searchMapButton, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE) - .addComponent(newMapButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(searchMapButton, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE) + .addComponent(newMapButton, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE) .addComponent(mapInfoField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); @@ -750,7 +756,7 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addGroup(simulationPanelLayout.createSequentialGroup() .addComponent(mapPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(optionsMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(optionsMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, simulationPanelLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -760,12 +766,12 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { simulationPanelLayout.setVerticalGroup( simulationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(simulationPanelLayout.createSequentialGroup() - .addGroup(simulationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(mapPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(simulationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(simulationPanelLayout.createSequentialGroup() .addContainerGap() - .addComponent(optionsMapButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGap(13, 13, 13) + .addComponent(optionsMapButton, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(mapPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(simulationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(mobilityComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(errorLabel)) @@ -810,6 +816,20 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { } }); + exportVTypeButton.setIcon(EXPORT2_ICON); + exportVTypeButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + exportVTypeButtonMouseClicked(evt); + } + }); + + importVTypeButton.setIcon(IMPORT_ICON); + importVTypeButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + importVTypeButtonMouseClicked(evt); + } + }); + javax.swing.GroupLayout mainPanelElementsLayout = new javax.swing.GroupLayout(mainPanelElements); mainPanelElements.setLayout(mainPanelElementsLayout); mainPanelElementsLayout.setHorizontalGroup( @@ -820,6 +840,10 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addComponent(panelElements, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelElementsLayout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) + .addComponent(exportVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(importVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(47, 47, 47) .addComponent(addVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); @@ -829,7 +853,10 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addContainerGap() .addComponent(panelElements, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(addVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(mainPanelElementsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(addVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(exportVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(importVTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); @@ -899,7 +926,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(mainPanelElements, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(mainPanelElements, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(simulationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) @@ -1099,6 +1126,31 @@ private void timeFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing listenerUI.producedEvent(ViewListener.Event.EXIT, null); }//GEN-LAST:event_formWindowClosing + + private void exportVTypeButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exportVTypeButtonMouseClicked + JFileChooser chooser = new JFileChooser(); + + int returnVal = chooser.showSaveDialog(this); + if(returnVal == JFileChooser.APPROVE_OPTION) { + listenerUI.producedEvent(ViewListener.Event.EXPORT_VEHICLES, + chooser.getSelectedFile().getAbsolutePath()); + } + }//GEN-LAST:event_exportVTypeButtonMouseClicked + + private void importVTypeButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_importVTypeButtonMouseClicked + // TODO add your handling code here: + JFileChooser chooser = new JFileChooser(); + + FileNameExtensionFilter filter = new FileNameExtensionFilter + (null, "xml"); + chooser.setFileFilter(filter); + + int returnVal = chooser.showOpenDialog(this); + if(returnVal == JFileChooser.APPROVE_OPTION) { + listenerUI.producedEvent(ViewListener.Event.IMPORT_VEHICLES, + chooser.getSelectedFile().getAbsolutePath()); + } + }//GEN-LAST:event_importVTypeButtonMouseClicked @Override @@ -1164,6 +1216,7 @@ public void update(Observable o, Object arg) { private javax.swing.JLabel addVTypeButton; private javax.swing.JLabel errorLabel; private javax.swing.JLabel exportButton; + private javax.swing.JLabel exportVTypeButton; private javax.swing.JFormattedTextField filesFlowField; private javax.swing.JLabel filesFlowLabel; private javax.swing.JFormattedTextField filesRandomField; @@ -1171,6 +1224,7 @@ public void update(Observable o, Object arg) { private javax.swing.JPanel flowOptionsPanel; private javax.swing.JScrollPane flowScrollPane; private javax.swing.JTable flowTable; + private javax.swing.JLabel importVTypeButton; private javax.swing.JSeparator jSeparator1; private javax.swing.JPanel mainPanelElements; private javax.swing.JTextField mapInfoField; @@ -1458,6 +1512,22 @@ private void updateTables(Tuple tuple) { }); } break; + + case VehicleType: + if(tuple.obj2 instanceof HashMap){ + HashMap VehicleMap = (HashMap) tuple.obj2; + vehicleTypesPanel.removeAll(); + + VehicleMap.forEach((id, vehicle) -> { + VehicleTypePanel vType = new VehicleTypePanel((String)id, + (VType)vehicle, this); + vehicleTypes.add(vType); + + vehicleTypesPanel.add(vType); + }); + } + vehicleTypesPanel.updateUI(); + break; } } diff --git a/src/view/mapsimulation/FlowFrame.java b/src/view/mapsimulation/FlowFrame.java index fa369d2..a445559 100644 --- a/src/view/mapsimulation/FlowFrame.java +++ b/src/view/mapsimulation/FlowFrame.java @@ -387,7 +387,6 @@ public void addFunctionToLanes(Lane lane, MouseEvent e) { this.selectedLaneDestination = lane; destinationInfoLabel.setText(selectedLaneDestination.getName()); } - System.out.println(lane.toString()); } } diff --git a/src/view/mapsimulation/TAZFrame.java b/src/view/mapsimulation/TAZFrame.java index 039eeba..f8c4b62 100644 --- a/src/view/mapsimulation/TAZFrame.java +++ b/src/view/mapsimulation/TAZFrame.java @@ -232,7 +232,6 @@ public void addFunctionToLanes(Lane lane, MouseEvent e) { lanes.add(lane); } } - System.out.println(lane.toString()); } // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/src/view/mapsimulation/ZoomableScrollPane.java b/src/view/mapsimulation/ZoomableScrollPane.java index 8131364..70da79e 100644 --- a/src/view/mapsimulation/ZoomableScrollPane.java +++ b/src/view/mapsimulation/ZoomableScrollPane.java @@ -197,7 +197,6 @@ public void addRectangleSelection(){ selectionRectangle.setY(mouseStartY); selectionRectangle.setWidth(100); selectionRectangle.setHeight(100); - System.out.println("dale"); } }); @@ -205,13 +204,10 @@ public void addRectangleSelection(){ if ((e.getButton() == MouseButton.MIDDLE) || (e.getButton() == MouseButton.SECONDARY)) setPannable(false); - if (e.getButton() == MouseButton.PRIMARY) { - System.out.println("daliendo"); - } + if (e.getButton() == MouseButton.PRIMARY) {} }); this.setOnMouseDragEntered(e->{ - System.out.println("dragggggggggggg"); e.setDragDetect(true); e.consume(); }); @@ -219,8 +215,6 @@ public void addRectangleSelection(){ this.setOnMouseDragOver(e->{ selectionRectangle.setWidth(e.getSceneX() - mouseStartX ); selectionRectangle.setHeight( e.getSceneY() - mouseStartY ); - System.out.println("X -> " + e.getScreenX()); - System.out.println("Y -> " +e.getScreenY()); e.consume(); });