Thread items in Thread chart are sorted by tid both in thread chart mode and sync chart mode
Change-Id: I828ff43274255fe40680b2c6c57cc771e8b157e1
Signed-off-by: woojin <woojin2.jung@samsung.com>
package org.tizen.dynamicanalyzer.widgets.chartBoard;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import org.eclipse.jface.window.DefaultToolTip;
int listHeight = itemList.getListHeight();
itemList.setSize(itemListScrollComp.getClientArea().width, listHeight);
}
+ // for sorting of chart items
+ protected void registerItem(DAChartBoardItem item,
+ Comparator c) {
+ itemList.registerItem(item, c);
+
+ int listHeight = itemList.getListHeight();
+ itemList.setSize(itemListScrollComp.getClientArea().width, listHeight);
+ }
public DAChartBoardItemList getItemList() {
return itemList;
*/
package org.tizen.dynamicanalyzer.widgets.chartBoard;
+import java.util.Comparator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
public final static int DEFAULT_NAME_CELL_WIDTH = 102;
private int depth = 0;
+ private Object sortObj = null;
private void initWidget(String name, Image icon, int chartStyle) {
heightRatio = getBoardItemHeightRatio();
initWidget(itemName, null, DAChart.CHART_STYLE_NORMAL);
parentBoard.registerItem(this);
}
+ // for sorting of chart items
+ public DAChartBoardItem(DAChartBoard parent, String itemName,
+ Object o, Comparator c) {
+ super(parent.getItemList(), SWT.NONE);
+ parentBoard = parent;
+ sortObj = o;
+ initWidget(itemName, null, DAChart.CHART_STYLE_NORMAL);
+ parentBoard.registerItem(this, c);
+ }
public DAChartBoardItem(DAChartBoard parent, String itemName, Image icon,
int chartStyle) {
initWidget(itemName, null, DAChart.CHART_STYLE_NORMAL);
parentItem.registerItem(this);
}
+ // for sorting of chart items
+ public DAChartBoardItem(DAChartBoardItem parent, String itemName,
+ Object o, Comparator c) {
+ super(parent.getChildItemList(), SWT.NONE);
+ parentItem = parent;
+ depth = parent.getDepth() + 1;
+ sortObj = o;
+ initWidget(itemName, null, DAChart.CHART_STYLE_NORMAL);
+ parentItem.registerItem(this, c);
+ }
public DAChartBoardItem(DAChartBoardItem parent, String itemName, Image icon,
int chartStyle) {
callNotifyResizeChild();
}
+ // for sorting of chart items
+ private void registerItem(DAChartBoardItem child, Comparator c) {
+ if (childItemList.getItemSize() == 0) {
+ itemCell.addChildFoldToggleButton();
+ }
+ childItemList.registerItem(child, c);
+ FormData childDListata = (FormData) childItemList.getLayoutData();
+ childDListata.height = childItemList.getListHeight();
+ childItemList.setLayoutData(childDListata);
+
+ callNotifyResizeChild();
+ }
+
void foldChild() {
childFolded = true;
public DAChartBoard getChartBoard() {
return parentBoard;
}
+
+ public Object getSortObject() {
+ return sortObj;
+ }
}
import java.util.ArrayList;
import java.util.List;
+import java.util.Comparator;
+import java.util.Collections;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
childItems.add(item);
this.layout();
}
+ // for sorting of chart items
+ public void registerItem(DAChartBoardItem item, Comparator c) {
+ int itemHeight = (int) (DAChartBoard.DEFAULT_ITEM_HEIGHT * getBoardItemHeightRatio());
+ FormData data = new FormData();
+ int itemSize = childItems.size();
+ if (0 == itemSize) {
+ data.top = new FormAttachment(0, 0);
+ } else {
+ data.top = new FormAttachment(childItems.get(itemSize - 1), 0);
+ }
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+
+ data.height = itemHeight;
+ item.setLayoutData(data);
+
+ childItems.add(item);
+
+ Collections.sort(childItems, c);
+ itemSize = childItems.size();
+ // readjust top position of each items after sorting
+ for(int i = 0; i < itemSize; i++) {
+ FormData formdata = (FormData) childItems.get(i).getLayoutData();
+ if (i == 0) {
+ formdata.top = new FormAttachment(0, 0);
+ } else {
+ formdata.top = new FormAttachment(childItems.get(i - 1), 0);
+ }
+// childItems.get(i).setLayoutData(formdata);
+ }
+ this.layout();
+ }
+
public int getListHeight() {
int listHeight = 0;
for(DAChartBoardItem childItem : childItems) {
}
return childItems.get(index);
}
+
+ public void sort(Comparator c) {
+ Collections.sort(childItems, c);
+ return;
+ }
protected int getItemYPos(int index) {
int pos = 0;
* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
+ * WooJin Jung <woojin2.jung@samsung.com>
* yeongtaik byeon <yeongtaik.byeon@samsung.com>
* Juyoung Kim <j0.kim@samsung.com>
*
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Comparator;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
chart.redraw();
return true;
}
+ // for sorting of child item of sync chart
+ private boolean createSyncBoardItem(ThreadPageSyncData parent,
+ ThreadPageSyncData sync, Comparator c) {
+ DAChartBoardItem item;
+ DAChart chart;
+ Integer tid = Integer.valueOf(sync.getTid());
+
+ if (null == parent) {
+ item = new DAChartBoardItem(board, sync.getType()
+ + ThreadPageLabels.THREAD_CHART_NAME_PREFIX
+ + ThreadPageLabels.THREAD_CHART_NAME_OBJ + sync.getKey()
+ + ThreadPageLabels.THREAD_CHART_NAME_POSTFIX);
+ item.useExpand(true);
+ chart = item.getChart();
+ initSyncChart(chart, true);
+ } else {
+ DAChartBoardItem parentItem = parent.getItem();
+ item = new DAChartBoardItem(parentItem,
+ ThreadPageLabels.THREAD_CHART_NAME_TID
+ + sync.getTid(), tid, c);
+ item.useExpand(true);
+ chart = item.getChart();
+ initSyncChart(chart, false);
+ }
+
+ sync.setItem(item);
+ item.setData(sync);
+ chart.setData(sync);
+ chart.redraw();
+ return true;
+ }
private void chartFilteringByPid() {
if(null == board || null == board.getItemList()){
return pid;
}
-
+ private int getSortObject(DAChartBoardItem item) {
+ Object sortObj = item.getSortObject();
+ if (sortObj instanceof Integer) {
+ return (Integer) sortObj;
+ } else { // should never go here
+ return -1;
+ }
+ }
+
public void checkUpdate() {
chartFilteringByPid();
getSyncTypeString(event.getType()),
syncVal, pid, event.getTid(), attrType);
parent.pushSync(data);
- createSyncBoardItem(parent, data);
+ createSyncBoardItem(parent, data,
+ new Comparator<DAChartBoardItem>() {
+ public int compare(DAChartBoardItem item1,
+ DAChartBoardItem item2) {
+ return getSortObject(item1) - getSortObject(item2);
+ }
+ });
}
data.pushEvent(event);
syncEventQueue.remove(0);
* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
+ * WooJin Jung <woojin2.jung@samsung.com>
* yeongtaik byeon <yeongtaik.byeon@samsung.com>
* Juyoung Kim <j0.kim@samsung.com>
*
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Comparator;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter;
import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager;
import org.tizen.dynamicanalyzer.ui.summary.warning.WarningCase;
-import org.tizen.dynamicanalyzer.ui.summary.warning.WarningData;
import org.tizen.dynamicanalyzer.ui.thread.ThreadPageData;
import org.tizen.dynamicanalyzer.ui.thread.sync.ThreadPageSyncData;
import org.tizen.dynamicanalyzer.ui.thread.sync.ThreadPageSyncDataEvent;
chart.setData(data);
chart.redraw();
}
+ // for sorting of thread chart item
+ private void createBoardItem(ThreadPageThreadData data,
+ Comparator c) {
+ // DACustomChartBoardItem item = new DACustomChartBoardItem(board,
+ // data.getName());
+ Integer tid = Integer.valueOf(data.getTid());
+
+ DAChartBoardItem item = new DAChartBoardItem(board, data.getType()
+ + ThreadPageLabels.THREAD_CHART_NAME_PREFIX
+ + ThreadPageLabels.THREAD_CHART_NAME_PID + data.getPid()
+ + ThreadPageLabels.THREAD_CHART_NAME_COMMA
+ + ThreadPageLabels.THREAD_CHART_NAME_TID + data.getKey()
+ + ThreadPageLabels.THREAD_CHART_NAME_POSTFIX, tid, c);
+
+ item.useExpand(true);
+ DAChart chart = item.getChart();
+ setChartSeries(chart);
+
+ setChartStyle(chart);
+ data.setItem(item);
+ item.setData(data);
+ chart.setData(data);
+ chart.redraw();
+ }
+
private void initSyncChart(DAChart chart) {
if (null == chart) {
return;
}
return pid;
}
-
-
+// TODO: syncDataManager has same method : move this method to proper class
+ private int getSortObject(DAChartBoardItem item) {
+ Object sortObj = item.getSortObject();
+ if (sortObj instanceof Integer) {
+ return (Integer) sortObj;
+ } else { // should never go here
+ return -1;
+ }
+ }
+
public void checkUpdate() {
if (false == hasUpdate &&
preSelectionPid ==
ThreadPageThreadData data;
for (int i = 0; i < size; i++) {
data = rowsQueue.get(0);
- createBoardItem(data);
+ // sort chart items at each insertion
+ createBoardItem(data, new Comparator<DAChartBoardItem>() {
+ public int compare(DAChartBoardItem item1,
+ DAChartBoardItem item2) {
+ return getSortObject(item1) - getSortObject(item2);
+ }
+ });
rows.add(data);
rowsQueue.remove(0);
}