[SRADA-707]Making restart program, when StopTrace in deadLock.
authorggh1933.go <ggh1933.go@samsung.com>
Tue, 31 May 2016 02:07:21 +0000 (11:07 +0900)
committergihun chang <gihun.chang@samsung.com>
Tue, 31 May 2016 09:59:43 +0000 (18:59 +0900)
 - Add restart DA method in AnalyzerUtil.
 - When StopTrace DeadLock (in "while" over 10 secs), Wanning Dialog popup.
 - Select RestartDA call restart DA method.
 - + Fix ToolBar swtException Error issue, When Multi device connected and any device AppList Empty.
 - + AppList Empty noty text

Change-Id: I19384c05c53f8eafce22db59769b51a699fe234c

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/control/StopTraceManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/DAToolBarCustomCombo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/Toolbar.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/AnalyzerUtil.java

index 4297d10..eca0d75 100755 (executable)
  */
 package org.tizen.dynamicanalyzer.control;
 
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.DALogExport;
 import org.tizen.dynamicanalyzer.common.DAResult;
 import org.tizen.dynamicanalyzer.common.Global;
 import org.tizen.dynamicanalyzer.common.DAState;
@@ -34,6 +37,7 @@ import org.tizen.dynamicanalyzer.handlers.ReplayManager;
 import org.tizen.dynamicanalyzer.handlers.UIAction;
 import org.tizen.dynamicanalyzer.nl.MenuBarLabels;
 import org.tizen.dynamicanalyzer.project.Project;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.setting.Feature;
 import org.tizen.dynamicanalyzer.setting.SettingDataManager;
 import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
@@ -51,6 +55,10 @@ import org.tizen.dynamicanalyzer.ui.timeline.dlog.DLogDataManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar;
 import org.tizen.dynamicanalyzer.util.Logger;
 import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
 import org.tizen.dynamicanalyzer.widgets.da.base.ProgressDialog;
 
 public class StopTraceManager implements Runnable {
@@ -212,6 +220,8 @@ public class StopTraceManager implements Runnable {
                                                checkCompleted = stopThreadCompleted;
                                        }
                                        
+                                       long startTime =  System.currentTimeMillis();
+                                       
                                        while(checkCompleted==false){
                                                try {
                                                        Thread.sleep(10);
@@ -223,6 +233,26 @@ public class StopTraceManager implements Runnable {
                                                synchronized(stopThreadCompleted){
                                                        checkCompleted = stopThreadCompleted;
                                                }
+                                               
+                                               long elapsedTime = System.currentTimeMillis() - startTime;
+                                               if(elapsedTime > 10000){
+                                                       
+                                                       Display.getDefault().asyncExec(new Runnable() {
+                                                               @Override
+                                                               public void run() {
+                                                                       Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
+                                                                       DADialog dialog = new DADialog(shell, SWT.NONE);
+                                                                       dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
+                                                                       dialog.setMessage("DA unsafely Stopped, If you want to another trace Select restart DA");                               
+                                                                       dialog.setDialog(true);
+                                                                       dialog.getExportButton().setText("restart DA");
+                                                                       dialog.getExportButton().addClickListener(reStartListener);
+                                                                       dialog.open();
+                                                               }
+                                                       });                                                     
+                                                       
+                                                       break;
+                                               }
                                        }
                                        // set shortcut and toolbar UI as DA state
                                        ShortCutManager.getInstance().setEnabled(true);
@@ -243,4 +273,11 @@ public class StopTraceManager implements Runnable {
                        enableToolBar.start();
                }
        }
+       
+       private static DACustomButtonClickEventListener reStartListener = new DACustomButtonClickEventListener() {
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       AnalyzerUtil.forcedRestartDA();
+               }
+       };
 }
index fc6c66e..4f19b01 100644 (file)
@@ -517,6 +517,7 @@ public class DAToolBarCustomCombo extends Canvas {
        public void upEvent() {\r
                if (isShowSelectedText()) {\r
                        if (getItems().size() > 0) {\r
+                               if(itemIndex + selection < 0) return;\r
                                setText(getItems().get(itemIndex + selection));\r
                        }\r
                } else if (null != attr.getText()) {\r
index 055e44e..8b470f9 100644 (file)
@@ -1045,49 +1045,10 @@ public enum Toolbar {
                                String appLabel = pkglist.get(i).getMainApp().getLabel();
                                appCombo.add(appLabel);
                        }
-                       // Tooltip Disabled
-                       // set tooltip
-                       /*
-                       appCombo.setTooltip(new DACustomComboTooltip() {
-
-                               @Override
-                               public boolean makeTooltipInfo() {
-                                       Map<String, List<String>> map = getTooltipTextListMap();
-                                       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-                                       for (int i = 0; i < pkglist.size(); i++) {
-                                               PackageInfo pkg = pkglist.get(i);
-                                               AppInfo app = pkg.getMainApp();
-                                               if (AnalyzerConstants.RUNNING_PROCESS_LABEL.equals(app.getLabel())
-                                                               || AnalyzerConstants.COMMON_EXECUTABLE_LABEL.equals(app.getLabel())
-                                                               || AnalyzerConstants.WITHOUT_EXECUTABLE_LABEL.equals(app.getLabel())) {
-                                                       continue;
-                                               }
-
-                                               // set information
-                                               List<String> info = new ArrayList<String>();
-                                               info.add(AnalyzerLabels.DETAIL_INFORMATION_PACKAGE_NAME
-                                                               + pkg.getPackageId());
-                                               info.add(AnalyzerLabels.DETAIL_INFORMATION_PACKAGE_VERSION
-                                                               + pkg.getVersion());
-                                               info.add(AnalyzerLabels.DETAIL_INFORMATION_PACKAGE_INSTALL_TIME
-                                                               + dateFormat.format(new Date(pkg.getInstallTime() * 1000)));
-                                               info.add(AnalyzerLabels.DETAIL_INFORMATION_APPLICATION_NAME
-                                                               + app.getLabel());
-                                               info.add(AnalyzerLabels.DETAIL_INFORMATION_APPLICATION_EXEC_PATH
-                                                               + app.getExecPath());
-
-                                               map.put(app.getLabel(), info);
-                                       }
-                                       return true;
-                               }
-                       });
-                       */
+                       redrawAppcombo();
                } else {
-                       ShowAppComboTitle();
-                       //appCombo.select(0);
-               }
-               redrawAppcombo();
+                       appCombo.add("===[App List Empty]===");
+               }               
        }
 
        @UIMethod
@@ -1263,7 +1224,7 @@ public enum Toolbar {
                                
                                if (oldPackageName == null || (appCombo.getItems().indexOf(oldPackageName) < 0)) {
                                        // there is no such item
-                                       selectAppCombo(0);
+                                       ShowAppComboTitle();
                                } else {
                                        appCombo.setText(oldPackageName);
                                }
index 574959c..1dfadb6 100644 (file)
@@ -507,4 +507,17 @@ public class AnalyzerUtil {
        public static void setLatestTraceMode(String pageID, boolean isOn) {
                latestTraceModeMap.put(pageID, isOn);
        }
+       
+       /// DA program restart forcely
+       public static void forcedRestartDA(){
+               Display.getDefault().syncExec(new Runnable(){
+
+                       @Override
+                       public void run() {
+                               // TODO Auto-generated method stub
+                               PlatformUI.getWorkbench().restart();
+                       }
+                       
+               });
+       }
 }