import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Menu;\r
-import org.eclipse.swt.widgets.MenuItem;\r
-import org.eclipse.swt.widgets.Shell;\r
import org.tizen.dynamicanalyzer.common.AnalyzerConstants;\r
import org.tizen.dynamicanalyzer.common.AnalyzerManager;\r
import org.tizen.dynamicanalyzer.common.DASelectionData;\r
import org.tizen.dynamicanalyzer.common.Global;\r
import org.tizen.dynamicanalyzer.model.TableInput;\r
import org.tizen.dynamicanalyzer.resources.ColorResources;\r
+import org.tizen.dynamicanalyzer.resources.FontResources;\r
import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;\r
import org.tizen.dynamicanalyzer.ui.file.FileChartView;\r
import org.tizen.dynamicanalyzer.ui.file.FilePage;\r
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
import org.tizen.dynamicanalyzer.utils.Formatter;\r
import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker;\r
+import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu;\r
+import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem;\r
+import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuListener;\r
import org.tizen.sdblib.util.StringUtil;\r
\r
public class DlogTable extends DATableComposite {\r
\r
- private String[] columnNames = {"Time", "Level", "Pid", "Tid", "Tag", "Message" }; //6col\r
+ private String[] columnNames = {"Time", "Level", "PID", "TID", "Tag", "Message" }; //6col\r
private int[] columnSizes = { 70, 50, 60, 60, 80, 600};\r
private int[] columnAlignment = { SWT.CENTER, SWT.CENTER, SWT.CENTER, SWT.CENTER, SWT.LEFT, SWT.LEFT };\r
private boolean[] columnVisibility = { true, true, true, true, true, true };\r
private List<DADlogData> dlogClone = new ArrayList<DADlogData>();\r
private List<TableInput> filteredDlog = new ArrayList<TableInput>();\r
private static boolean isFilter = false;\r
+ \r
+ private static String POPUP_FILTER_BY_LEVEL = "Filter by selected Level";\r
+ private static String POPUP_FILTER_BY_PID = "Filter by selected PID";\r
+ private static String POPUP_FILTER_BY_TID = "Filter by selected TID";\r
+ private static String POPUP_FILTER_BY_TAG = "Filter by selected Tag";\r
+ private static String POPUP_SHOW_ALL_DLOGS = "Show all Dlogs";\r
+ \r
+ private static int TABLE_INDEX_LEVEL = 1;\r
+ private static int TABLE_INDEX_PID = 2;\r
+ private static int TABLE_INDEX_TID = 3;\r
+ private static int TABLE_INDEX_TAG = 4;\r
\r
public DlogTable(Composite parent, int compStyle, int tableStyle) {\r
super(parent, compStyle, tableStyle);\r
parent.addControlListener(new TableColumnSizePackListener(this, columnSizes));\r
\r
initDlogListeners(); \r
+ initPopupMenu();\r
+ }\r
+ \r
+ private void initPopupMenu() {\r
+ popupMenu = new DAPopupMenu(table);\r
+ popupMenu.setFont(FontResources.CONTEXT_MENU_ITEM_FONT);\r
+ \r
+ DAPopupMenuItem filterByLevelItem = new DAPopupMenuItem(popupMenu);\r
+ filterByLevelItem.setText(POPUP_FILTER_BY_LEVEL);\r
+ filterByLevelItem.addListener(new DAPopupMenuListener() {\r
+ @Override\r
+ public void widgetSelected(DAPopupMenuItem menuItem) {\r
+ GridItem item = table.getItem(new Point(mousePoint.x, mousePoint.y));\r
+ if (null == item) {\r
+ return;\r
+ }\r
+ \r
+ String startData = ((DATableDataFormat) item.getData()).getData().get(TABLE_INDEX_LEVEL).toString();\r
+ filterTable(startData, TABLE_INDEX_LEVEL);\r
+ }\r
+ });\r
+ \r
+ DAPopupMenuItem filterByLevelPID = new DAPopupMenuItem(popupMenu);\r
+ filterByLevelPID.setText(POPUP_FILTER_BY_PID);\r
+ filterByLevelPID.addListener(new DAPopupMenuListener() {\r
+ @Override\r
+ public void widgetSelected(DAPopupMenuItem menuItem) {\r
+ GridItem item = table.getItem(new Point(mousePoint.x, mousePoint.y));\r
+ if (null == item) {\r
+ return;\r
+ }\r
+ \r
+ String startData = ((DATableDataFormat) item.getData()).getData().get(TABLE_INDEX_PID).toString();\r
+ filterTable(startData, TABLE_INDEX_PID);\r
+ }\r
+ });\r
+ \r
+ DAPopupMenuItem filterByLevelTID = new DAPopupMenuItem(popupMenu);\r
+ filterByLevelTID.setText(POPUP_FILTER_BY_TID);\r
+ filterByLevelTID.addListener(new DAPopupMenuListener() {\r
+ @Override\r
+ public void widgetSelected(DAPopupMenuItem menuItem) {\r
+ GridItem item = table.getItem(new Point(mousePoint.x, mousePoint.y));\r
+ if (null == item) {\r
+ return;\r
+ }\r
+ \r
+ String startData = ((DATableDataFormat) item.getData()).getData().get(TABLE_INDEX_TID).toString();\r
+ filterTable(startData, TABLE_INDEX_TID);\r
+ }\r
+ });\r
+ \r
+ DAPopupMenuItem filterByTagItem = new DAPopupMenuItem(popupMenu);\r
+ filterByTagItem.setText(POPUP_FILTER_BY_TAG);\r
+ filterByTagItem.addListener(new DAPopupMenuListener() {\r
+ @Override\r
+ public void widgetSelected(DAPopupMenuItem menuItem) {\r
+ GridItem item = table.getItem(new Point(mousePoint.x, mousePoint.y));\r
+ if (null == item) {\r
+ return;\r
+ }\r
+ \r
+ String startData = ((DATableDataFormat) item.getData()).getData().get(TABLE_INDEX_TAG).toString();\r
+ filterTable(startData, TABLE_INDEX_TAG);\r
+ }\r
+ });\r
+ \r
+ \r
+ \r
+ DAPopupMenuItem allDlogShowItem = new DAPopupMenuItem(popupMenu);\r
+ allDlogShowItem.setText(POPUP_SHOW_ALL_DLOGS);\r
+ allDlogShowItem.addListener(new DAPopupMenuListener() {\r
+ @Override\r
+ public void widgetSelected(DAPopupMenuItem menuItem) {\r
+ isFilter = false;\r
+ table.update();\r
+ Display.getDefault().syncExec(new Runnable() {\r
+ @Override\r
+ public void run() {\r
+ BaseView baseView = (BaseView) WorkbenchUtil.getViewPart(BaseView.ID);\r
+ baseView.getTopComposite().updateView();\r
+ }\r
+ });\r
+ }\r
+ });\r
}\r
\r
public boolean initDlogListeners(){\r
@Override\r
public void mouseUp(final MouseEvent MouseEvent) {\r
// TODO Auto-generated method stub\r
- \r
- // START : Mouse Right Click on table cell \r
- if(MouseEvent.button == 3){\r
- \r
- Shell shell = table.getParent().getShell();\r
- Menu dropmenu = new Menu(shell, SWT.POP_UP);\r
- shell.setMenu(dropmenu);\r
- MenuItem item0 = new MenuItem(dropmenu, SWT.NONE);\r
- MenuItem item1 = new MenuItem(dropmenu, SWT.NONE);\r
- MenuItem item2 = new MenuItem(dropmenu, SWT.NONE);\r
- \r
- item0.setText("Filter by Selected Tag");\r
- item1.setText("Filter by Selected Level");\r
- item2.setText("All DLogs show");\r
- \r
- item0.addSelectionListener(new SelectionListener() {\r
- \r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- GridItem[] ti = ((Grid) MouseEvent.widget).getSelection();\r
- if (null == ti || ti.length == 0) {\r
- return;\r
- }\r
- String startData = ((DATableDataFormat) ti[0].getData()).getData().get(4).toString();\r
- filteringDlog(startData);\r
- \r
- }\r
- \r
- @Override\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
- });\r
- \r
- item1.addSelectionListener(new SelectionListener() {\r
- \r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- GridItem[] ti = ((Grid) MouseEvent.widget).getSelection();\r
- if (null == ti || ti.length == 0) {\r
- return;\r
- }\r
- String startData = ((DATableDataFormat) ti[0].getData()).getData().get(1).toString();\r
- filteringDlog(startData);\r
- }\r
- \r
- @Override\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
- });\r
- \r
- item2.addSelectionListener(new SelectionListener() {\r
- \r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- // TODO Auto-generated method stub\r
- isFilter = false;\r
- table.update();\r
- Display.getDefault().syncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- BaseView baseView = (BaseView) WorkbenchUtil.getViewPart(BaseView.ID); \r
- baseView.getTopComposite().updateView(); \r
- }\r
- });\r
- }\r
- \r
- @Override\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
- });\r
- int X = MouseEvent.x;\r
- int Y = MouseEvent.y;\r
- Point gridPoint = ((Grid) MouseEvent.widget).toDisplay(X, Y);\r
- dropmenu.setLocation( gridPoint.x, gridPoint.y);\r
- dropmenu.setVisible(true); \r
- }\r
- // END : Mouse Right Click on table cell \r
}\r
\r
@Override\r
return output;\r
}\r
\r
- private void filteringDlog(String input){\r
+ private void filterTable(String input, int categoryIndex) {\r
\r
filteredDlog.clear();\r
\r
if(tableClone != null){\r
for(TableInput table : tableClone){\r
- if(table.getText().get(4).contains(input)){\r
+ if(table.getText().get(categoryIndex).equals(input)){\r
filteredDlog.add(table);\r
isFilter = true;\r
}\r
});\r
}\r
\r
- \r
private void DlogTimeMarker(long markerTime){\r
\r
double startMarkerTime = markerTime\r