From 167ed8b8e25bdaa0d7bc965b100a71205da578bb Mon Sep 17 00:00:00 2001 From: Maria Guseva Date: Fri, 2 Dec 2016 13:53:59 +0300 Subject: [PATCH] [RELEASE] DA 2.4.3 - Fix chart tooltip redrawing on mouse move event - Fix View>Report toggles state after trace opening - Fix issue with interrupted Callstack Inserter thread join on Cancel button - Fix 5 bugs reported by SonarQube - Fix JIRA defects: SPTSDKUX-2702: Lifetime chart not shown the Initializing status SPTSDKUX-2890: Reset to default button is not working properly in prefrences window Change-Id: Ib1d4abd1385b86da892e66d731c203bcb21ae8fe --- .../dynamicanalyzer/resources/ColorResources.java | 1 + org.tizen.dynamicanalyzer.common.test/pom.xml | 2 +- .../tizen/dynamicanalyzer/util/InternalLogger.java | 4 +- org.tizen.dynamicanalyzer.test/pom.xml | 2 +- .../widgets/chartBoard/DAChartBoard.java | 50 +++++++++++++++++----- .../widgets/da/view/DATabComposite.java | 10 ++++- .../dynamicanalyzer.product | 2 +- .../pom.xml | 4 +- .../resources/config/setting | 2 +- .../communicator/BaseCommunicator.java | 27 ++++++------ .../dynamicanalyzer/control/StartTraceManager.java | 9 +++- .../dynamicanalyzer/nl/TimelineChartLabels.java | 1 + .../nl/TimelineChartLabels.properties | 1 + .../dynamicanalyzer/setting/FlatPreferences.java | 2 +- .../setting/SettingDataManager.java | 7 ++- .../ui/common/TimelineChartMouseEventListener.java | 16 ++----- .../dynamicanalyzer/ui/file/FileChartBoard.java | 4 +- .../ui/interactive/chart/InteractiveChartView.java | 3 +- .../dynamicanalyzer/ui/kernel/CallFlowChart.java | 4 +- .../ui/kernel/ContextSwitchingChart.java | 4 +- .../ui/memory/chart/MemoryChartBoard.java | 3 +- .../ui/network/NetworkChartBoard.java | 4 +- .../ui/opengl/chart/GLChartBoard.java | 4 +- .../org/tizen/dynamicanalyzer/ui/page/MenuBar.java | 16 ++++++- .../ui/thread/chart/SyncChartBoard.java | 4 +- .../ui/timeline/common/TimelineChartView.java | 3 +- .../ui/widgets/DADefaultChartBoard.java | 32 ++++++++++++++ package/changelog | 11 ++++- package/pkginfo.manifest | 2 +- pom.xml | 2 +- 30 files changed, 164 insertions(+), 72 deletions(-) create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DADefaultChartBoard.java diff --git a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ColorResources.java b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ColorResources.java index 27f9988..9a41135 100644 --- a/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ColorResources.java +++ b/org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ColorResources.java @@ -403,6 +403,7 @@ public class ColorResources { public static Color TIME_TICK_BG = getColor("time_tick_bg"); //$NON-NLS-1$ public static Color TIME_TICK_LINE = getColor("time_tick_line"); //$NON-NLS-1$ + public static Color LIFECYCLE_PREPARING = getColor("GRAY_170");//$NON-NLS-1$ public static Color LIFECYCLE_INITIALIZING = getColor("lifecycle_initializing");//$NON-NLS-1$ public static Color LIFECYCLE_RUNNING = getColor("lifecycle_running");//$NON-NLS-1$ public static Color LIFECYCLE_PAUSING = getColor("lifecycle_pausing");//$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer.common.test/pom.xml b/org.tizen.dynamicanalyzer.common.test/pom.xml index fcbc7aa..03e7c42 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.4.2-SNAPSHOT + 2.4.3-SNAPSHOT .. org.tizen.dynamicanalyzer diff --git a/org.tizen.dynamicanalyzer.common/src/org/tizen/dynamicanalyzer/util/InternalLogger.java b/org.tizen.dynamicanalyzer.common/src/org/tizen/dynamicanalyzer/util/InternalLogger.java index 5f38983..135f79c 100644 --- a/org.tizen.dynamicanalyzer.common/src/org/tizen/dynamicanalyzer/util/InternalLogger.java +++ b/org.tizen.dynamicanalyzer.common/src/org/tizen/dynamicanalyzer/util/InternalLogger.java @@ -195,7 +195,7 @@ public class InternalLogger implements Runnable { try { msgQueue.put(new Message(type, obj)); } catch (InterruptedException e) { - e.printStackTrace(); + Thread.currentThread().interrupt(); } } @@ -519,7 +519,9 @@ public class InternalLogger implements Runnable { } } } catch (InterruptedException e) { + // something went wrong e.printStackTrace(); + logThread.interrupt(); } } } diff --git a/org.tizen.dynamicanalyzer.test/pom.xml b/org.tizen.dynamicanalyzer.test/pom.xml index 90cc029..b4c63a2 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.4.2-SNAPSHOT + 2.4.3-SNAPSHOT .. org.tizen.dynamicanalyzer diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoard.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoard.java index 0abcee9..5022139 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoard.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoard.java @@ -67,6 +67,7 @@ import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotMarker; import org.tizen.dynamicanalyzer.widgets.helper.ColorResources; import org.tizen.dynamicanalyzer.widgets.helper.FontResources; import org.tizen.dynamicanalyzer.widgets.lifecycle.LifecycleBar; +import org.tizen.dynamicanalyzer.widgets.lifecycle.LifecycleData; import org.tizen.dynamicanalyzer.widgets.scale.DAScale; import org.tizen.dynamicanalyzer.widgets.scale.DAScaleSelectionListener; import org.tizen.dynamicanalyzer.widgets.timeline.DATimeline; @@ -82,6 +83,11 @@ public class DAChartBoard extends Composite { private DACustomToggleButton itemMinimizeButton; private DATimeline timeline; private LifecycleBar lifecycleBar; + /** + * Default lifecycle data used to draw very first phase. + */ + private LifecycleData defaultLifecycleData = null; + private DefaultToolTip lifecycleBarTooltip; private DefaultToolTip timelineTooltip; private ScrolledComposite itemListScrollComp; @@ -120,20 +126,23 @@ public class DAChartBoard extends Composite { private IDAChartSeriesMaker chartSeriesMaker; - public DAChartBoard(Composite parent, String title) { - this(parent, title, BOARD_STYLE_TIME); + public DAChartBoard(Composite parent, String title, LifecycleData defaultLifecycleData) { + this(parent, title, BOARD_STYLE_TIME, defaultLifecycleData); } - public DAChartBoard(Composite parent, String title, int[] scaleValues) { - this(parent, title, BOARD_STYLE_KERNEL); + public DAChartBoard(Composite parent, String title, int[] scaleValues, + LifecycleData defaultLifecycleData) { + this(parent, title, BOARD_STYLE_KERNEL, defaultLifecycleData); scale.setMaximum(scaleValues.length - 1); boardManager.setScaleValues(scaleValues); } - public DAChartBoard(Composite parent, String title, int boardStyle) { + public DAChartBoard(Composite parent, String title, int boardStyle, + LifecycleData defaultLifecycleData) { super(parent, SWT.NONE); this.setLayout(new FormLayout()); this.setBackground(ColorResources.WHITE); + this.defaultLifecycleData = defaultLifecycleData; titleComp = new Composite(this, SWT.NONE); titleComp.setLayout(new FillLayout()); @@ -193,6 +202,8 @@ public class DAChartBoard extends Composite { lifecycleBar.setBackground(ColorResources.GRAY_245); lifecycleBar.addMouseTrackListener(timelineMouseTrackAdapter); + reinitLifecycleData(); + if (boardStyle == BOARD_STYLE_KERNEL) { timeline.setRenderer(new DATimelineTinyTimeRenderer()); } @@ -399,6 +410,13 @@ public class DAChartBoard extends Composite { boardManager = new DAChartBoardManager(this); } + /** + * Get default {@link LifecycleData}. + */ + public LifecycleData getDefaultLifecycleData() { + return defaultLifecycleData; + } + public DAScale getScale(){ return scale; } @@ -639,13 +657,24 @@ public class DAChartBoard extends Composite { } } + /** + * Clear list of lifecycle phases and add first default phase. + */ + private void reinitLifecycleData() { + if (lifecycleBar != null) { + lifecycleBar.clear(); + if (defaultLifecycleData != null) { + lifecycleBar.addLifecycleData(defaultLifecycleData); + } + } + } + public void contentsClear() { itemList.contentsClear(); setTotalEndTime(0, true); timeline.setStartTime(0); - if (null != lifecycleBar) { - lifecycleBar.clear(); - } + reinitLifecycleData(); + if (null != oldImage) { oldImage = null; } @@ -661,9 +690,8 @@ public class DAChartBoard extends Composite { itemList.setSize(0, 0); setTotalEndTime(0, true); timeline.clear(); - if (null != lifecycleBar) { - lifecycleBar.clear(); - } + reinitLifecycleData(); + if (null != oldImage) { oldImage = null; } diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/da/view/DATabComposite.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/da/view/DATabComposite.java index 4187d7b..56815f4 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/da/view/DATabComposite.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/da/view/DATabComposite.java @@ -469,9 +469,15 @@ public class DATabComposite extends DABaseComposite { }, 10, 50); } - public void removeView(final String ID, boolean usingAnimation) { - DABaseComposite child = getView(ID); + public void removeView(final String viewID, boolean usingAnimation) { + DABaseComposite child = getView(viewID); int index = children.indexOf(child); + + if (index < 0) { + Logger.warning("[%s] can't remove tab %s", ID, viewID); + return; + } + children.remove(index); contentsComposite.layout(); tabComposite.layout(); diff --git a/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product b/org.tizen.dynamicanalyzer.workbench.product/dynamicanalyzer.product index b5e83e2..5c3f819 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 249a3e4..d8a8ed6 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.4.2-SNAPSHOT + 2.4.3-SNAPSHOT .. org.tizen.dynamicanalyzer org.tizen.dynamicanalyzer.workbench.product - 2.4.2-SNAPSHOT + 2.4.3-SNAPSHOT eclipse-repository diff --git a/org.tizen.dynamicanalyzer.workbench.product/resources/config/setting b/org.tizen.dynamicanalyzer.workbench.product/resources/config/setting index 15b3c57..def100b 100644 --- a/org.tizen.dynamicanalyzer.workbench.product/resources/config/setting +++ b/org.tizen.dynamicanalyzer.workbench.product/resources/config/setting @@ -4,7 +4,7 @@ Debug Print|Y Available Target List|mobile|wearable Selected Target|mobile Total Overhead Range|1000000|3000000|7000000|15000000 -Selected Preferences|2001 +Selected Preferences| mobile|Protocol Version|4.0 mobile|Available FlatFeature List|101|102|103|201|202|203|301|302|401|501|502|601|602|603|701|801|802 mobile|Selected FlatFeature List| diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java index c197f7e..4b194b3 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java @@ -174,11 +174,7 @@ public class BaseCommunicator { } } - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } + Thread.sleep(100); // connect control socket @@ -186,12 +182,7 @@ public class BaseCommunicator { if (!result.isSuccess()) { // if connect Failed retry 'createControlSocket' - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + Thread.sleep(1000); result = createControlSocket(); @@ -224,6 +215,13 @@ public class BaseCommunicator { if (!result.isSuccess()) { Logger.warning(result.toString()); } + } catch (InterruptedException e) { + // should not be here + Logger.error("Interrupted while connecting to device: " + e.getLocalizedMessage()); + + // interrupt this thread (cleanup 'finally' block will still be + // executed) + Thread.currentThread().interrupt(); } finally { // unforward port (forwarded port is not necessary anymore) if (localPort > 0 && remotePort > 0) { @@ -267,7 +265,7 @@ public class BaseCommunicator { return new DAResult(ErrorCode.SUCCESS); } - private DAResult getRemotePort() { + private DAResult getRemotePort() throws InterruptedException { DAResult result = new DAResult(ErrorCode.SUCCESS); final List portLines = new ArrayList(); @@ -299,9 +297,8 @@ public class BaseCommunicator { Thread.sleep(PORT_WAIT_INTERVAL); } catch (InterruptedException e) { - Logger.debug(); // for new line - Logger.debug("Interrupt occurred while getting port number"); - break; + Logger.debug(CommonConstants.NEW_LINE + "Interrupted while getting port number"); + throw e; } } Logger.debug(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/control/StartTraceManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/control/StartTraceManager.java index 4899263..01193cd 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/control/StartTraceManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/control/StartTraceManager.java @@ -297,8 +297,10 @@ public class StartTraceManager implements Runnable { setStageComplete(STAGE.FINAL); } catch (InterruptedException e) { // operation is canceled - // re-interrupt thread to set the flag as 'interrupted' - // Thread.currentThread().interrupt(); + + // swallow exception and proceed to 'finally' + // raised interruption flag may cause failed joins + // and other cleanup operations // set DA state to canceling result = new DAResult(ErrorCode.ERR_BY_USER_CANCEL); @@ -426,6 +428,9 @@ public class StartTraceManager implements Runnable { private void testCancel() throws InterruptedException { if (startThread.isInterrupted() || AnalyzerManager.isExit()) { + // reset interruption flag + Thread.interrupted(); + throw new InterruptedException(); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.java index 63c42aa..41b1313 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.java @@ -160,6 +160,7 @@ public class TimelineChartLabels extends NLS { public static String UIEVENT_FLICK_DIRECTION_LEFT; public static String UIEVENT_FLICK_DIRECTION_DOWN; + public static String LIFECYCLE_PREPARING; public static String LIFECYCLE_INITIALIZING; public static String LIFECYCLE_RUNNING; public static String LIFECYCLE_PAUSING; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.properties index 997ef68..841952a 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/TimelineChartLabels.properties @@ -126,6 +126,7 @@ UIEVENT_FLICK_DIRECTION_UP=Up UIEVENT_FLICK_DIRECTION_LEFT=Left UIEVENT_FLICK_DIRECTION_DOWN=Down +LIFECYCLE_PREPARING=Preparing for trace LIFECYCLE_INITIALIZING=Initializing LIFECYCLE_RUNNING=Running LIFECYCLE_PAUSING=Pausing diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/FlatPreferences.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/FlatPreferences.java index dc27c1a..c27c929 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/FlatPreferences.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/FlatPreferences.java @@ -6,7 +6,7 @@ import java.util.Map; import org.tizen.dynamicanalyzer.nl.PreferencesDialogLabels; public enum FlatPreferences { - SOURCE_VIEW(2001, 1, PreferencesDialogLabels.SOURCE_VIEW), + SOURCE_VIEW(2001, 0, PreferencesDialogLabels.SOURCE_VIEW), SYSTEM_SAMPLING_RATE(2002, 1000,PreferencesDialogLabels.SYSTEM_SAMPLIING_RATE), FUNCTION_SAMPLING_RATE(2003, 10, PreferencesDialogLabels.FUNCION_SAMPLIING_RATE), RECORDING(2004, 1, PreferencesDialogLabels.RECORDING), 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 e9b43a5..f2d9ddf 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/SettingDataManager.java @@ -159,13 +159,16 @@ public enum SettingDataManager { for (int i = 1; i < list.length; i++) { String valueList[] = list[i].split(CommonConstants.COLON); FlatPreferences selected = FlatPreferences.getFlatPreferences(Integer.parseInt(valueList[0])); - + if(selected == null) continue; if (valueList.length > 1) { selected.setValue(Integer.parseInt(valueList[1])); - } // else : feature is on/off type + } else { + // else : feature is on/off type + selected.setValue(1); + } optionsSelectedPreferenceList.add(selected); initOptionsSelectedPreferenceList.add(selected); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java index 99629f8..bc8d067 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/common/TimelineChartMouseEventListener.java @@ -73,8 +73,7 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou protected static final int SELECTION_MARKER_INDEX = 0; private static final int SCREENSHOT_DOT_WIDTH = 12; - private boolean abnormalClicked = true; - + public TimelineChartMouseEventListener(DAPopupMenu menu, DATimeline timeline, String pageID) { this.menu = menu; this.timeline = timeline; @@ -92,10 +91,7 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) marker; double eventTime = plot.getXFromXPixel(e.x); - - /// abnormal click don't have mouse_up - abnormalClicked = false; - + if (e.button == 3) { List itemList = menu.getItems(); for(DAPopupMenuItem item : itemList) { @@ -153,8 +149,8 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou @Override public void mouseUp(MouseEvent e) { int clickcount = e.count; - - if (e.button == 3 || abnormalClicked == true) { + + if (e.button == 3) { return; } /// second click is need to go double click event. @@ -207,10 +203,6 @@ public class TimelineChartMouseEventListener extends MouseAdapter implements Mou @Override public void mouseMove(MouseEvent e) { - /// don't have mouse up click event is abnormal. - if(abnormalClicked) { - return; - } DAChart chart = (DAChart) e.widget; DAChartPlot plot = chart.getPlot(); DAChartPlotMarker marker = plot.getMarkers().get(SELECTION_MARKER_INDEX); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java index 198c186..86b7b9d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java @@ -50,6 +50,7 @@ import org.tizen.dynamicanalyzer.ui.file.model.FileAccessor; import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData; import org.tizen.dynamicanalyzer.ui.file.model.FileStatus; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.Formatter; @@ -58,12 +59,11 @@ import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip; import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; -public class FileChartBoard extends DAChartBoard { +public class FileChartBoard extends DADefaultChartBoard { private List chartList = new ArrayList(); private FileDataManager fileChartManager = FileDataManager.getInstance(); private FileDataMaker dataMaker; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/interactive/chart/InteractiveChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/interactive/chart/InteractiveChartView.java index fed8f7f..25ca9cd 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/interactive/chart/InteractiveChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/interactive/chart/InteractiveChartView.java @@ -57,6 +57,7 @@ import org.tizen.dynamicanalyzer.ui.timeline.common.AddChartMenuComposite; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.timeline.logparser.LifecycleLogParser; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.util.WorkbenchUtil; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.Formatter; @@ -84,7 +85,7 @@ public class InteractiveChartView extends DAViewComposite { Composite contents = getContentArea(); contents.setBackground(ColorResources.WINDOW_BG_COLOR); - chartBoard = new DAChartBoard(contents, InteractivePageLabels.INTERACTIVE_CHART); + chartBoard = new DADefaultChartBoard(contents, InteractivePageLabels.INTERACTIVE_CHART); chartBoard.setItemHeight(65); chartBoard.setNameFont(FontResources.CHART_NAME_FONT); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/CallFlowChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/CallFlowChart.java index e72dea1..f12c63e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/CallFlowChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/CallFlowChart.java @@ -48,19 +48,19 @@ import org.tizen.dynamicanalyzer.ui.kernel.data.KernelDataMaker; import org.tizen.dynamicanalyzer.ui.kernel.data.KernelDataManager; import org.tizen.dynamicanalyzer.ui.kernel.data.KernelDataPerThread; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip; import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardHeightChangeableItem; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItemList; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; -public class CallFlowChart extends DAChartBoard { +public class CallFlowChart extends DADefaultChartBoard { private KernelDataPerThread selectedData = null; private boolean dirty = false; private final KernelDataMaker dataMaker = KernelDataManager.getInstance() diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java index faa1dba..20dd41b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java @@ -54,19 +54,19 @@ import org.tizen.dynamicanalyzer.ui.kernel.data.KernelDataPerThreadComparator; import org.tizen.dynamicanalyzer.ui.kernel.data.KernelSelectionData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip; import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardHeightChangeableItem; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItemList; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; -public class ContextSwitchingChart extends DAChartBoard { +public class ContextSwitchingChart extends DADefaultChartBoard { public static final String KERNEL_CHART_DATA_TYPE = "kernel_data_type"; private final KernelDataMaker dataMaker = KernelDataManager.getInstance().getDataMaker(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/MemoryChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/MemoryChartBoard.java index 7bc45e9..55f3a60 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/MemoryChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/MemoryChartBoard.java @@ -54,6 +54,7 @@ import org.tizen.dynamicanalyzer.ui.memory.data.ProcessMemoryDBTable; import org.tizen.dynamicanalyzer.ui.page.MenuBar; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; @@ -65,7 +66,7 @@ import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; -public class MemoryChartBoard extends DAChartBoard { +public class MemoryChartBoard extends DADefaultChartBoard { private int allProcessPID = 0; private int preSelectedPID = -1; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java index 0490988..e62ea76 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java @@ -49,6 +49,7 @@ import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSelectionType; import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; @@ -56,12 +57,11 @@ import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip; import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; -public class NetworkChartBoard extends DAChartBoard { +public class NetworkChartBoard extends DADefaultChartBoard { private List chartItemList = new ArrayList(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartBoard.java index 96d9468..ee4680c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/chart/GLChartBoard.java @@ -28,10 +28,10 @@ package org.tizen.dynamicanalyzer.ui.opengl.chart; import org.eclipse.swt.widgets.Composite; import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; -public abstract class GLChartBoard extends DAChartBoard { +public abstract class GLChartBoard extends DADefaultChartBoard { public GLChartBoard(Composite parent, String title, int boardStyle) { super(parent, title, boardStyle); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java index 3b5e302..ac47578 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java @@ -298,7 +298,10 @@ public class MenuBar { } else if (menuName.equals(MenuBarLabels.FILE_LOAD)) { if (showSaveWarning() == true) { - showLoadDialog(); + if (showLoadDialog()) { + // reset checks on ReportMenu items + resetReportItemCheck(); + } } } else if (menuName.equals(MenuBarLabels.FILE_SAVE)) { showSaveDialog(); @@ -714,7 +717,14 @@ public class MenuBar { return clear; } - public void showLoadDialog(){ + /** + * Show to user File Load Dialog. + * Launch trace loading in separate thread. + * + * @return true if trace loading was launched, + * false if user canceled dialog + */ + public boolean showLoadDialog() { FileDialog dialog = new FileDialog(currentShell, SWT.OPEN); dialog.setFilterNames(new String[] { "Zip file" }); dialog.setFilterExtensions(new String[] { "*.zip" }); @@ -730,6 +740,8 @@ public class MenuBar { OpenTraceProgressManager.getInstance().setSavePath(decompresspath); OpenTraceProgressManager.getInstance().startOpenTraceThread(); } + + return result != null; } public void showSaveDialog() { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/chart/SyncChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/chart/SyncChartBoard.java index ec3b426..993107d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/chart/SyncChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/chart/SyncChartBoard.java @@ -51,6 +51,7 @@ import org.tizen.dynamicanalyzer.ui.thread.type.ThreadPageSyncData; import org.tizen.dynamicanalyzer.ui.thread.type.ThreadPageSyncDataEvent; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.util.Logger; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; @@ -58,12 +59,11 @@ import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; -public class SyncChartBoard extends DAChartBoard { +public class SyncChartBoard extends DADefaultChartBoard { private List syncChartItemList = new ArrayList(); protected int syncListCount = -1; private int preSelectionPId = -1; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineChartView.java index bd852f9..cd1d427 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineChartView.java @@ -66,6 +66,7 @@ import org.tizen.dynamicanalyzer.ui.timeline.logparser.LifecycleLogParser; import org.tizen.dynamicanalyzer.ui.toolbar.DAToolBarCustomCombo; import org.tizen.dynamicanalyzer.ui.toolbar.ToolBarComboListener; import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar; +import org.tizen.dynamicanalyzer.ui.widgets.DADefaultChartBoard; import org.tizen.dynamicanalyzer.util.WorkbenchUtil; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer; @@ -99,7 +100,7 @@ public class TimelineChartView extends DAViewComposite { Composite contents = getContentArea(); contents.setBackground(ColorResources.WHITE); - chartBoard = new DAChartBoard(contents, "Timeline"); //$NON-NLS-1$ + chartBoard = new DADefaultChartBoard(contents, "Timeline"); //$NON-NLS-1$ chartBoard.setChartSeriesMaker(timelineChartManager); chartBoard.setNameFont(FontResources.CHART_NAME_FONT); timelineChartManager.setChartTimelineChartBoard(chartBoard); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DADefaultChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DADefaultChartBoard.java new file mode 100644 index 0000000..cb7f7d6 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DADefaultChartBoard.java @@ -0,0 +1,32 @@ +package org.tizen.dynamicanalyzer.ui.widgets; + +import org.eclipse.swt.widgets.Composite; +import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; +import org.tizen.dynamicanalyzer.widgets.lifecycle.LifecycleData; + +/** + * This chart board class is used to wrap all child chart boards to add default lifecycle + * preparation phase. + */ +public class DADefaultChartBoard extends DAChartBoard { + /** + * Default lifecycle data for preparation phase. + */ + private static final LifecycleData defaultLifecycleData = new LifecycleData(0, + ColorResources.LIFECYCLE_PREPARING, TimelineChartLabels.LIFECYCLE_PREPARING); + + public DADefaultChartBoard(Composite parent, String title, int boardStyle) { + super(parent, title, boardStyle, defaultLifecycleData); + } + + public DADefaultChartBoard(Composite parent, String title, int[] scaleValues) { + super(parent, title, scaleValues, defaultLifecycleData); + } + + public DADefaultChartBoard(Composite parent, String title) { + super(parent, title, defaultLifecycleData); + } + +} diff --git a/package/changelog b/package/changelog index 71009b3..efdbda8 100644 --- a/package/changelog +++ b/package/changelog @@ -1,6 +1,15 @@ +* 2.4.3 +- Fix chart tooltip redrawing on mouse move event +- Fix View>Report toggles state after trace opening +- Fix issue with interrupted Callstack Inserter thread join on Cancel button +- Fix 5 bugs reported by SonarQube +- Fix JIRA defects: + SPTSDKUX-2702: Lifetime chart not shown the Initializing status + SPTSDKUX-2890: Reset to default button is not working properly in prefrences window +== Maria Guseva December 01, 2016 * 2.4.2 - Fix UI Event list not shown due to NullPointerException (regression in DA 2.4.1) -- Fix empty heap chart for main executable (regression in DA 2.4.0) +- Fix empty heap chart for main executable (regression in DA 2.4.1) - Fix JIRA defects: SPTSDKUX-2495: DA Launch Delayed too much SPTSDKUX-2722: Capture icon is not add screenshot tab for second time tracing diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index 20466a5..2882f32 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,5 +1,5 @@ Source:dynamic-analyzer -Version:2.4.2 +Version:2.4.3 Maintainer:Gihun Chang , WooJin Jung , Jaewon Lim , Seokgil Kang Package:dynamic-analyzer-product diff --git a/pom.xml b/pom.xml index 8d3d43d..191a664 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 org.tizen.dynamicanalyzer dynamic-analyzer - 2.4.2-SNAPSHOT + 2.4.3-SNAPSHOT pom -- 2.7.4