From 41f414346142fa8dc416cf3ee1858055c59d86ac Mon Sep 17 00:00:00 2001 From: Maria Guseva Date: Tue, 11 Oct 2016 17:54:45 +0300 Subject: [PATCH] [RELEASE] DA 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 Change-Id: I8eff84d59284e392fd0d12e22fd63baf801a6d53 --- .../widgets/da/base/DAAbstractText.java | 2 +- org.tizen.dynamicanalyzer.common.test/pom.xml | 2 +- org.tizen.dynamicanalyzer.test/pom.xml | 2 +- .../widgets/popupMenu/DAPopupMenu.java | 8 +- .../dynamicanalyzer.product | 2 +- .../pom.xml | 4 +- .../tizen/dynamicanalyzer/common/DALogExport.java | 16 +-- .../dynamicanalyzer/handlers/CommandAction.java | 3 +- .../protocol/p30/ProtocolConfig30.java | 3 +- .../protocol/p30_uihv/ProtocolConfig30_UIHV.java | 2 + .../protocol/p40/ProtocolConfig40.java | 1 + .../protocol/p41/ProtocolConfig41.java | 1 + .../setting/SettingDataManager.java | 3 + .../summary/profiling/FunctionUsageProfiler.java | 6 +- .../ui/summary/profiling/ProfileDataMaker.java | 2 +- .../ui/thread/ThreadDetailInfoView.java | 19 ++- .../ui/toolbar/DAToolBarCustomCombo.java | 17 +-- .../ui/toolbar/RemoteDeviceDialog.java | 150 ++++++++------------- .../ui/widgets/table/DATableComposite.java | 4 +- .../ui/widgets/table/DATablePopupMenu.java | 43 ++++++ .../org/tizen/dynamicanalyzer/utils/Formatter.java | 15 ++- package/changelog | 11 ++ package/pkginfo.manifest | 2 +- pom.xml | 2 +- 24 files changed, 175 insertions(+), 145 deletions(-) create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATablePopupMenu.java diff --git a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/DAAbstractText.java b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/DAAbstractText.java index 1680fdf..840e6e0 100644 --- a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/DAAbstractText.java +++ b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/widgets/da/base/DAAbstractText.java @@ -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); } diff --git a/org.tizen.dynamicanalyzer.common.test/pom.xml b/org.tizen.dynamicanalyzer.common.test/pom.xml index 95d1cf6..76de5a9 100644 --- a/org.tizen.dynamicanalyzer.common.test/pom.xml +++ b/org.tizen.dynamicanalyzer.common.test/pom.xml @@ -6,7 +6,7 @@ dynamic-analyzer org.tizen.dynamicanalyzer - 0.0.1-SNAPSHOT + 2.3.18-SNAPSHOT .. org.tizen.dynamicanalyzer diff --git a/org.tizen.dynamicanalyzer.test/pom.xml b/org.tizen.dynamicanalyzer.test/pom.xml index 63274c9..d2481bc 100644 --- a/org.tizen.dynamicanalyzer.test/pom.xml +++ b/org.tizen.dynamicanalyzer.test/pom.xml @@ -6,7 +6,7 @@ dynamic-analyzer org.tizen.dynamicanalyzer - 0.0.1-SNAPSHOT + 2.3.18-SNAPSHOT .. org.tizen.dynamicanalyzer diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/popupMenu/DAPopupMenu.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/popupMenu/DAPopupMenu.java index 5ee9869..3059025 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/popupMenu/DAPopupMenu.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/popupMenu/DAPopupMenu.java @@ -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; } diff --git a/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product b/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product index e6b3227..3baa8de 100644 --- a/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product +++ b/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product @@ -1,7 +1,7 @@ - + diff --git a/org.tizen.dynamicanalyzer.workbench.product/pom.xml b/org.tizen.dynamicanalyzer.workbench.product/pom.xml index e485be4..1e98ae8 100644 --- a/org.tizen.dynamicanalyzer.workbench.product/pom.xml +++ b/org.tizen.dynamicanalyzer.workbench.product/pom.xml @@ -8,13 +8,13 @@ dynamic-analyzer org.tizen.dynamicanalyzer - 0.0.1-SNAPSHOT + 2.3.18-SNAPSHOT .. org.tizen.dynamicanalyzer org.tizen.dynamicanalyzer.workbench.product - 1.0.0-SNAPSHOT + 2.3.18-SNAPSHOT eclipse-repository diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/DALogExport.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/DALogExport.java index a0c92e3..43d9130 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/DALogExport.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/DALogExport.java @@ -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; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/CommandAction.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/CommandAction.java index 3ac06b2..454515e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/CommandAction.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/CommandAction.java @@ -113,7 +113,8 @@ public class CommandAction { return false; } - SqlConnectionManager.establishConnection(sourcePath); + SqlConnectionManager.establishConnection(sourcePath + File.separator + + AnalyzerConstants.DATABASE_NAME); return true; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30/ProtocolConfig30.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30/ProtocolConfig30.java index 7c2a1d8..aa8d33f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30/ProtocolConfig30.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30/ProtocolConfig30.java @@ -143,7 +143,8 @@ public enum ProtocolConfig30 implements IProtocolConfig { Map tempMap = new EnumMap( 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 }); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30_uihv/ProtocolConfig30_UIHV.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30_uihv/ProtocolConfig30_UIHV.java index d09527a..f841cf0 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30_uihv/ProtocolConfig30_UIHV.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p30_uihv/ProtocolConfig30_UIHV.java @@ -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 }); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p40/ProtocolConfig40.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p40/ProtocolConfig40.java index 408a0a2..1cc9c1a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p40/ProtocolConfig40.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p40/ProtocolConfig40.java @@ -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 }); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p41/ProtocolConfig41.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p41/ProtocolConfig41.java index 5d82f33..e2f659f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p41/ProtocolConfig41.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/protocol/p41/ProtocolConfig41.java @@ -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 }); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java index 8e5e9df..246e2a4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java @@ -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; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java index 3eec68b..0853e3c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java @@ -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) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java index f03da7b..6178990 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java @@ -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) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java index 892525e..b61d585 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadDetailInfoView.java @@ -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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/DAToolBarCustomCombo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/DAToolBarCustomCombo.java index 8769a6b..3368e99 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/DAToolBarCustomCombo.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/DAToolBarCustomCombo.java @@ -466,17 +466,18 @@ public class DAToolBarCustomCombo extends Canvas { } public void setText(String text) { - if (!setSelect(text)) { - attr.setText(text); - selection = -1; - redraw(); - } + if (!setSelect(text)) + setTextForce(text); } public void setTextForce(String text) { - attr.setText(text); - selection = -1; - redraw(); + attr.setText(text); + selection = -1; + Display.getDefault().asyncExec(new Runnable() { + public void run() { + redraw(); + } + }); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RemoteDeviceDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RemoteDeviceDialog.java index 0cc0ca3..53bfb1d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RemoteDeviceDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RemoteDeviceDialog.java @@ -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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableComposite.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableComposite.java index 8dbcec1..81dc5e0 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableComposite.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableComposite.java @@ -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 index 0000000..bac9f4f --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATablePopupMenu.java @@ -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; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/Formatter.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/Formatter.java index 9578ed7..efb8d9b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/Formatter.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/Formatter.java @@ -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 diff --git a/package/changelog b/package/changelog index 4622257..44a56a6 100644 --- a/package/changelog +++ b/package/changelog @@ -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 October 11, 2016 * 2.3.17 - Memory Map table now shows maps for different processes separately - Implement filter popup menu for Persistent Allocations table diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index 8202348..bb8bb6d 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,5 +1,5 @@ Source:dynamic-analyzer -Version:2.3.17 +Version:2.3.18 Maintainer:Gihun Chang , WooJin Jung , Jaewon Lim , Seokgil Kang Package:dynamic-analyzer-product diff --git a/pom.xml b/pom.xml index 93c098f..8df1c77 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 org.tizen.dynamicanalyzer dynamic-analyzer - 0.0.1-SNAPSHOT + 2.3.18-SNAPSHOT pom -- 2.7.4