[RELEASE] DA 2.3.18
authorMaria Guseva <m.guseva@samsung.com>
Tue, 11 Oct 2016 14:54:45 +0000 (17:54 +0300)
committerMaria Guseva <m.guseva@samsung.com>
Tue, 11 Oct 2016 14:55:04 +0000 (17:55 +0300)
- Fix Function Profiling info to be properly collected and shown
- Fix missed call trace data after saving trace
- Fix refinements in Remote Device dialog
- Fix filtering popup menu for Persistent Allocations table
- Fix bug with missing Heap Allocation charts (regression in DA 2.3.17)
- Fix SWT exception occured in application combobox
- Fix JIRA defects:
  SPTSDKUX-2223: Thread Detail is not Showing in DA
  SPTSDKUX-2248: The Path to Export Log is not Visible in Export Log Window

Change-Id: I8eff84d59284e392fd0d12e22fd63baf801a6d53

24 files changed:
org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/DAAbstractText.java
org.tizen.dynamicanalyzer.common.test/pom.xml
org.tizen.dynamicanalyzer.test/pom.xml
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/popupMenu/DAPopupMenu.java
org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product
org.tizen.dynamicanalyzer.workbench.product/pom.xml
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/DALogExport.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/CommandAction.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30/ProtocolConfig30.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30_uihv/ProtocolConfig30_UIHV.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p40/ProtocolConfig40.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p41/ProtocolConfig41.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/DAToolBarCustomCombo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RemoteDeviceDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableComposite.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATablePopupMenu.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/Formatter.java
package/changelog
package/pkginfo.manifest
pom.xml

index 1680fdf..840e6e0 100644 (file)
@@ -155,7 +155,7 @@ public abstract class DAAbstractText {
                return this.text.getText();
        }
 
-       public void setLayoutData(FormData data) {
+       public void setLayoutData(Object data) {
                this.text.setLayoutData(data);
        }
 
index 95d1cf6..76de5a9 100644 (file)
@@ -6,7 +6,7 @@
        <parent>
                <artifactId>dynamic-analyzer</artifactId>
                <groupId>org.tizen.dynamicanalyzer</groupId>
-               <version>0.0.1-SNAPSHOT</version>
+               <version>2.3.18-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <groupId>org.tizen.dynamicanalyzer</groupId>
index 63274c9..d2481bc 100644 (file)
@@ -6,7 +6,7 @@
        <parent>
                <artifactId>dynamic-analyzer</artifactId>
                <groupId>org.tizen.dynamicanalyzer</groupId>
-               <version>0.0.1-SNAPSHOT</version>
+               <version>2.3.18-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <groupId>org.tizen.dynamicanalyzer</groupId>
index 5ee9869..3059025 100644 (file)
@@ -190,7 +190,13 @@ public class DAPopupMenu {
                return false;
        }
 
-       private boolean isInParent(Point pt) {
+       /**
+        * Check if cursor points inside parent composite.
+        *
+        * @param pt specified point
+        * @return {@code true} if point inside parent composite
+        */
+       protected boolean isInParent(Point pt) {
                if (null == parent) {
                        return false;
                }
index e6b3227..3baa8de 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="%DynamicAnalyzer" uid="org.tizen.dynamicanalyzer.workbench.product" id="org.tizen.dynamicanalyzer.workbench.product" application="org.tizen.dynamicanalyzer.workbench.application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true">
+<product name="%DynamicAnalyzer" uid="org.tizen.dynamicanalyzer.workbench.product" id="org.tizen.dynamicanalyzer.workbench.product" application="org.tizen.dynamicanalyzer.workbench.application" version="2.3.18.qualifier" useFeatures="true" includeLaunchers="true">
 
    <aboutInfo>
       <image path="icons/about_tizen_sdk.png"/>
index e485be4..1e98ae8 100644 (file)
@@ -8,13 +8,13 @@
        <parent>
                <artifactId>dynamic-analyzer</artifactId>
                <groupId>org.tizen.dynamicanalyzer</groupId>
-               <version>0.0.1-SNAPSHOT</version>
+               <version>2.3.18-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
 
        <groupId>org.tizen.dynamicanalyzer</groupId>
        <artifactId>org.tizen.dynamicanalyzer.workbench.product</artifactId>
-       <version>1.0.0-SNAPSHOT</version>
+       <version>2.3.18-SNAPSHOT</version>
        <packaging>eclipse-repository</packaging>
 
        <properties>
index a0c92e3..43d9130 100644 (file)
@@ -13,10 +13,10 @@ import java.util.Locale;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
+import org.eclipse.swt.widgets.DirectoryDialog;
 import org.tizen.dynamicanalyzer.common.path.PathManager;
 import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
-import org.tizen.dynamicanalyzer.ui.common.explorer.FileExplorerDialog;
 import org.tizen.dynamicanalyzer.util.CommonUtil;
 import org.tizen.dynamicanalyzer.util.Logger;
 import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
@@ -64,9 +64,9 @@ public class DALogExport {
 
        /// User Select Directory to export Logs
        private Boolean exportPathDialog() {
-               FileExplorerDialog dialog = new FileExplorerDialog(WorkbenchUtil.getWorkbenchWindow().getShell());
-               dialog.setTitle(ConfigureLabels.EXPORT_DIALOG_SELECT_EXPORT_PATH);
-               dialog.getExplorer().setRoot(CommonUtil.getHomeDirectory());
+               DirectoryDialog dialog = new DirectoryDialog(WorkbenchUtil.getWorkbenchWindow().getShell());
+               dialog.setText(ConfigureLabels.EXPORT_DIALOG_SELECT_EXPORT_PATH);
+               dialog.setFilterPath(CommonUtil.getHomeDirectory());
                Object result = dialog.open();
 
                if (result == null) {
@@ -81,17 +81,13 @@ public class DALogExport {
 
                LogexportPath = result.toString();
 
-               int cutStart = LogexportPath.indexOf("[");
-               int cutEnd = LogexportPath.indexOf("]");
-               String tmpPath = LogexportPath.substring(cutStart + 1, cutEnd);
-
                SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd_HH-mm-ss", Locale.KOREA); //$NON-NLS-1$
                Date date = new Date();
                String logPostFix = format.format(date);
                ExportLogName = "DALogs_" + logPostFix;
-               LogZipPath = tmpPath;
+               LogZipPath = LogexportPath;
 
-               setLogExportPath(tmpPath + "/" + ExportLogName);
+               setLogExportPath(LogexportPath + "/" + ExportLogName);
 
                return true;
        }
index 3ac06b2..454515e 100644 (file)
@@ -113,7 +113,8 @@ public class CommandAction {
                        return false;
                }
 
-               SqlConnectionManager.establishConnection(sourcePath);
+               SqlConnectionManager.establishConnection(sourcePath + File.separator
+                               + AnalyzerConstants.DATABASE_NAME);
 
                return true;
        }
index 7c2a1d8..aa8d33f 100644 (file)
@@ -143,7 +143,8 @@ public enum ProtocolConfig30 implements IProtocolConfig {
                Map<FlatPreferences, IProtocolConfig[]> tempMap = new EnumMap<FlatPreferences, IProtocolConfig[]>(
                                FlatPreferences.class);
                tempMap.put(FlatPreferences.RECORDING, new ProtocolConfig30[] { RECORDING });
-               tempMap.put(FlatPreferences.FUNCTION_PROFILING, new ProtocolConfig30[] { FUNCTION_PROFILING });
+               tempMap.put(FlatPreferences.FUNCTION_PROFILING, new ProtocolConfig30[] { FUNCTION_PROFILING});
+               tempMap.put(FlatPreferences.FUNCTION_SAMPLING_RATE, new ProtocolConfig30[] { FUNCTION_SAMPLING});
                tempMap.put(FlatPreferences.SYSTEM_ALL_PROCESSES, new ProtocolConfig30[] { SYSTEM_PROCESSES_LOAD });
                tempMap.put(FlatPreferences.PROCESS_MEMORY, new ProtocolConfig30[] { SYSTEM_PROCESS });
                tempMap.put(FlatPreferences.SCREENSHOT_ON_SCENE_TRANSITION, new ProtocolConfig30[] { SCREENSHOT });
index d09527a..f841cf0 100644 (file)
@@ -31,6 +31,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.tizen.dynamicanalyzer.protocol.IProtocolConfig;
+import org.tizen.dynamicanalyzer.protocol.p30.ProtocolConfig30;
 import org.tizen.dynamicanalyzer.setting.Feature;
 import org.tizen.dynamicanalyzer.setting.FlatFeature;
 import org.tizen.dynamicanalyzer.setting.FlatPreferences;
@@ -148,6 +149,7 @@ public enum ProtocolConfig30_UIHV implements IProtocolConfig {
                                FlatPreferences.class);
                tempMap.put(FlatPreferences.RECORDING, new ProtocolConfig30_UIHV[] { RECORDING });
                tempMap.put(FlatPreferences.FUNCTION_PROFILING, new ProtocolConfig30_UIHV[] { FUNCTION_PROFILING });
+               tempMap.put(FlatPreferences.FUNCTION_SAMPLING_RATE, new ProtocolConfig30_UIHV[] { FUNCTION_SAMPLING});
                tempMap.put(FlatPreferences.SYSTEM_ALL_PROCESSES, new ProtocolConfig30_UIHV[] { SYSTEM_PROCESSES_LOAD });
                tempMap.put(FlatPreferences.PROCESS_MEMORY, new ProtocolConfig30_UIHV[] { SYSTEM_PROCESS });
                tempMap.put(FlatPreferences.SCREENSHOT_ON_SCENE_TRANSITION, new ProtocolConfig30_UIHV[] { SCREENSHOT });
index 408a0a2..1cc9c1a 100644 (file)
@@ -133,6 +133,7 @@ public enum ProtocolConfig40 implements IProtocolConfig {
                tempMap.put(FlatPreferences.RECORDING, new ProtocolConfig40[] { RECORDING });
                tempMap.put(FlatPreferences.FUNCTION_PROFILING, new ProtocolConfig40[] { FUNCTION_PROFILING, 
                                                                                                                                WEB_FUNCTION_PROFILING});
+               tempMap.put(FlatPreferences.FUNCTION_SAMPLING_RATE, new ProtocolConfig40[] { FUNCTION_SAMPLING});
                tempMap.put(FlatPreferences.APP_STARTUP, new ProtocolConfig40[] { APP_STARTUP,
                                                                                                                                WEBAPP_STARTUP});
                tempMap.put(FlatPreferences.SYSTEM_ALL_PROCESSES, new ProtocolConfig40[] { SYSTEM_PROCESSES_LOAD });
index 5d82f33..e2f659f 100644 (file)
@@ -137,6 +137,7 @@ public enum ProtocolConfig41 implements IProtocolConfig {
                tempMap.put(FlatPreferences.RECORDING, new ProtocolConfig41[] { RECORDING });
                tempMap.put(FlatPreferences.FUNCTION_PROFILING, new ProtocolConfig41[] { FUNCTION_PROFILING, 
                                                                                                                                WEB_FUNCTION_PROFILING});
+               tempMap.put(FlatPreferences.FUNCTION_SAMPLING_RATE, new ProtocolConfig41[] { FUNCTION_SAMPLING});
                tempMap.put(FlatPreferences.APP_STARTUP, new ProtocolConfig41[] { APP_STARTUP,
                                                                                                                                WEBAPP_STARTUP});
                tempMap.put(FlatPreferences.SYSTEM_ALL_PROCESSES, new ProtocolConfig41[] { SYSTEM_PROCESSES_LOAD });
index 8e5e9df..246e2a4 100644 (file)
@@ -763,6 +763,9 @@ public enum SettingDataManager {
                                && !isOptionsSelectedPrefereces(FlatPreferences.PROCESS_MEMORY)) {
                        selectedFeatures.add(FlatPreferences.PROCESS_MEMORY);
                }
+               if (!isOptionsSelectedPrefereces(FlatPreferences.FUNCTION_SAMPLING_RATE)) {
+                       selectedFeatures.add(FlatPreferences.FUNCTION_SAMPLING_RATE);
+               }
 
                return selectedFeatures;
        }
index 3eec68b..0853e3c 100644 (file)
@@ -39,6 +39,7 @@ import org.tizen.dynamicanalyzer.nl.SummaryLabels;
 import org.tizen.dynamicanalyzer.project.BinaryInfo;
 import org.tizen.dynamicanalyzer.protocol.ProtocolConstants;
 import org.tizen.dynamicanalyzer.setting.Feature;
+import org.tizen.dynamicanalyzer.setting.FlatPreferences;
 import org.tizen.dynamicanalyzer.setting.SettingDataManager;
 import org.tizen.dynamicanalyzer.setting.TargetData;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
@@ -245,17 +246,16 @@ public class FunctionUsageProfiler extends PageDataManager {
 
        @Override
        protected void makeData(LogPackage pack) {
-               TargetData target = SettingDataManager.INSTANCE.getConnectedTargetOrSelected();
 
                // TODO: will get sample_time from Project.java
                if (!isSetSamplePeriod) {
-                       SAMPLE_TIME = target.getSelectedFeatureValue(Feature.FUNCTION_SAMPLING_RATE);
+                       SAMPLE_TIME = SettingDataManager.INSTANCE.getOptionsPreferencesValue(FlatPreferences.FUNCTION_SAMPLING_RATE);
                        if (SAMPLE_TIME < 0) {
                                SAMPLE_TIME = Feature.FUNCTION_SAMPLING_RATE.getData().getDefaultValue();
                        }
                }
 
-               if (target.isSelectedFeature(Feature.FUNCTION_SAMPLING)) {
+               if (SAMPLE_TIME > 0) {
 
                        Logs logs = pack.getLogs(ProtocolConstants.MSG_DATA_SAMPLE);
                        if (null != logs && logs.getRawLogs().size() != 0) {
index f03da7b..6178990 100644 (file)
@@ -203,7 +203,7 @@ public abstract class ProfileDataMaker {
                        }
                }
 
-               return Formatter.toDoubleFormat2(Double.toString(rate));
+               return Formatter.toDoubleFormat2(rate);
        }
 
        public String getCpuTime(ProfilingData data, boolean exclusive) {
index 892525e..b61d585 100644 (file)
@@ -31,13 +31,13 @@ package org.tizen.dynamicanalyzer.ui.thread;
 import java.util.List;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.constant.CommonConstants;
 import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
@@ -53,7 +53,7 @@ import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData;
 
 public class ThreadDetailInfoView extends DAViewComposite {
        private Composite contents = null;
-       private Text detailText = null;
+       private StyledText detailText = null;
 
        private final static String leftFormAttachment = CommonConstants.SPACE + CommonConstants.SPACE;
        private final static String heightFormAttachment = CommonConstants.NEW_LINE
@@ -88,24 +88,23 @@ public class ThreadDetailInfoView extends DAViewComposite {
 
                setTitle(ThreadPageLabels.THREAD_DETAILS_TITLE);
 
-               Composite detailCom = getContentArea();
-               detailCom.setBackground(ColorResources.VIEW_BG_COLOR);
-               detailCom.setLayout(new FormLayout());
+               contents = getContentArea();
+               contents.setBackground(ColorResources.VIEW_BG_COLOR);
+               contents.setLayout(new FormLayout());
                FormData labelData = new FormData();
                labelData.top = new FormAttachment(0, 0);
                labelData.left = new FormAttachment(0, 0);
                labelData.right = new FormAttachment(100, 0);
                labelData.bottom = new FormAttachment(100, 0);
-               detailCom.setLayoutData(labelData);
-
-               contents = detailCom;
-               contents.setBackground(ColorResources.VIEW_BG_COLOR);
+               contents.setLayoutData(labelData);
                contents.setLayout(new FormLayout());
 
-               detailText = new Text(contents, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+               detailText = new StyledText(contents, SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
                detailText.setBackground(ColorResources.VIEW_BG_COLOR);
                detailText.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
                detailText.setFont(FontResources.DETAIL_INFO_FONT);
+               detailText.setAlwaysShowScrollBars(false);
+               detailText.setEditable(false);
 
                FormData buttonData = new FormData();
                buttonData.top = new FormAttachment(contents, 0);
index 8769a6b..3368e99 100644 (file)
@@ -466,17 +466,18 @@ public class DAToolBarCustomCombo extends Canvas {
        }\r
 \r
        public void setText(String text) {\r
-               if (!setSelect(text)) {\r
-                       attr.setText(text);\r
-                       selection = -1;\r
-                       redraw();\r
-               }\r
+               if (!setSelect(text))\r
+                       setTextForce(text);\r
        }\r
        \r
        public void setTextForce(String text) {\r
-                       attr.setText(text);\r
-                       selection = -1;\r
-                       redraw();\r
+               attr.setText(text);\r
+               selection = -1;\r
+               Display.getDefault().asyncExec(new Runnable() {\r
+                       public void run() {\r
+                               redraw();\r
+                       }\r
+               });\r
        }\r
 \r
        \r
index 0cc0ca3..53bfb1d 100644 (file)
@@ -35,9 +35,12 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.events.VerifyEvent;
 import org.eclipse.swt.events.VerifyListener;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
@@ -55,18 +58,9 @@ import org.tizen.dynamicanalyzer.widgets.da.base.DATextBox;
 import org.tizen.dynamicanalyzer.widgets.helper.ImageResources;
 
 public class RemoteDeviceDialog extends DAMessageBox {
-       private final int WIDTH = 430;
-       private final int HEIGHT = 190;
-
-       private final int EDITBOX_TOP_MARGIN = 18;
-       private final int EDITBOX_INTERVAL = 10;
-       private final int WIDGETS_HEIGHT = 24;
-       private final int EDITBOX_WIDTH = 284;
-
-       private final int LABEL_TOP_MARGIN = 24;
-       private final int LABEL_LEFT_MARGIN = 20;
-       private final int LABEL_INTERVAL = 10;
-       private final int LABEL_WIDTH = 79;
+       private static final int WIDTH = 430;
+       private static final int HEIGHT = 190;
+       private static final int WIDTH_MARGIN = 20;
 
        private Composite mainContentsComp = null;
        private Composite buttonContentsComp = null;
@@ -129,7 +123,10 @@ public class RemoteDeviceDialog extends DAMessageBox {
                marginMiddle.setLayoutData(marginCompData);
                marginMiddle.setBackground(ColorResources.DIALOG_MIDDLE_LINE_COLOR);
 
-               buttonContentsComp.setLayout(new FormLayout());
+               GridLayout grid = new GridLayout(4, false);
+               grid.horizontalSpacing = 5;
+               grid.marginWidth = WIDTH_MARGIN;
+               buttonContentsComp.setLayout(grid);
                FormData compData = new FormData();
                compData.top = new FormAttachment(marginMiddle, 0);
                compData.left = new FormAttachment(0, 0);
@@ -140,79 +137,51 @@ public class RemoteDeviceDialog extends DAMessageBox {
 
                drawMainContents();
 
-               drawButtons();
-
                drawProgress();
+
+               drawButtons();
        }
 
        private void drawMainContents() {
+               Composite contentGridComp = new Composite(mainContentsComp, SWT.NONE);
+               GridLayout grid = new GridLayout(2, false);
+               grid.horizontalSpacing = 15;
+               grid.marginWidth = WIDTH_MARGIN;
+               contentGridComp.setLayout(grid);
+               Rectangle rect = shell.getClientArea();
+               FormData formData = new FormData(rect.width, rect.height - 61);
+               contentGridComp.setLayoutData(formData);
+               contentGridComp.setBackground(ColorResources.DIALOG_CONTENT_BACKGROUND);
+
                // IP label and textbox
-               Label ipText = new Label(mainContentsComp, SWT.LEFT);
-               FormData data = new FormData();
-               data.top = new FormAttachment(0, LABEL_TOP_MARGIN);
-               data.left = new FormAttachment(0, LABEL_LEFT_MARGIN);
-               data.height = WIDGETS_HEIGHT;
-               data.width = LABEL_WIDTH;
+               Label ipText = new Label(contentGridComp, SWT.LEFT);
+               GridData data = new GridData(SWT.LEFT, SWT.CENTER, false, true);
                ipText.setLayoutData(data);
                ipText.setForeground(ColorResources.BLACK);
                ipText.setBackground(ColorResources.DIALOG_CONTENT_BACKGROUND);
                ipText.setFont(FontResources.DIALOG_CONTENTS_NORMAL_FONT);
-               ipText.setText(AnalyzerLabels.IP);
+               ipText.setText(AnalyzerLabels.IP + " :");
+
+               ipTextbox = new DATextBox(contentGridComp, SWT.SINGLE);
+               data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
+               data.grabExcessHorizontalSpace = true;
+               ipTextbox.setLayoutData(data);
+               ipTextbox.setBackground(ColorResources.WHITE);
+               ipTextbox.getControl().addKeyListener(textboxListener);
+               ipTextbox.getControl().addVerifyListener(new TextBoxVerifyListener("0123456789."));
 
                // Port label and textbox
-               Label portText = new Label(mainContentsComp, SWT.LEFT);
-               data = new FormData();
-               data.top = new FormAttachment(ipText, LABEL_INTERVAL);
-               data.left = new FormAttachment(0, LABEL_LEFT_MARGIN);
-               data.height = WIDGETS_HEIGHT;
-               data.width = LABEL_WIDTH;
+               Label portText = new Label(contentGridComp, SWT.LEFT);
+               data = new GridData(SWT.LEFT, SWT.CENTER, false, true);
                portText.setLayoutData(data);
                portText.setForeground(ColorResources.BLACK);
                portText.setBackground(ColorResources.DIALOG_CONTENT_BACKGROUND);
                portText.setFont(FontResources.DIALOG_CONTENTS_NORMAL_FONT);
-               portText.setText(AnalyzerLabels.PORT);
-
-               Label ipcolon = new Label(mainContentsComp, SWT.LEFT);
-               data = new FormData();
-               data.top = new FormAttachment(0, LABEL_TOP_MARGIN);
-               data.left = new FormAttachment(portText, 5);
-               data.height = WIDGETS_HEIGHT;
-               data.width = 3;
-               ipcolon.setLayoutData(data);
-               ipcolon.setForeground(ColorResources.BLACK);
-               ipcolon.setBackground(ColorResources.DIALOG_CONTENT_BACKGROUND);
-               ipcolon.setFont(FontResources.DIALOG_CONTENTS_NORMAL_FONT);
-               ipcolon.setText(":");
-
-               Label portcolon = new Label(mainContentsComp, SWT.LEFT);
-               data = new FormData();
-               data.top = new FormAttachment(ipText, LABEL_INTERVAL);
-               data.left = new FormAttachment(portText, 5);
-               data.height = WIDGETS_HEIGHT;
-               data.width = 3;
-               portcolon.setLayoutData(data);
-               portcolon.setForeground(ColorResources.BLACK);
-               portcolon.setBackground(ColorResources.DIALOG_CONTENT_BACKGROUND);
-               portcolon.setFont(FontResources.DIALOG_CONTENTS_NORMAL_FONT);
-               portcolon.setText(":");
-
-               ipTextbox = new DATextBox(mainContentsComp, SWT.SINGLE);
-               data = new FormData();
-               data.top = new FormAttachment(0, EDITBOX_TOP_MARGIN);
-               data.left = new FormAttachment(ipText, 15);
-               data.height = WIDGETS_HEIGHT;
-               data.width = EDITBOX_WIDTH;
-               ipTextbox.setLayoutData(data);
-               ipTextbox.setBackground(ColorResources.WHITE);
-               ipTextbox.getControl().addKeyListener(textboxListener);
-               ipTextbox.getControl().addVerifyListener(new TextBoxVerifyListener("0123456789."));
+               portText.setText(AnalyzerLabels.PORT + " :");
 
-               portTextbox = new DATextBox(mainContentsComp, SWT.SINGLE);
-               data = new FormData();
-               data.top = new FormAttachment(0, EDITBOX_TOP_MARGIN + WIDGETS_HEIGHT + EDITBOX_INTERVAL);
-               data.left = new FormAttachment(portText, 15);
-               data.height = WIDGETS_HEIGHT;
-               data.width = EDITBOX_WIDTH;
+               portTextbox = new DATextBox(contentGridComp, SWT.SINGLE);
+               data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
+               data.grabExcessHorizontalSpace = true;
                portTextbox.setLayoutData(data);
                portTextbox.setBackground(ColorResources.WHITE);
                portTextbox.getControl().addKeyListener(textboxListener);
@@ -220,26 +189,22 @@ public class RemoteDeviceDialog extends DAMessageBox {
        }
 
        private void drawButtons() {
+               cancelButton = new Button(buttonContentsComp, SWT.NONE);
+               GridData buttonData = new GridData(100, 30);
+               buttonData.verticalAlignment = SWT.CENTER;
+               buttonData.horizontalAlignment = SWT.CENTER;
+               cancelButton.setLayoutData(buttonData);
+               cancelButton.setText(WidgetLabels.CANCEL);
+               cancelButton.addSelectionListener(cancelButtonListener);
+
                connectButton = new Button(buttonContentsComp, SWT.NONE);
-               FormData buttonData = new FormData();
-               buttonData.top = new FormAttachment(0, 15);
-               buttonData.right = new FormAttachment(100, -15);
-               buttonData.width = 100;
-               buttonData.height = 30;
+               buttonData = new GridData(100, 30);
+               buttonData.verticalAlignment = SWT.CENTER;
+               buttonData.horizontalAlignment = SWT.CENTER;
                connectButton.setLayoutData(buttonData);
                connectButton.setText(WidgetLabels.OK);
                connectButton.addSelectionListener(connectButtonListener);
                connectButton.setEnabled(false);
-
-               cancelButton = new Button(buttonContentsComp, SWT.NONE);
-               buttonData = new FormData();
-               buttonData.top = new FormAttachment(0, 15);
-               buttonData.right = new FormAttachment(connectButton, -8);
-               buttonData.width = 100;
-               buttonData.height = 30;
-               cancelButton.setLayoutData(buttonData);
-               cancelButton.setText(WidgetLabels.CANCEL);
-               cancelButton.addSelectionListener(cancelButtonListener);
        }
 
        private void drawProgress() {
@@ -254,20 +219,15 @@ public class RemoteDeviceDialog extends DAMessageBox {
                progressImage.add(ImageResources.STOP_PROGRESS_LOADING_08);
 
                progressIcon = new DAAnimationIcon(buttonContentsComp, SWT.NONE, progressImage);
-               FormData data = new FormData();
-               data.top = new FormAttachment(0, 15);
-               data.left = new FormAttachment(0, 15);
-               data.height = 24;
-               data.width = 24;
+               GridData data = new GridData(24, 24);
+               data.verticalAlignment = SWT.CENTER;
+               data.horizontalAlignment = SWT.CENTER;
+               data.grabExcessVerticalSpace = true;
                progressIcon.setLayoutData(data);
                progressIcon.setVisible(false);
 
                progressLabel = new Label(buttonContentsComp, SWT.TRANSPARENT);
-               data = new FormData();
-               data.top = new FormAttachment(0, 20);
-               data.left = new FormAttachment(progressIcon, 12);
-               data.height = 20;
-               data.width = 150;
+               data = new GridData(SWT.LEFT, SWT.CENTER, true, false);
                progressLabel.setLayoutData(data);
                progressLabel.setBackground(ColorResources.WHITE);
                progressLabel.setAlignment(SWT.LEFT);
index 8dbcec1..81dc5e0 100755 (executable)
@@ -729,7 +729,7 @@ public abstract class DATableComposite extends Composite {
        }
 
        public void setContextMenu(final int context) {
-               popupMenu = new DAPopupMenu(table);
+               popupMenu = new DATablePopupMenu(table);
                popupMenu.setFont(FontResources.CONTEXT_MENU_ITEM_FONT);
 
                if ((context & AnalyzerConstants.CONTEXT_TABLE_RANGE) != 0) {
@@ -1022,7 +1022,7 @@ public abstract class DATableComposite extends Composite {
         * "show all" item that reverts all filter actions.
         */
        protected void initFilterPopupMenu() {
-               popupMenu = new DAPopupMenu(table);
+               popupMenu = new DATablePopupMenu(table);
                popupMenu.setFont(FontResources.CONTEXT_MENU_ITEM_FONT);
 
                for (int i = 0; i < table.getColumns().length; i++) {
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATablePopupMenu.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATablePopupMenu.java
new file mode 100644 (file)
index 0000000..bac9f4f
--- /dev/null
@@ -0,0 +1,43 @@
+package org.tizen.dynamicanalyzer.ui.widgets.table;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.swt.graphics.Point;
+import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu;
+
+/**
+ * {@link DAPopupMenu} extension for Grid composites.
+ */
+public class DATablePopupMenu extends DAPopupMenu {
+
+       /**
+        * Parent composite.
+        */
+       Grid table;
+
+       /**
+        * Public constructor.
+        *
+        * @param table parent Grid
+        */
+       public DATablePopupMenu(Grid table) {
+               super(table);
+               this.table = table;
+       }
+
+       /**
+        * Check if cursor points inside parent composite, at not null item.
+        *
+        * @param pt specified point
+        * @return {@code true} if point inside parent composite
+        */
+       @Override
+       protected boolean isInParent(Point pt) {
+               if (null == table) {
+                       return false;
+               }
+               if (table.getItem(table.toControl(pt)) == null) {
+                       return false;
+               }
+               return true;
+       }
+}
index 9578ed7..efb8d9b 100644 (file)
@@ -28,6 +28,7 @@
 package org.tizen.dynamicanalyzer.utils;
 
 import java.text.DecimalFormat;
+import java.util.Locale;
 
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
 import org.tizen.dynamicanalyzer.util.Logger;
@@ -45,7 +46,7 @@ public class Formatter {
                        } else {
                                long data = 0;
                                data = Long.parseLong(decimal);
-                               return String.format("0x%08X", data); //$NON-NLS-1$
+                               return String.format(Locale.ROOT, "0x%08X", data); //$NON-NLS-1$
                        }
                } catch (NumberFormatException e) {
                        Logger.exception(e);
@@ -60,7 +61,7 @@ public class Formatter {
 
                try {
                        double data = Double.parseDouble(value);
-                       return String.format("%.1f", data); //$NON-NLS-1$
+                       return String.format(Locale.ROOT, "%.1f", data); //$NON-NLS-1$
                } catch (NumberFormatException e) {
                        Logger.exception(e);
                        return value;
@@ -91,13 +92,17 @@ public class Formatter {
 
                try {
                        double data = Double.parseDouble(value);
-                       return String.format("%.2f", data); //$NON-NLS-1$
+                       return String.format(Locale.ROOT, "%.2f", data); //$NON-NLS-1$
                } catch (NumberFormatException e) {
                        Logger.exception(e);
                        return value;
                }
        }
 
+       public static String toDoubleFormat2(double value) {
+               return String.format(Locale.ROOT, "%.2f", value); //$NON-NLS-1$
+       }
+
        public static String toTimeFormat(Object time) {
                long longTime = -1;
                if (time instanceof Long || time instanceof Integer) {
@@ -273,13 +278,13 @@ public class Formatter {
        }
        
        public static String toPercentageFormat(Double input) {
-               String ret = String.format("%.2f", input); //$NON-NLS-1$
+               String ret = String.format(Locale.ROOT, "%.2f", input); //$NON-NLS-1$
                ret += " %"; //$NON-NLS-1$
                return ret;
        }
 
        public static String toDoubleFormat(Double input) {
-               return String.format("%.2f", input); //$NON-NLS-1$
+               return String.format(Locale.ROOT, "%.2f", input); //$NON-NLS-1$
        }
 
        // 1000 to 1,000
index 4622257..44a56a6 100644 (file)
@@ -1,3 +1,14 @@
+* 2.3.18
+- Fix Function Profiling info to be properly collected and shown
+- Fix missed call trace data after saving trace
+- Fix refinements in Remote Device dialog
+- Fix filtering popup menu for Persistent Allocations table
+- Fix bug with missing Heap Allocation charts (regression in DA 2.3.17)
+- Fix SWT exception occured in application combobox
+- Fix JIRA defects:
+  SPTSDKUX-2223: Thread Detail is not Showing in DA
+  SPTSDKUX-2248: The Path to Export Log is not Visible in Export Log Window
+== Maria Guseva <m.guseva@samsung.com> October 11, 2016
 * 2.3.17
 - Memory Map table now shows maps for different processes separately
 - Implement filter popup menu for Persistent Allocations table
index 8202348..bb8bb6d 100644 (file)
@@ -1,5 +1,5 @@
 Source:dynamic-analyzer
-Version:2.3.17
+Version:2.3.18
 Maintainer:Gihun Chang <gihun.chang@samsung.com>, WooJin Jung <woojin2.jung@samsung.com>, Jaewon Lim <jaewon81.lim@samsung.com>, Seokgil Kang <seokgil.kang@samsung.com>
 
 Package:dynamic-analyzer-product
diff --git a/pom.xml b/pom.xml
index 93c098f..8df1c77 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.tizen.dynamicanalyzer</groupId>
        <artifactId>dynamic-analyzer</artifactId>
-       <version>0.0.1-SNAPSHOT</version>
+       <version>2.3.18-SNAPSHOT</version>
        <packaging>pom</packaging>
 
        <modules>