[SRADA-XXX] Rearrange Table width and align in Dlog Table
authordongkyu6 lee <dongkyu6.lee@samsung.com>
Tue, 31 May 2016 05:04:01 +0000 (14:04 +0900)
committergihun chang <gihun.chang@samsung.com>
Tue, 31 May 2016 08:51:42 +0000 (17:51 +0900)
 - delete UpdateTable for align
 - Add sorting table

Change-Id: Ib3a4e1822c238381fac2f10b71c99005987159f8

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

index 210df1e..7d0e669 100644 (file)
@@ -26,8 +26,8 @@
 package org.tizen.dynamicanalyzer.ui.timeline.dlog;\r
 \r
 import java.util.ArrayList;\r
-import java.util.Collections;\r
 import java.util.List;\r
+import java.util.regex.Pattern;\r
 \r
 import org.eclipse.nebula.widgets.grid.Grid;\r
 import org.eclipse.nebula.widgets.grid.GridItem;\r
@@ -53,38 +53,40 @@ import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
 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.ui.widgets.table.TableColumnSizePackListener;\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
 import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard;\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 int[] columnSizes = { 80, 60, 70, 70, 100, 1200};\r
-       private int[] columnAlignment = { SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT };\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 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
+       private int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NUM, AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_NUM,\r
+                       AnalyzerConstants.SORT_TYPE_NUM,AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_STRING };\r
        \r
        private List<TableInput> tableClone = new ArrayList<TableInput>();\r
        private List<TableInput> filteredDlog = new ArrayList<TableInput>();\r
        private static boolean isFilter = false;\r
        public DlogTable(Composite parent, int compStyle, int tableStyle) {\r
-               // TODO Auto-generated constructor stub\r
                super(parent, compStyle, tableStyle);\r
-               \r
+\r
                setSortTypes(sortTypes);\r
+               setColumnAlignment(columnAlignment);\r
                setColumns(columnNames);\r
                setColumnSize(columnSizes);\r
                setColumnVisibility(columnVisibility);\r
-               setColumnAlignment(columnAlignment);\r
-               setComparator(new DefaultTableComparator());\r
-                       \r
-               //setDataType(FunctionEntryDBTable.COLUMN.START_TIME.index); \r
-               //setContextMenu(AnalyzerConstants.CONTEXT_TABLE_RANGE);\r
-               initDlogListeners();\r
+               \r
+               setComparator(new DefaultTableComparator());            \r
+\r
+               parent.addControlListener(new TableColumnSizePackListener(this, columnSizes));\r
+\r
+               initDlogListeners();    \r
        }\r
        \r
        public boolean initDlogListeners(){\r
@@ -221,6 +223,16 @@ public class DlogTable extends DATableComposite {
        @Override\r
        protected List<TableInput> makeTableInput() {\r
                List<TableInput> output = new ArrayList<TableInput>();\r
+               if(Global.getProject() == null) {\r
+                       return output;\r
+               }\r
+               \r
+               if(Global.getProject().isSaveProject() == false) {\r
+                       if(!DLogDataManager.getInstance().getDlogKill()){\r
+                               return output;\r
+                       }       \r
+               }\r
+               \r
                List<DADlogData> dlogData = new ArrayList<DADlogData>();\r
                \r
                dlogData = DLogDataManager.getInstance().parserDlogs();\r
@@ -238,16 +250,26 @@ public class DlogTable extends DATableComposite {
                        \r
                        String strTime = Formatter.toTimeFormat(data.getTime());\r
                        text.add(strTime);\r
-                       tabledata.add(data.getTime());\r
+                       tabledata.add(convertTimeStringToLong(strTime));\r
                        \r
                        text.add(data.getLevel());\r
                        tabledata.add(data.getLevel());\r
                        \r
                        text.add(data.getPid());\r
-                       tabledata.add(data.getPid());\r
+                       try {\r
+                               tabledata.add(Integer.parseInt(data.getPid()));\r
+                       }\r
+                       catch (Exception ex) {\r
+                               tabledata.add(data.getPid());\r
+                       }\r
                        \r
                        text.add(data.getTid());\r
-                       tabledata.add(data.getTid());\r
+                       try {\r
+                               tabledata.add(Integer.parseInt(data.getTid()));\r
+                       }\r
+                       catch (Exception ex) {\r
+                               tabledata.add(data.getTid());\r
+                       }\r
                        \r
                        text.add(data.getTag());\r
                        tabledata.add(data.getTag());\r
@@ -271,77 +293,6 @@ public class DlogTable extends DATableComposite {
                tableClone = output;\r
                return output;\r
        }\r
-       \r
-       @Override\r
-       public void updateTable() {\r
-               if(Global.getProject().isSaveProject() == false) {\r
-                       if(!DLogDataManager.getInstance().getDlogKill()){\r
-                               return;\r
-                       }       \r
-               }\r
-               \r
-               List<TableInput> output = null;\r
-               output = makeTableInput();\r
-               \r
-               if (null == output) {\r
-                       return;\r
-               }\r
-\r
-               table.removeAll();\r
-               \r
-               if (null != comparator) {\r
-                       Collections.sort(output, comparator);\r
-               }\r
-               \r
-               List<Integer> selectionList = new ArrayList<Integer>();\r
-               boolean isSelectionItem = false;\r
-               int focusIndex = -1;\r
-               int size = output.size();\r
-\r
-               for (int i = 0; i < size; i++) {\r
-                       GridItem gridItem = new GridItem(table, SWT.NONE);\r
-                       DATableDataFormat gridData = (DATableDataFormat) output.get(i).getData();\r
-                       gridItem.setData(gridData);\r
-\r
-                       List<String> text = output.get(i).getText();\r
-                       int columnCount = text.size();\r
-                       for (int index = 0; index < columnCount; index++) {\r
-                               String textData = text.get(index);\r
-                               if (null != textData) {\r
-                                       gridItem.setText(index, text.get(index));\r
-                               }\r
-                       }\r
-\r
-                       if (output.get(i).isInRange() && output.get(i).isSecondSelection()) {\r
-                               gridItem.setBackground(intersectColor);\r
-                       } else if (output.get(i).isSecondSelection()) {\r
-                               gridItem.setBackground(secondSelectionColor);\r
-                       } else if (output.get(i).isInRange()) {\r
-                               gridItem.setBackground(rangeColor);\r
-                       }\r
-\r
-                       if (gridData != null) {\r
-                               long seqNum = gridData.getSelectionKey();\r
-\r
-                               if (-1 != focusSeq && seqNum == focusSeq) {\r
-                                       focusIndex = i;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               int[] sels = new int[selectionList.size()];\r
-               for (int i = 0; i < selectionList.size(); i++) {\r
-                       sels[i] = selectionList.get(i);\r
-               }\r
-\r
-               if (isSelectionItem) {\r
-                       table.setSelection(sels);\r
-                       if (table.isFocusControl() && focusIndex > 0) {\r
-                               table.setFocusItem(table.getItem(focusIndex));\r
-                       }\r
-               }\r
-               table.update();\r
-       }\r
 \r
        private void filteringDlog(String input){\r
                \r
@@ -380,4 +331,25 @@ public class DlogTable extends DATableComposite {
                                UICommonConstants.RANGE_MARKER_INDEX)).setInterval(startTime,\r
                                endTime);\r
        }\r
+       \r
+       private long convertTimeStringToLong(String timestring) {\r
+               long timelong = 0;\r
+               Pattern pattern = Pattern.compile("(\\d+):(\\d{2}).(\\d{3})");\r
+               String[] matches = StringUtil.split(timestring, pattern);\r
+               \r
+               if (matches == null || matches.length != 3)\r
+                       return timelong;\r
+               try{\r
+                       long min = Long.parseLong(matches[0]) * 60 * 1000;\r
+                       long sec = Long.parseLong(matches[1]) * 1000;\r
+                       long millsec = Long.parseLong(matches[2]);                      \r
+                       timelong = min + sec + millsec;\r
+                       \r
+                       return timelong;\r
+               }\r
+               catch (Exception ex){\r
+                       return 0;\r
+               }\r
+       }\r
+       \r
 }\r