[Title] image viewer fixed
authorLee <jy.exe.lee@samsung.com>
Thu, 29 Nov 2012 09:47:44 +0000 (18:47 +0900)
committerLee <jy.exe.lee@samsung.com>
Thu, 29 Nov 2012 09:47:44 +0000 (18:47 +0900)
[Desc.] image viewer fixed
[Issue] -

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FilePage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/ImageViewer.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/SnapshotView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/SummaryPage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/failed/FailedApiTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/DATimelineTabComposite.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/TimelinePage.java

index 40db59d..3b451de 100644 (file)
@@ -57,8 +57,10 @@ public class FileApiListTable extends DATableComposite {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                GridItem[] items = table.getSelection();
+                               DATableDataFormat dataFormat = (DATableDataFormat) items[0].getData();
+                               String time = dataFormat.getData().get(LogCenterConstants.TIME_INDEX);
                                DASelectionData selData = new DASelectionData(
-                                               FileApiListView.ID, 0, 0, items, table);
+                                               FileApiListView.ID, Long.parseLong(time), 0, items, table);
                                AnalyzerManager.getCurrentPage().updatePage(selData);
                        }
 
index 99438b6..7edb267 100644 (file)
@@ -80,9 +80,10 @@ public class FilePage extends DAPageComposite {
                DATabComposite tabView = new DATabComposite(rightForm, SWT.NONE);
                addView(tabView);
                {
-                       SnapshotView currentView = new SnapshotView(
+                       SnapshotView snapshotView = new SnapshotView(
                                        tabView.getContentComposite(), SWT.NONE, false);
-                       tabView.addView(currentView);
+                       snapshotView.setObservingViews(new String[] { FileApiListView.ID });
+                       tabView.addView(snapshotView);
 
                        CallstackView callstack = new CallstackView(
                                        tabView.getContentComposite(), SWT.NONE);
index 6c216b3..8d6097b 100644 (file)
@@ -56,7 +56,8 @@ import org.tizen.dynamicanalyzer.common.SnapshotConstants;
 import org.tizen.dynamicanalyzer.model.ImageInfo;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
-import org.tizen.dynamicanalyzer.ui.widgets.DATabComposite;
+import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 
 public class ImageViewer extends Composite {
 
@@ -103,10 +104,11 @@ public class ImageViewer extends Composite {
        }
 
        private final int MOUSE_EXIT = 0;
-       private final int MOUSE_LEFT = 1;
-       private final int MOUSE_RIGHT = 2;
-       private final int MOUSE_DOWN_LEFT = 3;
-       private final int MOUSE_DOWN_RIGHT = 4;
+       private final int MOUSE_HOVER = 1;
+       private final int MOUSE_LEFT = 2;
+       private final int MOUSE_RIGHT = 3;
+       private final int MOUSE_DOWN_LEFT = 4;
+       private final int MOUSE_DOWN_RIGHT = 5;
 
        private Image image;
        private Canvas canvas;
@@ -298,55 +300,90 @@ public class ImageViewer extends Composite {
                                        }
                                        childShell.close();
                                        childShell = null;
-                                       // ready = false;
                                }
                                state = MOUSE_EXIT;
                                canvas.redraw();
                        } else if (event.type == SWT.MouseMove) {
+                               String runState = AnalyzerUtil.getRecordState();
+                               if (runState.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
+                                       return;
+                               }
                                if (!mouseDown) {
                                        Rectangle rect = canvas.getBounds();
+                                       Rectangle leftImageBounds = ImageResources.SNAPSHOT_LEFT_HOVER
+                                                       .getBounds();
+                                       Rectangle rightImageBounds = ImageResources.SNAPSHOT_RIGHT_HOVER
+                                                       .getBounds();
                                        int prevState = state;
-                                       if (event.x < rect.x + rect.width / 2) {
+                                       if (event.x < rect.x + leftImageBounds.width) {
                                                state = MOUSE_LEFT;
-                                       } else if (event.x > rect.x + rect.width / 2) {
+                                       } else if (event.x > rect.x
+                                                       + (rect.width - rightImageBounds.width)) {
                                                state = MOUSE_RIGHT;
+                                       } else if (event.x > rect.x
+                                                       && event.x < event.x + rect.width) {
+                                               state = MOUSE_HOVER;
                                        } else {
                                                state = MOUSE_EXIT;
                                        }
+
                                        if (prevState != state) {
                                                canvas.redraw();
                                        }
                                }
                        } else if (event.type == SWT.MouseDown) {
+                               String runState = AnalyzerUtil.getRecordState();
+                               if (runState.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
+                                       return;
+                               }
                                mouseDown = true;
                                Rectangle rect = canvas.getBounds();
+                               Rectangle leftImageBounds = ImageResources.SNAPSHOT_LEFT_HOVER
+                                               .getBounds();
+                               Rectangle rightImageBounds = ImageResources.SNAPSHOT_RIGHT_HOVER
+                                               .getBounds();
                                int prevState = state;
-                               if (event.x < rect.x + rect.width / 2) {
+                               if (event.x < rect.x + leftImageBounds.width) {
                                        state = MOUSE_DOWN_LEFT;
-                               } else if (event.x > rect.x + rect.width / 2) {
+                               } else if (event.x > rect.x
+                                               + (rect.width - rightImageBounds.width)) {
                                        state = MOUSE_DOWN_RIGHT;
+                               } else if (event.x > rect.x && event.x < event.x + rect.width) {
+                                       state = MOUSE_HOVER;
                                } else {
                                        state = MOUSE_EXIT;
                                }
+
                                if (prevState != state) {
                                        canvas.redraw();
                                }
                        } else if (event.type == SWT.MouseUp) {
+                               String runState = AnalyzerUtil.getRecordState();
+                               if (runState.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
+                                       return;
+                               }
                                mouseDown = false;
                                Rectangle rect = canvas.getBounds();
+                               Rectangle leftImageBounds = ImageResources.SNAPSHOT_LEFT_HOVER
+                                               .getBounds();
+                               Rectangle rightImageBounds = ImageResources.SNAPSHOT_RIGHT_HOVER
+                                               .getBounds();
                                int prevState = state;
-                               if (event.x < rect.x + rect.width / 2) {
+                               if (event.x < rect.x + leftImageBounds.width) {
                                        if (state == MOUSE_DOWN_LEFT && leftEnable) {
                                                leftArrowAction();
                                                setButtonCondition();
                                        }
                                        state = MOUSE_LEFT;
-                               } else if (event.x > rect.x + rect.width / 2) {
+                               } else if (event.x > rect.x
+                                               + (rect.width - rightImageBounds.width)) {
                                        if (state == MOUSE_DOWN_RIGHT && rightEnable) {
                                                rightArrowAction();
                                                setButtonCondition();
                                        }
                                        state = MOUSE_RIGHT;
+                               } else if (event.x > rect.x && event.x < event.x + rect.width) {
+                                       state = MOUSE_HOVER;
                                } else {
                                        state = MOUSE_EXIT;
                                }
@@ -386,14 +423,12 @@ public class ImageViewer extends Composite {
        private void widgetSelected(String timeStr) {
                long time = Long.parseLong(timeStr);
                AnalyzerManager.getCurrentPage().updatePage(
-                               new DASelectionData(DATabComposite.ID, time, time,
-                                               null, null));
+                               new DASelectionData(SnapshotView.ID, time, time, null, null));
        }
 
        private void leftArrowAction() {
                List<ImageInfo> imageList = AnalyzerManager.getImageList();
                ImageInfo imgInfo = imageList.get(--currentImageIndex);
-               System.out.println("left");
                drawSnapshot(imgInfo.getTime());
                widgetSelected(imgInfo.getTime());
        }
@@ -404,7 +439,6 @@ public class ImageViewer extends Composite {
                        return;
                }
                ImageInfo imgInfo = imageList.get(++currentImageIndex);
-               System.out.println("right");
                drawSnapshot(imgInfo.getTime());
                widgetSelected(imgInfo.getTime());
        }
index 0a143d0..ddf4291 100644 (file)
@@ -29,11 +29,14 @@ package org.tizen.dynamicanalyzer.ui.info.snapshot;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
@@ -45,7 +48,11 @@ import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider;
 import org.tizen.dynamicanalyzer.sql.SqlManager;
+import org.tizen.dynamicanalyzer.ui.page.ViewAction;
 import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATreeComposite;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 import org.tizen.dynamicanalyzer.widgets.graph.bar.FourBarGraph;
 import org.tizen.dynamicanalyzer.widgets.graph.circular.CircularGraph;
@@ -58,7 +65,8 @@ public class SnapshotView extends DAView {
        CircularGraph processGraph;
        FourBarGraph cpuGrp;
        private static String rss = "0"; //$NON-NLS-1$
-//     private static String time = "0"; //$NON-NLS-1$
+       private String[] observingViews = null;
+
        private static List<Long> cpuUsage;
        private static long maxCpuUsage = 100;
        private static long maxMem = 100;
@@ -89,14 +97,14 @@ public class SnapshotView extends DAView {
                Composite processComp = new Composite(contents, SWT.NONE);
                data = new FormData();
                data.top = new FormAttachment(snapshot, 3);
-//              data.left = new FormAttachment(50, 0);
+               // data.left = new FormAttachment(50, 0);
                data.right = new FormAttachment(100, 0);
-                data.width = 90;
+               data.width = 90;
                data.height = 90;
                processComp.setLayoutData(data);
                processComp.setBackground(ColorResources.WHITE);
                processComp.setLayout(new FillLayout());
-               
+
                processGraph = new CircularGraph(processComp, SWT.NONE,
                                CircularGraph.TYPE_CUSTOM);
                processGraph.setGraphBgColor(ColorResources.PROCESS_GRAPH_BG_COLOR);
@@ -113,7 +121,7 @@ public class SnapshotView extends DAView {
                data = new FormData();
                data.top = new FormAttachment(snapshot, 3);
                data.right = new FormAttachment(processComp, -3);
-                data.width = 90;
+               data.width = 90;
                data.height = 90;
                cpuGrp.setLayoutData(data);
                cpuGrp.setBgColor(ColorResources.CPU_BAR_GRAPH_BG_COLOR);
@@ -130,16 +138,22 @@ public class SnapshotView extends DAView {
                data = new FormData();
                data.top = new FormAttachment(snapshot, 3);
                data.right = new FormAttachment(cpuGrp, -3);
-                data.left = new FormAttachment(0, 0);
+               data.left = new FormAttachment(0, 0);
                data.height = 75;
                emptyComp.setLayoutData(data);
        }
 
+       public void setObservingViews(String[] viewIds) {
+               observingViews = viewIds;
+       }
+
+       public String[] getObservingViews() {
+               return observingViews;
+       }
+
        private void computeData() {
                String query = "select * from system where time = (select max(time) from system where time <= " //$NON-NLS-1$
                                + startTime + ");"; //$NON-NLS-1$
-               // FIXME : debug log
-               // System.out.println(startTime);
                if (null == AnalyzerManager
                                .getLogCenterById(LogCenterConstants.LOG_DEVICE)) {
                        return;
@@ -169,28 +183,49 @@ public class SnapshotView extends DAView {
                rss = input.get(LogCenterConstants.DEVICE_RSS_MEMORY_INDEX + 1);
 
                long totalMem = AnalyzerManager.getProject().getSystemMemorySize();
-//             time = input.get(LogCenterConstants.TIME_INDEX + 1);
-               // cpuUsage = cpus;
                maxMem = totalMem;
                processMem = Long.parseLong(rss);
-
        }
 
        @Override
        public void updateView(DASelectionData selData) {
-               setTimeStartEnd(selData.getStartTime(), selData.getEndTime());
-               updateView();
+               String runState = AnalyzerUtil.getRecordState();
+               if (runState.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
+                       return;
+               }
+               setStartTime(selData.getStartTime());
+               if (selData.getViewId().equals(SnapshotView.ID)) {
+                       updateView(false);
+               } else {
+                       updateView(true);
+               }
+       }
+
+       private void updateView(final boolean isSnapshot) {
+               computeData();
+               Display.getDefault().syncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               processGraph.update(maxMem, processMem);
+                               cpuGrp.setMaxSize(maxCpuUsage);
+                               cpuGrp.setCurrentValue(cpuUsage);
+                               if (isSnapshot) {
+                                       snapshot.drawSnapshot(Long.toString(startTime));
+                               }
+                       }
+               });
        }
 
        @Override
        public void updateView() {
-               String state = AnalyzerUtil.getRecordState();
-               if (state.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
 
-               } else {
-                       computeData();
+               String runState = AnalyzerUtil.getRecordState();
+               if (!runState.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
+                       setStartTimeFromObservingView();
                }
 
+               computeData();
+
                Display.getDefault().syncExec(new Runnable() {
                        @Override
                        public void run() {
@@ -202,6 +237,34 @@ public class SnapshotView extends DAView {
                });
        }
 
+       private void setStartTimeFromObservingView() {
+               if (null == observingViews) {
+                       return;
+               }
+               int size = observingViews.length;
+               for (int i = 0; i < size; i++) {
+                       ViewAction view = AnalyzerManager.getCurrentPage().getView(
+                                       observingViews[i]);
+                       Control control = view.getControl();
+                       Grid table = null;
+                       if (control instanceof DATableComposite) {
+                               table = ((DATableComposite) control).getTable();
+                       } else if (control instanceof DATreeComposite) {
+                               table = ((DATreeComposite) control).getTable();
+                       } else {
+                               continue;
+                       }
+                       if (table.getSelectionCount() > 0) {
+                               GridItem[] selection = table.getSelection();
+                               List<String> startData = ((DATableDataFormat) selection[0]
+                                               .getData()).getData();
+                               long startTime = Long.parseLong(startData
+                                               .get(LogCenterConstants.TIME_INDEX));
+                               setStartTime(startTime);
+                       }
+               }
+       }
+
        @Override
        public void updateLog(LogPackage logPack) {
                Logs logs = logPack.getLogs(LogCenterConstants.LOG_DEVICE);
@@ -223,14 +286,16 @@ public class SnapshotView extends DAView {
 
                rss = input.get(LogCenterConstants.DEVICE_RSS_MEMORY_INDEX);
                long totalMem = AnalyzerManager.getProject().getSystemMemorySize();
-//             time = input.get(LogCenterConstants.TIME_INDEX);
                maxMem = totalMem;
                processMem = Long.parseLong(rss);
+               String time = input.get(LogCenterConstants.TIME_INDEX);
+               long start = Long.parseLong(time);
+               setStartTime(start);
        }
 
        @Override
        public void clear() {
-//             time = "0"; //$NON-NLS-1$
+               //              time = "0"; //$NON-NLS-1$
                cpuUsage.clear();
                maxMem = 100;
                processMem = 0;
@@ -238,7 +303,7 @@ public class SnapshotView extends DAView {
                updateView();
        }
 
-       public void setTimeStartEnd(long start, long end) {
+       public void setStartTime(long start) {
                startTime = start;
        }
 }
index 8af3621..b05e80d 100644 (file)
@@ -89,9 +89,11 @@ public class SummaryPage extends DAPageComposite {
                DATabComposite tabView = new DATabComposite(upperForm, SWT.NONE);
                addView(tabView);
                {
-                       SnapshotView currentView = new SnapshotView(
+                       SnapshotView snapshotView = new SnapshotView(
                                        tabView.getContentComposite(), SWT.NONE, false);
-                       tabView.addView(currentView);
+                       tabView.addView(snapshotView);
+                       snapshotView.setObservingViews(new String[] { FailedApiListView.ID,
+                                       LeakView.ID, WarningListView.ID });
 
                        CallstackView callstack = new CallstackView(
                                        tabView.getContentComposite(), SWT.NONE);
index 7612fc6..4279c3f 100644 (file)
@@ -64,8 +64,10 @@ public class FailedApiTable extends DATableComposite {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                GridItem[] items = table.getSelection();
+                               DATableDataFormat dataFormat = (DATableDataFormat) items[0].getData();
+                               String time = dataFormat.getData().get(LogCenterConstants.TIME_INDEX);
                                DASelectionData selData = new DASelectionData(
-                                               FailedApiListView.ID, 0, 0, items, table);
+                                               FailedApiListView.ID, Long.parseLong(time), 0, items, table);
                                AnalyzerManager.getCurrentPage().updatePage(selData);
                                AnalyzerManager.getCurrentPage().controlSelection(
                                                FailedApiListView.ID);
index 2a68ee7..7f4b766 100644 (file)
@@ -87,8 +87,14 @@ public class LeakTable extends DATreeComposite {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                GridItem[] items = tree.getSelection();
-                               DASelectionData selData = new DASelectionData(LeakView.ID, 0,
-                                               0, items, tree);
+
+                               DATableDataFormat dataFormat = (DATableDataFormat) items[0]
+                                               .getData();
+                               String time = dataFormat.getData().get(
+                                               LogCenterConstants.TIME_INDEX);
+
+                               DASelectionData selData = new DASelectionData(LeakView.ID, Long
+                                               .parseLong(time), 0, items, tree);
                                AnalyzerManager.getCurrentPage().updatePage(selData);
                                AnalyzerManager.getCurrentPage().controlSelection(LeakView.ID);
                        }
index 0ba47dd..3aa6601 100644 (file)
@@ -62,8 +62,12 @@ public class WarningTable extends DATableComposite {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                GridItem[] items = table.getSelection();
+                               
+                               DATableDataFormat dataFormat = (DATableDataFormat) items[0].getData();
+                               String time = dataFormat.getData().get(LogCenterConstants.TIME_INDEX);
+                               
                                DASelectionData selData = new DASelectionData(
-                                               WarningListView.ID, 0, 0, items, table);
+                                               WarningListView.ID, Long.parseLong(time), 0, items, table);
                                AnalyzerManager.getCurrentPage().updatePage(selData);
                                AnalyzerManager.getCurrentPage().controlSelection(
                                                WarningListView.ID);
index f688ff0..f5ad5bf 100644 (file)
@@ -78,9 +78,10 @@ public class ThreadPage extends DAPageComposite {
                DATabComposite tabView = new DATabComposite(rightForm, SWT.NONE);
                addView(tabView);
                {
-                       SnapshotView currentView = new SnapshotView(
+                       SnapshotView snapshotView = new SnapshotView(
                                        tabView.getContentComposite(), SWT.NONE, false);
-                       tabView.addView(currentView);
+                       snapshotView.setObservingViews(new String[] { ThreadAPIListView.ID });
+                       tabView.addView(snapshotView);
 
                        CallstackView callstack = new CallstackView(
                                        tabView.getContentComposite(), SWT.NONE);
index e367422..6ef6446 100644 (file)
@@ -79,7 +79,7 @@ public class DATimelineTabComposite extends DATabComposite {
                        }\r
                }\r
                rangeView.setTimeStartEnd(data.getStartTime(), data.getEndTime());\r
-               snapshotView.setTimeStartEnd(data.getStartTime(), data.getEndTime());\r
+               snapshotView.setStartTime(data.getStartTime());\r
                super.updateView(data);\r
        }\r
 }\r
index 0b17e63..c0ffef0 100644 (file)
@@ -65,23 +65,23 @@ public class TimelinePage extends DAPageComposite {
 
                leftForm = new SashForm(this, SWT.HORIZONTAL);
                // index 0 : TIMELINE_INDEX
-               TimelineView timelineComp = new TimelineView(leftForm,
-                               SWT.NONE);
+               TimelineView timelineComp = new TimelineView(leftForm, SWT.NONE);
                addView(timelineComp);
 
                rightForm = new SashForm(leftForm, SWT.VERTICAL);
 
                // index 1 : INFO_INDEX
-               DATabComposite tabView = new DATabComposite(rightForm,SWT.NONE);
+               DATabComposite tabView = new DATabComposite(rightForm, SWT.NONE);
                addView(tabView);
                {
-                       SnapshotView currentView = new SnapshotView(
+                       SnapshotView snapshotView = new SnapshotView(
                                        tabView.getContentComposite(), SWT.NONE, false);
-                       tabView.addView(currentView);
+                       snapshotView.setObservingViews(new String[] { CallTraceView.ID });
+                       tabView.addView(snapshotView);
 
                        CallstackView callstack = new CallstackView(
                                        tabView.getContentComposite(), SWT.NONE);
-                       callstack.setObservingViews(new String[] {CallTraceView.ID});
+                       callstack.setObservingViews(new String[] { CallTraceView.ID });
                        tabView.addView(callstack);
 
                        RangeView rangeView = new RangeView(tabView.getContentComposite(),
@@ -115,8 +115,6 @@ public class TimelinePage extends DAPageComposite {
 
                        @Override
                        public void controlMoved(ControlEvent e) {
-                               // TODO Auto-generated method stub
-
                        }
                });
        }