import org.eclipse.nebula.widgets.grid.Grid;\r
import org.eclipse.nebula.widgets.grid.GridItem;\r
import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.MouseEvent;\r
+import org.eclipse.swt.events.MouseListener;\r
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.events.SelectionListener;\r
-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.model.TableInput;\r
import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;\r
+import org.tizen.dynamicanalyzer.ui.page.BaseView;\r
import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;\r
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartView;\r
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;\r
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;\r
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;\r
import org.tizen.dynamicanalyzer.ui.widgets.table.DefaultTableComparator;\r
+import org.tizen.dynamicanalyzer.util.WorkbenchUtil;\r
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
import org.tizen.dynamicanalyzer.utils.Formatter;\r
import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker;\r
private int[] columnSizes = { 80, 80, 80, 80, 300, 1200};\r
private int[] columnAlignment = { SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT };\r
private boolean[] columnVisibility = { true, true, true, true, true, true };\r
- private int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_NONE,\r
- AnalyzerConstants.SORT_TYPE_NONE,AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_NONE };\r
+ private int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_NONE,\r
+ AnalyzerConstants.SORT_TYPE_NONE,AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_NONE };\r
\r
private DADlogReceiver dlogRecv = new DADlogReceiver(); \r
private List<TableInput> tableClone = new ArrayList<TableInput>();\r
+ private List<TableInput> filteredDlog = new ArrayList<TableInput>();\r
private static boolean isFilter = false;\r
- private static List<DADlogData> dlogfilteredData = new ArrayList<DADlogData>();\r
- \r
public DlogTable(Composite parent, int compStyle, int tableStyle) {\r
// TODO Auto-generated constructor stub\r
super(parent, compStyle, tableStyle);\r
\r
//setDataType(FunctionEntryDBTable.COLUMN.START_TIME.index); \r
//setContextMenu(AnalyzerConstants.CONTEXT_TABLE_RANGE);\r
- \r
+ initDlogListeners();\r
+ }\r
+ \r
+ public boolean initDlogListeners(){\r
+ \r
table.addSelectionListener(new SelectionListener() {\r
\r
@Override\r
public void widgetDefaultSelected(SelectionEvent e) {\r
}\r
});\r
+ \r
+ table.addMouseListener(new MouseListener() {\r
+ \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
+ \r
+ dropmenu.setLocation(MouseEvent.x, MouseEvent.y);\r
+ dropmenu.setVisible(true); \r
+ }\r
+ // END : Mouse Right Click on table cell \r
+ }\r
+ \r
+ @Override\r
+ public void mouseDown(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ \r
+ @Override\r
+ public void mouseDoubleClick(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ }\r
+ });\r
+ \r
+ return true;\r
}\r
-\r
@Override\r
protected List<TableInput> makeTableInput() {\r
\r
List<TableInput> output = new ArrayList<TableInput>();\r
List<DADlogData> dlogData = new ArrayList<DADlogData>();\r
\r
- if(isFilter){\r
- dlogData = dlogfilteredData;\r
- }\r
- else if(dlogRecv.getDlogs()!=null){\r
+ if(dlogRecv.getDlogs()!=null){\r
dlogData = dlogRecv.parserDlogs();\r
}\r
else {\r
\r
int seqnum = 0;\r
\r
+ if(isFilter){\r
+ output = filteredDlog;\r
+ return output;\r
+ }\r
for(DADlogData data : dlogData){\r
List<String> text = new ArrayList<String>();\r
List<Object> tabledata = new ArrayList<Object>();\r
}\r
table.update();\r
}\r
- /// 0504 Success find me~!\r
- /// 1. Add TextEditor for input filter Text \r
- /// 2. Effect for selection\r
- /// 3. cutting Table by filtering \r
+\r
private void filteringDlog(String input){\r
+ \r
+ filteredDlog.clear();\r
+ \r
if(tableClone != null){\r
for(TableInput table : tableClone){\r
if(table.getText().get(4).contains(input)){\r
//private String level;\r
//private String tag;\r
//private String message;\r
- //dlogfilteredData.add(0,dlogRecv.getDlogs());\r
- System.out.println("============find me!!"+table.getText()+"==================");\r
+ filteredDlog.add(table);\r
+ isFilter = true;\r
}\r
}\r
}\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
private void DlogTimeMarker(long startTime, long endTime){\r