[SRADA-997][SRADA-998] Improve Dlog table popupmenu
authorjaeyong lee <jae-yong.lee@samsung.com>
Tue, 9 Aug 2016 07:04:57 +0000 (16:04 +0900)
committerjaeyong lee <jae-yong.lee@samsung.com>
Wed, 10 Aug 2016 05:26:12 +0000 (14:26 +0900)
 * add new filtering rule (pid, tid)
 * fix 'Filter by selected level' fucntion
 * apply new flat style
 * code refactoring

Change-Id: I5a3b5c2ee5067735b3c8504a26b70f8791891edc

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

index d31ee34..5b181ec 100644 (file)
@@ -39,15 +39,13 @@ import org.eclipse.swt.events.SelectionListener;
 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
@@ -73,11 +71,14 @@ import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
 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
@@ -88,6 +89,17 @@ public class DlogTable extends DATableComposite {
        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
@@ -103,6 +115,91 @@ public class DlogTable extends DATableComposite {
                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
@@ -135,93 +232,6 @@ public class DlogTable extends DATableComposite {
                        @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
@@ -319,13 +329,13 @@ public class DlogTable extends DATableComposite {
                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
@@ -341,7 +351,6 @@ public class DlogTable extends DATableComposite {
         });\r
        }\r
        \r
-       \r
        private void DlogTimeMarker(long markerTime){\r
        \r
                double startMarkerTime = markerTime\r