From 849944a9e350d294dde2325aab08214f791e4922 Mon Sep 17 00:00:00 2001 From: dongkyu6 lee Date: Fri, 20 May 2016 10:41:59 +0900 Subject: [PATCH] [SRADA-622] Change Progress Dialog Change-Id: I1f905f55e21f18454ac3c09e2c3df5eb6bba46dd --- .../dynamicanalyzer/resources/ImageResources.java | 5 - .../da/base/IndeterminateProgressDialog.java | 5 - .../widgets/da/base/ProgressDialog.java | 152 +++++++++------------ .../theme/flat/img/loading_animation_01.png | Bin 3054 -> 1004 bytes .../theme/flat/img/loading_animation_02.png | Bin 3072 -> 1004 bytes .../dynamicanalyzer/widgets/progress/Progress.java | 10 +- .../dynamicanalyzer/control/StartTraceManager.java | 13 +- .../tizen/dynamicanalyzer/ui/toolbar/Toolbar.java | 8 +- 8 files changed, 84 insertions(+), 109 deletions(-) diff --git a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ImageResources.java b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ImageResources.java index c5b5d76..c2552e7 100644 --- a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ImageResources.java +++ b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ImageResources.java @@ -723,11 +723,6 @@ public class ImageResources { /*** Indeterminate progress ***/ public static final Image INDETERMINATE_PROGRESS_01 = getPngImage("loading_animation_01"); //$NON-NLS-1$ public static final Image INDETERMINATE_PROGRESS_02 = getPngImage("loading_animation_02"); //$NON-NLS-1$ - public static final Image INDETERMINATE_PROGRESS_03 = getPngImage("loading_animation_03"); //$NON-NLS-1$ - public static final Image INDETERMINATE_PROGRESS_04 = getPngImage("loading_animation_04"); //$NON-NLS-1$ - public static final Image INDETERMINATE_PROGRESS_05 = getPngImage("loading_animation_05"); //$NON-NLS-1$ - public static final Image INDETERMINATE_PROGRESS_06 = getPngImage("loading_animation_06"); //$NON-NLS-1$ - public static final Image INDETERMINATE_PROGRESS_07 = getPngImage("loading_animation_07"); //$NON-NLS-1$ /* text box*/ public static final Image TEXT_BOX_WARNING = getPngImage("icon_error_warning"); //$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/IndeterminateProgressDialog.java b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/IndeterminateProgressDialog.java index 318bdd5..b959154 100644 --- a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/IndeterminateProgressDialog.java +++ b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/IndeterminateProgressDialog.java @@ -312,11 +312,6 @@ public class IndeterminateProgressDialog { progressImage.add(ImageResources.INDETERMINATE_PROGRESS_01); progressImage.add(ImageResources.INDETERMINATE_PROGRESS_02); - progressImage.add(ImageResources.INDETERMINATE_PROGRESS_03); - progressImage.add(ImageResources.INDETERMINATE_PROGRESS_04); - progressImage.add(ImageResources.INDETERMINATE_PROGRESS_05); - progressImage.add(ImageResources.INDETERMINATE_PROGRESS_06); - progressImage.add(ImageResources.INDETERMINATE_PROGRESS_07); return new DAAnimationIcon(comp, SWT.NONE, progressImage); } diff --git a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/ProgressDialog.java b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/ProgressDialog.java index ed91247..2f55951 100644 --- a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/ProgressDialog.java +++ b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/ProgressDialog.java @@ -35,12 +35,15 @@ import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; @@ -53,8 +56,6 @@ import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.widgets.DAWidgetConstants; import org.tizen.dynamicanalyzer.widgets.animation.DAAnimationIcon; -import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; -import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; import org.tizen.dynamicanalyzer.widgets.progress.Progress; public class ProgressDialog { @@ -82,21 +83,14 @@ public class ProgressDialog { private String warningText = DAWidgetConstants.EMPTY_STRING; private Image iconImage = ImageResources.DIALOG_WARNING_ICON; - private DACustomButton cancelButton = null; - private DACustomButton okButton = null; + private Button cancelButton = null; + private Button okButton = null; + + private SelectionListener okButtonListener = null; + private SelectionListener cancelButtonListener = null; // loading animation private DAAnimationIcon loadingIcon = null; - private List loadingImage = new ArrayList(); - - private DACustomButtonClickEventListener cancelButtonListener = null; - private DACustomButtonClickEventListener okButtonListener = - new DACustomButtonClickEventListener() { - @Override - public void handleClickEvent(DACustomButton button) { - close(); - } - }; private Listener shellMouseListener = new Listener() { boolean down = false; @@ -194,7 +188,7 @@ public class ProgressDialog { progressComp = new Composite(shell, SWT.NONE); progressComp.setLayout(new FormLayout()); - progressComp.setBackground(ColorResources.DIALOG_BG_LOWER); + progressComp.setBackground(ColorResources.WHITE); FormData data = new FormData(); data.top = new FormAttachment(0, 2); @@ -202,27 +196,18 @@ public class ProgressDialog { data.right = new FormAttachment(100, -2); data.bottom = new FormAttachment(100, -2); progressComp.setLayoutData(data); - - // loading icon - loadingIcon = createLoadingIcon(progressComp); - data = new FormData(); - data.top = new FormAttachment(0, 11); - data.left = new FormAttachment(0, 11); - data.width = 24; - data.height = 24; - loadingIcon.setLayoutData(data); - loadingIcon.start(); // upper text Label upperLabel = new Label(progressComp, SWT.TRANSPARENT | SWT.LEFT); upperLabel.setText(upperText); - upperLabel.setFont(FontResources.PROGRESS_FONT); + upperLabel.setFont(FontResources.DIALOG_CONTENTS_NORMAL_FONT); upperLabel.setForeground(ColorResources.BLACK); + upperLabel.setBackground(ColorResources.WHITE); data = new FormData(); data.top = new FormAttachment(0, 17); - data.left = new FormAttachment(0, 40); - data.right = new FormAttachment(95, 0); + data.left = new FormAttachment(0, 10); + data.right = new FormAttachment(100, 0); upperLabel.setLayoutData(data); // progress @@ -230,9 +215,9 @@ public class ProgressDialog { progress.setPercentageFont(FontResources.PROGRESS_PERCENTAGE_FONT); progress.setFontColor(ColorResources.PROGRESS_PERCENTAGE_FONT_COLOR); - data = new FormData(); - data.left = new FormAttachment(0, 11); + data = new FormData(); data.top = new FormAttachment(0, 44); + data.left = new FormAttachment(0, 10); data.width = 276; data.height = 22; progress.setLayoutData(data); @@ -259,8 +244,24 @@ public class ProgressDialog { if(progressStyle == PROGRESS_STYLE_CANCEL) { cancelButton = createButton(progressComp, "Cancel", cancelData); cancelButton.setLayoutData(cancelData); + cancelButton.addSelectionListener(new SelectionListener () { + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void widgetSelected(SelectionEvent arg0) { + close(); + } + + }); + + if (cancelButtonListener != null) { - cancelButton.addClickListener(cancelButtonListener); + cancelButton.addSelectionListener(cancelButtonListener); } } @@ -380,10 +381,23 @@ public class ProgressDialog { okData.height = 22; okButton = createButton(progressComp, "OK", okData); - okButton.setButtonEnabled(false); + okButton.setEnabled(false); okButton.setLayoutData(okData); - if(okButtonListener != null) { - okButton.addClickListener(okButtonListener); + okButton.addSelectionListener(new SelectionListener () { + + @Override + public void widgetDefaultSelected(SelectionEvent arg0) { + } + + @Override + public void widgetSelected(SelectionEvent arg0) { + close(); + } + + }); + + if (okButtonListener != null) { + okButton.addSelectionListener(okButtonListener); } } @@ -428,6 +442,9 @@ public class ProgressDialog { public void setValue(int value) { //TODO 진행률 표시 + if(progress == null) { + return; + } progress.setValue(value); // ok button enable @@ -448,77 +465,44 @@ public class ProgressDialog { upperText = message; } - private DACustomButton createButton(Composite comp, String text, FormData data) { - DACustomButton button = new DACustomButton(comp, SWT.NONE); + private Button createButton(Composite comp, String text, FormData data) { + Button button = new Button(comp, SWT.NONE); button.setText(text); - button.setLayoutData(data); - - button.setGradation(ColorResources.BUTTON_NORMAL_COLOR_START, - ColorResources.BUTTON_NORMAL_COLOR_END, - ColorResources.BUTTON_PUSH_COLOR_START, - ColorResources.BUTTON_PUSH_COLOR_END, - ColorResources.BUTTON_HOVER_COLOR_START, - ColorResources.BUTTON_HOVER_COLOR_END, - ColorResources.BUTTON_DISABLE_COLOR_START, - ColorResources.BUTTON_DISABLE_COLOR_END); - button.setFontColors(ColorResources.BUTTON_NORMAL_FONT_COLOR, - ColorResources.BUTTON_PUSH_FONT_COLOR, - ColorResources.BUTTON_HOVER_FONT_COLOR, - ColorResources.BUTTON_DISABLE_FONT_COLOR); - button.setOutlineColors( - ColorResources.BUTTON_OUTLINE_NORMAL_COLOR, - ColorResources.BUTTON_OUTLINE_PUSH_COLOR, - ColorResources.BUTTON_OUTLINE_HOVER_COLOR, - ColorResources.BUTTON_OUTLINE_DISABLE_COLOR); - button.setOutlineInColors( - ColorResources.BUTTON_OUTLINE_NORMAL_IN_COLOR, - ColorResources.BUTTON_OUTLINE_PUSH_IN_COLOR, - ColorResources.BUTTON_OUTLINE_HOVER_IN_COLOR, - ColorResources.BUTTON_OUTLINE_DISABLE_IN_COLOR); - button.setButtonFont(FontResources.DIALOG_BUTTON_FONT); + button.setLayoutData(data); + button.setFont(FontResources.DIALOG_BUTTON_FONT); + return button; } - public void setOkListener(DACustomButtonClickEventListener listener) { - okButtonListener = listener; - } - public void setOkEnabled(final boolean enable) { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - okButton.setButtonEnabled(enable); + okButton.setEnabled(enable); + okButton.redraw(); } }); } - - public void setCancelListener(DACustomButtonClickEventListener listener) { - cancelButtonListener = listener; - } public void setCancelEnabled(final boolean enable) { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - cancelButton.setButtonEnabled(enable); + cancelButton.setEnabled(enable); + cancelButton.redraw(); } }); } - private DAAnimationIcon createLoadingIcon(Composite comp) { - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_01); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_02); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_03); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_04); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_05); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_06); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_07); - loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_08); - - return new DAAnimationIcon(comp, SWT.NONE, loadingImage); - } - public void setWarnigDialogType(int type) { dialogType = type; } + + public void setOkListener(SelectionListener listener) { + okButtonListener = listener; + } + + public void setCancelListener(SelectionListener listener) { + cancelButtonListener = listener; + } } \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/loading_animation_01.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/loading_animation_01.png index 71a6ccf67bbcdd6db475e06f086e16e1383ab4b1..72a181eb0c270a5638437ef6d594e826fec56e33 100644 GIT binary patch literal 1004 zcmaJ=&ui2`7>#<7Vv8R2G^9`z+$58B(`INa*-f?$n7V8iy5hlRlW8}$$;4#praeei zJm|TXB7!$5#hye3p(1z@6sq17JoThf5B>vAw!2#oT|<(YZ+P#0Kj%Stda}RoTp!1A z{nnIGVe2OQ22LJl|8Lt{0$a{fvqopgJZ(BL=5&wLF|Yz>0avi&t=xQ%$2sl-C#T8;6{>U7mz zU368CpST3ZQ^W)UOdXI0OJRaijc@59w$F}59<(5IQR5GSs@Y{wBryhgVL0bX5CTOJ z;7DFk;6)%yP!=WjDmgfU@(PkiLHpsEx7eFU6{FPl#Vn0)P#PgoY&M%hb66npf(TVr z%`{{=#}K(>C8SQ83zNZ)f`Jn^_9N<(5M+u@oh(z0XOSMH5JX+sFlm>G6--Q>NQ8ov zrPKl1_Wz+l&_yS-f)C?8QaGuuL|Clgge=D{Yux-`<|;zP7(0~2RYI0JRV+6MB}s!s zpg5y|^Rs^Fk!EtCg|}^Fg$Z>+7h8tLGX=r-JybAtQ&;mQl=2FMrc#j1QB_uSxd3&w zG^%&F262}I9MTTgJLHyna%COBuYTXTy^+K_dmqY^n}3$B4{a4Uo)6&9Xx;i*9(s0^A-)j5TzPzL Z?HJeBUtfQ9YGW+Bf0j9IY!~M4{sqcML>vGB literal 3054 zcmVKLZ*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} z0003QNkl42ZBPSiD$f*NpNW#|WOgtL;F8%T^5rxO)v9B?}2I` zB1*!@{`oKx5!F5oub`p*pO#en@$pax4b7~X#zP%6G=pXt53SMAbeerUv_?Z4)xP67 zFEi?(p?PWDc(NUJ(9pcJq^>^yJR9nup?PV^_0)}rI%sG<+V6O%gNEj;4aP$qG&DDD zY&_IKLvzqHhdO9zM$I@LTBD)qHQRV-jfSSt9L7UyG_*0zZ9KF_LmOz$ w$3R5ZWg#5LdEOfU0RR6306@m1bo+kn)&Kwi07*qoM6N<$f;=p=EdT%j diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/loading_animation_02.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/loading_animation_02.png index 4269f312f4adbffcdd870f601d005cb7d11a9171..74541dd02921ce3e72ab5add43259ef7685b0e99 100644 GIT binary patch literal 1004 zcmaJ=PiWIn9FBUC!G<37;v<8hV3WLVP20!fY@2Qim|42QDjr;xyse>4UVM4A*+7|s z;5_d#MA%Kna3F{xf+BbkJWRbQc-lz^9=wY$UE6tB4N2bnJ-+Yz{e5etnW@2nvjc)4 z3>wpVnXg;?8#;NM|G({QOME%Qid8mC7Fo-pSjahK0RzLcmT(zc&hpIHf4zPy0@u;Rxs<7xK>^p?=@p7+S7s{q zO5M&n;>0B|9w9E^VP=8IYxp6GG_kFV_&z?CMbL(@x+We3RW(bXKqv+&X*6Lg5CT<| z;8;pk;YE;CU{Y52t0v$WN~tKB2AxOb-l(&P%KBu-7q>LA##n%4xz%b(tx<{4B^hS3 z*;pf)OmIXZT=tn2CH!!>tDxi1rf$Go;)7VxS|ClPi9FJS6uh7(>xZ2(@q)>b706Ih z;*`2T)BHcw^LprzmGNP`M+%3PvABVmmM zpfIa~^K-86kXCr1jW0zIBxy~Us*OwcQf){YlI;QR|>`YSPfp*Hs?H^0JuU?1i^p7Remn-vN z4LH${dUx|4`&sCzY`=8+H)zYc=yTcE6*U#N6vKby9rTt4T<_s=NK=sWrOdw&5bkwY>7 literal 3072 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