[SRADA-467]Add DlogTable on TimeLinePage - 03
authorggh1933.go <ggh1933.go@samsung.com>
Thu, 12 May 2016 04:26:14 +0000 (13:26 +0900)
committerdongkyu6 lee <dongkyu6.lee@samsung.com>
Thu, 12 May 2016 04:45:34 +0000 (13:45 +0900)
 - Add Filter function by Tag and Level
 - Filter triggered by popup menu(right click on Table)

Change-Id: I03d834d9e144c30d18c292f7aef30f9727536dc4

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/dlog/DADlogReceiver.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/dlog/DlogTable.java

index 0677b60..b8ddf28 100755 (executable)
@@ -4,19 +4,12 @@ import java.text.DateFormat;
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
 import java.util.ArrayList;\r
-import java.util.Calendar;\r
 import java.util.Date;\r
 import java.util.List;\r
 import java.util.regex.Pattern;\r
-\r
-import org.eclipse.swt.widgets.Display;\r
 import org.tizen.dynamicanalyzer.common.Global;\r
 import org.tizen.dynamicanalyzer.communicator.CommunicatorUtils;\r
 import org.tizen.dynamicanalyzer.communicator.DeviceInfo;\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.TimelineTableView;\r
-import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
 import org.tizen.sdblib.receiver.MultiLineReceiver;\r
 import org.tizen.sdblib.util.StringUtil;\r
 \r
index 4299490..840df98 100755 (executable)
@@ -7,19 +7,26 @@ import java.util.List;
 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
@@ -31,14 +38,13 @@ public class DlogTable extends DATableComposite {
        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
@@ -52,7 +58,11 @@ public class DlogTable extends DATableComposite {
                        \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
@@ -73,18 +83,120 @@ public class DlogTable extends DATableComposite {
                        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
@@ -94,6 +206,10 @@ public class DlogTable extends DATableComposite {
                \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
@@ -227,11 +343,11 @@ public class DlogTable extends DATableComposite {
                }\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
@@ -241,11 +357,19 @@ public class DlogTable extends DATableComposite {
                                        //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