From e214fadec06283508a8ab3bfcab9f83ba17f779e Mon Sep 17 00:00:00 2001 From: Ryuuji Date: Thu, 24 Nov 2016 13:59:54 -0400 Subject: [PATCH] =?UTF-8?q?actualizacion=20general=20de=20dise=C3=B1o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/control/ControlLogin.class | Bin 0 -> 2032 bytes bin/control/ControlPrincipal.class | Bin 0 -> 6829 bytes bin/main/Main.class | Bin 445 -> 449 bytes bin/utiles/Archivo.class | Bin 4469 -> 3911 bytes bin/utiles/Cifrador.class | Bin 3166 -> 2967 bytes bin/utiles/Validador.class | Bin 441 -> 472 bytes bin/visualV2/FrameLogin$1.class | Bin 0 -> 751 bytes bin/visualV2/FrameLogin$2.class | Bin 0 -> 751 bytes bin/visualV2/FrameLogin$3.class | Bin 0 -> 751 bytes bin/visualV2/FrameLogin.class | Bin 0 -> 7353 bytes bin/visualV2/FramePrincipal.class | Bin 0 -> 4249 bytes bin/visualV2/FrameRegistro$1.class | Bin 0 -> 733 bytes bin/visualV2/FrameRegistro$2.class | Bin 0 -> 772 bytes bin/visualV2/FrameRegistro.class | Bin 0 -> 7192 bytes bin/visualV2/JTableTable$1.class | Bin 0 -> 849 bytes bin/visualV2/JTableTable.class | Bin 0 -> 2076 bytes bin/visualV2/P.A.M.v2/catola.png | Bin 0 -> 2019 bytes bin/visualV2/P.A.M.v2/logo.png | Bin 0 -> 27644 bytes bin/visualV2/P.A.M.v2/resumen.png | Bin 0 -> 2205 bytes bin/visualV2/PanelCartola$1.class | Bin 0 -> 765 bytes bin/visualV2/PanelCartola$2.class | Bin 0 -> 765 bytes bin/visualV2/PanelCartola$3.class | Bin 0 -> 765 bytes bin/visualV2/PanelCartola.class | Bin 0 -> 12687 bytes bin/visualV2/PanelResumen$1.class | Bin 0 -> 765 bytes bin/visualV2/PanelResumen.class | Bin 0 -> 14284 bytes bin/visualV2/PanelSuperior$1.class | Bin 0 -> 772 bytes bin/visualV2/PanelSuperior$2.class | Bin 0 -> 772 bytes bin/visualV2/PanelSuperior.class | Bin 0 -> 6360 bytes src/control/ControlLogin.java | 70 ++++ src/control/ControlPrincipal.java | 342 ++++++++++++++++++ src/main/Main.java | 2 +- src/utiles/Archivo.java | 60 ++-- src/utiles/Cifrador.java | 4 +- src/utiles/Validador.java | 10 +- src/visualV2/FrameLogin.java | 206 +++++++++++ src/visualV2/FramePrincipal.java | 91 +++++ src/visualV2/FrameRegistro.java | 188 ++++++++++ src/visualV2/JTableTable.java | 71 ++++ src/visualV2/P.A.M.v2/catola.png | Bin 0 -> 2019 bytes src/visualV2/P.A.M.v2/logo.png | Bin 0 -> 27644 bytes src/visualV2/P.A.M.v2/resumen.png | Bin 0 -> 2205 bytes src/visualV2/PanelCartola.java | 468 +++++++++++++++++++++++++ src/visualV2/PanelResumen.java | 542 +++++++++++++++++++++++++++++ src/visualV2/PanelSuperior.java | 150 ++++++++ 44 files changed, 2171 insertions(+), 33 deletions(-) create mode 100644 bin/control/ControlLogin.class create mode 100644 bin/control/ControlPrincipal.class create mode 100644 bin/visualV2/FrameLogin$1.class create mode 100644 bin/visualV2/FrameLogin$2.class create mode 100644 bin/visualV2/FrameLogin$3.class create mode 100644 bin/visualV2/FrameLogin.class create mode 100644 bin/visualV2/FramePrincipal.class create mode 100644 bin/visualV2/FrameRegistro$1.class create mode 100644 bin/visualV2/FrameRegistro$2.class create mode 100644 bin/visualV2/FrameRegistro.class create mode 100644 bin/visualV2/JTableTable$1.class create mode 100644 bin/visualV2/JTableTable.class create mode 100644 bin/visualV2/P.A.M.v2/catola.png create mode 100644 bin/visualV2/P.A.M.v2/logo.png create mode 100644 bin/visualV2/P.A.M.v2/resumen.png create mode 100644 bin/visualV2/PanelCartola$1.class create mode 100644 bin/visualV2/PanelCartola$2.class create mode 100644 bin/visualV2/PanelCartola$3.class create mode 100644 bin/visualV2/PanelCartola.class create mode 100644 bin/visualV2/PanelResumen$1.class create mode 100644 bin/visualV2/PanelResumen.class create mode 100644 bin/visualV2/PanelSuperior$1.class create mode 100644 bin/visualV2/PanelSuperior$2.class create mode 100644 bin/visualV2/PanelSuperior.class create mode 100644 src/control/ControlLogin.java create mode 100644 src/control/ControlPrincipal.java create mode 100644 src/visualV2/FrameLogin.java create mode 100644 src/visualV2/FramePrincipal.java create mode 100644 src/visualV2/FrameRegistro.java create mode 100644 src/visualV2/JTableTable.java create mode 100644 src/visualV2/P.A.M.v2/catola.png create mode 100644 src/visualV2/P.A.M.v2/logo.png create mode 100644 src/visualV2/P.A.M.v2/resumen.png create mode 100644 src/visualV2/PanelCartola.java create mode 100644 src/visualV2/PanelResumen.java create mode 100644 src/visualV2/PanelSuperior.java diff --git a/bin/control/ControlLogin.class b/bin/control/ControlLogin.class new file mode 100644 index 0000000000000000000000000000000000000000..9df1d141d1b16a4b2c940e827040fde662ea5555 GIT binary patch literal 2032 zcmZ`)%TgOh6g|xhmJq{B7!%vU$g#1J1Xe5)Vn>*VdBiy4kzh!W<2a2p5#xv%Wo86; zpN~kgOO>mF(RNZ=ZAS?aQx!{rnoh1Y`(p z0;ltq>DpE)HD4RER?#p+Pz8D)%YB(DNwb(*+j*?#U4f9a^Sj2r#m#KRHA=dZnyXnd z0;i@7({QH+l+pN>fI4p#^avDmY6u}5LYF}I$wOiE2!spLm79)kN1&n4^Nk7&jAsA6 zeZ#d4vzUo*b%1y^wBwXOPu4K?)ym$EZr_(XC0!tzweqsGC2hl72S(N1H5`F6*;X_O zx?BG8Tow#_)2Z+viQQ^(b2FA^OFS1Ly0*Neqc4o>0wUwhZ)mKc_XtRq%eq+*7;lX8CTC4?0w{in_ch$a zEtY_5)%=;>(RkAl`fA8%nDQ#4M|bkJv18al;f2A9JD-&?Kf%(`na`N+#P%vrXtG@y z!7T2CFc-*jm~swSO{sfpW!JFGb!qAv=CL5q=j>VsE4t&zqP}3rl2sI#3OLCFmk(sG zY?-?0W*QI%dNo)A=F9P|FqQ;{v(jnA=EO`Z=2<C^C<_6UJR4TP(#YwF+#+ZiR7= ziEh|@LT-nK({(dN6kSC$TIq}?0R0$m%f%zwQi%l@nIf``de;_Ll)I?2-^aY z+QV7*;kOFk3@o1Gu??$Y=k+DFBywtOW!Jp7fQx*a3cH@*AKM4ND(7rV{C04);IDyb z;uw*{D`?x%?ql@+g#PE;ZNmV+-F}2HJtOEtC(h8O`4OWS#9LemoW;3XMA1(_l{O=h ztm6C+$Z;4BJ;mLz@hV2X$K)8-y{DeyQsM>rUm?Doe2L^SQqgy-NOLn?#bgy9s7E4t zTPQCvqj0uZpM6-LEeA7RruaZ}KC~W^>*cSH(4rKeA2T?OIYM2eWr^c5;eNz^wT25= z=eU7kY_k1q<1%s_A7TWL_|o%8pun++q#rp^BNmV*MMlZ`LKs-#tj(j1Rn8Q~263o= zV6LOXYv1gSHG%LQ{XBt^9{(!VSCr{zI6F3!_5`@Eq^TEWYFCfGRm9NP>mUFAT{)^# zJm=@|Izy+?g&Pby!SYNKI~pQuj!xzRo_0ZjZ!>N8%A-x8ciw09u~O+W-In literal 0 HcmV?d00001 diff --git a/bin/control/ControlPrincipal.class b/bin/control/ControlPrincipal.class new file mode 100644 index 0000000000000000000000000000000000000000..399cccf0cd76e723aa318f2f6b2ff2ecf178a032 GIT binary patch literal 6829 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 diff --git a/bin/utiles/Archivo.class b/bin/utiles/Archivo.class index 81281d57530543017cfd2b15741529adf984bb6e..c2caf3db31c32208a29d81e16090d3f74d9ae561 100644 GIT binary patch delta 1874 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 diff --git a/bin/utiles/Cifrador.class b/bin/utiles/Cifrador.class index 6eaa23adc44eb79bd3ff06c35467a4f042d01cfe..c01c5c185857c873de5487457edd9f18779704da 100644 GIT binary patch delta 933 zcmY+CSx*yD7>3`|p)>7tN~T4jLSn@L1}On!0To)?N?oC{C<2ODyI@&b=z@Yv-FJ=2 ziSZAZcxjEXH4wS-${X*zF(L8JA7PB&Osk1=adOVLz3)8dY&u@m$zOi2Z2)lN`8&B$ zFv;-3C*dIfDma**{}jH7Clw4~n18NvkDp=ygKZ&}%!FrS{jp3W5l@GsDG6s7YBRZH z$3h|#=?M5ogWc|6GLnkM(lW+i)s{&GXVJ$X#`FYjQn~D6E-T?YA2K#HO=)FQ2rIaV zVFo1{)A|Fscw8G2)ojK1n$cG~t6)y6khAGrG7?VD#a1LNa8+!wr5FT%a8$-TmK2zg z=0UNA<@mg~UA(N|3Rd_FvCEXjRV{mszZD!d6K*iDP8nI;RB#Ko`KH)QC3h9v!+qW; zwTKTDJi_DmgHkm!|9}XIh+uK|k#bFk%maR3*TQRvg9=RACEt;wX+$u7gC6Q&vO|#ZO>>>Krsj z1Y4F!mthd~v|1>(S+VHl(`Gvh@wB;F9VvwDqh+J}aR6Ta#_Z4kwcxE-kg!)57EleB zE?kAJXx4>|=!A^Zx`kd6|IfmzX2C!|+gGvRqmzNGDC-!TC}F&Yb+E3xz>f5s?aM3lw?}Wzu${q0v;xfE7Ms9ng92 zD3AEZy9RNcx0UK=aETLsefxZ4*?rhzI<; eWwNzQ-bjYE8D%pvgkLa8c;c)f5>Itn&;9^l;hcT| delta 1189 zcmZuvOK%fb7(I8!o|#N0k#Ryo2$G#ZfIN_?Y63Kn7Ywx238ALYKq(!@V=!^X>3AFn zFY^d}0DZu13-qNfSay*XVOK;#>Jk=RcF8ZGt8S~R-<_CBh|Xek?>+ZB=X~e8w_BgC z(4YMC@DYF{zW-V8kjr%##ITAXhR8{4)=K0p_jn>bSM;4}10xt^kP9WBVRW}=fQFq6O{V7+ytw1WoqXKRWj!lX(6I}ztJqEG|I`_H1A7?M8BZgwyi4@F zLu&3kpd*EG6=ToK0ypMq+nMom1=qk{o|6Aiju?0kNBR0tk{#nmLTzP-p`}=I6Vth( zofsWSoBc`CwF?=?(~&`g_?@D9TQenJMgHaDoldQIN)%6_U|jH;O_k<xzfClsjk4ov<) z-Q4*LwnukVU~Z`3O|}3=z$Wz5Fl0n%-2X61@S0gvnpvb9L7re z*VEZkVVD1?wXk=2RqKkpzc3!PmW*!2Ye?~D+DQ4i{9sL9#jAm+j7IbYq9H7&283uB z8==Dv14_KFf?_T4dP>2kt0M6hG6-y^lR?UEh-?p|4WmKs z@g=(da&O0Mkb48&Hc#O+>D6LPsYEDYHP+O;6lnko;fe{F$z>?1d delta 90 zcmcb?ypx&h)W2Q(7#J8#7^Ek1ZD(eRNtt-weXk$b8X%L2 cfeT2oL4+B&fovWqTbw}x$YW%X1gnw)0DjsGi@Z-ZV;tGcl-)`Cy9$+- zKJ*9pqoj9+K%p!?3^Vu4opbLwcW!Qf{{e7>-2gShqp2zsTnEVJ`B(x zw64TdB)QO|PG!bkpU~);p$tKI5F@~RggTlrLbM3=j!S5!O3U|?@jw<|#2}Z1rPO4sLlnxz zGqB;BA*@yvY9DelP2t=BAd3rAjOCE9*-0xEo;tP1d;JJ&coN_-VYxzIjHg&9%!@3O zrMKazTIJnESf-p>!unllgy^%G6q!6z&Vc5>0lshw7&+BhZc3#`@1(sn!x%fx!3F1k z&y2qs&63!j_^syA^>R^`vcz+?z0T_%sMT`r^KYr~3K21SpHHtic1YCSzee2siG}Yz zXVGE)#=Snr62~#Wap*E0^3J~kD>Igp8B5sxfq4HHR{tmY$fZAdk`+%H&PZG<8+gVv Yb!;+eja%O0y}^^&M%$MoUzU%50X09WR{#J2 literal 0 HcmV?d00001 diff --git a/bin/visualV2/FrameLogin$2.class b/bin/visualV2/FrameLogin$2.class new file mode 100644 index 0000000000000000000000000000000000000000..a568299b011a17321c4c1be626b1325406a3c5f9 GIT binary patch literal 751 zcmaJIa?a8R%E`XVe-&K+Uvx->%c(ag$Ro+xiX``-Ycc?FCd>%1^l>B(E^F3dQ_Q}5u4 z_kUofS4OiWwkLk0d31w9SSu|avF%M>H$a_^cb|VtgI9=%(VKjF$+1VG-u^elz3*80 zQsvzCSasuH53$N|%x^rphC96TufY0(O( zilq101Z zi_ke2Gm#cTkJERf%;Z}?QixHY=#|Y6OG`l{bohdEfPA5ZIo{C{13Co$uS%)Z< zkLO^^H$zyfE0pYWGi_0||6Z0~OgWJw!d5q{Re0>x9&QgJtmA%wdxVu5eK8(jgRm&_ zTw0s#5f18AUSEV|%9$fG6bpzDtc=!3YGh1hM-1~{8 zZ&l81k5xDR^+zmo9P=BGuHX*u{420JXE~a)guU;GcP_E^KglO9{kbAptw_T;iEm{S b51FQkEhcSn%a3_)@noJLsmf7RmXCh{P)n+Z literal 0 HcmV?d00001 diff --git a/bin/visualV2/FrameLogin.class b/bin/visualV2/FrameLogin.class new file mode 100644 index 0000000000000000000000000000000000000000..c6197acfbf2744dad22aa9c8aefb95a073af0137 GIT binary patch literal 7353 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 T{}dCPU^5J}U^-;*7l{7@4?dI2 literal 0 HcmV?d00001 diff --git a/bin/visualV2/FrameRegistro$1.class b/bin/visualV2/FrameRegistro$1.class new file mode 100644 index 0000000000000000000000000000000000000000..27ac8580c167c185c13c58ff2f4e9136cdcf75ec GIT binary patch literal 733 zcmaJQ{*>gE6NMJQHIUABz z`Ew06y(EG4D`s`~SyD?@KF-L#Gj>X2f$d(l(CU%5eXu)>v4-^!_XIkNjV9PYhdqw! zT%|4PcUpf;325#FHvczDAbx9RHm74%S^Vp+9(#=}|48SBDV3g_kh?JB1dn`7%Rc9U znZ7rgMRNwpE6ukwC}deui3gl*!0Q@ByX_<9f1|-GLd@t5-aY5DN87EepbuJy&Jx1(T=q*$+79 zjnc}#C2Y1ACGGVIwVoNu5QIB10xU$v)2Fs literal 0 HcmV?d00001 diff --git a/bin/visualV2/FrameRegistro.class b/bin/visualV2/FrameRegistro.class new file mode 100644 index 0000000000000000000000000000000000000000..8bfa4521a77c74ed2e2464931497a12251fc37a6 GIT binary patch literal 7192 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 literal 0 HcmV?d00001 diff --git a/bin/visualV2/JTableTable$1.class b/bin/visualV2/JTableTable$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8f982ae803e2eefdac4f7fda49e7483e67bf0c6a GIT binary patch literal 849 zcma)4O>fgc5Ph4tagv(UrKS`pG;Iwy=EDTI6(OV$q@WZIpdOmj##!iAo3-SRw)`h9 zNK{A&@dNl#h*?urMe+el_U_KSeKYTkfBpXc6TnmSY}6Q5k7QPGwf8uB{hm*iC_jGR zhQ+Xb$dC9*lpRa`G0IIgdMQ5eLggiDH<<~=V8>h!XEJA~P4*cY`GL&*N5nj?qTV6I zGpS|%oZ&@K4Vg^FrgEe>)qOiX6mh;&5$f$RSOaRJ1%^uwY&6@bW641aE<+gnH;*B> z>|g;6hNZF8;!QE1inLTonQ;=6Lp+t|22o)nlVPn=f!`;Yi$2$h{xnaDjNI_5n)wIR zXIQCF$=-Vl|NGaComJg3& z-7@Ck3RdYv47iH5vYv-)xK3Gy8-)K`XGj^-j~#x+^7@m{w5`EVHwXaqE>PO%ls0bS dR++c4K|4dyEpKjOi&hKUxQ&2zMvmd3=MQ>~x%>bC literal 0 HcmV?d00001 diff --git a/bin/visualV2/JTableTable.class b/bin/visualV2/JTableTable.class new file mode 100644 index 0000000000000000000000000000000000000000..985132f93bf888886aee7e248914d4d85a2133df GIT binary patch literal 2076 zcmZ`(U3U{z6y3K;J877H4Yam}ViAxuEyQ9GY->SMg2A*!2CD;Bold6hz;vceCT;x! zKkz5`pl?3;=2FyjEm^o+KKkMh@WCJ8KkxzEcQTZ+2$|&O&N=6vv(G-~o^*r9H_wiP) z-#$Mf-5#Rhw%da5g(*DG4D+T}HUl$_gUHAbLxk9XxQ8)^RgB;$&oQQSLLPQRlM)7# z;BqQncnGfG2X-Btg5zYT5jlrO6^s%4)g48fTf9boCKS9xz8;mjE>>{rF=@R4QW$4J zXaD#ig-L^F@a0|MxN~-N(k3g zxLB3fw^DFin-F-#uSkurVhuM~OhV!b=FU5}vmWsnk=`pRLR4vMmdmm2PRqDCC6x=< zP_c;*h@|c}LJ~zS5=G3GK!53J#L2m}Dl5*ZcDMmUPo&QSVv|4mPcAvG$;+*WoB=cD zT0Ec9x?c?}TN1!~vSYFylkBorik@c&dDpB|>ldDGi-DpEMSD>eU3VZl2KkbosK`94p-M8rG2^sgN zY@&vq>|OL5UAWVQf4cDZ7WUQfEM*4`?Qo*AZ3{;w6tEv93_>T(H!1s!GxRGQ#Wy&H z?~%hDj!H?EB!o1?WC?loV*3ALIhv`<-^GHF{Tbxpy%GVKzr&u%ju83?VJ;8XaP4ah zCZ@i_?%{zNyz%5nU$Tbac0vqLx&G~gebHH35GmL*ry0|9EUN9ET%Z! zPE$IGvp5&Q8>>Tz;i=Sph>r+x4^#LUpRlG!nDkBDqW@9$(5LjBWU{g^68Di+u%N&e Y9sjYfn(#U0P51)0`7fu%DF6BSAGFZksQ>@~ literal 0 HcmV?d00001 diff --git a/bin/visualV2/P.A.M.v2/catola.png b/bin/visualV2/P.A.M.v2/catola.png new file mode 100644 index 0000000000000000000000000000000000000000..594b23d1dbd27b2e98bb395dc61c5a6128a0253f GIT binary patch literal 2019 zcmV<92ORi`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIp2Y5+DK~z{r?U`AO zRYeenhh1a`1B#%75flLd5kV265u<<$L5We&XjDX85J3?I6cl4{1A}N#iP5-3V?d)1 z>Wgpe+pzE8urn|~0)U-j_fFl+xr1|uj6D1~r>m>`RCje(|JA3cX!Yu-$|zc~ zBFez>jT@t)Wy_*2de6|!Ckt5M%8YoEvfu(MiPA*(t+2klNJwqh7>dpqH zFbOy|AhddB*KsV7RKlu5K765MMB`f}Yp%WYosOK|Pd*QZv zhqVt)onr0u{q;0omqKVfb)1l_8@6efW_z7WnU!_qRna~0K=CFy0w1SiR#BBzWEIAq%} zF}xS_>q+-+O&H0@MOq<$ke9NYsaM?syzh0Z1XGw4GT=SYJ`#cMT5b<|Z+#>x8K@u> z6TQje*6{&U$Y^>}-A4Y~yuUQ1s0=f-FNv zc5#24!HLlk64_Qrn8IoXxi8nY1Gtw?%9=D${iV;&eyOz7@$x4`IbT%9HAhs_B^G{? zp|a?Wk^|mSG$30WtwaSHJ72W*uT!U@2}*3Hs2_GBZCC(gb8ku?Ieim7UY8@M3hpOz zaF%SQ|H1x`8h}D0n}ls@OMAYHZE3yucnSqmSe?*73CSVdHFc7}Pb?ti{!>NX9mz%t%Fr=VTj^ z2HRLXjbhn;L17B38JuwpdSKEJtqFvL5nj0(al0%e(gHUEU;1B-&WUoqyD7}>TjhzG zbR3Yb)AM$P=J4YyLq9;@7%Cn30y-Qqi_6QS_FUtr%suiv)m=;k$+C?*Fn1-C-Dja- z3JU>E%q*REuW6_8r=pp5fMd&kV(JJ@Bx@l+Sbo&*>FuwA0w6I=HdjImL&#UZoP%5m zRdATfgj)V;hC266y>nJSFGsb}x1270>4^=u=?ta+#?(p9l@no?YiMj^XS@H}-YyVq z>!q;&8P`?5zk*q^pd{a-B`VC_Q!0rc$)3R8FPx#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIpYmrGrK~#8N?Y#$F zTUmNGzWHkQ+tf|6UpC)nXIp05%sR9F})Yli@|`wG}C)WfCK^rqDUY_ z@6GhydlN+|ZvdKSWj1BMkc;f++bi;^!Bz9(w^R5g%hM z;bYvW7og|WkFmG;uiHR-;di@hnBVXA*auhFqmbEB%t0*1zAyi*&-2Ds@&Rb(dq9~V zjvZPzAAkAR4>md3@t&YC86iRT7pyP;8Fw&UsEeKgPn5=*A?uX_SYD4%R+){^#87m# zB z&&Qs_0`mq|a&#f$XhWQ*i!Fg6rlQVbu_64=_cs0KZ7TT=9%enqT<9m+U>V) zkZ}v5@O==7H!vA_5{pTfm-lx0m9>zQ_NVIj$actd`2_Rn4=@{k07yLn|M3y5CmhB~ z(l6u(1ot{(S2i%mx~I3d``5lUI#h!ASWk3&{~X$pPqFLsH>i{DK+3rX{hSxb3qK1K z+yjbrpx8fvrR{BuM4iG$`iWn;!eCFuGY-oiBhhCu9kmZ;Q}dXM{{(l+lfhY9L5KH# z*iTO4#rP;#qGi-bq}VA`fhhCBulrMDc_wNj?qG^>M_yxTu?A){?^BhpVq2(zb%6n9 z@}6Odqlz{1__czo$PLm0J2?!q!{u)e*4@m-_-GS2yd=DM`T@jQkFd^D!giH8wrXs# zRb_$olE<|3X*7~E#s@fIpd|~wURDSTdLAi1NLO3o`co}c#3lyA*i;wK-R;rbT8-9@ z5}2B4qPbm&w2V+#nCf6)uog~^Ccl0uU$pUb70Dv;%T&cHv}ZUW{rP#Mx?D$1ehB=6 zUZ8id28mHl7|BxU+}q_h+eE(2@zpXDY?PW|z0wg|_0CwYaon8ZStjgl@?XJrEA8GB zWomPl7`IjyldoeX{~1K7I#?$ETFX_#a^^kaWqr(2+lttlPthLqCwsg8ZcLJ))3TiM z6q^O6SYfMRDdjE&((72urYOuf55=l9oNg?}ip=ptKf*FY8;j90&v*i9>LV;99)~2) z5Q|*pvAsinc`MCOM~Y}k?hK6*3Ak%gOobf82$97+$%8SE_p!xN#54ucp^XhRCtrg& z>L=LAd4$dMV?g}(<@??!PNi^p6R&b@(IDA?gn4Uv?-c*kM*GX$M+eH$S(k@56**|E zWTDaJr|5e14+x%}!{f0j48Q&>Om6Q&F+T#URFUP>E7)b9#+%@e8x@hlpkBHSY0hQB)MYGXUBR-z`tjcB|EZ1i2vJwchNHC-Mq-a(B;gh&80YXJOi6y= z&E(_Q;9R4VDdQSp%D6H%DUSHC@4sR+Jn=m%6yLD_)js- zI*CfZlX&Cz86<^t;u2FLR26I$s9=+?iWR!bof;c#SCc@galmG&G1f_}Y*pD}ldAwx z#s&1oDL}$gKof+8y0O2HGd5E1VW10yxGbd;j2zXs*?d0?bQfXzujN=gK#X4+tA zs0wcn+eP_t8T+K<-aJAL! zf%RH9;&~^m)I7&hl|5F4hM3QPjH%owkW^S7HaQT?{OjX==H9 zhxzx}T9)2H35QOeq=eZ7WlX2gGU);_un88z4q!9oHf}VRpep7v7SirwgMAHi5kJIw zkrme1cPZ6AgjFWFcB%qU9`b{|!+v?2P1R(~$6v&B##0(x9u=?#nrd>0e3N3oNsjN%m1Fyo=x3^iQ zis^}la?I?Ia^Evf_#F%eAHsapRV>6`$6VZDXveF;Y;+U>qBTqg{fxS5KQ@>ru){ox zhix_T{X}7(Vm|7I;SKUIhBHa=P^IjFDYphK9B@vsvpb$uK98(;i2?!_3%Kd;9A z7@Mi*u#$R|Qo)~sNx73jLIUau$1ih+4@Oym?O8$yXv^e}*fKLS%_V@_p*o)}b*pgqzf|TRGP-75#He#hzK) zJN>WQ)Kts2M!O1;lNp9^3j3q+w=f=m7NeAI?k`N0A8?DxXC>L_^LmeT?-}fH?o#6W zHd*}KZuE3viz*{cIf>rQZK$QW$=4@QCMvV|1XXNg-i9>$K4~JW-`rJ`!zE~`&Vap* zDn=Oh&=YwGqhSZpMFdKaWt0||b5@&I}WgN7j&{KyvmNy6bq-AaA=ees;>QYhkM9AN8~sp{9@l9nH%a zPQ8fHgwq&JK99qBF_8Ji7EcG;0&Q%STT&%Y6BAPy$hnJo(z9C?mYB

k05qME#EjZd+Mdkw36brRhMkdiRpuC~Qi!}GUd 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 literal 0 HcmV?d00001 diff --git a/bin/visualV2/P.A.M.v2/resumen.png b/bin/visualV2/P.A.M.v2/resumen.png new file mode 100644 index 0000000000000000000000000000000000000000..520c84334872440690cd6608768242737ccce2d0 GIT binary patch literal 2205 zcmV;O2x9k%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIp2r@}TK~z{r?U`4M zl|>ZCm)=2X3Q|QN3L!LsCLN&Qhea5D2_|{(p04ZsyLNdnI=ym2v)?B^Xpw-&7hTdlV`lL~DaRzTj=YiX{B}FS&8eFSRHDF$`BAI{eSY{`Os5+Md zC*j9ar_8s8&{}FcdP~Y^6428f=b@5RgUJaob$uV$wJTM&b%S)lLluDqinU!9#E4%W zKb}lFaKLESW%Fi(g`&~ce!~Xyy=CLZ6u+Ip*C$RS_wU?kc+<18%aesD(O-(?%Trjk zELBGkb=U6T`o!8oM0ffBL`(~_m${autjHqRftqr=RBo%=Mg1nbhYnSwR9k4`X=mHG ziIr7vxMoe#&h2%GEP^`xdiu2ajxQ-OhoP=+D0jyx!=5>TWA^Vi-%4tOci{Hz$)9J= z7}^I%j->c~WD)EEK+87{9?YOuw&h-1wj_5+Fy$_rHl-Bt@TwH0ZJhmPAdBD-p1kmj zaK1ihqn~Sw@njJyBBI0yR-Zqgys&p~GIrm-WPvq6blWAb=F5qP7Bd$isvJHp=PSx zS%k&1+VuUSv^04{)|>V&x|{=WvrcwCM2R6ZkZ~Ux=sE4Cqcz2Aawi<1>$_OIb*#^8 zYy$(=rDzbf)-=x->U)ihfob<;tM4@5K&WmO+tu?SN(`X^-~H#GR9V8E z8SEovpW3}U>8{;i^4QvkBmKfXO8;ykog;|9ULwiK@H#ZB*kOwvn{)EhD#1U zm%dL}{%7{=N$~;IpZ4qdP{eLjbVU7hMMHFZD;lE22wa9iARTMJq7fwqXdr9%isC5z z?{$hNyaR1Yb^j-3h`fqAeVG?;>9Kck+4g# zC^yA*Sl;^LB~Wc{T@aR=u~}foG(qj9B1#O9o`eQzqQP+w)l|lzLnCP(x?_h?puJF4 zyj7)?aqMb$ay~hF)R_Li6iE+~BPXz6!6uT@sr-_H0v3nJd@K>T`gWCj>a5AKcr$g1 zm^=%!#0Do$c3wn@0Xk`rCR)*XQt~mfU{RrXgVu0R6NnSlKqQn6Au{#J9mT(`X z$n!c{S%X+*YiT#QXC@SMlN9grbLY(WHG4b(r^E5M-7yKFT{PGBuzN?b{e}|5hU4c# zlo((H;gc0uOUe_@QU6>!)k{ZekV3ZlG8&^a@!Pe+Q#pcCu8npT<+xYeUw2#y$erwk z-fs7CyCcliD`?s@jRa#|z_xehNp;i-~y1z4~cHkB+*Wj2}2&17#XH&+Bk23JM(TeS(F z61#J=X}A5&SG+vurhha!Jsi~jzS?_gEXq9C@49%=z@KRXZj8TB4x*8zns<50 z;eEjzijY@r=z?Dl7nVnsMI0)X(dW0)Qu8I|T}Y?p)ju}vs_c?KGv!xwckWkHl! z2&CYhI)R_DSSYA^V`b1k%V&1Cx5Dwk(>s?*j6r>QIGV4G;fDx^gWIw|a_V_cdp@db z;g@P`_tyy1_a?W=>EWRI94&g!P#=|f!{J4MGUlAy*+^zHqkjnT4$(UJk5*wjzu_?3 z(e^?SB^ClH^`sWroO)kDmHD*>YE#!lc&OqjkH=mLlgvvVa`8L73UX7qHORoMw-z6dWPhJMn|db}FSi9hoS_?#KA7^G!&g6*@vrIm zsLp}Jb?{>HU8u!i$52SN(Lqw6UT2-9`51mCS58c zOMIk1H$o3}6Y!(P5BhZR5wv9aV98}JBQy>=qx(p0jQO8z`w=VPCu3tlLywlZ+6zUL fcopRgtCD{KkI*HWsi%e}00000NkvXXu0mjfiMBM1 literal 0 HcmV?d00001 diff --git a/bin/visualV2/PanelCartola$1.class b/bin/visualV2/PanelCartola$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c7617b535f5a43589fdec9463c6b3d08776667d5 GIT binary patch literal 765 zcmaJb5=nv?RD!nu0p_J&uFmun`IrpA(=l7qRUjSa?Wq=A{aiq$j$h$kqq0ln#h{Bp& zG`9oP2#r%Q5=k!faq_u$Dl;2kim>KU@!ckJB(+WUGpmeFRcWP`1!2mbsIs}m-04K} zJx+P6w6gCAE3I2{HoAmb$Mj_g!h;wArXy5Qj}f9lsJ2`}JylwM8V-80_#%3_B+R8I zV>O~sE*^t5*AQWOa;fGvH&hp1#Gx#{nqnaPg!NWBQRjivytmPfu!NNW%Y^xfDq}px zDq&h=nJm2>Z*J3icOe!lN0zX9R~jKYGQ%R1@0GJ*_TOQ?aynSzfzEPMDt-J>+7r`{ z@xnPd<0jEDgKtK&Ft#cFpm~g)T$H6O@s#ba^126VG~5*U?^Jk&h#0-kr(KR6616uk z5x1`}^V8?dI?Ug=*JqgHIOaDFeTYZAvvpV)v+R#q!uAE?&1)?FPjb$se|VAwPa2L% eTq|pM!ZcN^Giilee#U!^=kpv*UygiPKK=#ZK(N*T literal 0 HcmV?d00001 diff --git a/bin/visualV2/PanelCartola$2.class b/bin/visualV2/PanelCartola$2.class new file mode 100644 index 0000000000000000000000000000000000000000..8a15e1e6c7c4f8b7c292e32f1803905799c06492 GIT binary patch literal 765 zcmaJ<(P|Sx6g@YI-R`gYhnu4oAM5qWQR1j7zwB&uVnYL3lGqN*@pVEio zM+l1IgCF2WiFcMfh@^cOX6~6g=iYPf{QmRv7l7w@9H2&6nJ7CJMZcRK3N4GCD4i)p z(hblcw9dsuq=nF@>4(9&%w2#v!bXLPPcD@csa?9CJ7sjHtdm-nggJMnZ1R-3vzg?3 zobpO(kF}1IdO#b>(U6(kr|h{e51S#i~kPuiPymr4|HA_tMutR>CVhB z#@^)Rsm literal 0 HcmV?d00001 diff --git a/bin/visualV2/PanelCartola$3.class b/bin/visualV2/PanelCartola$3.class new file mode 100644 index 0000000000000000000000000000000000000000..bd2f2c034aa9873d2b6129aefb8492cc218d1a59 GIT binary patch literal 765 zcmaJ$Kinh{ejWBdp()Mu^^-QJKpV&9D5|{Y=1-C z`HuN7RnCIPsvH0M6Bap+`He^K;4bfM9hN36M-!H?^A+*-4=n#r@|jCtRU}IlX*ePA dt!&@{)6}uaq&05&5$_G2&toK2IjYL?@h=gBu|)s? literal 0 HcmV?d00001 diff --git a/bin/visualV2/PanelCartola.class b/bin/visualV2/PanelCartola.class new file mode 100644 index 0000000000000000000000000000000000000000..dbbc4efc46240d081424b494000934329625d443 GIT binary patch literal 12687 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 literal 0 HcmV?d00001 diff --git a/bin/visualV2/PanelResumen.class b/bin/visualV2/PanelResumen.class new file mode 100644 index 0000000000000000000000000000000000000000..f9d6b273e0f01038e2a0bd7891a4120881000c84 GIT binary patch literal 14284 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 literal 0 HcmV?d00001 diff --git a/bin/visualV2/PanelSuperior.class b/bin/visualV2/PanelSuperior.class new file mode 100644 index 0000000000000000000000000000000000000000..d85c186e0d0f6d6bebe8a614d84841fe3a8f51bd GIT binary patch literal 6360 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 literal 0 HcmV?d00001 diff --git a/src/control/ControlLogin.java b/src/control/ControlLogin.java new file mode 100644 index 0000000..34a754f --- /dev/null +++ b/src/control/ControlLogin.java @@ -0,0 +1,70 @@ +package control; + +import utiles.Archivo; + +public class ControlLogin { + Archivo archivo; + + public ControlLogin() { + + archivo = new Archivo("dataUser"); + } + + public boolean añadirUsuario(String user, String pass, String pass2) { + + if (!isUser(user)) { + if (user.length() > 4) { + if (pass.equals(pass2)) { + if (pass.length() > 6) { + archivo.escribirArchivo(user + ";" + pass); + return true; + } else { + + javax.swing.JOptionPane.showMessageDialog(null, "La contraseña es muy corta", null, + javax.swing.JOptionPane.ERROR_MESSAGE); + return false; + } + } else { + + javax.swing.JOptionPane.showMessageDialog(null, "Las contraseñas no son iguales", null, + javax.swing.JOptionPane.ERROR_MESSAGE); + return false; + } + } else { + + javax.swing.JOptionPane.showMessageDialog(null, "El usuario es muy corto", null, + javax.swing.JOptionPane.ERROR_MESSAGE); + return false; + } + } else { + + javax.swing.JOptionPane.showMessageDialog(null, "El usuario ya existe ", null, + javax.swing.JOptionPane.ERROR_MESSAGE); + return false; + } + } + + public boolean isUser(String user) { + + String[] arch = archivo.entregarProcesado(); + for (int x = 0; x < arch.length; x++) { + if (arch[x].split(";")[0].equals(user)) { + return true; + } + } + + return false; + } + + public boolean isUserPass(String user, String pass) { + + String[] arch = archivo.entregarProcesado(); + for (int x = 0; x < arch.length; x++) { + if (arch[x].split(";")[0].equals(user) && arch[x].split(";")[1].equals(pass)) { + return true; + } + } + + return false; + } +} diff --git a/src/control/ControlPrincipal.java b/src/control/ControlPrincipal.java new file mode 100644 index 0000000..794db26 --- /dev/null +++ b/src/control/ControlPrincipal.java @@ -0,0 +1,342 @@ +package control; + +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; + +import utiles.Archivo; + +public class ControlPrincipal extends Archivo { + + public ControlPrincipal(String usuario) { + + super(usuario); + ordenar(); + actId(); + actSaldos(); + } + + public void añadir(String fecha, String documento, String fd, String desc, String ing, String egr) { + + int id = 1; + int saldo = 0; + + String[] arch = entregarProcesado(); + String[] lastRow = arch[arch.length - 1].split(";"); + if(isFiled()){ + + id = Integer.parseInt(lastRow[0]) + 1; + saldo = Integer.parseInt(lastRow[lastRow.length - 1]) + Integer.parseInt(ing) - Integer.parseInt(egr); + }else{ + + saldo = Integer.parseInt(ing) - Integer.parseInt(egr); + + } + + String fila = id + ";" + fecha + ";" + documento + ";" + fd + ";" + desc + ";" + ing + ";" + egr + ";" + saldo; + + escribirArchivo(fila); + + } + + public void modificarFila(String id, String fecha, String documento, String fd, String desc, String ing, + String egr) { + + String[] arch = entregarProcesado(); + + for (int x = 0; x < arch.length; x++) { + + if (arch[x].split(";")[0].equals(id)) { + + arch[x] = id + ";" + fecha + ";" + documento + ";" + fd + ";" + desc + ";" + ing + ";" + egr + ";" + + "0"; + + } + + } + + actSaldos(); + actArchivo(arch); + } + + public void eliminarFila(String id) { + + borrarLinea(id); + actSaldos(); + + } + + public void ordenar() { + + String[] arch = entregarProcesado(); + + boolean swapped = true; + int j = 0; + String tmp; + + while (swapped) { + + swapped = false; + j++; + + for (int i = 0; i < arch.length - j; i++) { + + Calendar f1 = new GregorianCalendar(Integer.parseInt(arch[i].split(";")[1].split("/")[2]), + Integer.parseInt(arch[i].split(";")[1].split("/")[1]), + Integer.parseInt(arch[i].split(";")[1].split("/")[0])); + Calendar f2 = new GregorianCalendar(Integer.parseInt(arch[i + 1].split(";")[1].split("/")[2]), + Integer.parseInt(arch[i + 1].split(";")[1].split("/")[1]), + Integer.parseInt(arch[i + 1].split(";")[1].split("/")[0])); + + if (f1.after(f2)) { + + tmp = arch[i]; + arch[i] = arch[i + 1]; + arch[i + 1] = tmp; + swapped = true; + + } + + } + + } + actArchivo(arch); + } + + public void actSaldos() { + + String[] arch = entregarProcesado(); + if(isFiled()){ + + for (int x = 0; x < arch.length; x++) { + + int saldoAnterior = 0; + int saldo = 0; + + if (x > 0) { + + String[] aux = arch[x - 1].split(";"); + saldoAnterior = Integer.parseInt(aux[aux.length - 1]); + + } + + String textAux = ""; + String[] aux = arch[x].split(";"); + + if (arch[x].length() > 1) { + + saldo = saldoAnterior + Integer.parseInt(aux[5]) - Integer.parseInt(aux[6]); + + } + + for (int z = 0; z < aux.length - 1; z++) { + + textAux += aux[z] + ";"; + + } + + textAux += saldo; + arch[x] = textAux; + + } + + actArchivo(arch); + + } + + } + + public void actId() { + + String[] arch = entregarProcesado(); + int id = 1; + for (int x = 0; x < arch.length; x++) { + + String[] aux = arch[x].split(";"); + aux[0] = String.valueOf(id); + id++; + + String linea = ""; + for (int z = 0; z < aux.length; z++) { + + linea += aux[z] + ";"; + + } + + arch[x] = linea; + + } + actArchivo(arch); + } + + public String[] getLastRow() { + + String[] arch = entregarProcesado(); + return arch[arch.length - 1].split(";"); + + } + + public String[] getRow(int id) { + + String[] arch = entregarProcesado(); + return arch[id].split(";"); + + } + + public int getRowCount() { + + String[] arch = entregarProcesado(); + return arch.length; + + } + + public boolean isFiled() { + + return (leerArchivo().length() > 5); + + } + + public String[][] resumenMes() { + + String[][] fin = new String[4][1]; + + if (leerArchivo().length() > 5) { + + String[] arch = entregarProcesado(); + ArrayList fechas = new ArrayList(); + ArrayList ings = new ArrayList(); + ArrayList egrs = new ArrayList(); + + for (int x = 0; x < arch.length; x++) { + + String fecha = arch[x].split(";")[1].split("/")[2] + "-" + arch[x].split(";")[1].split("/")[1]; + + if (!fechas.contains(fecha)) { + + fechas.add(fecha); + ings.add("0"); + egrs.add("0"); + + } + + } + + for (int x = 0; x < arch.length; x++) { + + String fecha = arch[x].split(";")[1].split("/")[2] + "-" + arch[x].split(";")[1].split("/")[1]; + String ing = arch[x].split(";")[5]; + String egr = arch[x].split(";")[6]; + int index = fechas.indexOf(fecha); + + ings.set(index, String.valueOf(Integer.parseInt(ings.get(index)) + Integer.parseInt(ing))); + egrs.set(index, String.valueOf(Integer.parseInt(egrs.get(index)) + Integer.parseInt(egr))); + + } + + fin = new String[4][fechas.size()]; + + for (int x = 0; x < fechas.size(); x++) { + + fin[0][x] = fechas.get(x); + fin[1][x] = String.valueOf(Integer.parseInt(ings.get(x)) - Integer.parseInt(egrs.get(x))); + fin[2][x] = ings.get(x); + fin[3][x] = egrs.get(x); + + } + + fin = ordenarSaldos(fin); + + } + + return fin; + + } + + public String[][] ordenarSaldos(String[][] saldos) { + + boolean swapped = true; + int j = 0; + String tmp; + String tmp1; + String tmp2; + String tmp3; + + while (swapped) { + + swapped = false; + j++; + + for (int i = 0; i < saldos[0].length - j; i++) { + + YearMonth f1 = YearMonth.parse(saldos[0][i]); + YearMonth f2 = YearMonth.parse(saldos[0][i + 1]); + + if (f1.isAfter(f2)) { + + tmp = saldos[0][i]; + tmp1 = saldos[1][i]; + tmp2 = saldos[2][i]; + tmp3 = saldos[3][i]; + + saldos[0][i] = saldos[0][i + 1]; + saldos[1][i] = saldos[1][i + 1]; + saldos[2][i] = saldos[2][i + 1]; + saldos[3][i] = saldos[3][i + 1]; + + saldos[0][i + 1] = tmp; + saldos[1][i + 1] = tmp1; + saldos[2][i + 1] = tmp2; + saldos[3][i + 1] = tmp3; + + swapped = true; + + } + + } + + } + + return saldos; + + } + + public int[] resumenDoc() { + + String[] arch = entregarProcesado(); + int[] docs = { 0, 0, 0 }; + + if (leerArchivo().length() > 5) { + + for (int x = 0; x < arch.length; x++) { + + String[] aux = arch[x].split(";"); + + switch (aux[2]) { + + case "Efectivo": + + docs[0] += Integer.parseInt(aux[5]) - Integer.parseInt(aux[6]); + break; + + case "Transferencia": + + docs[1] += Integer.parseInt(aux[5]) - Integer.parseInt(aux[6]); + break; + + case "Credito": + + docs[2] += Integer.parseInt(aux[5]) - Integer.parseInt(aux[6]); + break; + + } + + } + + } + + return docs; + + } + +} diff --git a/src/main/Main.java b/src/main/Main.java index 5021064..13a2cd1 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -2,6 +2,6 @@ package main; public class Main { public static void main(String[] args) { - visual.FrameLogin login = new visual.FrameLogin(); + visualV2.FrameLogin login = new visualV2.FrameLogin(); } } diff --git a/src/utiles/Archivo.java b/src/utiles/Archivo.java index cc7b3a0..b6d56f9 100644 --- a/src/utiles/Archivo.java +++ b/src/utiles/Archivo.java @@ -14,10 +14,14 @@ public class Archivo { protected FileWriter fw; public Archivo(String archivo) { + + String ruta = getRuta(archivo); + try { this.archivo = new File(ruta); if (!this.archivo.exists()) { + this.archivo.createNewFile(); } } catch (Exception e) { @@ -25,6 +29,7 @@ public class Archivo { } public String getRuta(String archivo) { + String ruta = ""; String os = System.getProperty("os.name"); if (os.contains("Windows")) { @@ -40,6 +45,7 @@ public class Archivo { } public String leerArchivo() { + abrirLeer(); String cadena = ""; String cadenaFinal = ""; @@ -48,23 +54,25 @@ public class Archivo { cadenaFinal += cadena; } } catch (IOException e) { - System.out.println("Error en br.readLine()"); + } cerrarLeer(); return cadenaFinal; } public void escribirArchivo(String texto) { + abrirEscribir(); try { fw.append(texto + "*!"); } catch (IOException e) { - System.out.println("Error en fw.write(texto)"); + } cerrarEscribir(); } public String[] entregarProcesado() { + String[] datos; datos = leerArchivo().split("\\*!"); return datos; @@ -73,40 +81,40 @@ public class Archivo { public void borrarLinea(String id) { String[] arch = entregarProcesado(); - - if(arch.length > 1){ - + + if (arch.length > 1) { + for (int x = 0; x < arch.length; x++) { - + if (arch[x].split(";")[0].equals(id)) { - + arch[x] = ""; break; - + } - + } - + String[] nArch = new String[arch.length - 1]; int z = 0; - + for (int x = 0; x < arch.length; x++) { - + if (arch[x].length() > 1) { - + nArch[z] = arch[x]; z++; - + } - + } - + actArchivo(nArch); - - }else{ - + + } else { + clearFile(); - + } } @@ -128,7 +136,7 @@ public class Archivo { fw.write(""); fw.close(); } catch (IOException e) { - System.out.println("Error al instanciar FileWriter"); + } } @@ -136,7 +144,7 @@ public class Archivo { try { fr = new FileReader(archivo); } catch (FileNotFoundException e) { - System.out.println("Error al instanciar FileReader"); + } br = new BufferedReader(fr); } @@ -145,12 +153,12 @@ public class Archivo { try { fr.close(); } catch (IOException e) { - System.out.println("Error en fr.close()"); + } try { br.close(); } catch (IOException e) { - System.out.println("Error en br.close()"); + } } @@ -158,7 +166,7 @@ public class Archivo { try { fw = new FileWriter(archivo, true); } catch (IOException e) { - System.out.println("Error al instanciar FileWriter"); + } } @@ -167,7 +175,7 @@ public class Archivo { try { fw.close(); } catch (IOException e) { - System.out.println("No deberia ocurrir, pero weno\nError en fw.close()"); + } } } diff --git a/src/utiles/Cifrador.java b/src/utiles/Cifrador.java index d782ef2..114be03 100755 --- a/src/utiles/Cifrador.java +++ b/src/utiles/Cifrador.java @@ -33,7 +33,7 @@ public class Cifrador { byte[] mensajeCifrado = cipher.doFinal(mensajeSinCifrar); return codificarBase64(mensajeCifrado); } catch (Exception e) { - System.out.println("Error en el cifrado"); + e.printStackTrace(); } return null; @@ -60,7 +60,7 @@ public class Cifrador { try { return new BASE64Decoder().decodeBuffer(cadena); } catch (IOException ex) { - System.out.println("Error con la decodificacion en base64"); + ex.printStackTrace(); } return null; diff --git a/src/utiles/Validador.java b/src/utiles/Validador.java index 83a0b0c..45d8701 100644 --- a/src/utiles/Validador.java +++ b/src/utiles/Validador.java @@ -1,10 +1,12 @@ package utiles; public class Validador { - + public static boolean isNumber(String num) { - - return (num.matches("\\d")); - + + boolean isNumber = num.matches("^[1-9]?[0-9]+"); + + return (isNumber); + } } diff --git a/src/visualV2/FrameLogin.java b/src/visualV2/FrameLogin.java new file mode 100644 index 0000000..113424d --- /dev/null +++ b/src/visualV2/FrameLogin.java @@ -0,0 +1,206 @@ +package visualV2; + +import java.awt.event.*; +import javax.swing.*; + +import control.ControlLogin; + +public class FrameLogin extends JFrame { + + private javax.swing.JButton bIngresar; + private javax.swing.JButton bRegistrar; + private javax.swing.JButton bSalir; + private javax.swing.JPanel bar; + private javax.swing.JLabel bienvenido; + private javax.swing.JPasswordField fContraseña1; + private javax.swing.JTextField fUsuario; + private javax.swing.JLabel lContraseña; + private javax.swing.JLabel lUsuario; + private javax.swing.JLabel pam; + private javax.swing.JPanel panel; + + public FrameLogin() { + initComponents(); + } + + private void initComponents() { + + panel = new javax.swing.JPanel(); + pam = new javax.swing.JLabel(); + bienvenido = new javax.swing.JLabel(); + bar = new javax.swing.JPanel(); + lUsuario = new javax.swing.JLabel(); + fUsuario = new javax.swing.JTextField(); + lContraseña = new javax.swing.JLabel(); + fContraseña1 = new javax.swing.JPasswordField(); + bIngresar = new javax.swing.JButton(); + bRegistrar = new javax.swing.JButton(); + bSalir = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setBackground(new java.awt.Color(21, 21, 21)); + setMaximumSize(null); + setMinimumSize(null); + + panel.setBackground(new java.awt.Color(0, 128, 128)); + + pam.setFont(new java.awt.Font("Candara", 1, 60)); // NOI18N + pam.setForeground(new java.awt.Color(255, 255, 255)); + pam.setText("P.A.M"); + + bienvenido.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + bienvenido.setForeground(new java.awt.Color(255, 255, 255)); + bienvenido.setText(" Bienvenido de nuevo "); + + bar.setBackground(new java.awt.Color(255, 255, 255)); + bar.setPreferredSize(new java.awt.Dimension(215, 2)); + + javax.swing.GroupLayout barLayout = new javax.swing.GroupLayout(bar); + bar.setLayout(barLayout); + barLayout.setHorizontalGroup( + barLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 251, Short.MAX_VALUE) + ); + barLayout.setVerticalGroup( + barLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 9, Short.MAX_VALUE) + ); + + lUsuario.setBackground(new java.awt.Color(0, 204, 204)); + lUsuario.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + lUsuario.setForeground(new java.awt.Color(255, 255, 255)); + lUsuario.setText("Usuario"); + lContraseña.setBackground(new java.awt.Color(0, 204, 204)); + lContraseña.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + lContraseña.setForeground(new java.awt.Color(255, 255, 255)); + lContraseña.setText("Contraseña"); + + bIngresar.setText("Ingresar"); + bIngresar.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + bIngresarActionPerformed(evt); + } + }); + + bRegistrar.setText("Registrarse"); + bRegistrar.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + bRegistrarActionPerformed(evt); + } + }); + + bSalir.setText("Salir"); + bSalir.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + bSalirActionPerformed(evt); + } + }); + + + javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel); + panel.setLayout(panelLayout); + panelLayout.setHorizontalGroup( + panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLayout.createSequentialGroup() + .addGap(95, 95, 95) + .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(bar, javax.swing.GroupLayout.PREFERRED_SIZE, 251, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(pam) + .addComponent(bRegistrar) + .addComponent(bienvenido) + .addComponent(bIngresar, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(bSalir, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(fUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lUsuario) + .addComponent(lContraseña) + .addComponent(fContraseña1, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(94, Short.MAX_VALUE)) + ); + panelLayout.setVerticalGroup( + panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLayout.createSequentialGroup() + .addGap(29, 29, 29) + .addComponent(pam, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(1, 1, 1) + .addComponent(bienvenido, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(bar, javax.swing.GroupLayout.PREFERRED_SIZE, 9, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(13, 13, 13) + .addComponent(lUsuario) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lContraseña) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fContraseña1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(bIngresar) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(bRegistrar) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(bSalir) + .addContainerGap(17, Short.MAX_VALUE)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException + | UnsupportedLookAndFeelException e) { + e.printStackTrace(); + } + + getRootPane().setDefaultButton(bIngresar); + setUndecorated(true); + pack(); + setVisible(true); + setLocationRelativeTo(null); + + } + + private void bIngresarActionPerformed(ActionEvent evt) { + + + ControlLogin control = new ControlLogin(); + + if (control.isUserPass(fUsuario.getText(), String.valueOf(fContraseña1.getPassword()))) { + + FramePrincipal principal = new FramePrincipal(fUsuario.getText()); + + dispose(); + + } else { + + JOptionPane.showMessageDialog(null, "Usuario o contraseña incorrectas", null, JOptionPane.ERROR_MESSAGE); + + } + + } + + private void bSalirActionPerformed(ActionEvent evt) { + + + System.exit(0); + + } + + private void bRegistrarActionPerformed(ActionEvent evt) { + + FrameRegistro registro = new FrameRegistro(); + + dispose(); + } + + + +} diff --git a/src/visualV2/FramePrincipal.java b/src/visualV2/FramePrincipal.java new file mode 100644 index 0000000..2e632e6 --- /dev/null +++ b/src/visualV2/FramePrincipal.java @@ -0,0 +1,91 @@ +package visualV2; + +import javax.swing.*; +import java.awt.*; + +public class FramePrincipal extends JFrame { + + private JPanel panelCard; + private PanelCartola panelCartola; + private PanelResumen panelResumen; + private PanelSuperior panelSuperior; + private JPanel separador; + private String usuario; + + public FramePrincipal(String usuario) { + this.usuario = usuario; + initComponents(); + + } + + private void initComponents() { + + panelSuperior = new PanelSuperior(usuario); + panelCard = new JPanel(); + panelCartola = new PanelCartola(usuario); + panelResumen = new PanelResumen(usuario); + separador = new JPanel(); + + setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + getContentPane().setBackground(new Color(0, 128, 128)); + + separador.setBackground(new Color(255, 255, 255)); + + panelCard.setLayout(new CardLayout()); + panelCard.add(panelCartola, "cartola"); + panelCard.add(panelResumen, "resumen"); + + javax.swing.GroupLayout separadorLayout = new javax.swing.GroupLayout(separador); + separador.setLayout(separadorLayout); + separadorLayout.setHorizontalGroup(separadorLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 1001, Short.MAX_VALUE)); + separadorLayout.setVerticalGroup(separadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 11, Short.MAX_VALUE)); + + GroupLayout layout = new GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelSuperior, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(panelCard, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(separador, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(panelSuperior, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) + .addComponent(separador, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0).addComponent(panelCard, javax.swing.GroupLayout.PREFERRED_SIZE, 524, + javax.swing.GroupLayout.PREFERRED_SIZE))); + + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException + | UnsupportedLookAndFeelException e) { + e.printStackTrace(); + } + + pack(); + setVisible(true); + } + + public void toCartola() { + + panelCartola.getTabla().actTabla(); + CardLayout cardLayout = (CardLayout) panelCard.getLayout(); + cardLayout.show(panelCard, "cartola"); + } + + public void toResumen() { + panelResumen.llenarResumen(); + CardLayout cardLayout = (CardLayout) panelCard.getLayout(); + cardLayout.show(panelCard, "resumen"); + + } +} diff --git a/src/visualV2/FrameRegistro.java b/src/visualV2/FrameRegistro.java new file mode 100644 index 0000000..5f31cf4 --- /dev/null +++ b/src/visualV2/FrameRegistro.java @@ -0,0 +1,188 @@ +package visualV2; + +import java.awt.event.*; +import javax.swing.*; + +import control.ControlLogin; + +public class FrameRegistro extends JFrame { + + private javax.swing.JButton bRegistrarse; + private javax.swing.JButton bSalir; + private javax.swing.JPanel bar; + private javax.swing.JLabel bienvenido; + private javax.swing.JPasswordField fContraseña; + private javax.swing.JTextField fUsuario; + private javax.swing.JPasswordField fVerificar; + private javax.swing.JLabel lContraseña; + private javax.swing.JLabel lUsuario; + private javax.swing.JLabel lVerificiar; + private javax.swing.JLabel pam; + private javax.swing.JPanel panel; + + public FrameRegistro() { + initComponents(); + } + + private void initComponents() { + + panel = new javax.swing.JPanel(); + pam = new javax.swing.JLabel(); + bienvenido = new javax.swing.JLabel(); + bar = new javax.swing.JPanel(); + lUsuario = new javax.swing.JLabel(); + fUsuario = new javax.swing.JTextField(); + lContraseña = new javax.swing.JLabel(); + fContraseña = new javax.swing.JPasswordField(); + bRegistrarse = new javax.swing.JButton(); + bSalir = new javax.swing.JButton(); + fVerificar = new javax.swing.JPasswordField(); + lVerificiar = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setBackground(new java.awt.Color(21, 21, 21)); + setMinimumSize(null); + + panel.setBackground(new java.awt.Color(0, 128, 128)); + + pam.setFont(new java.awt.Font("Candara", 1, 60)); // NOI18N + pam.setForeground(new java.awt.Color(255, 255, 255)); + pam.setText("P.A.M"); + + bienvenido.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + bienvenido.setForeground(new java.awt.Color(255, 255, 255)); + bienvenido.setText(" Bienvenido de nuevo "); + + bar.setBackground(new java.awt.Color(255, 255, 255)); + bar.setPreferredSize(new java.awt.Dimension(215, 2)); + + javax.swing.GroupLayout barLayout = new javax.swing.GroupLayout(bar); + bar.setLayout(barLayout); + barLayout.setHorizontalGroup(barLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, + 251, Short.MAX_VALUE)); + barLayout.setVerticalGroup( + barLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 9, Short.MAX_VALUE)); + + lUsuario.setBackground(new java.awt.Color(0, 204, 204)); + lUsuario.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + lUsuario.setForeground(new java.awt.Color(255, 255, 255)); + lUsuario.setText("Usuario"); + + lContraseña.setBackground(new java.awt.Color(0, 204, 204)); + lContraseña.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + lContraseña.setForeground(new java.awt.Color(255, 255, 255)); + lContraseña.setText("Contraseña"); + + bRegistrarse.setText("Registrarse"); + bRegistrarse.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + bRegistrarseActionPerformed(evt); + } + }); + + bSalir.setText("Salir"); + bSalir.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + bSalirActionPerformed(evt); + } + }); + + lVerificiar.setBackground(new java.awt.Color(0, 204, 204)); + lVerificiar.setFont(new java.awt.Font("Candara", 1, 18)); // NOI18N + lVerificiar.setForeground(new java.awt.Color(255, 255, 255)); + lVerificiar.setText("Verificar Contraseña"); + + javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel); + panel.setLayout(panelLayout); + panelLayout.setHorizontalGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, + panelLayout.createSequentialGroup().addGap(140, 140, 140) + .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(bar, javax.swing.GroupLayout.PREFERRED_SIZE, 251, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lUsuario) + .addComponent(fUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 161, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lContraseña) + .addComponent(fContraseña, javax.swing.GroupLayout.PREFERRED_SIZE, 161, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(bRegistrarse, javax.swing.GroupLayout.PREFERRED_SIZE, 87, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(bSalir, javax.swing.GroupLayout.PREFERRED_SIZE, 65, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(fVerificar, javax.swing.GroupLayout.PREFERRED_SIZE, 161, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(pam).addComponent(lVerificiar).addComponent(bienvenido)) + .addGap(140, 140, 140))); + panelLayout.setVerticalGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLayout.createSequentialGroup().addGap(27, 27, 27) + .addComponent(pam, javax.swing.GroupLayout.PREFERRED_SIZE, 52, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(1, 1, 1) + .addComponent(bienvenido, javax.swing.GroupLayout.PREFERRED_SIZE, 35, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(bar, javax.swing.GroupLayout.PREFERRED_SIZE, 9, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(lUsuario) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 31, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(lContraseña) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fContraseña, javax.swing.GroupLayout.PREFERRED_SIZE, 30, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(lVerificiar) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(fVerificar, javax.swing.GroupLayout.PREFERRED_SIZE, 30, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(28, 28, 28).addComponent(bRegistrarse) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(bSalir) + .addGap(31, 31, 31))); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent( + panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent( + panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException + | UnsupportedLookAndFeelException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + setUndecorated(true); + pack(); + getRootPane().setDefaultButton(bRegistrarse); + setVisible(true); + setLocationRelativeTo(null); + + } + + protected void bRegistrarseActionPerformed(ActionEvent evt) { + + + + ControlLogin control = new ControlLogin(); + if (control.añadirUsuario(fUsuario.getText(), String.valueOf(fContraseña.getPassword()), + String.valueOf(fVerificar.getPassword()))) { + FrameLogin login = new FrameLogin(); + + dispose(); + }else{ + } + + } + + private void bSalirActionPerformed(ActionEvent evt) { + + FrameLogin login = new FrameLogin(); + + dispose(); + } +} diff --git a/src/visualV2/JTableTable.java b/src/visualV2/JTableTable.java new file mode 100644 index 0000000..72f0e14 --- /dev/null +++ b/src/visualV2/JTableTable.java @@ -0,0 +1,71 @@ +package visualV2; + +import java.awt.Color; +import java.awt.Font; + +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.table.DefaultTableModel; + +import control.ControlPrincipal; + +public class JTableTable extends JTable{ + + String usuario; + + public JTableTable(String usuario){ + + this.usuario = usuario; + iniciar(); + + } + private void iniciar(){ + + setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + setBackground(new Color(178, 223, 219)); + setFont(new Font("Candara", 0, 13)); // NOI18N + setForeground(new Color(21, 21, 21)); + setModel(new DefaultTableModel( + new Object [][] { + {null, null, null, null, null, null, null, null} + }, + new String [] { + "N°", "Fecha", "Documento", "Fuente/Destino", "Descripcion", "Ingreso", "Egreso", "Saldo" + } + ) { + boolean[] canEdit = new boolean [] { + false, false, false, false, false, false, false, false + }; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + setGridColor(new Color(255, 255, 255)); + setOpaque(false); + setSelectionForeground(new Color(255, 255, 255)); + actTabla(); + } + + public void actTabla() { + + ControlPrincipal control = new ControlPrincipal(usuario); + DefaultTableModel modelo = (DefaultTableModel) getModel(); + + setModel(modelo); + modelo.setRowCount(0); + + if (control.isFiled()) { + + for (int x = 0; x < control.getRowCount(); x++) { + + Object[] fila = control.getRow(x); + modelo.addRow(fila); + + } + + } + + } + +} diff --git a/src/visualV2/P.A.M.v2/catola.png b/src/visualV2/P.A.M.v2/catola.png new file mode 100644 index 0000000000000000000000000000000000000000..594b23d1dbd27b2e98bb395dc61c5a6128a0253f GIT binary patch literal 2019 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

k05qME#EjZd+Mdkw36brRhMkdiRpuC~Qi!}GUd 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 literal 0 HcmV?d00001 diff --git a/src/visualV2/P.A.M.v2/resumen.png b/src/visualV2/P.A.M.v2/resumen.png new file mode 100644 index 0000000000000000000000000000000000000000..520c84334872440690cd6608768242737ccce2d0 GIT binary patch literal 2205 zcmV;O2x9k%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIp2r@}TK~z{r?U`4M zl|>ZCm)=2X3Q|QN3L!LsCLN&Qhea5D2_|{(p04ZsyLNdnI=ym2v)?B^Xpw-&7hTdlV`lL~DaRzTj=YiX{B}FS&8eFSRHDF$`BAI{eSY{`Os5+Md zC*j9ar_8s8&{}FcdP~Y^6428f=b@5RgUJaob$uV$wJTM&b%S)lLluDqinU!9#E4%W zKb}lFaKLESW%Fi(g`&~ce!~Xyy=CLZ6u+Ip*C$RS_wU?kc+<18%aesD(O-(?%Trjk zELBGkb=U6T`o!8oM0ffBL`(~_m${autjHqRftqr=RBo%=Mg1nbhYnSwR9k4`X=mHG ziIr7vxMoe#&h2%GEP^`xdiu2ajxQ-OhoP=+D0jyx!=5>TWA^Vi-%4tOci{Hz$)9J= z7}^I%j->c~WD)EEK+87{9?YOuw&h-1wj_5+Fy$_rHl-Bt@TwH0ZJhmPAdBD-p1kmj zaK1ihqn~Sw@njJyBBI0yR-Zqgys&p~GIrm-WPvq6blWAb=F5qP7Bd$isvJHp=PSx zS%k&1+VuUSv^04{)|>V&x|{=WvrcwCM2R6ZkZ~Ux=sE4Cqcz2Aawi<1>$_OIb*#^8 zYy$(=rDzbf)-=x->U)ihfob<;tM4@5K&WmO+tu?SN(`X^-~H#GR9V8E z8SEovpW3}U>8{;i^4QvkBmKfXO8;ykog;|9ULwiK@H#ZB*kOwvn{)EhD#1U zm%dL}{%7{=N$~;IpZ4qdP{eLjbVU7hMMHFZD;lE22wa9iARTMJq7fwqXdr9%isC5z z?{$hNyaR1Yb^j-3h`fqAeVG?;>9Kck+4g# zC^yA*Sl;^LB~Wc{T@aR=u~}foG(qj9B1#O9o`eQzqQP+w)l|lzLnCP(x?_h?puJF4 zyj7)?aqMb$ay~hF)R_Li6iE+~BPXz6!6uT@sr-_H0v3nJd@K>T`gWCj>a5AKcr$g1 zm^=%!#0Do$c3wn@0Xk`rCR)*XQt~mfU{RrXgVu0R6NnSlKqQn6Au{#J9mT(`X z$n!c{S%X+*YiT#QXC@SMlN9grbLY(WHG4b(r^E5M-7yKFT{PGBuzN?b{e}|5hU4c# zlo((H;gc0uOUe_@QU6>!)k{ZekV3ZlG8&^a@!Pe+Q#pcCu8npT<+xYeUw2#y$erwk z-fs7CyCcliD`?s@jRa#|z_xehNp;i-~y1z4~cHkB+*Wj2}2&17#XH&+Bk23JM(TeS(F z61#J=X}A5&SG+vurhha!Jsi~jzS?_gEXq9C@49%=z@KRXZj8TB4x*8zns<50 z;eEjzijY@r=z?Dl7nVnsMI0)X(dW0)Qu8I|T}Y?p)ju}vs_c?KGv!xwckWkHl! z2&CYhI)R_DSSYA^V`b1k%V&1Cx5Dwk(>s?*j6r>QIGV4G;fDx^gWIw|a_V_cdp@db z;g@P`_tyy1_a?W=>EWRI94&g!P#=|f!{J4MGUlAy*+^zHqkjnT4$(UJk5*wjzu_?3 z(e^?SB^ClH^`sWroO)kDmHD*>YE#!lc&OqjkH=mLlgvvVa`8L73UX7qHORoMw-z6dWPhJMn|db}FSi9hoS_?#KA7^G!&g6*@vrIm zsLp}Jb?{>HU8u!i$52SN(Lqw6UT2-9`51mCS58c zOMIk1H$o3}6Y!(P5BhZR5wv9aV98}JBQy>=qx(p0jQO8z`w=VPCu3tlLywlZ+6zUL fcopRgtCD{KkI*HWsi%e}00000NkvXXu0mjfiMBM1 literal 0 HcmV?d00001 diff --git a/src/visualV2/PanelCartola.java b/src/visualV2/PanelCartola.java new file mode 100644 index 0000000..fc04a31 --- /dev/null +++ b/src/visualV2/PanelCartola.java @@ -0,0 +1,468 @@ +package visualV2; + +import javax.swing.*; +import org.jdesktop.swingx.*; + +import control.ControlPrincipal; +import utiles.Validador; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class PanelCartola extends JPanel { + + private JButton bAñadir; + private JButton bEliminar; + private JButton bModificar; + private JComboBox boxDocumento1; + private JComboBox boxDocumento2; + private JXDatePicker dateFecha1; + private JXDatePicker dateFecha2; + private JTextField fDesc1; + private JTextField fDesc2; + private JTextField fEgr1; + private JTextField fEgr2; + private JTextField fFD1; + private JTextField fFD2; + private JTextField fIng1; + private JTextField fIng2; + private JTextField fNumero; + private JScrollPane jScrollPane1; + private JLabel lDesc1; + private JLabel lDesc2; + private JLabel lDocumento1; + private JLabel lDocumento2; + private JLabel lEgr1; + private JLabel lEgr2; + private JLabel lFD1; + private JLabel lFD2; + private JLabel lFecha1; + private JLabel lFecha2; + private JLabel lIng1; + private JLabel lIng2; + private JLabel lNumero; + private JTableTable tabla; + private String usuario; + + public PanelCartola(String usuario) { + this.usuario = usuario; + initComponents(); + } + + private void initComponents() { + + lFecha1 = new JLabel(); + lDocumento1 = new JLabel(); + boxDocumento1 = new JComboBox<>(); + lFD1 = new JLabel(); + fFD1 = new JTextField(); + fDesc1 = new JTextField(); + lDesc1 = new JLabel(); + lIng1 = new JLabel(); + fIng1 = new JTextField(); + fEgr1 = new JTextField(); + lEgr1 = new JLabel(); + jScrollPane1 = new JScrollPane(); + tabla = new JTableTable(usuario); + bAñadir = new JButton(); + bEliminar = new JButton(); + lFD2 = new JLabel(); + fFD2 = new JTextField(); + bModificar = new JButton(); + fDesc2 = new JTextField(); + lDesc2 = new JLabel(); + lIng2 = new JLabel(); + fIng2 = new JTextField(); + fEgr2 = new JTextField(); + lFecha2 = new JLabel(); + lEgr2 = new JLabel(); + lDocumento2 = new JLabel(); + boxDocumento2 = new JComboBox<>(); + fNumero = new JTextField(); + lNumero = new JLabel(); + dateFecha1 = new JXDatePicker(); + dateFecha2 = new JXDatePicker(); + + setBackground(new Color(0, 128, 128)); + + lFecha1.setBackground(new Color(0, 204, 204)); + lFecha1.setFont(new Font("Candara", 1, 14)); // NOI18N + lFecha1.setForeground(new Color(255, 255, 255)); + lFecha1.setText("Fecha:"); + + lDocumento1.setBackground(new Color(0, 204, 204)); + lDocumento1.setFont(new Font("Candara", 1, 14)); // NOI18N + lDocumento1.setForeground(new Color(255, 255, 255)); + lDocumento1.setText("Documento:"); + + boxDocumento1.setForeground(new Color(21, 21, 21)); + boxDocumento1.setModel(new DefaultComboBoxModel<>(new String[] { "Credito", "Efectivo", "Transferencia" })); + + lFD1.setBackground(new Color(0, 204, 204)); + lFD1.setFont(new Font("Candara", 1, 14)); // NOI18N + lFD1.setForeground(new Color(255, 255, 255)); + lFD1.setText("Fuente/Destino:"); + + fFD1.setToolTipText(""); + + lDesc1.setBackground(new Color(0, 204, 204)); + lDesc1.setFont(new Font("Candara", 1, 14)); // NOI18N + lDesc1.setForeground(new Color(255, 255, 255)); + lDesc1.setText("Descripcion:"); + + lIng1.setBackground(new Color(0, 204, 204)); + lIng1.setFont(new Font("Candara", 1, 14)); // NOI18N + lIng1.setForeground(new Color(255, 255, 255)); + lIng1.setText("Ingreso:"); + + lEgr1.setBackground(new Color(0, 204, 204)); + lEgr1.setFont(new Font("Candara", 1, 14)); // NOI18N + lEgr1.setForeground(new Color(255, 255, 255)); + lEgr1.setText("Egreso:"); + + jScrollPane1.setBackground(new Color(128, 203, 196)); + + jScrollPane1.setViewportView(tabla); + if (tabla.getColumnModel().getColumnCount() > 0) { + tabla.getColumnModel().getColumn(4).setPreferredWidth(150); + } + + bAñadir.setBackground(new Color(0, 188, 212)); + bAñadir.setText("Añadir"); + bAñadir.setContentAreaFilled(false); + bAñadir.setOpaque(true); + bAñadir.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + + añadirActionPerformed(evt); + + } + + }); + + bEliminar.setBackground(new Color(0, 188, 212)); + bEliminar.setText("Eliminar Fila Seleccionada"); + bEliminar.setContentAreaFilled(false); + bEliminar.setOpaque(true); + bEliminar.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + + eliminarActionPerformed(evt); + + } + + }); + + lFD2.setBackground(new Color(0, 204, 204)); + lFD2.setFont(new Font("Candara", 1, 14)); // NOI18N + lFD2.setForeground(new Color(255, 255, 255)); + lFD2.setText("Fuente/Destino:"); + + fFD2.setToolTipText(""); + + bModificar.setBackground(new Color(0, 188, 212)); + bModificar.setText("Modificar Fila"); + bModificar.setContentAreaFilled(false); + bModificar.setOpaque(true); + bModificar.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + + modificarActionPerformed(evt); + + } + + }); + + Calendar today = Calendar.getInstance(); + + dateFecha1.setDate(today.getTime()); + dateFecha2.setDate(today.getTime()); + + lDesc2.setBackground(new Color(0, 204, 204)); + lDesc2.setFont(new Font("Candara", 1, 14)); // NOI18N + lDesc2.setForeground(new Color(255, 255, 255)); + lDesc2.setText("Descripcion:"); + + lIng2.setBackground(new Color(0, 204, 204)); + lIng2.setFont(new Font("Candara", 1, 14)); // NOI18N + lIng2.setForeground(new Color(255, 255, 255)); + lIng2.setText("Ingreso:"); + + lFecha2.setBackground(new Color(0, 204, 204)); + lFecha2.setFont(new Font("Candara", 1, 14)); // NOI18N + lFecha2.setForeground(new Color(255, 255, 255)); + lFecha2.setText("Fecha:"); + + lEgr2.setBackground(new Color(0, 204, 204)); + lEgr2.setFont(new Font("Candara", 1, 14)); // NOI18N + lEgr2.setForeground(new Color(255, 255, 255)); + lEgr2.setText("Egreso:"); + + lDocumento2.setBackground(new Color(0, 204, 204)); + lDocumento2.setFont(new Font("Candara", 1, 14)); // NOI18N + lDocumento2.setForeground(new Color(255, 255, 255)); + lDocumento2.setText("Documento:"); + + boxDocumento2.setForeground(new Color(21, 21, 21)); + boxDocumento2.setModel(new DefaultComboBoxModel<>(new String[] { "Credito", "Efectivo", "Transferencia" })); + + fNumero.setToolTipText(""); + + lNumero.setBackground(new Color(0, 204, 204)); + lNumero.setFont(new Font("Candara", 1, 14)); // NOI18N + lNumero.setForeground(new Color(255, 255, 255)); + lNumero.setText("Nº"); + + GroupLayout layout = new GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(GroupLayout.Alignment.TRAILING, + layout.createSequentialGroup().addContainerGap() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 888, Short.MAX_VALUE) + .addGroup( + layout.createSequentialGroup().addGap(0, 0, Short.MAX_VALUE) + .addComponent(bEliminar))) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout + .createSequentialGroup() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lFD2, GroupLayout.Alignment.TRAILING) + .addComponent(lEgr2, GroupLayout.Alignment.TRAILING) + .addComponent(lIng2, GroupLayout.Alignment.TRAILING) + .addComponent(lDesc2, GroupLayout.Alignment.TRAILING) + .addComponent(lDocumento2, + GroupLayout.Alignment.TRAILING) + .addComponent(lFecha2, + GroupLayout.Alignment.TRAILING)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout + .createParallelGroup(GroupLayout.Alignment.LEADING, false) + .addComponent(boxDocumento2, 0, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(fFD2).addComponent(fDesc2).addComponent(fIng2) + .addComponent(fEgr2, GroupLayout.PREFERRED_SIZE, 170, + GroupLayout.PREFERRED_SIZE) + .addComponent(bModificar)) + .addComponent(dateFecha2, GroupLayout.DEFAULT_SIZE, + GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(GroupLayout.Alignment.TRAILING, + layout.createSequentialGroup().addComponent(lNumero) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fNumero, GroupLayout.PREFERRED_SIZE, 170, + GroupLayout.PREFERRED_SIZE)) + .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lFD1, GroupLayout.Alignment.TRAILING) + .addComponent(lEgr1, GroupLayout.Alignment.TRAILING) + .addComponent(lIng1, GroupLayout.Alignment.TRAILING) + .addComponent(lDesc1, GroupLayout.Alignment.TRAILING) + .addComponent(lDocumento1, GroupLayout.Alignment.TRAILING) + .addComponent(lFecha1, GroupLayout.Alignment.TRAILING)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout + .createParallelGroup(GroupLayout.Alignment.LEADING, false) + .addComponent(boxDocumento1, 0, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(fFD1).addComponent(fDesc1).addComponent(fIng1) + .addComponent(fEgr1, GroupLayout.DEFAULT_SIZE, 170, + Short.MAX_VALUE) + .addComponent(bAñadir, GroupLayout.PREFERRED_SIZE, 96, + GroupLayout.PREFERRED_SIZE) + .addComponent(dateFecha1, GroupLayout.DEFAULT_SIZE, + GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap())); + layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout + .createSequentialGroup() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) + .addGroup( + layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1, + GroupLayout.PREFERRED_SIZE, 470, GroupLayout.PREFERRED_SIZE)) + .addGroup(GroupLayout.Alignment.LEADING, layout.createSequentialGroup().addGap(38, 38, 38) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lFecha1).addComponent(dateFecha1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDocumento1).addComponent(boxDocumento1, + GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lFD1) + .addComponent(fFD1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDesc1).addComponent(fDesc1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lIng1) + .addComponent(fIng1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(fEgr1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(lEgr1)) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addComponent(bAñadir) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lNumero).addComponent(fNumero, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFecha2).addComponent(dateFecha2, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDocumento2).addComponent(boxDocumento2, + GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lFD2) + .addComponent(fFD2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDesc2).addComponent(fDesc2, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lIng2) + .addComponent(fIng2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(fEgr2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(lEgr2)) + .addGap(11, 11, 11).addComponent(bModificar))) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addComponent(bEliminar) + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + + } + + public JTableTable getTabla() { + + return tabla; + + } + + private void añadirActionPerformed(ActionEvent evt) { + + ControlPrincipal control = new ControlPrincipal(usuario); + SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy"); + String fecha = formateador.format(dateFecha1.getDate()); + String documento = this.boxDocumento1.getSelectedItem().toString(); + + String fD = fFD1.getText(); + fFD1.setText(""); + + String desc = fDesc1.getText(); + fDesc1.setText(""); + + String ing = fIng1.getText(); + if (ing.equals("")) { + ing = "0"; + } else if (ing.matches("^0")) { + + ing.replaceFirst("0", ""); + + } else if (!Validador.isNumber(ing)) { + JOptionPane.showMessageDialog(null, "Ingreso ingresado incorrecto", "Error", JOptionPane.ERROR_MESSAGE); + } + fIng1.setText("0"); + + String egr = fEgr1.getText(); + if (egr.equals("")) { + egr = "0"; + } else if (ing.startsWith("0")) { + + ing.replaceFirst("0", ""); + + } else if (!Validador.isNumber(egr)) { + JOptionPane.showMessageDialog(null, "Egreso ingresado incorrecto", "Error", JOptionPane.ERROR_MESSAGE); + } + fEgr1.setText("0"); + + control.añadir(fecha, documento, fD, desc, ing, egr); + + tabla.actTabla(); + + } + + private void eliminarActionPerformed(ActionEvent evt) { + + ControlPrincipal control = new ControlPrincipal(usuario); + + if (tabla.getSelectedRow() != -1) { + + control.eliminarFila((String) tabla.getValueAt(tabla.getSelectedRow(), 0)); + + tabla.actTabla(); + + } + + } + + private void modificarActionPerformed(ActionEvent evt) { + + if (!fNumero.getText().equals("")) { + + String number = fNumero.getText(); + + SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy"); + String fecha = formateador.format(dateFecha2.getDate()); + + String documento = boxDocumento2.getSelectedItem().toString(); + String fD = fFD2.getText(); + String desc = fDesc2.getText(); + String ing = fIng2.getText(); + if (ing.equals("")) { + + ing = "0"; + + } else if (ing.startsWith("0")) { + + ing.replaceFirst("0", ""); + + } else if (!Validador.isNumber(ing)) { + + JOptionPane.showMessageDialog(null, "Dato ingresado incorrecto", "Error", JOptionPane.ERROR_MESSAGE); + + } + String egr = fEgr2.getText(); + if (egr.equals("")) { + + egr = "0"; + + } else if (ing.startsWith("0")) { + + ing.replaceFirst("0", ""); + + } else if (!Validador.isNumber(egr)) { + + JOptionPane.showMessageDialog(null, "Dato ingresado incorrecto", "Error", JOptionPane.ERROR_MESSAGE); + + } + + ControlPrincipal control = new ControlPrincipal(usuario); + + control.modificarFila(number, fecha, documento, fD, desc, ing, egr); + + tabla.actTabla(); + + } else { + + JOptionPane.showMessageDialog(null, "No se ingreso el Nº"); + + } + + } +} diff --git a/src/visualV2/PanelResumen.java b/src/visualV2/PanelResumen.java new file mode 100644 index 0000000..00a2a20 --- /dev/null +++ b/src/visualV2/PanelResumen.java @@ -0,0 +1,542 @@ +package visualV2; + +import javax.swing.*; +import javax.swing.border.Border; + +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartPanel; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.renderer.category.BarRenderer; +import org.jfree.chart.renderer.category.StandardBarPainter; +import org.jfree.data.category.DefaultCategoryDataset; + +import control.ControlPrincipal; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; + +public class PanelResumen extends JPanel { + + private JLabel balance; + private JComboBox boxGraph; + private ArrayList egresos; + private ArrayList ingresos; + private ArrayList saldos; + private ArrayList meses; + private ChartPanel graphDocumento; + private ChartPanel graphMes; + private JLabel lEgr; + private JLabel lIng; + private JLabel lSaldo; + private JPanel panelGraphs; + private JLabel selectGraph; + private Border borde; + private String usuario; + + private DefaultCategoryDataset dataSetMes; + private DefaultCategoryDataset dataSetDoc; + + public PanelResumen(String usuario) { + this.usuario = usuario; + initComponents(); + } + + private void initComponents() { + + iniciarTextFieldYLabel(); + lSaldo = new JLabel(); + balance = new JLabel(); + lIng = new JLabel(); + lEgr = new JLabel(); + selectGraph = new JLabel(); + boxGraph = new JComboBox<>(); + panelGraphs = new JPanel(); + graphMes = crearGraphMes(); + graphDocumento = crearGraphDoc(); + + setBackground(new Color(0, 128, 128)); + + lSaldo.setFont(new Font("Candara", 1, 14)); // NOI18N + lSaldo.setForeground(new Color(255, 255, 255)); + lSaldo.setText("Saldo"); + + balance.setFont(new Font("Candara", 1, 36)); // NOI18N + balance.setForeground(new Color(255, 255, 255)); + balance.setText("Balance Mensual"); + + lIng.setFont(new Font("Candara", 1, 14)); // NOI18N + lIng.setForeground(new Color(255, 255, 255)); + lIng.setText("Ingresos"); + + lEgr.setFont(new Font("Candara", 1, 14)); // NOI18N + lEgr.setForeground(new Color(255, 255, 255)); + lEgr.setText("Egresos"); + + selectGraph.setFont(new Font("Candara", 1, 14)); // NOI18N + selectGraph.setForeground(new Color(255, 255, 255)); + selectGraph.setText("Seleccionar Grafico:"); + + boxGraph.setBackground(new Color(178, 223, 219)); + boxGraph.setModel(new DefaultComboBoxModel<>(new String[] { "Mes", "Documento" })); + boxGraph.setOpaque(false); + boxGraph.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + + comboActionPerformed(evt); + + } + + }); + + panelGraphs.setBackground(new Color(51, 51, 51)); + panelGraphs.setLayout(new CardLayout()); + + graphMes.setBackground(new Color(255, 255, 51)); + + GroupLayout graphMesLayout = new GroupLayout(graphMes); + graphMes.setLayout(graphMesLayout); + graphMesLayout.setHorizontalGroup( + graphMesLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE)); + graphMesLayout.setVerticalGroup( + graphMesLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE)); + + panelGraphs.add(graphMes, "Mes"); + + graphDocumento.setBackground(new Color(255, 51, 51)); + + GroupLayout graphDocumentoLayout = new GroupLayout(graphDocumento); + graphDocumento.setLayout(graphDocumentoLayout); + graphDocumentoLayout.setHorizontalGroup(graphDocumentoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGap(0, 700, Short.MAX_VALUE)); + graphDocumentoLayout.setVerticalGroup(graphDocumentoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGap(0, 465, Short.MAX_VALUE)); + + panelGraphs.add(graphDocumento, "Documento"); + + GroupLayout layout = new GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup().addContainerGap() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lEgr, GroupLayout.Alignment.TRAILING) + .addComponent(lSaldo, GroupLayout.Alignment.TRAILING) + .addComponent(lIng, GroupLayout.Alignment.TRAILING)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(balance, GroupLayout.PREFERRED_SIZE, 310, + GroupLayout.PREFERRED_SIZE) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(saldos.get(0), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(egresos.get(0), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(ingresos.get(0), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(meses.get(0))) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(saldos.get(1), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(egresos.get(1), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(ingresos.get(1), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(meses.get(1))) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(saldos.get(2), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(egresos.get(2), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(ingresos.get(2), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(meses.get(2))) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(saldos.get(3), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(egresos.get(3), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(ingresos.get(3), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(meses.get(3))) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(saldos.get(4), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(meses.get(4)) + .addComponent(egresos.get(4), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(ingresos.get(4), GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) + .addComponent(meses.get(5)) + .addComponent(saldos.get(5), GroupLayout.DEFAULT_SIZE, 63, + Short.MAX_VALUE) + .addComponent(egresos.get(5)).addComponent(ingresos.get(5))))) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup().addComponent(selectGraph) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(boxGraph, GroupLayout.PREFERRED_SIZE, 119, + GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(panelGraphs, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)) + .addContainerGap())); + layout.setVerticalGroup(layout.createParallelGroup( + GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout + .createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup() + .addComponent(balance, GroupLayout.PREFERRED_SIZE, 52, GroupLayout.PREFERRED_SIZE) + .addGap(19, 19, 19).addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(lIng).addPreferredGap( + LayoutStyle.ComponentPlacement.RELATED) + .addComponent(lEgr).addGap(26, 26, 26)) + .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(meses.get(0)).addComponent(meses.get(1)) + .addComponent(meses.get(2)).addComponent(meses.get(3)) + .addComponent(meses.get(4)).addComponent(meses.get(5))) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(ingresos.get(0), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(egresos.get(0), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout + .createParallelGroup( + GroupLayout.Alignment.BASELINE) + .addComponent(saldos.get(0), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(lSaldo))) + .addGroup(layout.createSequentialGroup() + .addComponent(ingresos.get(1), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(egresos.get(1), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(saldos.get(1), GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addComponent(ingresos.get(2), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(egresos.get(2), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(saldos.get(2), GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addComponent(ingresos.get(3), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(egresos.get(3), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(saldos.get(3), GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup().addGroup(layout + .createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(ingresos.get(4), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(ingresos.get(5), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout + .createParallelGroup( + GroupLayout.Alignment.BASELINE) + .addComponent(egresos.get(4), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(egresos.get(5), + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(saldos.get(4), GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup().addGap(52, 52, 52) + .addComponent(saldos.get(5), GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE))))) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(panelGraphs, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup( + layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(boxGraph, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(selectGraph)) + .addGap(19, 19, 19))); + + } + + private void comboActionPerformed(ActionEvent evt) { + + CardLayout cardLayout = (CardLayout) panelGraphs.getLayout(); + cardLayout.show(panelGraphs, (String) boxGraph.getSelectedItem()); + + } + + public void iniciarTextFieldYLabel() { + + ingresos = new ArrayList(); + egresos = new ArrayList(); + saldos = new ArrayList(); + meses = new ArrayList(); + + for (int x = 0; x < 6; x++) { + + ingresos.add(new JTextField()); + egresos.add(new JTextField()); + saldos.add(new JTextField()); + ingresos.get(x).setBackground(new Color(178, 223, 219)); + ingresos.get(x).setEditable(false); + egresos.get(x).setBackground(new Color(178, 223, 219)); + egresos.get(x).setEditable(false); + saldos.get(x).setBackground(new Color(178, 223, 219)); + saldos.get(x).setEditable(false); + meses.add(new JLabel()); + meses.get(x).setFont(new Font("Candara", 1, 14)); // NOI18N + meses.get(x).setForeground(new Color(255, 255, 255)); + + } + + hideTextFieldsYLabels(); + } + + private void hideTextFieldsYLabels() { + + borde = ingresos.get(0).getBorder(); + + for (int x = 0; x < 6; x++) { + + meses.get(x).setText(""); + + ingresos.get(x).setOpaque(false); + ingresos.get(x).setText(""); + + egresos.get(x).setOpaque(false); + egresos.get(x).setText(""); + + saldos.get(x).setOpaque(false); + saldos.get(x).setText(""); + + ingresos.get(x).setBorder(javax.swing.BorderFactory.createEmptyBorder()); + egresos.get(x).setBorder(javax.swing.BorderFactory.createEmptyBorder()); + saldos.get(x).setBorder(javax.swing.BorderFactory.createEmptyBorder()); + + } + + } + + public void llenarResumen() { + + ControlPrincipal control = new ControlPrincipal(usuario); + + hideTextFieldsYLabels(); + actualizarGraphDoc(); + actualizarGraphMes(); + + String[][] resumen = control.resumenMes(); + + if (resumen[0][0] != null) { + + for (int x = resumen[0].length - 1, z = 0; x > resumen[0].length - 7 && x >= 0; x--, z++) { + + ingresos.get(z).setText(resumen[2][x]); + ingresos.get(z).setBorder(borde); + ingresos.get(z).setOpaque(true); + + egresos.get(z).setText(resumen[3][x]); + egresos.get(z).setBorder(borde); + egresos.get(z).setOpaque(true); + + saldos.get(z).setText(resumen[1][x]); + saldos.get(z).setBorder(borde); + saldos.get(z).setOpaque(true); + + if (resumen[0][x].matches("[0-9]{4}-01")) { + + meses.get(z).setText("Enero"); + + } else if (resumen[0][x].matches("[0-9]{4}-02")) { + + meses.get(z).setText("Febrero"); + + } else if (resumen[0][x].matches("[0-9]{4}-03")) { + + meses.get(z).setText("Marzo"); + + } else if (resumen[0][x].matches("[0-9]{4}-04")) { + + meses.get(z).setText("Abril"); + + } else if (resumen[0][x].matches("[0-9]{4}-05")) { + + meses.get(z).setText("Mayo"); + + } else if (resumen[0][x].matches("[0-9]{4}-06")) { + + meses.get(z).setText("Junio"); + + } else if (resumen[0][x].matches("[0-9]{4}-07")) { + + meses.get(z).setText("Julio"); + + } else if (resumen[0][x].matches("[0-9]{4}-08")) { + + meses.get(z).setText("Agosto"); + + } else if (resumen[0][x].matches("[0-9]{4}-09")) { + + meses.get(z).setText("Septiembre"); + + } else if (resumen[0][x].matches("[0-9]{4}-10")) { + + meses.get(z).setText("Octubre"); + + } else if (resumen[0][x].matches("[0-9]{4}-11")) { + + meses.get(z).setText("Noviembre"); + + } else if (resumen[0][x].matches("[0-9]{4}-12")) { + + meses.get(z).setText("Diciembre"); + + } + } + + } + + } + + private ChartPanel crearGraphMes() { + + ControlPrincipal control = new ControlPrincipal(usuario); + + String[][] resumen = control.resumenMes(); + + dataSetMes = new DefaultCategoryDataset(); + + JFreeChart chart = ChartFactory.createBarChart("Resumen Mensual", "Mes", "Saldo", dataSetMes, + PlotOrientation.VERTICAL, false, true, false); + + CategoryPlot plot = chart.getCategoryPlot(); + BarRenderer renderer = (BarRenderer) plot.getRenderer(); + ValueAxis axis = plot.getRangeAxis(); + axis.setTickLabelPaint(new Color(0,0,0)); + CategoryAxis domain = plot.getDomainAxis(); + domain.setTickLabelPaint(new Color(0,0,0)); + renderer.setGradientPaintTransformer(null); + renderer.setBarPainter(new StandardBarPainter()); + plot.setBackgroundPaint(new Color(0,103, 103)); + renderer.setSeriesPaint(0, new Color(0,205,205)); + chart.setBackgroundPaint(new Color(0, 128, 128 )); + + ChartPanel graph = new ChartPanel(chart); + + return graph; + + } + + private ChartPanel crearGraphDoc() { + + ControlPrincipal control = new ControlPrincipal(usuario); + + int[] resumen = control.resumenDoc(); + + dataSetDoc = new DefaultCategoryDataset(); + JFreeChart chart = ChartFactory.createBarChart("Resumen por Documentos", "Documento", "Saldo", dataSetDoc, + PlotOrientation.VERTICAL, false, true, false); + + CategoryPlot plot = chart.getCategoryPlot(); + BarRenderer renderer = (BarRenderer) plot.getRenderer(); + ValueAxis axis = plot.getRangeAxis(); + axis.setTickLabelPaint(new Color(0,0,0)); + CategoryAxis domain = plot.getDomainAxis(); + domain.setTickLabelPaint(new Color(0,0,0)); + renderer.setGradientPaintTransformer(null); + renderer.setBarPainter(new StandardBarPainter()); + plot.setBackgroundPaint(new Color(0,103, 103)); + renderer.setSeriesPaint(0, new Color(0,205,205)); + chart.setBackgroundPaint(new Color(0, 128, 128 )); + + ChartPanel graph = new ChartPanel(chart); + + return graph; + } + + private void actualizarGraphMes() { + + dataSetMes.clear(); + + ControlPrincipal control = new ControlPrincipal(usuario); + String[][] resumen = control.resumenMes(); + + if (resumen[0][0] != null) { + + for (int x = 0; x < resumen[0].length; x++) { + + dataSetMes.setValue(Integer.parseInt(resumen[1][x]), "Saldo", resumen[0][x]); + } + + } + + } + + private void actualizarGraphDoc() { + + ControlPrincipal control = new ControlPrincipal(usuario); + + dataSetDoc.clear(); + + int[] resumen = control.resumenDoc(); + + dataSetDoc.setValue(resumen[0], "Saldo", "Efectivo"); + dataSetDoc.setValue(resumen[1], "Saldo", "Transferencia"); + dataSetDoc.setValue(resumen[2], "Saldo", "Credito"); + + } +} diff --git a/src/visualV2/PanelSuperior.java b/src/visualV2/PanelSuperior.java new file mode 100644 index 0000000..e09533c --- /dev/null +++ b/src/visualV2/PanelSuperior.java @@ -0,0 +1,150 @@ +package visualV2; + +import javax.swing.*; + +import java.awt.event.*; +import java.util.Calendar; +import java.awt.*; + +public class PanelSuperior extends JPanel { + + private JButton bCartola; + private JButton bResumen; + + private JTextField fFecha; + private JTextField fUsuario; + + private JLabel lFecha; + private JLabel lUsuario; + private JLabel logo; + + private String usuario; + + public PanelSuperior(String usuario) { + + this.usuario = usuario; + initComponents(); + } + + private void initComponents() { + + + logo = new JLabel(); + lUsuario = new JLabel(); + fUsuario = new JTextField(); + lFecha = new JLabel(); + fFecha = new JTextField(); + bResumen = new JButton(); + bCartola = new JButton(); + + setBackground(new Color(0, 128, 128)); + + logo.setIcon(new ImageIcon(getClass().getResource("P.A.M.v2/logo.png"))); // NOI18N + + lUsuario.setFont(new Font("Candara", 1, 14)); // NOI18N + lUsuario.setForeground(new Color(255, 255, 255)); + lUsuario.setText("Usuario:"); + + fUsuario.setBackground(new Color(178, 223, 219)); + fUsuario.setEnabled(false); + fUsuario.setText(usuario); + + lFecha.setFont(new Font("Candara", 1, 14)); // NOI18N + lFecha.setForeground(new Color(255, 255, 255)); + lFecha.setText("Fecha:"); + + Calendar hoy = Calendar.getInstance(); + fFecha.setBackground(new Color(178, 223, 219)); + fFecha.setEnabled(false); + fFecha.setText((String.valueOf(hoy.get(Calendar.DATE)) + "/" + String.valueOf(hoy.get(Calendar.MONTH)+1) + "/" + + String.valueOf(hoy.get(Calendar.YEAR)))); + + bResumen.setBackground(new Color(0, 188, 212)); + bResumen.setText("Resumen"); + bResumen.setBorder(BorderFactory.createTitledBorder("")); + bResumen.setContentAreaFilled(false); + bResumen.setOpaque(true); + bResumen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bResumenActionPerformed(evt); + } + }); + + bCartola.setBackground(new Color(0, 188, 212)); + bCartola.setText("Cartola"); + bCartola.setBorder(BorderFactory.createTitledBorder("")); + bCartola.setContentAreaFilled(false); + bCartola.setOpaque(true); + bCartola.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bCartolaActionPerformed(evt); + } + }); + + GroupLayout layout = new GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(logo) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(lUsuario) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fUsuario, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)) + .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(lFecha) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(fFecha, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addGap(333, 333, 333) + .addComponent(bCartola, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(bResumen, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE) + .addContainerGap(473, Short.MAX_VALUE)))) + ); + layout.setVerticalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(fUsuario, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(lUsuario)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFecha) + .addComponent(fFecha, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addGap(9, 9, 9) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(bResumen, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE) + .addComponent(bCartola, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)) + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(logo, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE) + ); + + + } + + private void bResumenActionPerformed(ActionEvent evt) { + + + + FramePrincipal parent = (FramePrincipal) SwingUtilities.getWindowAncestor(this); + parent.toResumen(); + + } + + private void bCartolaActionPerformed(ActionEvent evt) { + + + + FramePrincipal parent = (FramePrincipal) SwingUtilities.getWindowAncestor(this); + parent.toCartola(); + + } +}