From 216e3668d60429b32b4e01570af3377f00d6dfbb Mon Sep 17 00:00:00 2001 From: krakjoe Date: Fri, 29 Nov 2013 09:35:33 +0000 Subject: [PATCH] ... --- .../build/classes/.netbeans_automatic_build | 0 .../build/classes/.netbeans_update_resources | 0 .../classes/phpdbg/ui/CommandHistory.class | Bin 0 -> 1394 bytes .../build/classes/phpdbg/ui/DebugSocket.class | Bin 0 -> 4255 bytes .../build/classes/phpdbg/ui/JConsole$1.class | Bin 0 -> 751 bytes .../build/classes/phpdbg/ui/JConsole$2.class | Bin 0 -> 710 bytes .../build/classes/phpdbg/ui/JConsole$3.class | Bin 0 -> 751 bytes .../classes/phpdbg/ui/JConsole$4$1.class | Bin 0 -> 971 bytes .../build/classes/phpdbg/ui/JConsole$4.class | Bin 0 -> 956 bytes .../phpdbg/ui/JConsole$MessageType.class | Bin 0 -> 1830 bytes .../build/classes/phpdbg/ui/JConsole.class | Bin 0 -> 12370 bytes .../build/classes/phpdbg/ui/JConsole.form | 179 ++++++++ .../classes/phpdbg/ui/JTerminalPane.class | Bin 0 -> 4758 bytes .../java/src/phpdbg/ui/CommandHistory.java | 49 +++ tutorials/java/src/phpdbg/ui/DebugSocket.java | 100 +++++ tutorials/java/src/phpdbg/ui/JConsole.form | 179 ++++++++ tutorials/java/src/phpdbg/ui/JConsole.java | 381 ++++++++++++++++++ 17 files changed, 888 insertions(+) create mode 100644 tutorials/java/build/classes/.netbeans_automatic_build create mode 100644 tutorials/java/build/classes/.netbeans_update_resources create mode 100644 tutorials/java/build/classes/phpdbg/ui/CommandHistory.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/DebugSocket.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole$1.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole$2.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole$3.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole$4$1.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole$4.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole$MessageType.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole.class create mode 100644 tutorials/java/build/classes/phpdbg/ui/JConsole.form create mode 100644 tutorials/java/build/classes/phpdbg/ui/JTerminalPane.class create mode 100644 tutorials/java/src/phpdbg/ui/CommandHistory.java create mode 100644 tutorials/java/src/phpdbg/ui/DebugSocket.java create mode 100644 tutorials/java/src/phpdbg/ui/JConsole.form create mode 100644 tutorials/java/src/phpdbg/ui/JConsole.java diff --git a/tutorials/java/build/classes/.netbeans_automatic_build b/tutorials/java/build/classes/.netbeans_automatic_build new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tutorials/java/build/classes/.netbeans_update_resources b/tutorials/java/build/classes/.netbeans_update_resources new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tutorials/java/build/classes/phpdbg/ui/CommandHistory.class b/tutorials/java/build/classes/phpdbg/ui/CommandHistory.class new file mode 100644 index 0000000000000000000000000000000000000000..2e9bf452bc610429de041dfb1a816bd1d893f70e GIT binary patch literal 1394 zcmb7CO-~b16g{skl$H?-w2B`nDoQ&oty(|OB7!7Fk|GNXMpnGiXBjLrIGqx8<8N@O zJ6*fbM2peHxMJaNGRE`T!L}L~ZtlDH-LG@cz2AR+{t6(ETT#SdhLMgUfJ_7jF&U-E zMqwbQedo1#L3=N1k=N#>FfQu=QyW*pxEjWkK;O1gvpmbO1%`{8a!2N>(yrtdY)@5` zTM+1-wrtCr5eOzzD*~Z;r>q1H7A;%dt#6f-dry|C{23}b>$18cT}#{kXUN;IY63@# z+Z)^EQYBZna`VpCmbA-vteWSzPuU!g`Z#dtZHt~b>-6{r=9-0=nT6>Tj*|E zn#AF5cCvbC1H*_547LgIm!lom3=Cq(zzLi&a2;n29Mz(LX#+PfW8kLNW-%uaYZqwE zq+^c>jQndigwssv9)q+e7xX3cs>gL%C5@q)^^Dkg9}5EE9a*ibrH2BC7}haz`=a_R z+gs65%&90YFwq_9lZsQk(-`kv@PaucwI1pugEB#D9wBPLpt%cSenH?ta2LUk2)*ZL z0EZ|C5TuMVaFC@EI84iEC1C_dXz@64jM2K_3%)u&V>ZyUnBK#9W)J&>oAR2m&v{sAe{zsV*SBY^k zeSiP2f&OnW-hF}bU>678F};O+i2ML&(T{T&Cz3odx0x#VXf?7RM4kx7f8%)W8yL{bX&r**5UklA TE8+qbjAb;&~NG&!>J1b literal 0 HcmV?d00001 diff --git a/tutorials/java/build/classes/phpdbg/ui/DebugSocket.class b/tutorials/java/build/classes/phpdbg/ui/DebugSocket.class new file mode 100644 index 0000000000000000000000000000000000000000..af241d41191450084ebfeda4d164636fc3668e97 GIT binary patch literal 4255 zcma)9dvH`&8ULNTySd5cCTt!HSwcg2nkQ+?djm0qhlJ)ul14)Sxk)a`h0X4EA0g4c zglZ96ty)__Talts(JC!0D2|zFMu$;noGCNTw14=QGfZdfKaQPFl@@>J>~3~b!obe# z{m%KF@9{g|`ObHD|NP1C{s3Ste(T1g=yPKgKA(q`_=0@&yRi=gaLP@lj;*XCUtztjW6TzJUoFXrP@n@YeFDPvvZaKJ*9AUq8VJrNgZF;v0GKf zDS;KC$jF+Y6&vJkG%IDD<5nbM56cR0C-ryP@=QEg z$zCI?i5W8R4LoO{4$m8?MvZ~bpo%Fo@J)QnK&_lSW8ejR+rW45T>~%TdrYT+m(XnB zWqjYjX*oKBAL#g@fmiUVfgj;4cVXbiI42<7240gY=kXH*KgASxXW(Zt=xO}iz%OvY zz%TJD(#sTh^3Wx%b2?r(@M~%N8#MFyl@gDoHIqw$ij1kOiAW?Kj#M1 zo9!GtVhzd4&iLycjf9RRqm(N2Q+1eDmU+ljUmBfTQ3APkFxF=V;w%AHeJhK5o<7hj zuY*1=)jAJLm3`G&C6&JO0{M274JJs&7VnF79&r9*xyC$fDUGiARkpp8n)F53!_aYL__o#TVBJSUTY$z z)@ZX(=J(DO=7L_NBD-rkqDt&+L&~K>OY*WitE%O7cO8q^F=p9SHP9kA;yN6NM@Q+3 z8&A6O&XakmS(v7r>?7=v>6mkmn1u7l*A66$!&$XQT07-Sf?*i8wN)OlbeGIpDh1_q zmsOg*R%FZ$nt?7eD7(a>yDYJPnBlM$9NyN^L$9u(Kq$)Xx#_*#ibl;5PAal&Q*WM? zsm0#OFctFW%#2pnPGoz)j7DXbbnWc!?(7z*%w{)_80;UUC^gybC>>m{Lp|qfIQtjpI%P{uZCwK53bdN~%W%~AoR{IO zaa@J#GIHws{jRs_6VMaLJ%jvuC*cJ0e6E=(2Vo0U^BgKMw5~bG;p>W zd3-MBa|sIZ07_B8Q6;sPk<)ViZdr+K1`>$wP@y3=HO|1mEOv0 z`rF>Bk(=Y5YZ7qRa(}t)wKH{Ub55qxOEoXbluT}Jp&~3vRKp-G4;?RNg5_omMZ7$< z8A;L$?Y4Xd*{BoAxj8H^|KKUJd7&VvRNT48r!uGm9 zp{$M7$@2|gtB?&x0BuB=+{g>HMRA$8Och=7MoYQn$A+2Q66en38r%@;;vT#@-Np%<1 zUDH#r+U`p|hw3?0-{9AkzCZV_{(ZTs0`n++dDA|9dP?-jAd>eP6iM^i1eU#lW_(37 zv;CfAa_(tTEKQ0PzmlX$>D{B0swiGx>5R`i?JJq~Enw-dU`4*fUo+tM6(uj=kGRhH zb^KMyv;6h*HgDCt_zylL{vrOSByqvJEAqu^QB7Gb)+i~2L*o3L6&q=nl$ByY#Ki>l zCdA`Pc8Okb981M1ab8RjpAr|8l=wx?uZh2lcPQTx|4{OxcvIra-%a8hMVFBB1I?qA z@J^LzWm1aw#QRzWmTFbnc5N5&UD_j3Dts^J6O;S#3Pb#@r>yfy)Nlp4? z*I<7WP3YwKL1yV;_P2E?VV_!rP3%a1_P$1Ts4Z*?jqEjB*{Pa1YQ`?!_*Qne4(vcT zK8Jqn#vvj@XhRU~{HxT#zSMuFm>OehjHx}#9m`g^pKpidd=IoRe;PBm7TcK_2eYsRJDDwwdDz4}?Iw1E z`mNXl!QGT`^aw{M(io#AS3NwplbO~ldhpOKIQcsG7#q|JqU|FTe2iQj?K(O_Hc&chl<&6ncF1G#?D3Bc9q?qx58O(_jJkV zt57so|4tT3-pfcV_3|U2czfrwywhIp!ZW{WW`p2mKn`DD-IN;3R6cugiPBB<2^Qs> H&A$HwXZ+nd literal 0 HcmV?d00001 diff --git a/tutorials/java/build/classes/phpdbg/ui/JConsole$1.class b/tutorials/java/build/classes/phpdbg/ui/JConsole$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6d8f361963615b1f51101b1aa2af2e5e4c2aae7a GIT binary patch literal 751 zcmaJ2K59kQKicDMC+nLspt z@CW##jAz#RNNCt(@7#Om%(>4WKfiqkaDeANYIqc20gnSbz`BPG4^KR73fwA&I&ba? zti~sZc9ots|^;jGAb~5Uz?4#_Z^eo3V zk!e?E+SxN_%>@()&x}!7CzW}wXs*s7Z|*aGT_%OL=Do_!Z8lPUfz4KYA*V8upNdFL zl_{d*5_017LzhrhO$&kbn_vRL2Rq3Ub*f#ai+?J9;iwt)#3ZTBwHdro#nARWY=wA= z?GPSrhwz>D3{7_JdefTw0*x}mRGLBbu6Lmlrn50O=~(B5Vk6kB>r4VmuK6818e7BS z*r#gC6&T1QQ8~x9$H5)U9n4L|?{u-ng;)T`3(;t}qPQm&{yqYF?@&9U?L0wy_X?u@ z1(nYwCZyym%2O;-uKq@02@P7rmu!NFyI7ua9nZM@_9evbS5*H|1?BTsOyKN4I{z=7 dk9$}lO%?Y^USYU3o;7aqL)6P~TtJ@uegW63r=$P? literal 0 HcmV?d00001 diff --git a/tutorials/java/build/classes/phpdbg/ui/JConsole$2.class b/tutorials/java/build/classes/phpdbg/ui/JConsole$2.class new file mode 100644 index 0000000000000000000000000000000000000000..26f4b99823e6c64b7180a7be38eebf00d5f11e83 GIT binary patch literal 710 zcmZ`%T~8B16g|^VcDpSFky5RI(uYzKx4s~k&LUM4P$NhR(( zy6TwV$W)T1aUxJ%h!L%i1keCYF~A>|G_$_sTIsPp%f478uerh_ePJIEpL zV97+!@q)dYwW@x=!n3uV_;Q#~#9qu^5hxjN+xlXt6}P}Pq#LFUTY4VFaecqVb7{@> zePN5cJ#6!&vpjTBE}OzRO7Xh{3rx+?G3RE-Zti`DX#POzdV(qNnqv%b28Y-6KPVKj z%o*b+Y=RMGtW3F1rd(F@24e3g(*LOJ$@R}H{N+D7>o1*!RXk#vG}f3rg~u!iF1>;c MlqPcgYw?$#-&Bd3P5=M^ literal 0 HcmV?d00001 diff --git a/tutorials/java/build/classes/phpdbg/ui/JConsole$3.class b/tutorials/java/build/classes/phpdbg/ui/JConsole$3.class new file mode 100644 index 0000000000000000000000000000000000000000..e42eba18508413c3a718d2a25f944b6c3384097f GIT binary patch literal 751 zcmaJbMEuU&x`K>x_IKFfqMZ~a6iBuYG)O8n!;x4i1*L6(dDtgR(ly>zc0|}*`X3>CfcYsv&lf^ALJmTXFaj0 z%=$9d&R#ehE}%g8(ioNZGFcRg=H?ResLS|GnU>m`cPjsA^NAV??6#9LIhV2gRK{wq zOc|e4kW;50xrFL!UJ7hq1rrF~+gYBf7usdI`lsTjj+#+VO`6$4o6&1kj_uIHUWkWy z6vD&x5WdqMBVyMsH!bQ4w5kjbOnv8pCbzY;cS3qFIIG0`lbd3l6}jC;$Ke literal 0 HcmV?d00001 diff --git a/tutorials/java/build/classes/phpdbg/ui/JConsole$4$1.class b/tutorials/java/build/classes/phpdbg/ui/JConsole$4$1.class new file mode 100644 index 0000000000000000000000000000000000000000..f59299246ff8fe991e1693d4cd75fbb7a975c3a4 GIT binary patch literal 971 zcmaJ<&uiHDti-^`mgZ{9aQe|`H7U=xqiFtB1`4yz{a;I4@^lr*|$;yxZ2 zC>y9Sq|~t+mg)wo4A#DsB4~L$3`NMW)E*uW`@MlZa_xhbFGJrGrRFy6dE!b}?Jz8t zXHzO&hD6Kn3x=z0SBmGO)1C-k@}5UCxwh|cuge2h*XNT7ZG#~{Q?JyZLo;Wt?E7ae z&ktQWU|1=)-|;cG`I)lCSV(0bMT9+#x3vRChZX)uBGHcG&dDJkp4(XSgF#IS)e~HX zwT?du9ML9qZ&ylRaph793=30HkIRAmVl0Bd?F({fPWjJVeap zgOQ}MtW(PUOQEZ9#}Q#zYS!zz%au!Qc`ACNLC1GagrYkyUhKZKK;3^oa@B>-me$Ee zUZd1HA44Thi6%a1TB5vP>0*^0>>Ryamd)y12*v2j;0h={LOWFJ8MC_n8Lavhu}={v zOJj;SU`Mz{cxlQ)4%ew7exye40Sj29HLZ0*mDVaw5dVQRjbD(MAQ|B#;rIk8Egy%L zUqX`PUm?X_Bgft#&)%ZI_@(2De~&8?`v%G9X8M6Z>KQ=UpfFf2BXd5`-MS8e}8Pb7&91(k4y`Mc7PnE6w^W^#$<8x=&c zma6?uq@6f)@fc5B%we7gU*<$XgZt|1GlKYgy9qxLCjF_48hjV)*q~`H1Iydx4U@O& z()PDqJi~J$JSmT1ZfuO!u?W&p*WqLzyGjigYMpRN%PD!E#|Ga|6Jl03H?imqbqRJnI}+ z|28NR6s(B_c8C=gz+>T9v&yL1%@LI)(s|q>nZs?|A#IU$7qes)$#O}9e!@bg@f-Rx B*vS9@ literal 0 HcmV?d00001 diff --git a/tutorials/java/build/classes/phpdbg/ui/JConsole$MessageType.class b/tutorials/java/build/classes/phpdbg/ui/JConsole$MessageType.class new file mode 100644 index 0000000000000000000000000000000000000000..5fc8bd614fbd091aef1dba8016794d59f9f3b78f GIT binary patch literal 1830 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 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/tutorials/java/build/classes/phpdbg/ui/JTerminalPane.class b/tutorials/java/build/classes/phpdbg/ui/JTerminalPane.class new file mode 100644 index 0000000000000000000000000000000000000000..1808ef6ee3fc06063e84b70202a13eed4924fbaa GIT binary patch literal 4758 zcmai133wFc8GdJWvOCERVHinB0s-XE5EjE_P>uvPArMWt0xDn|CYv!?-0X%u1gdBO zEwxIOdKE=HTE(*}N>o&e6{}KhJ+QSF>w&FWwWY1KKDL#<|39;^5_sI_`M&r2{^R}6 z@B3%>ezkKKfC>1b0CTY+A9L`1p)S|)1A$i*;7V-F#}9E;KCZ?l;r^(A71soDEv^&R z^+Mes)QXQ-Bf@rxLL7qEIgh^=qMiQ-GK8idKvDmR4K2 zd%ae>sCJE3bI-+JYBi%(gB5^QJAKcV0A3B?H3fnC)^N;@oUg!aT5expSJ^AmRdtD2 zA~{7tUVZBVr(J|CF#y^#{=^6#Ticx1N(CQNHoL%3hXxy2T>1uP53+=WTORT0u z#EzY1C!@mm3bk}+G^L=lsk^hgy{)4v6RkR9p_A;2#_iZVJMIX6ySv+obGJrT9KDmh zrz2*dL?|RxQ#6LiHmj;qD>>V$w6iMBnXisHb&0re$gkOQ*~e%&Bh59oWztTIBN`UC z6PYomrBOkVH<{eM5QFEZySm-25i@U$w>zsi8+Pz_c}`&}9gW3W96K55l)I`d5tEpg z;FR<2_V#S=J}qh9pJuyTZk4=O`*=DXPFl=BUL^%1jx~*=w~4$tUG%Aun0I0YEs0Dr z;xt6%`Fw5TPZ5{afP?c4*qCpi4f7SiKm_dpyl&vP_+0>R82CL>0laD857=+uE&S2I z+ju8{cMZIU0|ws5pA7sN9~k%$83hAmEaYrjI1`PvJ4pjEd}QD+_&9)l20p<7?%F^D zpW?5gs>{INaF9hbKE>Y+ti?J5{}8S61}>d2mc{?XXRb4@%f;~?PVjJ|ho^d2?cpS1 zVBpfRQ%IAw1czHDSX@i+xRzjYEy3klg3Yx&zHx{7XnB0JJU&_;A1#lMmd8iS1sg2kz(uLOe~!nfeKEn81;=oI=nY| zw5vPjDGy|=mA(3=Cl8KB+EV*fIZrgGvBBI@3C>~~4 z(C!9Wb}Qui4p)o(kduo%j@~85Sm)O`6a>X4B_f$FnS0BRwKLgj&at%DI=&GECY~hc2iwQ(UQk{F=adI#hnxD$FrR4L( zrByUGy4!vfU-2!Ege~L`c&r6HzUZ;Vh96Es=pPk+Ck3K`xPTE|H-wkq^2aS3Z^+*J968fPMQI;5PPb|mz^c0cHJ=RTZo5!-zkHJ4@%ytB}Lm%CP z{K;BnWe*A-M^HfzjLK5Y*MmNlp&k?-8LkX|b{#{CQ#jOE48}MPJf4G2ki$-Nsl8!2 z2;y9zSj1=~xI~pbPewOZz{mb&NFv1&1!-j5>8Z{1b+$j?oAw0yE`Ahdr8APDu5S!+d zDzfwtDvlKLGsG*LnNuiOyy5|ei^=NJ@>21W#l2dZ#vvFjz7eCF)f(RGf%l4bP{UNE z=yTg!w5ydnx0>|#5vz#r5$6yO61#|B5wB!G8ANth%7}Z36~vE-lg7`VK9bl#tS2ra zMu_dib;K0$HsU(sZsI25+r(RmUlAV|-+K0)#9hQ^i7ye~C+;8LdXA6yF>x62OX3X9 zH=nqSSVFvncyh?%tt{WHboy$xDUpyhSb9q|dW%BV5a~7L(VG>rhDxu-Pw(`Qb)xjf z2I!3rS;M3^Os7{KvW82qzbTp)hO80N%`@2+heFm!;o@_Xjd3t!oh024%zV19|uAl+v|)+p)jG!43sge;~YQr&Czp?gQjV$jpwViwZ9K4kIG=x#Lo z(%lfU#z^;K)1`puG>@_TqEUZ;p(31tN(Ls?B(Ls?6? zjB+_;BV`liI?86s%@p1R+(EgUaz91ngdLQ}DNj+Jrtlu%17$mm+rN$6TL$md%1!Juo*%+631H$;)I zMgyNv@imi={?tW$jEngtFn}*c2~%t---t5)Lm9}tKZxHG<-D7NnXiZNJ`TlI{2JPf PVYnT`$tG^7itqg&ck5~U literal 0 HcmV?d00001 diff --git a/tutorials/java/src/phpdbg/ui/CommandHistory.java b/tutorials/java/src/phpdbg/ui/CommandHistory.java new file mode 100644 index 0000000000..b8a3b0ff0a --- /dev/null +++ b/tutorials/java/src/phpdbg/ui/CommandHistory.java @@ -0,0 +1,49 @@ +package phpdbg.ui; + + +import java.util.ArrayList; + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * Implement a simple history list for command input + * @author krakjoe + */ +public class CommandHistory extends ArrayList { + private Integer position = new Integer(0); + + public CommandHistory() { + super(); + } + + @Override public boolean add(String text) { + String last = last(); + if (text != null) { + if (last == null || !last.equals(text)) { + if (super.add(text)) { + position = size(); + return true; + } + } + } + return false; + } + + public String last() { + if (position >= 1) { + position--; + return get(position); + } else return new String(); + } + + public String next() { + if (position+1 < size()) { + position++; + return get(position); + } else return new String(); + } +} \ No newline at end of file diff --git a/tutorials/java/src/phpdbg/ui/DebugSocket.java b/tutorials/java/src/phpdbg/ui/DebugSocket.java new file mode 100644 index 0000000000..0dfa10763d --- /dev/null +++ b/tutorials/java/src/phpdbg/ui/DebugSocket.java @@ -0,0 +1,100 @@ +package phpdbg.ui; + + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import phpdbg.ui.JConsole.MessageType; + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * Manage input and output data + * @author krakjoe + */ +public class DebugSocket extends Socket implements Runnable { + private final Boolean reader; + private final JConsole main; + private Boolean quit; + + public DebugSocket(final String host, final Integer port, final JConsole main, Boolean reader) throws IOException { + super(host, port); + + this.main = main; + this.reader = reader; + this.quit = false; + + synchronized(main) { + if (!main.isConnected()) { + main.setConnected(true); + } + } + } + + public void quit() { + synchronized(this) { + quit = true; + this.notifyAll(); + } + } + + @Override public void run() { + try { + synchronized(this) { + do { + if (reader) { + String command; + OutputStream output = getOutputStream(); + + this.wait(); + + command = main.getInputField().getText(); + /* send command to stdin socket */ + if (command != null) { + output.write( + command.getBytes()); + output.write("\n".getBytes()); + output.flush(); + } + main.getInputField().setText(null); + } else { + InputStream input = getInputStream(); + /* get data from stdout socket */ + byte[] bytes = new byte[1]; + do { + /* this is some of the laziest programming I ever done */ + if (input.available() == 0) { + this.wait(400); + continue; + } + + if (input.read(bytes, 0, 1) > -1) { + main.getOutputField() + .appendANSI(new String(bytes)); + } + } while (!quit); + } + } while(!quit); + } + } catch (IOException | InterruptedException ex) { + if (!quit) { + main.messageBox(ex.getMessage(), MessageType.ERROR); + } + } finally { + try { + close(); + } catch (IOException ex) { /* naughty me */ } finally { + synchronized(main) { + if (main.isConnected()) { + main.setConnected(false); + } + } + } + } + } +} diff --git a/tutorials/java/src/phpdbg/ui/JConsole.form b/tutorials/java/src/phpdbg/ui/JConsole.form new file mode 100644 index 0000000000..4d4323517e --- /dev/null +++ b/tutorials/java/src/phpdbg/ui/JConsole.form @@ -0,0 +1,179 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/tutorials/java/src/phpdbg/ui/JConsole.java b/tutorials/java/src/phpdbg/ui/JConsole.java new file mode 100644 index 0000000000..0406e3ce0d --- /dev/null +++ b/tutorials/java/src/phpdbg/ui/JConsole.java @@ -0,0 +1,381 @@ +package phpdbg.ui; + + +import static java.awt.event.KeyEvent.VK_DOWN; +import static java.awt.event.KeyEvent.VK_ENTER; +import static java.awt.event.KeyEvent.VK_UP; +import java.io.IOException; +import javax.swing.JOptionPane; +import javax.swing.JTextField; + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * + * @author krakjoe + */ +public class JConsole extends javax.swing.JDialog { + public enum MessageType { + INFO (JOptionPane.INFORMATION_MESSAGE), + WARN (JOptionPane.WARNING_MESSAGE), + ERROR (JOptionPane.ERROR_MESSAGE); + + private final Integer type; + private MessageType(Integer type) { + this.type = type; + } + public Integer getType() { return this.type; } + public Boolean equals(Integer other) { return this.type.equals(other); } + public Boolean equals(MessageType other) { return this.type.equals(other.getType()); } + } + + /** + * Creates user interface + * @param parent + * @param modal + */ + public JConsole(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + stdoutPopupMenu = new javax.swing.JPopupMenu(); + resetStdout = new javax.swing.JMenuItem(); + mainSplit = new javax.swing.JSplitPane(); + input = new javax.swing.JTextField(); + outputScrollPane = new javax.swing.JScrollPane(); + output = new phpdbg.ui.JTerminalPane(); + host = new javax.swing.JTextField(); + stdoutPort = new javax.swing.JTextField(); + stdinCheckBox = new javax.swing.JCheckBox(); + stdoutCheckBox = new javax.swing.JCheckBox(); + openButton = new javax.swing.JButton(); + stdinPort = new javax.swing.JTextField(); + hostLabel = new javax.swing.JLabel(); + + resetStdout.setText("Clear"); + resetStdout.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + resetStdoutActionPerformed(evt); + } + }); + stdoutPopupMenu.add(resetStdout); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("phpdbg jui"); + + mainSplit.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + mainSplit.setToolTipText(""); + + input.setToolTipText(""); + input.setEnabled(false); + input.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyReleased(java.awt.event.KeyEvent evt) { + inputKeyReleased(evt); + } + }); + mainSplit.setLeftComponent(input); + + outputScrollPane.setViewportView(output); + + mainSplit.setRightComponent(outputScrollPane); + + host.setText("127.0.0.1"); + host.setToolTipText("Set the hostname, or IPv4 address of the machine running the phpdbg remote console server"); + + stdoutPort.setText("8000"); + stdoutPort.setToolTipText(""); + + stdinCheckBox.setSelected(true); + stdinCheckBox.setText("stdin:"); + stdinCheckBox.setToolTipText("Set the port for stdin, or uncheck to disable stdin"); + + stdoutCheckBox.setSelected(true); + stdoutCheckBox.setText("stdout:"); + stdoutCheckBox.setToolTipText("Set the port for stdout, or unset to disable stdout"); + + openButton.setActionCommand("open"); + openButton.setLabel("open"); + openButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + openButtonActionPerformed(evt); + } + }); + + stdinPort.setText("4000"); + stdinPort.setToolTipText(""); + + hostLabel.setText("Hostname:"); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(mainSplit) + .addGroup(layout.createSequentialGroup() + .addComponent(hostLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(host, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(stdinCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(stdinPort, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(stdoutCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(stdoutPort, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(openButton))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(mainSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(host, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(openButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(stdoutPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(stdinCheckBox) + .addComponent(stdoutCheckBox) + .addComponent(stdinPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(hostLabel))) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void inputKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inputKeyReleased + switch (evt.getKeyCode()) { + case VK_ENTER: { + if (in != null) { + history.add(input.getText()); + synchronized(in) { + in.notifyAll(); + } + } + } break; + + case VK_UP: { + String last = history.last(); + if (last.length() > 0) { + input.setText(last); + } + } break; + + case VK_DOWN: { + String next = history.next(); + if (next.length() > 0) { + input.setText(next); + } + } break; + } + }//GEN-LAST:event_inputKeyReleased + + private void openButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openButtonActionPerformed + try { + if (!connected) { + Integer ports[] = new Integer[2]; + String address = getHost(); + + if (address != null) { + ports[0] = stdinCheckBox.isSelected() ? getStdinPort() : -1; + ports[1] = stdoutCheckBox.isSelected() ? getStdoutPort() : -1; + + if (ports[0] != 0 && ports[1] != 0) { + if (stdinCheckBox.isSelected()) { + if (ports[0] > 0) { + in = new DebugSocket( + address, ports[0], this, true); + new Thread(in).start(); + } + } + + if (stdoutCheckBox.isSelected()) { + if (ports[1] > 0) { + out = new DebugSocket( + address, ports[1], this, false); + new Thread(out).start(); + } + } + } + } + } else { + if (in != null) { + in.quit(); + } + if (out != null) { + out.quit(); + } + } + } catch (IOException ex) { + messageBox(ex.getMessage(), MessageType.ERROR); + } + }//GEN-LAST:event_openButtonActionPerformed + + private void resetStdoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetStdoutActionPerformed + // TODO add your handling code here: + output.setText(null); + }//GEN-LAST:event_resetStdoutActionPerformed + + public Boolean isConnected() { + return connected; + } + + public void setConnected(Boolean isConnected) { + synchronized(this) { + if (isConnected) { + connected = true; + openButton.setText("Disconnect"); + host.setEnabled(false); + stdinPort.setEnabled(false); + stdinCheckBox.setEnabled(false); + if (stdinCheckBox.isSelected()) { + input.setEnabled(true); + } else input.setEnabled(false); + stdoutPort.setEnabled(false); + stdoutCheckBox.setEnabled(false); + } else { + connected = false; + openButton.setText("Connect"); + host.setEnabled(true); + stdinPort.setEnabled(true); + input.setEnabled(false); + stdinCheckBox.setEnabled(true); + stdoutPort.setEnabled(true); + stdoutCheckBox.setEnabled(true); + } + } + } + + public JTextField getInputField() { return input; } + public JTerminalPane getOutputField() { return output; } + + public String getHost() { + String address = host.getText(); + if (address != null && address.length() > 0) { + return address; + } else { + messageBox("Invalid hostname provided !", MessageType.WARN); + } + + return null; + } + + public Integer getStdinPort() { + try { + return Integer.parseInt(stdinPort.getText()); + } catch (NumberFormatException ex) { + messageBox("Invalid stdin port provided !", MessageType.WARN); + } + + return 0; + } + + public Integer getStdoutPort() { + try { + return Integer.parseInt(stdoutPort.getText()); + } catch (NumberFormatException ex) { + messageBox("Invalid stdout port provided !", MessageType.WARN); + } + + return 0; + } + + public synchronized void messageBox(String message) { + messageBox(message, MessageType.INFO); + } + + public synchronized void messageBox(String message, MessageType type) { + JOptionPane.showMessageDialog(this, message, "phpdbg jui", type.getType()); + } + /** + * @param args the command line arguments + */ + public static void main(final String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(JConsole.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(JConsole.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(JConsole.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(JConsole.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the dialog */ + java.awt.EventQueue.invokeLater(new Runnable() { + @Override public void run() { + dialog = new JConsole(new javax.swing.JFrame(), true); + dialog.addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent e) { + if (in != null) + in.quit(); + + if (out != null) + out.quit(); + + System.exit(0); + } + }); + dialog.setVisible(true); + } + }); + } + + private static DebugSocket in; + private static DebugSocket out; + private static JConsole dialog; + private static Boolean connected = false; + private static CommandHistory history = new CommandHistory(); + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField host; + private javax.swing.JLabel hostLabel; + private javax.swing.JTextField input; + private javax.swing.JSplitPane mainSplit; + private javax.swing.JButton openButton; + private phpdbg.ui.JTerminalPane output; + private javax.swing.JScrollPane outputScrollPane; + private javax.swing.JMenuItem resetStdout; + private javax.swing.JCheckBox stdinCheckBox; + private javax.swing.JTextField stdinPort; + private javax.swing.JCheckBox stdoutCheckBox; + private javax.swing.JPopupMenu stdoutPopupMenu; + private javax.swing.JTextField stdoutPort; + // End of variables declaration//GEN-END:variables +} -- 2.50.1