@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);
}
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);
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 {
}
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;
}
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;
}
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());
}
return;
}
ImageInfo imgInfo = imageList.get(++currentImageIndex);
- System.out.println("right");
drawSnapshot(imgInfo.getTime());
widgetSelected(imgInfo.getTime());
}
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;
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;
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;
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);
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);
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;
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() {
});
}
+ 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);
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;
updateView();
}
- public void setTimeStartEnd(long start, long end) {
+ public void setStartTime(long start) {
startTime = start;
}
}
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);
@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);
@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);
}
@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);
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);
}\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
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(),
@Override
public void controlMoved(ControlEvent e) {
- // TODO Auto-generated method stub
-
}
});
}