From 3f50130bf45cf2bb23c85d824171dbf6d1069e4d Mon Sep 17 00:00:00 2001 From: Maria Guseva Date: Tue, 25 Oct 2016 19:09:37 +0300 Subject: [PATCH] [RELEASE] DA 2.3.20 - Improve Memory Range Analysis UX - Rename classes related to Persistent Allocations view - Fix JIRA defects: SPTSDKUX-2099: Screenshot key is generate automatically (there are 2 keys generated) SPTSDKUX-2266: Text in the text box of UI Hierachy are not Visible. SPTSDKUX-2389: Different profile Selected feature list should not display SRADA-1185: Screenshots are always captured by default Change-Id: Id8122a54057360cebc90aff20f9003bb0e8cd09a --- org.tizen.dynamicanalyzer.common.test/pom.xml | 2 +- org.tizen.dynamicanalyzer.test/pom.xml | 2 +- .../toggle/DACustomFeatureToggleErrorMessage.java | 37 --------- .../dynamicanalyzer.product | 2 +- .../pom.xml | 4 +- .../tizen/dynamicanalyzer/nl/ConfigureLabels.java | 3 - .../dynamicanalyzer/nl/ConfigureLabels.properties | 5 -- .../tizen/dynamicanalyzer/setting/TargetData.java | 17 ++-- .../ui/hierarchy/tree/HierarchyScaleRenderer.java | 6 +- .../ui/hierarchy/tree/HierarchyTreeView.java | 12 ++- .../tree/HierarchyTreeViewBottomPane.java | 32 ++++--- .../ui/memory/ExpandableMemoryRangeComposite.java | 10 ++- .../ui/memory/data/HeapDataManager.java | 69 ++++++++++----- .../ui/timeline/chart/ScreenshotChart.java | 97 +++++++++++++--------- .../setting/FlatFeatureDialogFeatureListPage.java | 35 +------- .../ui/widgets/table/DATreeComposite.java | 39 ++++++--- package/changelog | 10 ++- package/pkginfo.manifest | 2 +- pom.xml | 2 +- 19 files changed, 195 insertions(+), 191 deletions(-) delete mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomFeatureToggleErrorMessage.java diff --git a/org.tizen.dynamicanalyzer.common.test/pom.xml b/org.tizen.dynamicanalyzer.common.test/pom.xml index c39f302..7e1c24f 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 - 2.3.19-SNAPSHOT + 2.3.20-SNAPSHOT .. org.tizen.dynamicanalyzer diff --git a/org.tizen.dynamicanalyzer.test/pom.xml b/org.tizen.dynamicanalyzer.test/pom.xml index af80297..c97d8d9 100644 --- a/org.tizen.dynamicanalyzer.test/pom.xml +++ b/org.tizen.dynamicanalyzer.test/pom.xml @@ -6,7 +6,7 @@ dynamic-analyzer org.tizen.dynamicanalyzer - 2.3.19-SNAPSHOT + 2.3.20-SNAPSHOT .. org.tizen.dynamicanalyzer diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomFeatureToggleErrorMessage.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomFeatureToggleErrorMessage.java deleted file mode 100644 index 9ba58bd..0000000 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomFeatureToggleErrorMessage.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.tizen.dynamicanalyzer.widgets.button.toggle; - -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; -import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonAttribute; - -/** - * Extension of {@link DACustomFeatureToggleButton} that redefined renderer's - * method draw(..) Designed to provide ability to post error or info messages on - * {@link FlatFeatureDialogFeatureListPage} without redesigning of - * {@link FlatFeatureDialog} and drawing mechanism. - */ -public class DACustomFeatureToggleErrorMessage extends - DACustomFeatureToggleButton { - - /** - * Public constructor. - * - * @param parent defines parent composite - * @param style SWT style - */ - public DACustomFeatureToggleErrorMessage(Composite parent, int style) { - super(parent, style); - setRenderer(new DACustomFeatureToggleButtonRenderer() { - @Override - public void draw(GC gc, Canvas canvas, int state, - DACustomButtonAttribute attr) { - Rectangle rect = canvas.getClientArea(); - drawButton(gc, rect, state, attr); - drawButtonText(gc, rect, attr, state); - } - }); - } - -} diff --git a/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product b/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product index d5499b7..e03ea1b 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 0a1874a..ff5aa7b 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 - 2.3.19-SNAPSHOT + 2.3.20-SNAPSHOT .. org.tizen.dynamicanalyzer org.tizen.dynamicanalyzer.workbench.product - 2.3.19-SNAPSHOT + 2.3.20-SNAPSHOT eclipse-repository diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.java index 5e2a819..4de496a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.java @@ -244,9 +244,6 @@ public class ConfigureLabels extends NLS { public static String EXPORT_DIALOG_SELECT_EXPORT_PATH; - public static String FEATURE_NAME_ERROR_NO_TARGET; - public static String FEATURE_DESCRIPTION_ERROR_NO_TARGET; - static { NLS.initializeMessages(BUNDLE_NAME, ConfigureLabels.class); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.properties index 2dc2931..6ed7ff5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ConfigureLabels.properties @@ -206,8 +206,3 @@ FEATURE_OVERHEAD_RANKING_HIGH=Overhead level: High FEATURE_OVERHEAD_RANKING_INPUT_VALUE=The feature overhead may occur depending on the input value EXPORT_DIALOG_SELECT_EXPORT_PATH=Select export path - -FEATURE_NAME_ERROR_NO_TARGET=Not active target -FEATURE_DESCRIPTION_ERROR_NO_TARGET=This type of target device can not be selected \ -due to device of another type is already selected to be traced with Dynamic Analyzer. \ -To select this target, choose the corresponding device to be traced. \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/TargetData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/TargetData.java index 3e1703f..c970bff 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/TargetData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/TargetData.java @@ -113,11 +113,10 @@ public class TargetData { public void addSelectedFlatFeature(String featureName) { FlatFeature feature = FlatFeature.getFlatFeature(featureName); if (null != feature) { - if (!this.selectedFlatFeatures.contains(feature)) { - this.selectedFlatFeatures.add(feature); - } - if (feature == FlatFeature.SCREENSHOT) - SettingDataManager.INSTANCE.addOptionsSelectedPreference(FlatPreferences.SCREENSHOT_ON_SCENE_TRANSITION, 1); + if (!selectedFlatFeatures.contains(feature)) + selectedFlatFeatures.add(feature); + if (feature == FlatFeature.SCREENSHOT) + SettingDataManager.INSTANCE.addOptionsSelectedPreference(FlatPreferences.SCREENSHOT_ON_SCENE_TRANSITION, 1); } } @@ -127,7 +126,13 @@ public class TargetData { public void removeSelectedFlatFeature(String featureName) { FlatFeature feature = FlatFeature.getFlatFeature(featureName); - selectedFlatFeatures.remove(feature); + if (null != feature) { + selectedFlatFeatures.remove(feature); + if (feature == FlatFeature.SCREENSHOT) { + SettingDataManager.INSTANCE.deleteOptionsSelectedPreference(FlatPreferences.SCREENSHOT_ON_SCENE_TRANSITION); + SettingDataManager.INSTANCE.deleteOptionsSelectedPreference(FlatPreferences.SCREENSHOT_PERIODICALLY); + } + } } @Deprecated diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyScaleRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyScaleRenderer.java index c4c1803..c1ab3f4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyScaleRenderer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyScaleRenderer.java @@ -49,10 +49,12 @@ public class HierarchyScaleRenderer extends DAScaleDefaultRenderer { gc.setFont(FontResources.UIHIERARCHY_TOOLBAR_FONT); Point textSize = gc.textExtent(LEFT_TEXT); int textStart = attr.getLeftRect().x + attr.getLeftRect().width - textSize.x - MARGIN; - gc.drawText(LEFT_TEXT, textStart, attr.getLeftRect().y + 1); + gc.drawText(LEFT_TEXT, textStart, + attr.getLeftRect().y + attr.getLeftRect().height / 2); textSize = gc.textExtent(RIGHT_TEXT); textStart = attr.getRightRect().x + MARGIN; - gc.drawText(RIGHT_TEXT, textStart, attr.getRightRect().y + 1); + gc.drawText(RIGHT_TEXT, textStart, + attr.getRightRect().y + attr.getRightRect().height / 2); gc.drawImage(ImageResources.SCALE_CONTROL_BG, attr.getAreaRect().x, rect.y + (rect.height - ImageResources.SCALE_CONTROL_BG.getBounds().height) / 2); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeView.java index fa90c8f..53fb794 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeView.java @@ -46,6 +46,7 @@ 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.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; @@ -76,8 +77,8 @@ import org.tizen.dynamicanalyzer.ui.hierarchy.tree.info.HierarchyTreeNodeInfoFig import org.tizen.dynamicanalyzer.ui.hierarchy.tree.tool.HierarchyZoomManager; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.util.WorkbenchUtil; -import org.tizen.dynamicanalyzer.widgets.da.base.ProgressDialog; import org.tizen.dynamicanalyzer.widgets.da.base.DADialog; +import org.tizen.dynamicanalyzer.widgets.da.base.ProgressDialog; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; import org.tizen.dynamicanalyzer.workbench.LayoutManager; @@ -269,9 +270,14 @@ public class HierarchyTreeView extends DAViewComposite { data.left = new FormAttachment(0, 0); data.right = new FormAttachment(100, 0); data.bottom = new FormAttachment(100, 0); - data.height = 22; + data.height = 40; bottomPane.setLayoutData(data); - bottomPane.setLayout(new FormLayout()); + GridLayout grid = new GridLayout(4, false); + grid.marginBottom = 2; + grid.marginTop = 2; + grid.marginWidth = 0; + bottomPane.setLayout(grid); + bottomPane.setBackground(ColorResources.TREEVIEW_BOTTOM_TOOLBAR_BG); bottomPane.createPaneComponent(); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeViewBottomPane.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeViewBottomPane.java index 5352db7..2a57d76 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeViewBottomPane.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/hierarchy/tree/HierarchyTreeViewBottomPane.java @@ -30,9 +30,9 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.ui.hierarchy.NodeSearchType; @@ -59,11 +59,9 @@ public class HierarchyTreeViewBottomPane extends Composite { * Search Combo */ searchCombo = createSearchCombo(this); - FormData data = new FormData(); - data.top = new FormAttachment(0, 2); - data.left = new FormAttachment(0, 2); - data.width = 69; - data.height = 18; + GridData data = new GridData(69, 22); + data.horizontalIndent = 3; + data.verticalAlignment = SWT.CENTER; searchCombo.setLayoutData(data); searchCombo.addSelectionListener(new DACustomComboSelectionListener() { @Override @@ -75,11 +73,11 @@ public class HierarchyTreeViewBottomPane extends Composite { * Search TextBox */ searchBox = new DATextBox(this, SWT.SINGLE); - data = new FormData(); - data.top = new FormAttachment(0, 2); - data.left = new FormAttachment(searchCombo, 3); - data.width = 170; - data.height = 15; + data = new GridData(); + data.horizontalAlignment = SWT.LEFT; + data.horizontalIndent = 3; + data.verticalAlignment = SWT.CENTER; + data.widthHint = 170; searchBox.setLayoutData(data); searchBox.setBackground(ColorResources.VIEW_BG_COLOR); searchBox.getControl().addKeyListener(new KeyAdapter() { @@ -89,6 +87,9 @@ public class HierarchyTreeViewBottomPane extends Composite { e.doit = false; } }); + + Label empty = new Label(this, SWT.NONE); + empty.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true)); /* * Zoom bar */ @@ -105,11 +106,8 @@ public class HierarchyTreeViewBottomPane extends Composite { }); scale.setLeftWidth(43); scale.setRightWidth(43); - data = new FormData(); - data.top = new FormAttachment(0, 2); - data.right = new FormAttachment(100, 0); - data.width = 202; - data.height = 18; + data = new GridData(SWT.RIGHT, SWT.CENTER, false, true); + data.widthHint = 202; scale.setLayoutData(data); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/ExpandableMemoryRangeComposite.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/ExpandableMemoryRangeComposite.java index 0ab06df..09c9438 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/ExpandableMemoryRangeComposite.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/ExpandableMemoryRangeComposite.java @@ -10,7 +10,6 @@ import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.ui.memory.table.MemoryStatisticsTable; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; -import org.tizen.dynamicanalyzer.widgets.helper.Formatter; import org.tizen.dynamicanalyzer.widgets.timeline.MarkerManager; /** @@ -64,6 +63,7 @@ public class ExpandableMemoryRangeComposite extends ExpandableComposite { | SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); memoryTable.setColumnVisibilityState(true); + memoryTable.setDefaultExpansionState(false); this.marginHeight = TOP_MARGIN_HEIGHT; this.setClient(memoryTable); @@ -74,9 +74,11 @@ public class ExpandableMemoryRangeComposite extends ExpandableComposite { * Update text in expandable header. */ private void updateText() { - this.setText(String.format("Range %d (%s - %s)", rangeIdx, - Formatter.toTimeFormat(startTime), - Formatter.toTimeFormat(endTime))); + String leftBorder = rangeIdx == 0 ? "Start" : "M" + (rangeIdx - 1); + String rightBorder = + rangeIdx == MarkerManager.INSTANCE.getMarkerCount() ? "End" : "M" + rangeIdx; + + this.setText(String.format("Range [%s - %s]", leftBorder, rightBorder)); } /** diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/HeapDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/HeapDataManager.java index 639019d..7bf10d3 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/HeapDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/HeapDataManager.java @@ -64,7 +64,12 @@ public class HeapDataManager extends PageDataManager { private final int PRESISTENT_COUNT_INDEX = 1; private final int FREE_COUNT_INDEX = 2; private final int TOTAL_SIZE_INDEX = 3; - + + /** + * Constant use for generation of unique selection indexes. + */ + private final int MAX_LIBRARIES_PER_PID = 500; + private int REALLOC_ID; private MemAllocDBTable allocateDBTable = null; @@ -247,12 +252,21 @@ public class HeapDataManager extends PageDataManager { long totalSizeForPid = 0; List children = new ArrayList(); + + // calculate initial selection index for pid + if (elem.getKey() == TOTAL_PID) { + index = 0; + } else { + index = elem.getKey() * MAX_LIBRARIES_PER_PID; + } + int parentIndex = index++; // for each library for (Map.Entry> libEntry : elem.getValue().entrySet()) { String apiName = Global.getLibraryName(libEntry.getKey()); - TreeInput staticInput = makeTreeInputForDatas(apiName, libEntry.getValue(), index++); + TreeInput staticInput = makeTreeInputForDatas(apiName, false, + libEntry.getValue(), index++); if (staticInput == null) continue; @@ -273,7 +287,12 @@ public class HeapDataManager extends PageDataManager { total.add(totalSizeForPid); total.add(persistentCountForPid + freeCountForPid); - TreeInput parent = makeTreeInputForDatas(elem.getKey().toString(), total, parentIndex); + TreeInput parent; + if (elem.getKey() == TOTAL_PID) { + parent = makeTreeInputForDatas("Total", false, total, parentIndex); + } else { + parent = makeTreeInputForDatas(elem.getKey().toString(), true, total, parentIndex); + } if (parent == null) continue; @@ -524,33 +543,45 @@ public class HeapDataManager extends PageDataManager { } /** + * Returns text that should be displayed for table entry. + * + * @param apiName entry name + * @param isProcess true if api denotes process pid entry + * @return displayed text for entry + */ + private String getDisplayedEntryName(String apiName, boolean isProcess) { + if (isProcess) { + return "PID #" + apiName; + } else { + if (apiName.equals(Global.getProject().getApplicationInfo().getExecPath())) + return MemoryPageLabels.MEMORY_MAIN_EXCUTABLE; + else + return apiName; + } + } + + /** * Creates {@link TreeInput} entry for Statistics table. - * - * @param name - * name of entry - * @param staticdata - * data in format of list of 4 long numbers - * @param index - * entry index + * + * @param apiName name of entry + * @param isProcess flag denotes whether this api name is a process entry or library entry + * @param staticdata data in format of list of 4 long numbers + * @param index entry index * @return created {@link TreeInput} entry */ - public TreeInput makeTreeInputForDatas(String name, List staticdata, int index) { + public TreeInput makeTreeInputForDatas(String apiName, boolean isProcess, + List staticdata, int index) { DATableDataFormat tableData = new DATableDataFormat(index); List text = new ArrayList(); List data = new ArrayList(); if (staticdata == null) { - Logger.error("No statistics data for '%d' entry!", name); + Logger.error("No statistics data for '%d' entry!", apiName); return null; } - String entryName = name; - if (name.equals(Global.getProject().getApplicationInfo().getExecPath())) - entryName = MemoryPageLabels.MEMORY_MAIN_EXCUTABLE; - - if (entryName.equals(Integer.toString(TOTAL_PID))) - entryName = "Total"; + String entryName = getDisplayedEntryName(apiName, isProcess); Long PByte = (Long) staticdata.get(0); Long PCount = (Long) staticdata.get(1); @@ -558,7 +589,7 @@ public class HeapDataManager extends PageDataManager { Long TotalByte = (Long) staticdata.get(3); Long TotalCount = PCount + FCount; - text.add(entryName); data.add(entryName); + text.add(entryName); data.add(apiName); text.add(String.format("%,d", TotalCount)); data.add(TotalCount); text.add(String.format("%,d", FCount)); data.add(FCount); text.add(String.format("%,d", PCount)); data.add(PCount); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java index 02422a2..283a6b5 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java @@ -43,6 +43,7 @@ import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenShotDBTable; import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenshotDataManager; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; +import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; import org.tizen.dynamicanalyzer.util.CommonUtil; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; @@ -90,46 +91,62 @@ public class ScreenshotChart extends TimelineChart { @Override public void inputChartSeries(List dataList) { - screenshotSeries.clear(); - ScreenshotDataManager.getInstance().clear(); - - @SuppressWarnings("unchecked") - List> data = (List>)dataList.get(TimelineConstants.SCREENSHOT_DB_DATA); - try { - for (int i = 0; i < data.size(); i++) { - List row = data.get(i); - double time = (Long)row.get(ScreenShotDBTable.COLUMN.CAPTURE_TIME.ordinal()) - / TimelineConstants.MEGA_DOUBLE; - if(time == 0) { - continue; - } - String fileName = (String)row.get(ScreenShotDBTable.COLUMN.IMAGE_FILE_PATH.ordinal()); -// int orientation = (Integer)row.get(ScreenShotDBTable.COLUMN.IMAGE_ORIENTATION.ordinal()); - if (Global.getProject() == null) { - return; - } - String imagePath = Global.getProject().getSavePath() - + File.separator + AnalyzerConstants.IMAGE_FOLDER_NAME - + File.separator - + fileName; - - /* - * 1 image need 1 thread. - */ - if (imageMap.containsKey(imagePath)) { - Image image = imageMap.get(imagePath); - - screenshotSeries.addSeriesItem(new DAChartSeriesItem(time, image, fileName)); - ScreenshotDataManager.getInstance().addScreenshotData(image, fileName); - } else { - Thread createImageThread = new Thread(null, new CreateImageThread( - imagePath, time), "small image getter thread"); - createImageThread.start(); - } - } - } catch (NumberFormatException ne) { - Logger.exception(ne); - } + screenshotSeries.clear(); + ScreenshotDataManager.getInstance().clear(); + + int selectedPid = Toolbar.INSTANCE.getSelectedPid(); + + @SuppressWarnings("unchecked") + List> data = (List>) dataList.get(TimelineConstants.SCREENSHOT_DB_DATA); + try { + for (int i = 0; i < data.size(); i++) { + List row = data.get(i); + double time = (Long) row.get(ScreenShotDBTable.COLUMN.CAPTURE_TIME.ordinal()) + / TimelineConstants.MEGA_DOUBLE; + if (time == 0) { + continue; + } + String fileName = (String) row.get(ScreenShotDBTable.COLUMN.IMAGE_FILE_PATH.ordinal()); + + // check if this is selected PID or not + // if selectedPid == 0 then all PIDs are selected + if (selectedPid > 0) { + int separatorPos = fileName.indexOf('_'); + if (separatorPos > 0) { + String pidStr = fileName.substring(0, separatorPos); + try { + // this is not the selected PID + if (Integer.parseInt(pidStr) != selectedPid) + continue; + } catch (NumberFormatException e) { + Logger.warning("Failed to parse PID: " + e.getMessage()); + } + } + } + + if (Global.getProject() == null) { + return; + } + String imagePath = Global.getProject().getSavePath() + File.separator + + AnalyzerConstants.IMAGE_FOLDER_NAME + File.separator + fileName; + + /* + * 1 image need 1 thread. + */ + if (imageMap.containsKey(imagePath)) { + Image image = imageMap.get(imagePath); + + screenshotSeries.addSeriesItem(new DAChartSeriesItem(time, image, fileName)); + ScreenshotDataManager.getInstance().addScreenshotData(image, fileName); + } else { + Thread createImageThread = new Thread(null, new CreateImageThread(imagePath, time), + "small image getter thread"); + createImageThread.start(); + } + } + } catch (NumberFormatException ne) { + Logger.exception(ne); + } } @Override diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/FlatFeatureDialogFeatureListPage.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/FlatFeatureDialogFeatureListPage.java index 9e29ad4..457f90f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/FlatFeatureDialogFeatureListPage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/FlatFeatureDialogFeatureListPage.java @@ -54,7 +54,6 @@ import org.tizen.dynamicanalyzer.setting.TargetData; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; import org.tizen.dynamicanalyzer.widgets.button.toggle.DACustomFeatureToggleButton; -import org.tizen.dynamicanalyzer.widgets.button.toggle.DACustomFeatureToggleErrorMessage; import org.tizen.dynamicanalyzer.widgets.button.toggle.DACustomMultiToggleButtonGroup; import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite; import org.tizen.dynamicanalyzer.widgets.tooltip.DACustomTooltip; @@ -321,39 +320,7 @@ public class FlatFeatureDialogFeatureListPage extends DAPageComposite { // listing available feature list TargetData target = SettingDataManager.INSTANCE.getTarget(null); - if (!SettingDataManager.INSTANCE.checkConnectedTargetType()) { - featuretoggleGroup = new DACustomMultiToggleButtonGroup(); - itemComp = new Composite(featureListInputComp, SWT.NONE); - itemComp.setLayout(new FormLayout()); - data = new FormData(); - data.top = new FormAttachment(0, 0); - data.left = new FormAttachment(0, 0); - data.width = FEATURELIST_BODY_ITEM_WIDTH; - data.height = FEATURELIST_BODY_ITEM_HEIGHT; - itemComp.setLayoutData(data); - - DACustomFeatureToggleErrorMessage toggle = new DACustomFeatureToggleErrorMessage( - itemComp, SWT.FILL); - toggle.setTitle(ConfigureLabels.FEATURE_NAME_ERROR_NO_TARGET); - toggle.setDescription(ConfigureLabels.FEATURE_DESCRIPTION_ERROR_NO_TARGET); - toggle.setColors(ColorResources.SETTING_BUTTON_NORMAL_COLOR, - ColorResources.SETTING_BUTTON_NORMAL_COLOR, - ColorResources.SETTING_BUTTON_NORMAL_COLOR, - ColorResources.SETTING_BUTTON_NORMAL_COLOR, - ColorResources.SETTING_BUTTON_NORMAL_COLOR, - ColorResources.SETTING_BUTTON_NORMAL_COLOR, - ColorResources.SETTING_BUTTON_NORMAL_COLOR); - toggle.setTitleFont(FontResources.SETTING_TITLE_FONT); - toggle.setDescFont(FontResources.SETTING_DESCRIPTION_FONT); - - FormData toggledata = new FormData(); - toggledata.top = new FormAttachment(0, 0); - toggledata.left = new FormAttachment(0, 0); - toggledata.width = FEATURELIST_BODY_ITEM_WIDTH; - toggledata.height = FEATURELIST_BODY_ITEM_HEIGHT - * target.getAvailableFlatFeatures().size(); - toggle.setLayoutData(toggledata); - } else { + { List features = new ArrayList(); features.addAll(target.getAvailableFlatFeatures()); Collections.sort(features, FlatFeature.getIndexComparator()); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATreeComposite.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATreeComposite.java index cc519d3..901aadc 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATreeComposite.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATreeComposite.java @@ -52,8 +52,12 @@ public abstract class DATreeComposite extends DATableComposite { int selIndex = 0; int focusIndex = -1; - protected HashMap expandMap = null; - protected HashMap gridMap = null; + /** + * Default expansion state used for new items. + */ + private boolean defaultExpansionState = true; + + private HashMap expandMap = null; public DATreeComposite(Composite parent, int style) { this(parent, SWT.NONE, style); @@ -80,6 +84,24 @@ public abstract class DATreeComposite extends DATableComposite { }); } + /** + * Returns default expansion state used currently for new items. + * true for expanded state, false for collapsed state. + */ + public boolean getDefaultExpansionState() { + return defaultExpansionState; + } + + /** + * Sets default expansion state will be used for new items. + * true for expanded state, false for collapsed state. + * + * @param defaultExpansionState the defaultExpansionState to set + */ + public void setDefaultExpansionState(boolean defaultExpansionState) { + this.defaultExpansionState = defaultExpansionState; + } + protected HashMap getExpandMap() { if (null == expandMap) { expandMap = new HashMap(); @@ -90,17 +112,9 @@ public abstract class DATreeComposite extends DATableComposite { public void setExpand(GridItem item, boolean expand) { DATableDataFormat tableData = (DATableDataFormat) item.getData(); long seqNum = tableData.getSelectionKey(); - getExpandMap().remove(seqNum); getExpandMap().put(seqNum, expand); } - public HashMap getGridMap() { - if (null == gridMap) { - gridMap = new HashMap(); - } - return gridMap; - } - private GridItem makeTreeItem(Object parent, TreeInput input) { GridItem gridItem = null; if (parent instanceof Grid) { @@ -156,8 +170,8 @@ public abstract class DATreeComposite extends DATableComposite { long seq = gridData.getSelectionKey(); Object expand = getExpandMap().get(seq); if (null == expand) { - gridItem.setExpanded(true); - expandMap.put(seq, true); + gridItem.setExpanded(defaultExpansionState); + expandMap.put(seq, defaultExpansionState); } else { gridItem.setExpanded((Boolean) expand); } @@ -232,6 +246,5 @@ public abstract class DATreeComposite extends DATableComposite { public void clear() { super.clear(); getExpandMap().clear(); - getGridMap().clear(); } } diff --git a/package/changelog b/package/changelog index 5f036aa..7a93fbf 100644 --- a/package/changelog +++ b/package/changelog @@ -1,7 +1,15 @@ +* 2.3.20 +- Improve Memory Range Analysis UX +- Rename classes related to Persistent Allocations view +- Fix JIRA defects: + SPTSDKUX-2099: Screenshot key is generate automatically (there are 2 keys generated) + SPTSDKUX-2266: Text in the text box of UI Hierachy are not Visible. + SPTSDKUX-2389: Different profile Selected feature list should not display + SRADA-1185: Screenshots are always captured by default +== Maria Guseva October 25, 2016 * 2.3.19 - Fix DA CLI failed to create log directory - Fix filtering doesn't work when click on Dlog table header -- Fix refinements in Remote Device dialog - Fix bug in the Memory Callstack table - Fix JIRA defects: SPTSDKUX-2297: How to use Dynamic analyzer is showing the old DA working. diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index ae0869a..7b7da78 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,5 +1,5 @@ Source:dynamic-analyzer -Version:2.3.19 +Version:2.3.20 Maintainer:Gihun Chang , WooJin Jung , Jaewon Lim , Seokgil Kang Package:dynamic-analyzer-product diff --git a/pom.xml b/pom.xml index 1a663d9..ddd0e2f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 org.tizen.dynamicanalyzer dynamic-analyzer - 2.3.19-SNAPSHOT + 2.3.20-SNAPSHOT pom -- 2.7.4