From 84a7f6212d51bfc44bc42f10f001a88f340f87b0 Mon Sep 17 00:00:00 2001 From: jaeyong lee Date: Tue, 24 May 2016 17:52:30 +0900 Subject: [PATCH] [SRADA-410] Add next, prev button at screenshot dialog Change-Id: I3acbebf1d6fcbc9ac409533e38ce36e3c412ef7b --- .../dynamicanalyzer/resources/ImageResources.java | 6 + .../theme/flat/img/da_imageviewer_arrow_l_dim.png | Bin 0 -> 1024 bytes .../theme/flat/img/da_imageviewer_arrow_l_nor.png | Bin 0 -> 1021 bytes .../theme/flat/img/da_imageviewer_arrow_l_sel.png | Bin 0 -> 1021 bytes .../theme/flat/img/da_imageviewer_arrow_r_dim.png | Bin 0 -> 1033 bytes .../theme/flat/img/da_imageviewer_arrow_r_nor.png | Bin 0 -> 1023 bytes .../theme/flat/img/da_imageviewer_arrow_r_sel.png | Bin 0 -> 1024 bytes .../ui/common/TimelineChartMouseEventListener.java | 31 +++- .../ui/info/screenshot/ScreenshotDataManager.java | 28 +++- .../ui/info/screenshot/ScreenshotDialog.java | 182 +++++++++++++++++++++ .../ui/timeline/chart/ScreenshotChart.java | 7 +- .../ui/widgets/ScreenshotDialog.java | 88 ---------- 12 files changed, 245 insertions(+), 97 deletions(-) create mode 100644 org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_dim.png create mode 100644 org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_nor.png create mode 100644 org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_sel.png create mode 100644 org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_dim.png create mode 100644 org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_nor.png create mode 100644 org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_sel.png create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDialog.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ScreenshotDialog.java 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 04bb22b..bdb5673 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 @@ -764,6 +764,12 @@ public class ImageResources { public static final Image BOX_TIME_NOW = getPngImage("box_time_now"); public static final Image BTN_IC_CONNECT_ICON = getPngImage("btn_ic_connect_icon"); public static final Image CAPTURE_POINT = getPngImage("capture_point"); + public static final Image DA_IMAGEVIEWER_ARROW_L_DIM = getPngImage("da_imageviewer_arrow_l_dim"); + public static final Image DA_IMAGEVIEWER_ARROW_L_NOR = getPngImage("da_imageviewer_arrow_l_nor"); + public static final Image DA_IMAGEVIEWER_ARROW_L_SEL = getPngImage("da_imageviewer_arrow_l_sel"); + public static final Image DA_IMAGEVIEWER_ARROW_R_DIM = getPngImage("da_imageviewer_arrow_r_dim"); + public static final Image DA_IMAGEVIEWER_ARROW_R_NOR = getPngImage("da_imageviewer_arrow_r_nor"); + public static final Image DA_IMAGEVIEWER_ARROW_R_SEL = getPngImage("da_imageviewer_arrow_r_sel"); public static final Image DA_INFO_ICON_DIM = getPngImage("da_info_icon_dim"); public static final Image DA_INFO_ICON_NOR = getPngImage("da_info_icon_nor"); public static final Image DA_INFO_ICON_OVER = getPngImage("da_info_icon_over"); diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_dim.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe32364cadb3bd7cf4c0e2bdfca8c683e6c0319 GIT binary patch literal 1024 zcmaJ=PiWIn9FEM5THIkU(7J0D(QwJWS3%F^U*ja~Ax0H+Ih7A@e4VnZsSp&|qsLs^75sA#LpZ{R3J zwb6RMfD7`ps3L<=JPhL+7GYD==(uYsY8hfsgp0Zvr@y~=NdsMr({oWdBwHz1(x=vJ zIJ-8JSJ%pFOryugz^E${0Rv(MxW563TZL>6}L2x-v?Y>2!LF9)){h>)TTU!uw(qugrS;grR#+Jykl}d%F zgc)QnvRo_{^E7xqNDx71)x?S$G@ZVNf&?Aa)-9|f6L^YB5v|}jO)}j(f?+jfO{ZQa zQZUw4ES6(J-jNzWS^huNFq&uw=iq+6{}gues}^K)&_OG^wqC zjVfkK2qUM2ERdQNz==8C)KJAaS;Nb+m@yr!m@3RjahfPFx~_>~Ns>|{5sBydFvq2Z zSV%}D(n(>2j|?Znp-6)(A$7%oCT?)GeQvrX*Rz6Qk;oFX^-EBjw2=X7M;7(gxg=Za z)wx>hTv9E$EJ=p-8v9qH8(YLZ-n403vS=C~n#AokvGuQ>``5{pAQedD-4A!)pYu=j z`VPJ=_bmV3y4Zi-=N~#A-uE_l{8cx!|Gc4VH~ WIjk6;$Eri#oy??Xq{qqmtA79sB|?7y literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_nor.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c1619976f264bebadba44db6006c7b06be6ba3 GIT binary patch literal 1021 zcmaJ=O=#0l91re;Ivsu>vUz%D2OZdat<7v~H`b#?U43jQMdBM11Mm&co^>d0+f~zyIf3%1xc_?>o{* zQB;3+QqBh}`3FM1WIp=cE0Sdpr%Ski%GgsKNKNQy7J{s)R$v~gdVT&4j8jw>Z4^tm zq@0m7WHM@iVSLjjY>JAH`?jjpAO^FrVps|K+w)Z#7f^O(aWFK6!G-yC@EkSQNRZ?;wg&YW?%t%<{cpiu% z!$+c`$e#cL#|tb+J~7Nkq^Kwfqo6rxV$IRZQeMt9ZIM%gu3~IUEbDn5F`tzuivIeokEaf6l6jpA(KmMOySYY(HbT97&R(2Z z=~@~-@J@dDB0jJ_KJmUL?_Sxw&(-Rohp}h-2RC~@EMHsw^!4%+s*8g2gW+>Oe~$$Z NGMk=~A1BXW`U_PfLz(~p literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_sel.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_l_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..30058b4ed66759b5860b1d9760b3ea6a0f7139b7 GIT binary patch literal 1021 zcmaJ=PfXKL9Bv{p1cRbMgBZ=D82?1quH9C)%EWEmWX8@hmauSIX&765^kD(CE=<;>iOCPXafi7hlIVJb*84-=BQn_xpbD_v=zVcfGZx zvxTCl)@;92@MrRNG#@12t}VAnrjs~b!h>iOyNV5|goZ{S$QsHREI>t@p8NoNDe3^N z7fZM#-xO73Fp7_1Ji{Vvit6q2EJYoM7>vL%-Hg+lYp-aaYjJugA_rwF1uJ_0j1328 zaz%A!T#adT-&N4-iA2DFSOK0fVLGB0r>nXmS^LK<4XO}49;bIqmE=4~Asd1S6AGw7 zjst?gaN&p`aF+oe$ieok;oFX_1jR(*vJ6Yltq1iFTs8FYFur9 zFV#%;^uiJ|tY6rF3SB=U-QzDCZA&(d#)l^9cAK>I`r=Ffmzc~-iK6%I(dR42UW4YQ z{PwRiUoM>;emAi3{8YuuYgR-cvUizk*J9=@}DNPFLO)Sg>RmRH&?K; zd{4EPzy7%P_{Mx_z+#Uq{Jz!pqVs<8>1@}%;h%3Oa_6Ll*#z$1*o+Ks9WPTKA9Sq# RSz0;oN6)5n(vxKQ?q3cOM5_P* literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_dim.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..c1caba6f47384d5f807a9b0f6673af99d8023193 GIT binary patch literal 1033 zcmaJ=PiWIn9L`j9n@k78p*y{09u#fUq)obJ>$a}xT)~Xlb*zUe&62k@Y{`qstH}x? z4261}co3YIp*R)Aizfv|JSZZ;8F3VYda6tkmUX0`@Y}r{eIuOI6ii) zt+lI_qNuj?sFd+X^6hWlN&em6-7Fan;8YGzpjqrHHlz|7nt>o~D046a6>ahK3)oLl z+i5+U!#Vl5s3Ie%_?Vz)ScFYc{ezyRsPhnm891k#ar)cC$28EjI6cM7A=yg8f<9WZ z;Y4XHtCr@~m_`o{fPPOT0tUni@Qel15xqEF(G|(u-)3k~f#CT#y_r-_9tTNeL%;{a z0X4+3KoEj#gck(%DBwaY$Ari$1lWkk3nCW<)rTh0Y;9J|NF&u)WEH0i7+WI4xUL&? z!$D-vF>EXr^EEgwKo9|E(Zq@uFrA*7f&?Aa)-9|f6ZneC3@YL{O)}j)f??HVO{ZEW zQZU9-EQSq+{3F$XviyIjVbswM&cLmF|0(Qb7cIzSpo5CGN*XuY?}eH zwJMGm5JpY`Ss*zffJ0NdsUg=nT*1q-m^K}(m?}(5ahfOubzKv~LT{4eg($~yVU|q^ zi71~;L=s#inoRJ~-r*WoLTb@~Ca!U{EpBf^u5SgyB9SF%>t~=gVj}}ojx6epbKx86 zRk>Q@T!e;Ph9txIjs2_9wJqWve_FRKS=5aWP2zT&*qVE~e2ZL(vuP=j_1>?npWO4L zy?sai6TNZn$k^(e^J^Qg7e2TAc-Lm%eQ>ky#^sggdDFaG?D{&HE62)1UphKJPUpe( z)ZXE~S4;OxZ^5Ihm%tS_rfgjM-MqW|SM%!R$er@G+v_dU2b((dp;Tx4@~(k$6Z358 f0{tOzB4oFOsGs=M%eB_Yeg5T4r^cjv!}+B@dBRD^ literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_nor.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cf418c5ea33b11d0228efa429b909bbe653cf3 GIT binary patch literal 1023 zcmaJ=O-K|`93KcuG>eEn?9yxWkkHPTyW{TQX5-GPi;datf(ssOoO!x~&b(>n>5O}+ zBq2|A&?veDMMOk&=wKw+(QXw&AQaW1TUdvr=+c{YckR&jn0a6Pe!u_cTNoPbYi>N& zNKsUCreDd1EBTK$>?ZSxZ+@OEEjV4kIW&%a&4rX~pfLzCmNo&iP%~yPzJgs8wTm|M z1zb?iN;t28i;Bt0BcIn_zQqS;?^VXico z*GrRn!l1iPgRVd#0v5y?2&^gFlY%5&)|JRUyk==ohTzF0z3o&%9RexjLJ(s*B09(O zKol818WTnS6c9LGU^()M5k4x#L`mobl|d70t}!lUmEMXia!S%gj2($(ecxyN4hFds zET2duLJdKP5JbeAwXqgNY_GMdpg>P|O$VFE2BD%hhNf|nCZ2AGU^z8e+pDCBB#aF- zhvgYA45p(UOJv8m=q;TV{p(#g7xlqH%%_B5b&EilI zVdNE&15!B=oE$c71NmNi8Lz5R#`dsg>oB7vX`;ZGrXj`CQ8_J(LO6InEy{AItR#A( ziFlk7M1`+%6{JsF(8g7+vBT}C%MDw>a)@OGy5$Zd-xsc~UWIGa_l2*^ zWr;IvSlGV`UA-dR6K-p5OAfWhhc@YUm$dbg`ral_!pkUfKG;}XAKCX3G$`j+evdBP zd3IbqIJ(%fx){*Kr$0XQt=yZB-xBxlnQyxNMKDGNZVWuW+V*{P?cCw^`wxFL9Ff2TnYK&Z^2gNHk*x-fy2-aN8;^=> P;gigy2bCv17v}x|AKpqw literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_sel.png b/org.tizen.dynamicanalyzer.appearance/theme/flat/img/da_imageviewer_arrow_r_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..1279f7f55a8a43980d13d9d739302c4b97afa6f3 GIT binary patch literal 1024 zcmaJ=O-$2J9B-nS1;O(`O&&#zpljE$6J!a@JeP@An-bbI(>KPnIs6DBv8L#udeeR8&Jn2vUYJ1G7-ks`KyQ2u1Cq^?U&r z(&t4L8I0m#7}u}}o1#WWT}x5R5Q8F|(M^foTzyUhU6bg^NIICd;;^KTE!r@*IG$G* z%c`K!qi4W~D-r<%VgYfzW-y=zIS%kV z!-XR}&z%CHAQxhTwtbrp-{ zn4lL@1DH<#A8Hs)w1cy7&)w*(`L>f~}ImP4{}HEHQ3F1tU9;&|D*nnG(Xt zDIp8Qb38aPshb+AIQ=zzIxVJ52P>uuQ?f)81xD93aab4*hLg$R5E&eo-~~PwjdPJ` zl#3-eQh)|mM(TnAP2AvWdt9L<*J}mCB9>)n>zARHw2=X7A&YuzU-*`Kb*|Rhm!Xzi zmN>(Dh5f70jVsbU-nQAc3Xu#_x8fd^<&$;-)<+``)7YI`G(e_ zuYTTNzIFWjvi0F`dG^^^NiQFr$~=53%tvpm|9I1O^3JG#YO81G;FbM;>Q~nP2%R4I P>b=QSVqAV4yL9yr*|JDm literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java index 68e9baa..6f07898 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java @@ -41,11 +41,11 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; +import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenshotDialog; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; -import org.tizen.dynamicanalyzer.ui.widgets.ScreenshotDialog; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.util.WorkbenchUtil; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; @@ -152,11 +152,11 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou } if (plot instanceof DAScreenshotChartPlot) { - Image image = getPointedScreenshotImage(e); - String path = getPointedScreenshotImagePath(e); - if(image != null) { + int screenshotIndex = getPointedScreenshotIndex(e); + if(screenshotIndex != -1) { Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell(); - ScreenshotDialog screenshotDialog = new ScreenshotDialog(shell, image, path); + ScreenshotDialog screenshotDialog = new ScreenshotDialog(shell); + screenshotDialog.loadScreenshotData(screenshotIndex); screenshotDialog.open(); } @@ -285,7 +285,7 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou } if (plot instanceof DAScreenshotChartPlot) { - if(getPointedScreenshotImage(e) != null) { + if(getPointedScreenshotIndex(e) != -1) { Display.getCurrent().getCursorControl().setCursor(new Cursor(Display.getCurrent(), SWT.CURSOR_HAND)); } else { Display.getCurrent().getCursorControl().setCursor(null); @@ -382,6 +382,25 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou } } + private int getPointedScreenshotIndex(MouseEvent e) { + DAChart chart = (DAChart) e.widget; + DAChartPlot plot = chart.getPlot(); + DAChartSeries series = chart.getSeriesList().get(0); + + int index = -1; + + for(DAChartSeriesItem item : series.getSeriesItemList()) { + if(e.x >= plot.getXPixelFromX(item.getX()) - SCREENSHOT_DOT_WIDTH && + e.x <= plot.getXPixelFromX(item.getX()) && + e.y >= (DAChartBoard.DEFAULT_ITEM_HEIGHT - SCREENSHOT_DOT_WIDTH) / 2 && + e.y <= (DAChartBoard.DEFAULT_ITEM_HEIGHT + SCREENSHOT_DOT_WIDTH) / 2) { + index = series.getSeriesItemList().indexOf(item); + } + } + + return index; + } + private Image getPointedScreenshotImage(MouseEvent e) { DAChart chart = (DAChart) e.widget; DAChartPlot plot = chart.getPlot(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDataManager.java index 37461e6..df14172 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDataManager.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import org.eclipse.swt.graphics.Image; import org.tizen.dynamicanalyzer.common.Global; import org.tizen.dynamicanalyzer.communicator.DeviceInfo; import org.tizen.dynamicanalyzer.constant.CommonConstants; @@ -63,6 +64,9 @@ public class ScreenshotDataManager extends PageDataManager { private List lastCpuRate = null; private long lastProcessMemory = 0; private long lastStartTime = 0; + + private List imageList = new ArrayList(); + private List fileNameList = new ArrayList(); private ScreenshotDataManager() { lastCpuRate = new ArrayList(); @@ -73,9 +77,26 @@ public class ScreenshotDataManager extends PageDataManager { public static ScreenshotDataManager getInstance() { return instance; } + + public List getImageList() { + return imageList; + } + + public List getFileNameList() { + return fileNameList; + } + + public Image getImage(int index) { + return imageList.get(index); + } + + public String getfileName(int index) { + return fileNameList.get(index); + } public void clear() { - // do nothing + imageList.clear(); + fileNameList.clear(); } public List getLastCpuRate() { @@ -205,4 +226,9 @@ public class ScreenshotDataManager extends PageDataManager { Global.getProject().buildImageInfoFrom(imageList); } + + public void addScreenshotData(Image image, String fileName) { + imageList.add(image); + fileNameList.add(fileName); + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDialog.java new file mode 100644 index 0000000..652aa6a --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/screenshot/ScreenshotDialog.java @@ -0,0 +1,182 @@ +package org.tizen.dynamicanalyzer.ui.info.screenshot; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.resources.ImageResources; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; +import org.tizen.dynamicanalyzer.widgets.da.base.DAMessageBox; +import org.tizen.dynamicanalyzer.widgets.helper.ColorResources; + +public class ScreenshotDialog extends DAMessageBox { + private static boolean opened = false; + + private final int DIALOG_WIDTH_MARGIN = 6; + private final int DIALOG_HEIGHT_MARGIN = 65; + + private Image image = null; + private String fileName = null; + private int index = -1; + + private DACustomButton nextButton = null; + private DACustomButton prevButton = null; + + private Label imageLabel = null; + + private double imageWidth = 0; + private double imageHeight = 0; + + public ScreenshotDialog(Shell parentShell) { + super(parentShell); + } + + private void createButtons() { + nextButton = new DACustomButton( + shell, ImageResources.DA_IMAGEVIEWER_ARROW_R_NOR, ImageResources.DA_IMAGEVIEWER_ARROW_R_SEL, + ImageResources.DA_IMAGEVIEWER_ARROW_R_NOR, ImageResources.DA_IMAGEVIEWER_ARROW_R_DIM); + nextButton.setBackground(ColorResources.WHITE); + nextButton.addClickListener(new DACustomButtonClickEventListener() { + @Override + public void handleClickEvent(DACustomButton button) { + setNextImage(); + updateDialog(); + } + }); + + prevButton = new DACustomButton( + shell, ImageResources.DA_IMAGEVIEWER_ARROW_L_NOR, ImageResources.DA_IMAGEVIEWER_ARROW_L_SEL, + ImageResources.DA_IMAGEVIEWER_ARROW_L_NOR, ImageResources.DA_IMAGEVIEWER_ARROW_L_DIM); + prevButton.setBackground(ColorResources.WHITE); + prevButton.addClickListener(new DACustomButtonClickEventListener() { + @Override + public void handleClickEvent(DACustomButton button) { + setPrevImage(); + updateDialog(); + } + }); + + FormData data = new FormData(); + data.left = new FormAttachment(100, -23); + data.bottom = new FormAttachment(100, -5); + data.width = 13; + data.height = 24; + nextButton.setLayoutData(data); + + data = new FormData(); + data.left = new FormAttachment(0, 10); + data.bottom = new FormAttachment(100, -5); + data.width = 13; + data.height = 24; + prevButton.setLayoutData(data); + + updateButtonStatus(); + } + + private void normalizeImageSize() { + imageWidth= image.getBounds().width; + imageHeight = image.getBounds().height; + + if(image.getBounds().width > 360) { + double rate = (double)360 / image.getBounds().width; + + imageWidth *= rate; + imageHeight *= rate; + } + } + + private void updateButtonStatus() { + if(index == 0) { + prevButton.setEnabled(false); + } else { + prevButton.setEnabled(true); + } + + if(index == ScreenshotDataManager.getInstance().getImageList().size() -1) { + nextButton.setEnabled(false); + } else { + nextButton.setEnabled(true); + } + } + + private void updateDialog() { + shell.setText(fileName); + imageLabel.setImage(resizeImage(image, (int)imageWidth, (int)imageHeight)); + + updateButtonStatus(); + } + + protected boolean run() { + if(opened) { + return false; + } + + normalizeImageSize(); + + shell.setSize((int)imageWidth + DIALOG_WIDTH_MARGIN, (int)imageHeight + DIALOG_HEIGHT_MARGIN); + shell.setLayout(new FormLayout()); + shell.setText(fileName); + shell.setBackground(ColorResources.WHITE); + + imageLabel = new Label(shell, SWT.TRANSPARENT); + imageLabel.setBackground(ColorResources.WHITE); + imageLabel.setImage(resizeImage(image, (int)imageWidth, (int)imageHeight)); + + FormData imageFormData = new FormData(); + imageFormData.top = new FormAttachment(0, 3); + imageFormData.left = new FormAttachment(0, 3); + imageLabel.setLayoutData(imageFormData); + +// Label pathLabel = new Label(shell, SWT.TRANSPARENT); +// pathLabel.setText(fileName); +// pathLabel.setFont(FontResources.IMAGE_VIEWER_LABEL); +// +// FormData pathFormData = new FormData(); +// pathFormData.right = new FormAttachment(100, -20); +// pathFormData.bottom = new FormAttachment(100, -4); +// pathLabel.setLayoutData(pathFormData); + + createButtons(); + + return true; + } + + private Image resizeImage(Image image, int width, int height) { + Image scaled = new Image(Display.getDefault(), width, height); + + GC gc = new GC(scaled); + gc.setAntialias(SWT.ON); + gc.setInterpolation(SWT.HIGH); + gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, width, height); + + return scaled; + } + + public void loadScreenshotData(int index) { + this.index = index; + this.image = ScreenshotDataManager.getInstance().getImage(index); + this.fileName = ScreenshotDataManager.getInstance().getfileName(index); + } + + private void setNextImage() { + if(index + 1 < ScreenshotDataManager.getInstance().getImageList().size()) { + index++; + image = ScreenshotDataManager.getInstance().getImage(index); + fileName = ScreenshotDataManager.getInstance().getfileName(index); + } + } + + private void setPrevImage() { + if(index > 0) { + index--; + image = ScreenshotDataManager.getInstance().getImage(index); + fileName = ScreenshotDataManager.getInstance().getfileName(index); + } + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java index f7b626c..bf71014 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java @@ -41,6 +41,7 @@ import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.protocol.ProtocolConstants; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenShotDBTable; +import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenshotDataManager; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.util.CommonUtil; import org.tizen.dynamicanalyzer.util.Logger; @@ -90,6 +91,7 @@ public class ScreenshotChart extends TimelineChart { @Override public void inputChartSeries(List dataList) { screenshotSeries.clear(); + ScreenshotDataManager.getInstance().clear(); @SuppressWarnings("unchecked") List> data = (List>)dataList.get(TimelineConstants.SCREENSHOT_DB_DATA); @@ -116,8 +118,9 @@ public class ScreenshotChart extends TimelineChart { */ if (imageMap.containsKey(imagePath)) { Image image = imageMap.get(imagePath); - screenshotSeries.addSeriesItem(new DAChartSeriesItem(time, - image, getFileName(imagePath))); + + screenshotSeries.addSeriesItem(new DAChartSeriesItem(time, image, fileName)); + ScreenshotDataManager.getInstance().addScreenshotData(image, fileName); } else { Thread createImageThread = new Thread(null, new CreateImageThread( imagePath, time), "small image getter thread"); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ScreenshotDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ScreenshotDialog.java deleted file mode 100644 index 07a9384..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ScreenshotDialog.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.tizen.dynamicanalyzer.ui.widgets; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; -import org.eclipse.swt.layout.FormLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.tizen.dynamicanalyzer.resources.FontResources; -import org.tizen.dynamicanalyzer.widgets.da.base.DAMessageBox; -import org.tizen.dynamicanalyzer.widgets.helper.ColorResources; - -public class ScreenshotDialog extends DAMessageBox { - private static boolean opened = false; - - private final int DIALOG_WIDTH_MARGIN = 6; - private final int DIALOG_HEIGHT_MARGIN = 50; - - private final String DIALOG_TITLE = "Image Viewer"; - - private Image image = null; - private String path = null; - - public ScreenshotDialog(Shell parentShell, Image image, String path) { - super(parentShell); - if(image != null) { - this.image = image; - this.path = path; - } - } - - protected boolean run() { - if(opened) { - return false; - } - - double newWidth = image.getBounds().width; - double newHeight = image.getBounds().height; - - if(image.getBounds().width > 360) { - double rate = (double)360 / image.getBounds().width; - - newWidth *= rate; - newHeight *= rate; - } - - shell.setSize((int)newWidth + DIALOG_WIDTH_MARGIN, (int)newHeight + DIALOG_HEIGHT_MARGIN); - shell.setLayout(new FormLayout()); - shell.setText(DIALOG_TITLE); - shell.setBackground(ColorResources.WHITE); - - Label imageLabel = new Label(shell, SWT.TRANSPARENT); - imageLabel.setBackground(ColorResources.WHITE); - imageLabel.setImage(resizeImage(image, (int)newWidth, (int)newHeight)); - - FormData imageFormData = new FormData(); - imageFormData.top = new FormAttachment(0, 3); - imageFormData.left = new FormAttachment(0, 3); - imageLabel.setLayoutData(imageFormData); - - Label pathLabel = new Label(shell, SWT.TRANSPARENT); - pathLabel.setText(path); - pathLabel.setFont(FontResources.IMAGE_VIEWER_LABEL); - - FormData pathFormData = new FormData(); - pathFormData.right = new FormAttachment(100, -20); - pathFormData.bottom = new FormAttachment(100, -4); - pathLabel.setLayoutData(pathFormData); - - return true; - } - - private Image resizeImage(Image image, int width, int height) { - Image scaled = new Image(Display.getDefault(), width, height); - - GC gc = new GC(scaled); - gc.setAntialias(SWT.ON); - gc.setInterpolation(SWT.HIGH); - gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, width, height); - - return scaled; - } -} -- 2.7.4