From 703f790dbddb5b0c7453fdfef2656b87c55130c8 Mon Sep 17 00:00:00 2001 From: Son Hyunjun Date: Wed, 28 Mar 2012 21:53:21 +0900 Subject: [PATCH] [Title] add Always On Top, add new icons, increase VERSION to 1.0 [Type] Feature [Module] [Priority] Major [CQ#] [Redmine#] [Problem] [Cause] [Solution] Change-Id: I33e865cbb39d42326ceef61f591be680a8f29bf4 --- tizen/src/VERSION | 2 +- tizen/src/skin/client/resource/icons/about.png | Bin 1112 -> 3600 bytes tizen/src/skin/client/resource/icons/advanced.png | Bin 583 -> 3527 bytes tizen/src/skin/client/resource/icons/close.png | Bin 1036 -> 3604 bytes .../resource/icons/copy_screenshot_dialog.png | Bin 0 -> 3267 bytes .../src/skin/client/resource/icons/detail_info.png | Bin 0 -> 3426 bytes .../src/skin/client/resource/icons/device_info.png | Bin 970 -> 0 bytes tizen/src/skin/client/resource/icons/execute.png | Bin 991 -> 0 bytes tizen/src/skin/client/resource/icons/gps.png | Bin 1164 -> 0 bytes tizen/src/skin/client/resource/icons/keypad.png | Bin 1148 -> 0 bytes tizen/src/skin/client/resource/icons/open.png | Bin 956 -> 0 bytes tizen/src/skin/client/resource/icons/option.png | Bin 1201 -> 0 bytes .../resource/icons/refresh_screenshot_dialog.png | Bin 0 -> 3917 bytes tizen/src/skin/client/resource/icons/rotate.png | Bin 1245 -> 3581 bytes .../resource/icons/save_screenshot_dialog.png | Bin 0 -> 3272 bytes tizen/src/skin/client/resource/icons/scale.png | Bin 0 -> 3581 bytes tizen/src/skin/client/resource/icons/scaling.png | Bin 1216 -> 0 bytes .../src/skin/client/resource/icons/screenshot.png | Bin 1305 -> 3434 bytes tizen/src/skin/client/resource/icons/shell.png | Bin 879 -> 3501 bytes tizen/src/skin/client/resource/icons/telephony.png | Bin 1243 -> 0 bytes .../skin/client/resource/icons/usb_keyboard.png | Bin 0 -> 3436 bytes .../src/org/tizen/emulator/skin/EmulatorSkin.java | 600 ++++++++++++++------- .../org/tizen/emulator/skin/EmulatorSkinMain.java | 38 +- .../skin/comm/sock/SocketCommunicator.java | 12 +- .../tizen/emulator/skin/config/EmulatorConfig.java | 1 + .../tizen/emulator/skin/dialog/AboutDialog.java | 38 +- .../tizen/emulator/skin/dialog/LicenseDialog.java | 6 +- .../org/tizen/emulator/skin/dialog/SkinDialog.java | 13 +- .../tizen/emulator/skin/image/ImageRegistry.java | 42 +- .../emulator/skin/screenshot/ScreenShotDialog.java | 160 +++--- 30 files changed, 597 insertions(+), 315 deletions(-) create mode 100644 tizen/src/skin/client/resource/icons/copy_screenshot_dialog.png create mode 100644 tizen/src/skin/client/resource/icons/detail_info.png delete mode 100644 tizen/src/skin/client/resource/icons/device_info.png delete mode 100644 tizen/src/skin/client/resource/icons/execute.png delete mode 100644 tizen/src/skin/client/resource/icons/gps.png delete mode 100644 tizen/src/skin/client/resource/icons/keypad.png delete mode 100644 tizen/src/skin/client/resource/icons/open.png delete mode 100644 tizen/src/skin/client/resource/icons/option.png create mode 100644 tizen/src/skin/client/resource/icons/refresh_screenshot_dialog.png create mode 100644 tizen/src/skin/client/resource/icons/save_screenshot_dialog.png create mode 100644 tizen/src/skin/client/resource/icons/scale.png delete mode 100644 tizen/src/skin/client/resource/icons/scaling.png delete mode 100644 tizen/src/skin/client/resource/icons/telephony.png create mode 100644 tizen/src/skin/client/resource/icons/usb_keyboard.png diff --git a/tizen/src/VERSION b/tizen/src/VERSION index 5320adc..9f8e9b6 100644 --- a/tizen/src/VERSION +++ b/tizen/src/VERSION @@ -1 +1 @@ -0.21 +1.0 \ No newline at end of file diff --git a/tizen/src/skin/client/resource/icons/about.png b/tizen/src/skin/client/resource/icons/about.png index 8dea1a0bfc8031e122f4afc543c70b8e72d789f5..4f76588f807e4c8cfb6343bdd1016504f3327d62 100644 GIT binary patch delta 3599 zcmV+q4)F2V2#_3*B!3BTNLh0L01FcU01FcV0GgZ_000V4X+uL$P-t&-Z*ypGa3D!T zLm+T+Z)Rz1WdHzp+MQEpR8#2|J@?-9LQ9B%luK_?6$l_wLW_VDktQl32@pz%A)(n7 zQNa;KMFbnjpojyGj)066Q7jCK3fKqaA)=0hqlk*i`{8?|Yk$_f_vX$1wbwr9tn;0- z&j-K=43f59&ghTmgWD0l;*TI7}*0BAb^tj|`8MF3bZ02F3R#5n-i zEdVe{S7t~6u(trf&JYW-00;~KFj0twDF6g}0AR=?BX|IWnE(_<@>e|ZE3OddDgXd@ znX){&BsoQaTL>+22Uk}v9w^R97b_GtVFF>AKrX_0nSU8Ffiw@`^UMGMppg|3;Dhu1 zc+L*4&dxTDwhmt{>c0m6B4T3W{^ifBa6kY6;dFk{{wy!E8h|?nfNlPwCGG@hUJIag z_lst-4?wj5py}FI^KkfnJUm6Akh$5}<>chpO2k52Vaiv1{%68pz*qfj`F=e7_x0eu z;v|7GU4MZ`1o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcqjPo+3 zB8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q z;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO0Dk~Ppn)o|K^yeJ7%adB9Ki+L!3+Fg zHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_vKpix|QD}yfa1JiQRk#j4a1Z)n2%fLC6RbVIkUx0b+_+BaR3cnT7Zv!AJxWizFb)h!jyGOOZ85F;a?DAXP{m@;!0_ zIe&*-M!JzZ$N(~e{D!NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWw%BIv?Wdily+ylO`+*KY$4Vz$Cr4+G&IO(4Q`uA9rwXSQO+7mGt}d!;r5mBU zM0dY#r|y`ZzFvTyOmC;&dA;ZQ9DOhSRQ+xGr}ak+SO&8UBnI0I&KNw!HF0k|9WTe* z@liuv!$3o&VU=N*;e?U7(SJOn)kcj*4~%KXT;n9;ZN_cJqb3F>Atp;r>P_yNQcbz0 zDW*G2J50yT%*~?B)|oY%Ju%lZ=bPu7*PGwBU|M)uEVih&xMfMQu79>|wtZn|Vi#w( z#jeBdlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!h;8Eq#KMS9gFl*neeosSBfoHYnBQIkwkyowPu(zdm zs`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMeBmZRodjHV?r+_5^X9J0W zL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0?0=B0A@}E)&XLY(4uw#D z=+@8&Vdi0r!+s1Wg@=V#hChyQh*%oYF_$%W(cD9G-$eREmPFp0XE9GXuPsV7Dn6<% zYCPIEx-_~!#x7=A%+*+(SV?S4962s3t~PFLzTf=q^M~S{;tS(@7nm=|U2u7!&cgJC zrxvL$5-d8FKz~e#PB@hCK@cja7K|nG6L%$!3VFgE!e=5c(KgYD*h5?@9!~N|DouKl z?2)`Rc_hU%r7Y#SgeR$xyi5&D-J3d|7MgY-Z8AMNy)lE5k&tmhsv%92wrA>R=4N)w ztYw9={>5&Kw=W)*2gz%*kgNq+Eef_mrsz~!DAy_nvVUh~S7yJ>iOM;atDY;(?aZ^v z+mJV$@1Ote62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~p zu715HdQEGAUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$ z+<4_1hktL%znR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX4c}I@?e+FW+b@^R zDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&_B8C(+grT%{XWUQ z+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?SIDu(gXbmBM!FLxzyDi(mhmCkJc;e zM-ImyzW$x>cP$Mz4ONYt#^NJzM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4Q zQ=0o*Vq3aT%s$c9>fU<%N829{oHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6 z=YM0)-)awU@466l;nGF_i|0GMJI-A4xODQe+vO8ixL2C5I$v$-bm~0*lhaSfyPUh4 zuDM)mx$b(swR>jw=^LIm&fWCAdGQwi*43UlJ>9+YdT;l|_x0Zv-F|W>{m#p~*>@-I zt-MdXU-UrjLD@syht)q@{@mE_+<$7ocYmPs(cDM(28Dyq{*m>M4?_iynUBkc4TkHU zI6gT!;y-fz>HMcd&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M z!p0uH$#^p{Ui4P`?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&Gk-1H z0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F}0009!NklCc$-I-{f=pLuf?FvUx%il}N4D9))b zpB2x4A9vy%nV#|0uR?hu+l_|EUrNf$~E7A!JKwt)A5r1(=T=j4TB_*2JCy_vxr?{9UZgq6EJ z&fVHVMQIhS}XmS})bz;I<5Q zkTe04W1~ z=H8FrrZ?7>f!?@NioNUrGgj;MqxS6l+w$~tuSum^Hc1S234bQ15!*rHA-dg-bmQ)o z^!xU*x%u^Xzyl!JHyrXT)q$qHaAMv%c;qNkjTgk9dJ5Y?hkF}5+`MD%|8zaQywnCd zxw?2f9QKW`+=j^D%PDHLkV1kT?(R%;@ delta 1091 zcmV-J1ibr@9M}kuB!2{FK}|sb0I$e51&Zka000?uMObuGZ)S9NVRB^vL1b@YWgtmy zVP|DhWnpA_ami&o000B(Nkli{}{BPoH35;NV~Y2p~o*ir4SRV1Ed3H@9(O_=npejLAp( zfxgr6;NfQ2VPeF<@b@oR0w91`&=fj&XfkLiOGq;?{QS3%;UA9RU}9v*bdvb!#xK~g z%gls<;rH)l42O^1Vz9Mh005ht&f@g%suVQ_Wd$CF3?CK-#pfo| z)x*jU{%w80wEOt^e*gi5Y~Vj;CI$gMPM{DY3&XieJ=_5Z^fDtb^tssoF+BLspUx&I znfdKMgECO+9zX!W4CEH!X7I98;Q}%_85n>`iItfVe}DS;^PfRMMurF67($pf zGpOF2`XO2D6gZjz0tn{9AK!s$|NQ*Rz`_NL*?&OS{r$thAPKZUM-3E<2$$Ww&%p5f z6)<9eT7Q54W%%-+li?4$V8WMw9Cbk1j{pJ0$j!sc#mDsJ#{N8B5kY>9myDpC1Is-u z%%GGGb7od`)nRmoJlI!0p%Sjsm1Q5%V$usRMbE9NCHhns_;L@pL zGILz7Kl6V}Mn=Yu00G1p6%qO8)7NjzvP$XiP8P69cr=dIJzZEMlT!yicAyVc525BiMz% zfSLn=k-;r0!tmW!;9ztUUP9ZeUFc4>||hJU}a(jrX2hQ@#oK2CW&B8-$-dZD;uK;UohKOEA;_|BZ}azcPFTrf*^l1c7CXmpm~5 z1Q1K;x|Ix^oWS&Q?MeVJ^?zqzV-o-tmdT(*!N9;ka{T}hU;tm?P6X-cWB337002ov JPDHLkV1lq}{@DNk diff --git a/tizen/src/skin/client/resource/icons/advanced.png b/tizen/src/skin/client/resource/icons/advanced.png index 53d3520c56e2a80e242fe8a040369bdb3609b59b..14cf9fae599b75f7eaf00020b0e53785adbe8862 100644 GIT binary patch delta 3525 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 delta 558 zcmV+}0@3})8^;8YB!2{FK}|sb0I$e51&Zka000?uMObuGZ)S9NVRB^vL1b@YWgtmy zVP|DhWnpA_ami&o0005mNklgX00a=#4Fm`vsv8IpKrA4F zk&%&9eU3nE1jLd+tPaE>X&}gu93Ykj;(sSV{1k|jfS3b_UjVTS z5WfTnAY#272*jO0%nihGK-><*3P8*X#D9VK3=s2!JPQy&EJPaE0K_6dyd8*@pe_}F z8VCXhfcOUx{{#piVhx-Q#5zFy2Z+0X_&X54hSHyb_&PKke*y#$1Ca@v6Nt5;E;$Iq z4p4)B0r4gvwtod;QIMAb0*F`_ashE25PtyTULZCGVjig638>*9FaHM!AYxny3aiUd z?|lWuBoM!YM#dK)_5xyMAZ7z81_&S)A`AnC-z^}{1mb^CgVsZn%PAoK1~vFMNCQ9s zu@GSxC?-3g8b3q5D+yI|1!~xLuy=s~Ab@ar*${{~1Ap;aAU1{O22rTt2ceol_yG{F z0Ae4gml**92$oYou91h@W)H-QYnYoHPF7E1qyMvyerm5fmFH_&AB9Uy>UE-XT_ z6%^nVK&%hMnn*4~&i{N+aWNnk0%Bg63jqQM=0aAega}mPAJnz)kOQ0;01!a1Ncjg1 wa8OQQh9}bB!6_diM>GHkAVz9e0RRC804dpb@;3=mqyPW_07*qoM6N<$f^UY%MF0Q* diff --git a/tizen/src/skin/client/resource/icons/close.png b/tizen/src/skin/client/resource/icons/close.png index 39de0f004431d011eca19aeac541c6eca84a795c..a1395ce2c49283764ebf024661cadfb099da77f1 100644 GIT binary patch delta 3603 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 Z07~9pnH~@}BMbll002ovPDHLkV1mDG(4_zX delta 1014 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 BB6|P; literal 0 HcmV?d00001 diff --git a/tizen/src/skin/client/resource/icons/detail_info.png b/tizen/src/skin/client/resource/icons/detail_info.png new file mode 100644 index 0000000000000000000000000000000000000000..149ffa263ec7ef81087af5e9930de350e75fd505 GIT binary patch literal 3426 zcmV-o4W06dP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0007wNklZEdXu7{AZY&odkjFUg&qox^oqoL>o z(d+ftxBmcAN}O|e?~?(ntgIlV94Kq8Q%WVUSQSDr9*^1F+{74z)|$GmvDPA`{1dlJ zjg%50M5Q7RRaF7ty+=w(Q4|OvkW!+Q!h26uRg`6!T8^Nx;<>rGvnqr@Q4~~FMZe!q zZCGnl)y_G#wzeqCGFH;!F!HLkKA>_%qj~RB)(F@%4bHiwZ0i`o%-|@CM;r8n4K4{BJNAoKgP*$*a&>V_rT2 zKq=J%%13838hP1mH|NbchcSlH>2s)s%gC97Qyj;Fgb=K*u0Bhm4|G>G?>*t@Tna8u&9{W; z8t@x1=Pn;+Yc2BFDF9~9U&VY}ZgJKH3n8HL_pfVOYqsxRM{j2a|Ly!50P!H~@p6~$oB#j-07*qoM6N<$ Ef<-N9s{jB1 literal 0 HcmV?d00001 diff --git a/tizen/src/skin/client/resource/icons/device_info.png b/tizen/src/skin/client/resource/icons/device_info.png deleted file mode 100644 index f1db57e3bd41edd26f7cd9e87824d6ec7a4931bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 970 zcmV;*12z1KP)vg&8Dw z^XJc>(EtI2(?Fm>)8*ymm8GSn7!U@6@IMA1VgMQa?b|noU%!4Z@bU36eE9HD`R2`= z(*XhqpMjd6K7C?QR8(L9VUR2S{Q1rB=QqSv|Nj34^Zx78ygFwgapr;gamt$fB*giUGoPRUY{7AJ>LbS8KGWhWO)7h9mC_toD3!=W(*Kv zh#WuwVHgMuXbv46Nuj2uD4>deAQ3bbpwQ!Bc=zr$LrnBe1{P)}utooX0SpRbfB?cU zkco*=QCnL^fq~&2koOA`6X*sqa)86`=dZ7zpaF}5!WAS35I`sfva&KWDJcngMMawf z4FpR4{|)yFvim?H+}vyo931}`n1PYS$jk`07$AU{(7dbWG{lpqsj9?=< z8Fuf!3v_@8&>%(zW=4cD00D$zpr9b9y^oK+HZwCT130l^1x&!?@}J?}y^jn+f)WrH zGBU$u0RjkaATVIH!o!V|92``EydOBT*1!ME3UD^eITFaQJ) z3)Cu?ze%5p3WPoBJCc=_rJFo*C1BZY~9i4l=40Rjl@LKar0 zpoRvoV10cBNHPIx!j9P(fN7gy)8e4;11~QRP@D-ITOcz50*Hl;joBzE z!MxGM)mY@`&%bb|V{;uyYS+&53|qEbXZZE|FT?gHp8JqM;Js! zMSp=Vm6a=8+3tYlLG02cVe-Xh0DI5R(0Tw3L0Ro5xkAay$jZ1+F)j_@hX@>a*%mxJo s)Ibpb_wV0#fpjK705MX#3IGT&0H?KYD9t$1W&i*H07*qoM6N<$f@`m&Z~y=R diff --git a/tizen/src/skin/client/resource/icons/execute.png b/tizen/src/skin/client/resource/icons/execute.png deleted file mode 100644 index 638d5b33adc8c90c10e58fdfb93ab876674a689f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmV<510ei~P)f?b8&GkWoBkp|NHkZSPWq)BLgEN1H<3H{}}%L`^Uh-!VHqT z`Sa(`=x5KKodu}?2p|jtfd);NmzP(TmX=~b7zo1u7=VZYWc0Uh-xz-V`oX}*$H(yD z!$;+tH*Zb{3Y&q{0t65?12sQ=`oyw7r<{R7Po05*otc5*AMRlB%*6Iy2M8c0 zECzo6_3IY{!^<}e3^yMG{RdRS!i3YnzkmOLsP8a7KmcL5kco+jfsKugf#EAq&7J!| z7xFSND2XzF0}t$XcyL15j41j60tl@x$yPoUl3pl$(SDElAK z66Aye5J0#M{Ph=N=!Y*rL$5P1eEiM8@Pi3q=r;%k#Wup(3=9AP#DX($enDcG;UAEG z@(dWbK(DK)GBB_LBkAuygc)e*7$AUf8~77w5FeB0Psm?^~|p@=8f1HJ1Q$&kmrogwVheuku_=?vS84}l{G*-U@{Vu1#i z6vJI$dONull(K=|0j4`9U~KwkF)(m&F))1jz`*eSIRnF~?FL1231;9=-K z@sOeS?FWYU+OZ4_k8d)3`~D5ZBLD#eHgN4nu0w0L0|T0Yi-DDu$+}eZ4|DbN`w+w4 z0bTayIm5CSe;JbB@-zIA_G9>?t__J{p!lm-uR!6*2{RBNfEdvORZ&s#6tJ{0xv%$* zkpt-K6F}dFJQ4-xZ(d$rxH?emg7W>3A3y#8)t`U+_AR*h0tg^%=`a&m4jx|nnt`+7 z84tsE7ET6EPKX1(eE9+nt^d%Z0y6aX@85TUbS6wQKmajPy9xjZFaUXhQnEd-ZpHur N002ovPDHLkV1m~Mw(bA` diff --git a/tizen/src/skin/client/resource/icons/gps.png b/tizen/src/skin/client/resource/icons/gps.png deleted file mode 100644 index a1cf0f8e76698dc4d7f92e3dcffcfcf8316c7edf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1164 zcmV;71atd|P)7KW2slo@WGpUm>} zyCks&0t65vC=401)0i1p*c}<9O{OyFc&IUO@Gvl(*uo$-zwQ>(r}r-Z7#Lr?eEIS> zF$Mwz5X8%WzOyqhvW2oa$E%g8i8BcEb2Bhl`!l@Kb7m6$|CQ&}t5?4n85tRf!2kgS zG4LzbKL+N%ul@tgNfu{dND%;u0psB3_pjWHzkk5J14N8q3O4`eV>^#W~OiUJkzrW=GX<}yK`pd!b@7lL7 zKjs1x-8-NVJnaDl5Tme^WanG&Y!!x}G+(w--~F6SKQA(Ha&pK%xw+}av-hVNIeB^{ zeJeF(15)%^1w?s3n*RO#_DlOv^5YqOD~&Cvj*5s-NR0RT||uKxq|^Yr+Zd~&u7>*6f_00I5o>hjp;_5J(&1rT5o zK~6<~PW>bs0^tB42sVpc&ZhUY9oK+b1QP&fhv5H15BeS7fm4+FOb!zWf&aH_D9oy@?(YXXt| z0}3sOS3nkhXH^9<9)i*|6F>lAH4vB-{rF}B!LNt6JOD)o5QFG%00G2^USh+N4HU2edG^eL!ZEty-?>BGg=9p9xj0vD zd;Mtt#h)L6+40lguV0P=)tv|8d!WDo2p~cRf;j9z3@kDjj2Iy~g7-f-p26AeIn-s( epdtGoAiw}s>|qSfxrLJe0000=Spmd9_usol47XaB^`!|>zBe+HmF21X=(pMV07zA-R-1Dg5= z$o}^WDEI?}ft+7I89*V%{^>b`-o{CyKv8Lc0Al(0?a$Yjs+#QIMA;d>d;zKfs$+s0 z`X5L<|INVg?jw-%2Z%wo0o5>kh0@<3w*LIZ$8he(y`Mmy06+k-Z~{FfzjrIc(M#7E zUcP+Gz{ zG}o_QWys9V1P0|VhJSw{!2}RMEKuh$eEIg7!N$&#ftQ;H7~cOFq~s(SIJvkO?44{G zm|2;@G!HKigORZT0}Bf)FbEkL1VscGK74x5@ag*}23Upz2p|@)alion{o^OY;r&M$ zRMnIie*gKy@b29Q1|=0GhKpw}GFV!hF&sa75@?t{!<{?#8Tf?+7+6`D86Mty#2_B( z%kcfjH->-z|AGw!2p|@a13`v<|NfmpPF|9Mo0l7C+g}ED4mJi>W<~}DWm%x&e_)!K zjfp{AN{oSnoek(hCI)#$8HUfFzc76N@)e$q00Ic?Wsu~LpWhi?ym$jlBg_o{fG+(0 z?K@EFA5iQS0~ap`Fpa)uU;~ER+gERaLBS4;6c&beZ{9LU$;&W&{{>VF^)o;KlE`2M zKp+UA)(#Xw{r_hcvrfY@hpcYmL7r+&hqT#{HE{97!R@OY46OSCcGtck5|>9fJ8CMJ zAYOeZks}582R;Ibi0tlpr7gX#3F&|RNMGgR$b^rmy2#IM1P9SEbLV^7oAix0WufTk84iS0) O0000C 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 By`caA delta 1225 zcmV;)1UCEq8{G+zB!2{FK}|sb0I$e51&Zka000?uMObuGZ)S9NVRB^vL1b@YWgtmy zVP|DhWnpA_ami&o000DUNklc)I5dgMfk*!`-b% z7#<(J$iT?RD9gyiboR^3H@h#tewg&@|KFeA{{CWMWny9Iy??up0R{j9h>3v+z#+iP z@c-XGCLRe9Q8`FW1>gn^%aFub{Z7wko09VM_~4|bhmxPRmf126&@e*gQ+z|YFbplo9bR(|)$ zX@;Y3?|&^5W#>siHV`0y;0FGD_nCo(osB`#RFmP&wfhVo?>}Yu@Zf3x;Wu}VeE9vH z0T@tX5*)nK#h%D9yn676;pF=VOM%+bSs9ssBO3@1K#cH&{o~I!h9AE<-`#k?@b>D% zRk!ZmoZfM0P2qore@=h@{?*ob%JfN+o$tN2fPWOj!PmD|sd!iyIAuh#i;Ih|U}0g= z6crWa2N?qpKnO2?{qg(v&)=8+{rVfRR#?8#kJX1qMBTPa< zf`8%q_3I4ZzI}^0!1etV4-ZegtE;OGr-;CQ4h{|m5C&N&CMNcmkB<**3_t*(#Il>4 zE6B`QK*OR;OiaKrtD>U9ASo$19cT#y7Z(?Ul#~>MtgI{p(2ERr@7`tL=jUhO=H`Z* z0T4ha2C}oWFE=nS2nJ%XK_Ejwnt%WP4Sy;ez#2gYfD8p0_Wu2Q24Ju-2nq_q%>W1> z6a#@?2zGLEVgPxSmzS3T7)A_2LP8Ax{`~_R2n;KRpFe*xoIih_0T@vX_V)H5*Q4ZR zfB-@%9G*Xao^t-&IR+6C5e86Tg8;~tAeS*QF)=)Q_6!_m0s;aIHa0e3Z-4*(9e;$G zVP*gX5Q+poozx`Xc!wiFtNXV`^KD)kM|+S+rWtV z2{iOKt|AX0fLO2z9y@+~x{Hf5t3sHlXb&eRCo3?yd?_!l_(Du!3=lv#3s@Ew=9%Zu npIZ$~)UScz_m6={01#jR$kLJ}+df}F00000NkvXXu0mjf!Lmt+ diff --git a/tizen/src/skin/client/resource/icons/save_screenshot_dialog.png b/tizen/src/skin/client/resource/icons/save_screenshot_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..523fe9efd30f1f4bf831061ed19983e404a81dda GIT binary patch literal 3272 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 D`~$mU literal 0 HcmV?d00001 diff --git a/tizen/src/skin/client/resource/icons/scaling.png b/tizen/src/skin/client/resource/icons/scaling.png deleted file mode 100644 index 5a8114b0c488fb1bec16da78cee15ea0380295eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1216 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 diff --git a/tizen/src/skin/client/resource/icons/shell.png b/tizen/src/skin/client/resource/icons/shell.png index faa04db2cb662cc4435076bd1ff5f2341e04f557..e89f1b1690a65fa25256a9ae5aab1fe7ddfd5d4a 100644 GIT binary patch delta 3499 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 FV1k0aF{%In diff --git a/tizen/src/skin/client/resource/icons/usb_keyboard.png b/tizen/src/skin/client/resource/icons/usb_keyboard.png new file mode 100644 index 0000000000000000000000000000000000000000..69a87f3207088fff6818621c88924c9804fffa5f GIT binary patch literal 3436 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 O0000 mouse move into LCD area - if( isHoverState ) { - if (currentHoverRegion.width == 0 && currentHoverRegion.height == 0) { + if ( isHoverState ) { + if ( currentHoverRegion.width == 0 && currentHoverRegion.height == 0 ) { shell.redraw(); } else { - shell.redraw( currentHoverRegion.x, currentHoverRegion.y, - currentHoverRegion.width + 1, currentHoverRegion.height + 1, false ); + shell.redraw( currentHoverRegion.x, currentHoverRegion.y, currentHoverRegion.width + 1, + currentHoverRegion.height + 1, false ); } isHoverState = false; currentHoverRegion.width = currentHoverRegion.height = 0; } } - - } ); - - shell.addMouseMoveListener( new MouseMoveListener() { + + }; + + shell.addMouseTrackListener( shellMouseTrackListener ); + + shellMouseMoveListener = new MouseMoveListener() { @Override public void mouseMove( MouseEvent e ) { @@ -394,12 +556,12 @@ public class EmulatorSkin { SkinRegion region = SkinUtil.getHardKeyArea( e.x, e.y, currentRotationId, currentScale ); if ( null == region ) { - if( isHoverState ) { - if (currentHoverRegion.width == 0 && currentHoverRegion.height == 0) { + if ( isHoverState ) { + if ( currentHoverRegion.width == 0 && currentHoverRegion.height == 0 ) { shell.redraw(); } else { - shell.redraw( currentHoverRegion.x, currentHoverRegion.y, - currentHoverRegion.width + 1, currentHoverRegion.height + 1, false ); + shell.redraw( currentHoverRegion.x, currentHoverRegion.y, currentHoverRegion.width + 1, + currentHoverRegion.height + 1, false ); } isHoverState = false; currentHoverRegion.width = currentHoverRegion.height = 0; @@ -417,9 +579,11 @@ public class EmulatorSkin { } } - } ); + }; - shell.addMouseListener( new MouseListener() { + shell.addMouseMoveListener( shellMouseMoveListener ); + + shellMouseListener = new MouseListener() { @Override public void mouseUp( MouseEvent e ) { @@ -432,16 +596,16 @@ public class EmulatorSkin { int keyCode = SkinUtil.getHardKeyCode( e.x, e.y, currentRotationId, currentScale ); if ( EmulatorConstants.UNKNOWN_KEYCODE != keyCode ) { - if (currentHoverRegion.width == 0 && currentHoverRegion.height == 0) { + if ( currentHoverRegion.width == 0 && currentHoverRegion.height == 0 ) { shell.redraw(); } else { - shell.redraw( currentHoverRegion.x, currentHoverRegion.y, - currentHoverRegion.width + 1, currentHoverRegion.height + 1, false ); + shell.redraw( currentHoverRegion.x, currentHoverRegion.y, currentHoverRegion.width + 1, + currentHoverRegion.height + 1, false ); } KeyEventData keyEventData = new KeyEventData( KeyEventType.RELEASED.value(), keyCode ); communicator.sendToQEMU( SendCommand.SEND_HARD_KEY_EVENT, keyEventData ); } - + } } @@ -462,9 +626,9 @@ public class EmulatorSkin { if ( null != currentKeyPressedImage ) { GC gc = new GC( shell ); - gc.drawImage( currentKeyPressedImage, - region.x + 1, region.y + 1, region.width - 1, region.height - 1, //src - region.x + 1, region.y + 1, region.width - 1, region.height - 1 ); //dst + gc.drawImage( currentKeyPressedImage, region.x + 1, region.y + 1, region.width - 1, + region.height - 1, // src + region.x + 1, region.y + 1, region.width - 1, region.height - 1 ); // dst gc.dispose(); } @@ -477,14 +641,35 @@ public class EmulatorSkin { @Override public void mouseDoubleClick( MouseEvent e ) { } - } ); + }; + + shell.addMouseListener( shellMouseListener ); + + } + + private void removeShellListeners() { + + if ( null != shellCloseListener ) { + shell.removeListener( SWT.Close, shellCloseListener ); + } + if ( null != shellPaintListener ) { + shell.removePaintListener( shellPaintListener ); + } + if ( null != shellMouseTrackListener ) { + shell.removeMouseTrackListener( shellMouseTrackListener ); + } + if ( null != shellMouseMoveListener ) { + shell.removeMouseMoveListener( shellMouseMoveListener ); + } + if ( null != shellMouseListener ) { + shell.removeMouseListener( shellMouseListener ); + } } - private void addLCDListener( final Canvas canvas ) { + private void addCanvasListener( final Shell shell, final Canvas canvas ) { - // remove 'input method' menu item - canvas.addMenuDetectListener( new MenuDetectListener() { + canvasMenuDetectListener = new MenuDetectListener() { @Override public void menuDetected( MenuDetectEvent e ) { Menu menu = shell.getMenu(); @@ -492,28 +677,33 @@ public class EmulatorSkin { menu.setVisible( true ); e.doit = false; } - } ); + }; - canvas.addDragDetectListener( new DragDetectListener() { + // remove 'input method' menu item ( avoid bug ) + canvas.addMenuDetectListener( canvasMenuDetectListener ); + + canvasDragDetectListener = new DragDetectListener() { @Override public void dragDetected( DragDetectEvent e ) { - if( logger.isLoggable( Level.FINE ) ) { + if ( logger.isLoggable( Level.FINE ) ) { logger.fine( "dragDetected e.button:" + e.button ); } if ( 1 == e.button && // left button e.x > 0 && e.x < canvas.getSize().x && e.y > 0 && e.y < canvas.getSize().y ) { - if( logger.isLoggable( Level.FINE ) ) { + if ( logger.isLoggable( Level.FINE ) ) { logger.fine( "dragDetected in LCD" ); } EmulatorSkin.this.isDragStartedInLCD = true; } } - } ); + }; + + canvas.addDragDetectListener( canvasDragDetectListener ); - canvas.addMouseMoveListener( new MouseMoveListener() { + canvasMouseMoveListener = new MouseMoveListener() { @Override public void mouseMove( MouseEvent e ) { @@ -543,14 +733,16 @@ public class EmulatorSkin { int[] geometry = SkinUtil.convertMouseGeometry( e.x, e.y, currentLcdWidth, currentLcdHeight, currentScale, currentAngle ); - + MouseEventData mouseEventData = new MouseEventData( eventType, geometry[0], geometry[1], 0 ); communicator.sendToQEMU( SendCommand.SEND_MOUSE_EVENT, mouseEventData ); } } - } ); + }; + + canvas.addMouseMoveListener( canvasMouseMoveListener ); - canvas.addMouseListener( new MouseListener() { + canvasMouseListener = new MouseListener() { @Override public void mouseUp( MouseEvent e ) { @@ -586,9 +778,11 @@ public class EmulatorSkin { @Override public void mouseDoubleClick( MouseEvent e ) { } - } ); + }; + + canvas.addMouseListener( canvasMouseListener ); - canvas.addKeyListener( new KeyListener() { + canvasKeyListener = new KeyListener() { @Override public void keyReleased( KeyEvent e ) { @@ -607,64 +801,81 @@ public class EmulatorSkin { communicator.sendToQEMU( SendCommand.SEND_KEY_EVENT, keyEventData ); } - } ); + }; + + canvas.addKeyListener( canvasKeyListener ); + + } + + private void removeCanvasListeners() { + + if ( null != canvasDragDetectListener ) { + lcdCanvas.removeDragDetectListener( canvasDragDetectListener ); + } + if ( null != canvasMouseMoveListener ) { + lcdCanvas.removeMouseMoveListener( canvasMouseMoveListener ); + } + if ( null != canvasMouseListener ) { + lcdCanvas.removeMouseListener( canvasMouseListener ); + } + if ( null != canvasKeyListener ) { + lcdCanvas.removeKeyListener( canvasKeyListener ); + } + if ( null != canvasMenuDetectListener ) { + lcdCanvas.removeMenuDetectListener( canvasMenuDetectListener ); + } } - private void addMenuItems( final Menu menu ) { + private void addMenuItems( final Shell shell, final Menu menu ) { final MenuItem deviceInfoItem = new MenuItem( menu, SWT.PUSH ); String emulatorName = SkinUtil.makeEmulatorName( config ); deviceInfoItem.setText( emulatorName ); -// deviceInfoItem.setImage( imageRegistry.getIcon( IconName.DEVICE_INFO ) ); - //FIXME - deviceInfoItem.setEnabled( false ); + deviceInfoItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.DETAIL_INFO ) ); deviceInfoItem.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { - if( logger.isLoggable( Level.FINE ) ) { + if ( logger.isLoggable( Level.FINE ) ) { logger.fine( "Open device info" ); } } } ); - deviceInfoItem.addListener( SWT.PaintItem, new Listener() { - @Override - public void handleEvent( Event event ) { - event.gc.drawImage( imageRegistry.getIcon( IconName.DEVICE_INFO ), 0, 0 ); - } - } ); - new MenuItem( menu, SWT.SEPARATOR ); - final MenuItem aotItem = new MenuItem( menu, SWT.CHECK ); - aotItem.setText( "Always On Top" ); - //FIXME - aotItem.setEnabled( false ); - aotItem.addSelectionListener( new SelectionAdapter() { - private boolean isTop; + final MenuItem onTopItem = new MenuItem( menu, SWT.CHECK ); + onTopItem.setText( "Always On Top" ); + onTopItem.setSelection( isOnTop ); + + onTopItem.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { - if( logger.isLoggable( Level.FINE ) ) { - logger.fine( "Select Always On Top. : " + aotItem.getSelection() ); + + final boolean isOnTop = onTopItem.getSelection(); + + if ( logger.isLoggable( Level.FINE ) ) { + logger.fine( "Select Always On Top. : " + isOnTop ); } - isTop = !isTop; - //TODO + + readyToReopen( EmulatorSkin.this, isOnTop ); + } } ); final MenuItem rotateItem = new MenuItem( menu, SWT.CASCADE ); rotateItem.setText( "Rotate" ); -// rotateItem.setImage( imageRegistry.getIcon( IconName.ROTATE ) ); + rotateItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.ROTATE ) ); Menu rotateMenu = createRotateMenu( menu.getShell() ); rotateItem.setMenu( rotateMenu ); final MenuItem scaleItem = new MenuItem( menu, SWT.CASCADE ); scaleItem.setText( "Scale" ); -// scaleItem.setImage( imageRegistry.getIcon( IconName.SCALING ) ); + scaleItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.SCALE ) ); + Menu scaleMenu = createScaleMenu( menu.getShell() ); scaleItem.setMenu( scaleMenu ); @@ -672,13 +883,15 @@ public class EmulatorSkin { final MenuItem advancedItem = new MenuItem( menu, SWT.CASCADE ); advancedItem.setText( "Advanced" ); -// advancedItem.setImage( imageRegistry.getIcon( IconName.ADVANCED ) ); + advancedItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.ADVANCED ) ); + Menu advancedMenu = createAdvancedMenu( menu.getShell() ); advancedItem.setMenu( advancedMenu ); final MenuItem shellItem = new MenuItem( menu, SWT.PUSH ); shellItem.setText( "Shell" ); -// shellItem.setImage( imageRegistry.getIcon( IconName.SHELL ) ); + shellItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.SHELL ) ); + shellItem.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { @@ -688,28 +901,27 @@ public class EmulatorSkin { } String sdbPath = SkinUtil.getSdbPath(); - String portNumber = StringUtil.nvl(config.getArg( ArgsConstants.NET_BASE_PORT )); + String portNumber = StringUtil.nvl( config.getArg( ArgsConstants.NET_BASE_PORT ) ); - if (!StringUtil.isEmpty(portNumber) && !StringUtil.isEmpty(portNumber)) { - int portSdb = Integer.parseInt(portNumber) + 1; + if ( !StringUtil.isEmpty( portNumber ) && !StringUtil.isEmpty( portNumber ) ) { + int portSdb = Integer.parseInt( portNumber ) + 1; - ProcessBuilder procConnect = new ProcessBuilder(sdbPath, "connect", "localhost:" + portSdb); + ProcessBuilder procConnect = new ProcessBuilder( sdbPath, "connect", "localhost:" + portSdb ); ProcessBuilder procSdb = new ProcessBuilder(); - if (SkinUtil.isLinuxPlatform()) { - procSdb.command("/usr/bin/gnome-terminal", "--disable-factory", - "--title=" + SkinUtil.makeEmulatorName(config), "-x", - sdbPath, "-s", "localhost:" + portSdb, "shell"); - } else if (SkinUtil.isWindowsPlatform()) { - procSdb.command("cmd.exe", "/c", "start", - sdbPath, "-s", "localhost:" + portSdb, "shell"); + if ( SkinUtil.isLinuxPlatform() ) { + procSdb.command( "/usr/bin/gnome-terminal", "--disable-factory", + "--title=" + SkinUtil.makeEmulatorName( config ), "-x", sdbPath, "-s", "localhost:" + + portSdb, "shell" ); + } else if ( SkinUtil.isWindowsPlatform() ) { + procSdb.command( "cmd.exe", "/c", "start", sdbPath, "-s", "localhost:" + portSdb, "shell" ); } try { - procConnect.start(); //connect with sdb - procSdb.start(); //open sdb shell - } catch (Exception ee) { - logger.log(Level.SEVERE, ee.getMessage(), ee); + procConnect.start(); // connect with sdb + procSdb.start(); // open sdb shell + } catch ( Exception ee ) { + logger.log( Level.SEVERE, ee.getMessage(), ee ); SkinUtil.openMessage( shell, null, "Fail to open Shell.", SWT.ICON_ERROR, config ); } } @@ -722,7 +934,7 @@ public class EmulatorSkin { MenuItem closeItem = new MenuItem( menu, SWT.PUSH ); closeItem.setText( "Close" ); -// closeItem.setImage( imageRegistry.getIcon( IconName.CLOSE ) ); + closeItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.CLOSE ) ); closeItem.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { @@ -738,10 +950,6 @@ public class EmulatorSkin { final List rotationList = new ArrayList(); -// final short storedDirectionId = config.getPropertyShort( PropertiesConstants.WINDOW_ROTATION, -// (short) RotationInfo.PORTRAIT.id() ); - final short storedDirectionId = RotationInfo.PORTRAIT.id(); - Iterator> iterator = SkinRotation.getRotationIterator(); while ( iterator.hasNext() ) { @@ -753,11 +961,8 @@ public class EmulatorSkin { final MenuItem menuItem = new MenuItem( menu, SWT.RADIO ); menuItem.setText( section.getName().value() ); menuItem.setData( rotationId ); - if ( storedDirectionId == rotationId ) { - menuItem.setSelection( true ); - } - if ( RotationInfo.PORTRAIT.id() == rotationId ) { + if ( currentRotationId == rotationId ) { menuItem.setSelection( true ); } @@ -789,9 +994,10 @@ public class EmulatorSkin { break; } } - /////////// - - SkinUtil.openMessage( shell, null, "Rotation is not ready.\nPlease, wait.", SWT.ICON_WARNING, config ); + // ///////// + + SkinUtil.openMessage( shell, null, "Rotation is not ready.\nPlease, wait.", SWT.ICON_WARNING, + config ); return; @@ -880,54 +1086,50 @@ public class EmulatorSkin { private Menu createAdvancedMenu( final Shell shell ) { - Menu menu = new Menu( shell, SWT.DROP_DOWN ); + final Menu menu = new Menu( shell, SWT.DROP_DOWN ); final MenuItem screenshotItem = new MenuItem( menu, SWT.PUSH ); screenshotItem.setText( "Screen Shot" ); -// screenshotItem.setImage( imageRegistry.getIcon( IconName.SCREENSHOT ) ); + screenshotItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.SCREENSHOT ) ); screenshotItem.addSelectionListener( new SelectionAdapter() { - - private boolean isOpen; - + @Override public void widgetSelected( SelectionEvent e ) { - - ScreenShotDialog dialog = null; - + + if ( isScreenShotOpened ) { + return; + } + try { - - if( !isOpen ) { - isOpen = true; - dialog = new ScreenShotDialog( shell, communicator, EmulatorSkin.this, config ); - dialog.open(); - } - + + isScreenShotOpened = true; + + screenShotDialog = new ScreenShotDialog( shell, communicator, EmulatorSkin.this, config ); + screenShotDialog.open(); + } catch ( ScreenShotException ex ) { - + logger.log( Level.SEVERE, ex.getMessage(), ex ); SkinUtil.openMessage( shell, null, "Fail to create a screen shot.", SWT.ICON_ERROR, config ); - + } catch ( Exception ex ) { - + // defense exception handling. logger.log( Level.SEVERE, ex.getMessage(), ex ); String errorMessage = "Internal Error.\n[" + ex.getMessage() + "]"; SkinUtil.openMessage( shell, null, errorMessage, SWT.ICON_ERROR, config ); - if( null != dialog ) { - dialog.close(); - } - + } finally { - isOpen = false; + isScreenShotOpened = false; } - + } } ); final MenuItem usbKeyboardItem = new MenuItem( menu, SWT.CASCADE ); usbKeyboardItem.setText( "USB Keyboard" ); -// usbKeyboardItem.setImage( imageRegistry.getIcon( IconName.USB_KEBOARD ) ); - + usbKeyboardItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.USB_KEBOARD ) ); + Menu usbKeyBoardMenu = new Menu( shell, SWT.DROP_DOWN ); final MenuItem usbOnItem = new MenuItem( usbKeyBoardMenu, SWT.RADIO ); @@ -936,7 +1138,7 @@ public class EmulatorSkin { final MenuItem usbOffItem = new MenuItem( usbKeyBoardMenu, SWT.RADIO ); usbOffItem.setText( "Off" ); usbOffItem.setSelection( true ); - + SelectionAdapter usbSelectionAdaptor = new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { @@ -957,14 +1159,16 @@ public class EmulatorSkin { final MenuItem aboutItem = new MenuItem( menu, SWT.PUSH ); aboutItem.setText( "About" ); -// aboutItem.setImage( imageRegistry.getIcon( IconName.ABOUT ) ); + aboutItem.setData( MENU_ITEM_IMAGE, imageRegistry.getIcon( IconName.ABOUT ) ); + aboutItem.addSelectionListener( new SelectionAdapter() { private boolean isOpen; + @Override public void widgetSelected( SelectionEvent e ) { - if( !isOpen ) { + if ( !isOpen ) { isOpen = true; - AboutDialog dialog = new AboutDialog( shell, SWT.DIALOG_TRIM ); + AboutDialog dialog = new AboutDialog( shell ); dialog.open(); isOpen = false; } @@ -981,16 +1185,16 @@ public class EmulatorSkin { /* disconnect with sdb */ String sdbPath = SkinUtil.getSdbPath(); - String portNumber = StringUtil.nvl(config.getArg( ArgsConstants.NET_BASE_PORT )); + String portNumber = StringUtil.nvl( config.getArg( ArgsConstants.NET_BASE_PORT ) ); - if (!StringUtil.isEmpty(portNumber) && !StringUtil.isEmpty(portNumber)) { - int portSdb = Integer.parseInt(portNumber) + 1; + if ( !StringUtil.isEmpty( portNumber ) && !StringUtil.isEmpty( portNumber ) ) { + int portSdb = Integer.parseInt( portNumber ) + 1; - ProcessBuilder procDisconnect = new ProcessBuilder(sdbPath, "connect", "localhost:" + portSdb); + ProcessBuilder procDisconnect = new ProcessBuilder( sdbPath, "connect", "localhost:" + portSdb ); try { procDisconnect.start(); - } catch (IOException e) { - logger.log(Level.SEVERE, e.getMessage(), e); + } catch ( IOException e ) { + logger.log( Level.SEVERE, e.getMessage(), e ); } } diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java index 5e41fbe..7d7f6c0 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java @@ -39,10 +39,13 @@ import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; +import org.eclipse.swt.widgets.Display; +import org.tizen.emulator.skin.EmulatorSkin.SkinReopenPolicy; import org.tizen.emulator.skin.comm.sock.SocketCommunicator; import org.tizen.emulator.skin.config.EmulatorConfig; import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants; import org.tizen.emulator.skin.config.EmulatorConfig.ConfigPropertiesConstants; +import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants; import org.tizen.emulator.skin.dbi.EmulatorUI; import org.tizen.emulator.skin.exception.JaxbException; import org.tizen.emulator.skin.image.ImageRegistry; @@ -101,7 +104,12 @@ public class EmulatorSkinMain { EmulatorConfig config = new EmulatorConfig( argsMap, dbiContents, skinProperties, skinPropFilePath, configProperties ); - EmulatorSkin skin = new EmulatorSkin( config ); + ImageRegistry.getInstance().initialize( config ); + + String onTopVal = config.getSkinProperty( SkinPropertiesConstants.WINDOW_ONTOP, Boolean.FALSE.toString() ); + boolean isOnTop = Boolean.parseBoolean( onTopVal ); + + EmulatorSkin skin = new EmulatorSkin( config, isOnTop ); int windowHandleId = skin.compose(); int uid = Integer.parseInt( config.getArg( ArgsConstants.UID ) ); @@ -117,9 +125,29 @@ public class EmulatorSkinMain { Thread communicatorThread = new Thread( communicator ); communicatorThread.start(); + + SkinReopenPolicy reopenPolicy = skin.open(); + + while( true ) { + + if( null != reopenPolicy ) { + + if( reopenPolicy.isReopen() ) { + + EmulatorSkin reopenSkin = reopenPolicy.getReopenSkin(); + logger.info( "Reopen skin dialog." ); + reopenPolicy = reopenSkin.open(); + + }else { + break; + } + + }else { + break; + } - skin.open(); - + } + } else { logger.severe( "CommSocket is null." ); } @@ -133,6 +161,8 @@ public class EmulatorSkinMain { } } finally { + ImageRegistry.getInstance().dispose(); + Display.getDefault().close(); SkinLogger.end(); } @@ -281,7 +311,5 @@ public class EmulatorSkinMain { return properties; } - - } diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java index aed2de8..7f73707 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java @@ -114,7 +114,7 @@ public class SocketCommunicator implements ICommunicator { private ScheduledExecutorService heartbeatExecutor; private boolean isSensorDaemonStarted; - + public SocketCommunicator( EmulatorConfig config, int uId, int windowHandleId, EmulatorSkin skin ) { this.config = config; @@ -396,7 +396,15 @@ public class SocketCommunicator implements ICommunicator { heartbeatExecutor.shutdownNow(); } IOUtil.closeSocket( socket ); - skin.shutdown(); + synchronized ( this ) { + skin.shutdown(); + } + } + + public void resetSkin( EmulatorSkin skin ) { + synchronized ( this ) { + this.skin = skin; + } } } \ No newline at end of file diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/config/EmulatorConfig.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/config/EmulatorConfig.java index 21e3ba6..7009096 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/config/EmulatorConfig.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/config/EmulatorConfig.java @@ -68,6 +68,7 @@ public class EmulatorConfig { public static final String WINDOW_Y = "window.y"; public static final String WINDOW_ROTATION = "window.rotate"; public static final String WINDOW_SCALE = "window.scale"; + public static final String WINDOW_ONTOP = "window.ontop"; // always on top } public interface ConfigPropertiesConstants { diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/AboutDialog.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/AboutDialog.java index 807d9b8..d75befb 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/AboutDialog.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/AboutDialog.java @@ -55,10 +55,14 @@ public class AboutDialog extends SkinDialog { public static final String ABOUT_PROP_FILENAME = "about.properties"; + public static final String PROP_KEY_VERSION = "version"; + public static final String PROP_KEY_BUILD_TIME = "build_time"; + public static final String PROP_KEY_GIT_VERSION = "build_git_commit"; + private Logger logger = SkinLogger.getSkinLogger( AboutDialog.class ).getLogger(); - public AboutDialog( Shell parent, int style ) { - super( parent, "About Tizen Emulator", style ); + public AboutDialog( Shell parent ) { + super( parent, "About Tizen Emulator", SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL ); } @Override @@ -94,31 +98,36 @@ public class AboutDialog extends SkinDialog { noInformation = true; } - String defaultInformation = "no information"; + String defaultInformation = "No information"; Text versionText = new Text( composite, SWT.NONE ); if( noInformation ) { - versionText.setText( "Version : " + defaultInformation ); + versionText.setText( "Version" + " : " + defaultInformation ); }else { - versionText.setText( "Version : Tizen SDK " + StringUtil.nvl( properties.getProperty( "version" ) ) ); + versionText.setText( "Version" + " : Tizen SDK " + getValue( properties, PROP_KEY_VERSION ) ); } versionText.setEditable( false ); versionText.setBackground( shell.getDisplay().getSystemColor( SWT.COLOR_WIDGET_BACKGROUND ) ); Text buildText = new Text( composite, SWT.NONE ); if( noInformation ) { - buildText.setText( "Build time : " + defaultInformation ); + buildText.setText( "Build time" + " : " + defaultInformation ); }else { - buildText.setText( "Build time : " + StringUtil.nvl( properties.getProperty( "build_time" ) ) + " (GMT)" ); + String time = properties.getProperty( PROP_KEY_BUILD_TIME ); + if( StringUtil.isEmpty( time ) ) { + buildText.setText( "Build time" + " : " + "Not identified" ); + }else { + buildText.setText( "Build time" + " : " + time + " (GMT)" ); + } } buildText.setEditable( false ); buildText.setBackground( shell.getDisplay().getSystemColor( SWT.COLOR_WIDGET_BACKGROUND ) ); Text gitText = new Text( composite, SWT.NONE ); if( noInformation ) { - gitText.setText( "Git version : " + defaultInformation ); + gitText.setText( "Git version" + " : " + defaultInformation ); }else { - gitText.setText( "Git version : " + StringUtil.nvl( properties.getProperty( "build_git_commit" ) ) ); + gitText.setText( "Git version" + " : " + getValue( properties, PROP_KEY_GIT_VERSION ) ); } gitText.setEditable( false ); gitText.setBackground( shell.getDisplay().getSystemColor( SWT.COLOR_WIDGET_BACKGROUND ) ); @@ -127,6 +136,15 @@ public class AboutDialog extends SkinDialog { } + private String getValue( Properties properties, String key ) { + String property = properties.getProperty( key ); + if( StringUtil.isEmpty( property ) ) { + return "Not identified"; + }else { + return property; + } + } + @Override protected void createButtons( Composite parent ) { @@ -140,7 +158,7 @@ public class AboutDialog extends SkinDialog { public void widgetSelected( SelectionEvent e ) { if ( !isOpen ) { isOpen = true; - LicenseDialog licenseDialog = new LicenseDialog( shell, "License", SWT.DIALOG_TRIM ); + LicenseDialog licenseDialog = new LicenseDialog( shell, "License" ); licenseDialog.open(); isOpen = false; } diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/LicenseDialog.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/LicenseDialog.java index 6d8d9a0..7080f9a 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/LicenseDialog.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/LicenseDialog.java @@ -58,10 +58,10 @@ public class LicenseDialog extends SkinDialog { private Logger logger = SkinLogger.getSkinLogger( LicenseDialog.class ).getLogger(); - public LicenseDialog( Shell parent, String title, int style ) { + public LicenseDialog( Shell parent, String title ) { // FIXME resizable - // super( parent, title, style | SWT.MAX | SWT.RESIZE ); - super( parent, title, style ); + // super( parent, title, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.MAX | SWT.RESIZE ); + super( parent, title, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); } @Override diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/SkinDialog.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/SkinDialog.java index 64ed86c..0cb6fd2 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/SkinDialog.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/SkinDialog.java @@ -53,19 +53,12 @@ public abstract class SkinDialog extends Dialog { private Shell parent; private String title; private int style; - private boolean pack; public SkinDialog( Shell parent, String title, int style ) { super( parent, style ); this.parent = parent; this.title = title; this.style = style; - this.pack = true; - } - - public SkinDialog( Shell parent, String title, int style, boolean pack ) { - this( parent, title, style ); - this.pack = pack; } public void open() { @@ -98,10 +91,8 @@ public abstract class SkinDialog extends Dialog { buttonComposite.setLayout( new FillLayout( SWT.HORIZONTAL ) ); createButtons( buttonComposite ); - - if ( pack ) { - shell.pack(); - } + + shell.pack(); if ( !isReady ) { return; diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java index b87e2e4..c7cd655 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java @@ -72,16 +72,20 @@ public class ImageRegistry { public enum IconName { - DEVICE_INFO( "device_info.png" ), + DETAIL_INFO( "detail_info.png" ), ROTATE( "rotate.png" ), - SCALING( "scaling.png" ), + SCALE( "scale.png" ), SHELL( "shell.png" ), ADVANCED( "advanced.png" ), CLOSE( "close.png" ), SCREENSHOT( "screenshot.png" ), - USB_KEBOARD( "keypad.png" ), + USB_KEBOARD( "usb_keyboard.png" ), ABOUT( "about.png" ), - + + COPY_SCREEN_SHOT( "copy_screenshot_dialog.png" ), + REFRESH_SCREEN_SHOT( "refresh_screenshot_dialog.png" ), + SAVE_SCREEN_SHOT( "save_screenshot_dialog.png" ), + EMULATOR_TITLE( "Emulator_20x20.png" ), EMULATOR_TITLE_ICO( "Emulator.ico" ); @@ -104,11 +108,29 @@ public class ImageRegistry { private Map skinImageMap; private Map iconMap; + + private static ImageRegistry instance; + private static boolean isInitialized; - public ImageRegistry(Display display, EmulatorConfig config ) { + private ImageRegistry() { + } + + public static ImageRegistry getInstance() { + if( null == instance ) { + instance = new ImageRegistry(); + } + return instance; + } + + public void initialize( EmulatorConfig config ) { - this.display = display; + if( isInitialized ) { + return; + } + isInitialized = true; + this.display = Display.getDefault(); + int lcdWidth = Integer.parseInt( config.getArg( ArgsConstants.RESOLUTION_WIDTH ) ); int lcdHeight = Integer.parseInt( config.getArg( ArgsConstants.RESOLUTION_HEIGHT ) ); String skinPath = (String) config.getArg( ArgsConstants.SKIN_PATH ); @@ -118,9 +140,9 @@ public class ImageRegistry { this.dbiContents = config.getDbiContents(); this.skinImageMap = new HashMap(); this.iconMap = new HashMap(); - - init(skinPath); - + + init( skinPath ); + } public static String getSkinPath( String argSkinPath, int lcdWidth, int lcdHeight ) { @@ -188,7 +210,7 @@ public class ImageRegistry { try { is = classLoader.getResourceAsStream( iconPath ); if( null != is ) { - logger.info( "load icon:" + iconPath ); + logger.fine( "load icon:" + iconPath ); iconMap.put( name, new Image( display, is ) ); }else { logger.severe( "missing icon:" + iconPath ); diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/screenshot/ScreenShotDialog.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/screenshot/ScreenShotDialog.java index 941e2fc..c205ad0 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/screenshot/ScreenShotDialog.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/screenshot/ScreenShotDialog.java @@ -48,6 +48,7 @@ import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.ImageLoader; @@ -56,7 +57,7 @@ import org.eclipse.swt.graphics.Transform; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Dialog; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Listener; @@ -71,12 +72,14 @@ import org.tizen.emulator.skin.comm.sock.SocketCommunicator.DataTranfer; import org.tizen.emulator.skin.config.EmulatorConfig; import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants; import org.tizen.emulator.skin.exception.ScreenShotException; +import org.tizen.emulator.skin.image.ImageRegistry; +import org.tizen.emulator.skin.image.ImageRegistry.IconName; import org.tizen.emulator.skin.log.SkinLogger; import org.tizen.emulator.skin.util.IOUtil; import org.tizen.emulator.skin.util.SkinUtil; import org.tizen.emulator.skin.util.StringUtil; -public class ScreenShotDialog extends Dialog { +public class ScreenShotDialog { public final static String DEFAULT_FILE_EXTENSION = "png"; @@ -96,7 +99,6 @@ public class ScreenShotDialog extends Dialog { private Image image; private Canvas imageCanvas; private Shell shell; - private Shell parent; private ScrolledComposite scrollComposite; private SocketCommunicator communicator; @@ -105,32 +107,32 @@ public class ScreenShotDialog extends Dialog { private RotationInfo currentRotation; private boolean needToStoreRotatedImage; + private boolean reserveImage; - public ScreenShotDialog( Shell parent, SocketCommunicator commuicator, EmulatorSkin emulatorSkin, + public ScreenShotDialog( Shell parent, SocketCommunicator communicator, EmulatorSkin emulatorSkin, EmulatorConfig config ) throws ScreenShotException { - super( parent, SWT.DIALOG_TRIM | SWT.RESIZE ); - - this.parent = parent; - this.communicator = commuicator; + this.communicator = communicator; this.emulatorSkin = emulatorSkin; this.config = config; this.needToStoreRotatedImage = true; - shell = new Shell( parent, SWT.DIALOG_TRIM | SWT.RESIZE ); + shell = new Shell( Display.getDefault(), SWT.DIALOG_TRIM | SWT.RESIZE ); shell.setText( "Screen Shot - " + SkinUtil.makeEmulatorName( config ) ); shell.setLocation( parent.getLocation().x + parent.getSize().x + 30, parent.getLocation().y ); shell.addListener( SWT.Close, new Listener() { @Override public void handleEvent( Event event ) { if ( null != image ) { - image.dispose(); + if( !reserveImage ) { + image.dispose(); + } } } } ); GridLayout gridLayout = new GridLayout(); - gridLayout.marginWidth = 2; + gridLayout.marginWidth = 0; gridLayout.marginHeight = 0; gridLayout.horizontalSpacing = 0; gridLayout.verticalSpacing = 0; @@ -168,48 +170,8 @@ public class ScreenShotDialog extends Dialog { } else { if( needToStoreRotatedImage ) { - - Transform transform = new Transform( shell.getDisplay() ); - - float angle = currentRotation.angle(); - transform.rotate( angle ); - - int w = 0; - int h = 0; - ImageData imageData = image.getImageData(); - - if ( RotationInfo.LANDSCAPE.equals( currentRotation ) ) { - transform.translate( -width - ( 2 * CANVAS_MARGIN ), 0 ); - w = imageData.height; - h = imageData.width; - } else if ( RotationInfo.REVERSE_PORTRAIT.equals( currentRotation ) ) { - transform.translate( -width - ( 2 * CANVAS_MARGIN ), -height - ( 2 * CANVAS_MARGIN ) ); - w = imageData.width; - h = imageData.height; - } else if ( RotationInfo.REVERSE_LANDSCAPE.equals( currentRotation ) ) { - transform.translate( 0, -height - ( 2 * CANVAS_MARGIN ) ); - w = imageData.height; - h = imageData.width; - } else { - w = imageData.width; - h = imageData.height; - } - - e.gc.setTransform( transform ); - - e.gc.drawImage( image, CANVAS_MARGIN, CANVAS_MARGIN ); - - transform.dispose(); - - // 'gc.drawImage' is only for the showing without changing image data, - // so change image data fully to support the roated image in a saved file and a pasted image. - Image rotatedImage = new Image( shell.getDisplay(), w, h ); - e.gc.copyArea( rotatedImage, CANVAS_MARGIN, CANVAS_MARGIN ); - image.dispose(); - image = rotatedImage; - + drawRotatedImage( e.gc, width, height ); needToStoreRotatedImage = false; - }else { //just redraw rotated image e.gc.drawImage( image, CANVAS_MARGIN, CANVAS_MARGIN ); @@ -236,9 +198,53 @@ public class ScreenShotDialog extends Dialog { } shell.pack(); - + } + + private void drawRotatedImage( GC gc, int width, int height ) { + + Transform transform = new Transform( shell.getDisplay() ); + + float angle = currentRotation.angle(); + transform.rotate( angle ); + + int w = 0; + int h = 0; + ImageData imageData = image.getImageData(); + + if ( RotationInfo.LANDSCAPE.equals( currentRotation ) ) { + transform.translate( -width - ( 2 * CANVAS_MARGIN ), 0 ); + w = imageData.height; + h = imageData.width; + } else if ( RotationInfo.REVERSE_PORTRAIT.equals( currentRotation ) ) { + transform.translate( -width - ( 2 * CANVAS_MARGIN ), -height - ( 2 * CANVAS_MARGIN ) ); + w = imageData.width; + h = imageData.height; + } else if ( RotationInfo.REVERSE_LANDSCAPE.equals( currentRotation ) ) { + transform.translate( 0, -height - ( 2 * CANVAS_MARGIN ) ); + w = imageData.height; + h = imageData.width; + } else { + w = imageData.width; + h = imageData.height; + } + + gc.setTransform( transform ); + + gc.drawImage( image, CANVAS_MARGIN, CANVAS_MARGIN ); + + transform.dispose(); + + // 'gc.drawImage' is only for the showing without changing image data, + // so change image data fully to support the roated image in a saved file and a pasted image. + Image rotatedImage = new Image( shell.getDisplay(), w, h ); + gc.copyArea( rotatedImage, CANVAS_MARGIN, CANVAS_MARGIN ); + image.dispose(); + image = rotatedImage; + + } + private void clickShutter() throws ScreenShotException { capture(); arrageImageLayout(); @@ -290,7 +296,7 @@ public class ScreenShotDialog extends Dialog { int height = Integer.parseInt( config.getArg( ArgsConstants.RESOLUTION_HEIGHT ) ); ImageData imageData = new ImageData( width, height, COLOR_DEPTH, paletteData, 1, receivedData ); - this.image = new Image( parent.getDisplay(), imageData ); + this.image = new Image( Display.getDefault(), imageData ); needToStoreRotatedImage = true; imageCanvas.redraw(); @@ -334,7 +340,7 @@ public class ScreenShotDialog extends Dialog { } private RotationInfo getCurrentRotation() { - short currentRotationId = ScreenShotDialog.this.emulatorSkin.getCurrentRotationId(); + short currentRotationId = emulatorSkin.getCurrentRotationId(); RotationInfo rotationInfo = RotationInfo.getValue( currentRotationId ); return rotationInfo; } @@ -344,13 +350,11 @@ public class ScreenShotDialog extends Dialog { ToolBar toolBar = new ToolBar( shell, SWT.HORIZONTAL ); GridData gridData = new GridData( GridData.FILL_HORIZONTAL ); toolBar.setLayoutData( gridData ); - + ToolItem saveItem = new ToolItem( toolBar, SWT.FLAT ); - // FIXME icon - // saveItem.setImage( null ); - saveItem.setText( "Save" ); - saveItem.setToolTipText( "Save" ); - + saveItem.setImage( ImageRegistry.getInstance().getIcon( IconName.SAVE_SCREEN_SHOT ) ); + saveItem.setToolTipText( "Save to file" ); + saveItem.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent e ) { @@ -383,11 +387,9 @@ public class ScreenShotDialog extends Dialog { } } ); - + ToolItem copyItem = new ToolItem( toolBar, SWT.FLAT ); - // FIXME icon - // refreshItem.setImage( null ); - copyItem.setText( "Copy" ); + copyItem.setImage( ImageRegistry.getInstance().getIcon( IconName.COPY_SCREEN_SHOT ) ); copyItem.setToolTipText( "Copy to clipboard" ); copyItem.addSelectionListener( new SelectionAdapter() { @@ -418,10 +420,8 @@ public class ScreenShotDialog extends Dialog { } ); ToolItem refreshItem = new ToolItem( toolBar, SWT.FLAT ); - // FIXME icon - // refreshItem.setImage( null ); - refreshItem.setText( "Refresh" ); - refreshItem.setToolTipText( "Refresh" ); + refreshItem.setImage( ImageRegistry.getInstance().getIcon( IconName.REFRESH_SCREEN_SHOT ) ); + refreshItem.setToolTipText( "Refresh image" ); refreshItem.addSelectionListener( new SelectionAdapter() { @Override @@ -525,16 +525,26 @@ public class ScreenShotDialog extends Dialog { while ( !shell.isDisposed() ) { if ( !shell.getDisplay().readAndDispatch() ) { - shell.getDisplay().sleep(); + if( reserveImage ) { + break; + }else { + shell.getDisplay().sleep(); + } } } - + } - public void close() { - if ( null != shell ) { - shell.close(); - } + public void setEmulatorSkin( EmulatorSkin emulatorSkin ) { + this.emulatorSkin = emulatorSkin; } + public void setReserveImage( boolean reserveImage ) { + this.reserveImage = reserveImage; + } + + public Shell getShell() { + return shell; + } + } \ No newline at end of file -- 2.7.4