INTERNAL: sort application list in app combo box 44/26944/1
authorgreatim <jaewon81.lim@samsung.com>
Tue, 2 Sep 2014 02:23:35 +0000 (11:23 +0900)
committergreatim <jaewon81.lim@samsung.com>
Tue, 2 Sep 2014 02:23:35 +0000 (11:23 +0900)
sort application list in app combo box

Change-Id: I733bbcfbe40795f4746b09eabadb969c65501afb
Signed-off-by: greatim <jaewon81.lim@samsung.com>
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java

index 229c782..45c3ef7 100644 (file)
@@ -170,9 +170,6 @@ public class DACommunicator {
                        }
                        if (!devs.isEmpty()) {
                                init(devs);
-                               if (!getDevices().isEmpty()) {
-                                       GlobalInformation.setCurrentDeviceInfo(devs.get(0));
-                               }
                        }
                } else {
                        Logger.debug("sdbbridge is null!");
index d7595a6..75ba0db 100755 (executable)
@@ -347,9 +347,9 @@ public class Communicator30 extends BaseCommunicator {
                                } else if (appType.contains(AppInfo.APPTYPE_WEB)) {
                                        appInst.setApplicationType(ApplicationInst.APPTYPE_WEB);
                                        appInst.setApplicationId(app.getAppId());
-//                             } else if (appType.contains(AppInfo.APPTYPE_CAPP)) {
-//                                     appInst.setApplicationType(ApplicationInst.APPTYPE_TIZEN);
-//                                     appInst.setApplicationId(app.getAppId());
+                               } else if (appType.contains(AppInfo.APPTYPE_CAPP)) {
+                                       appInst.setApplicationType(ApplicationInst.APPTYPE_TIZEN);
+                                       appInst.setApplicationId(app.getAppId());
                                } else {
                                        appInst.setApplicationType(ApplicationInst.APPTYPE_COMMON_EXEC);
                                        appInst.setApplicationId(CommonConstants.EMPTY);
index 1fb8813..54ebfda 100755 (executable)
@@ -28,6 +28,8 @@
 package org.tizen.dynamicanalyzer.ui.toolbar;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -784,27 +786,26 @@ public class ToolbarArea {
                appCombo.setEnabled(true);
                appCombo.initCombo();
 
-               List<PackageInfo> pkgs = addToAppComboFromTarget();
+               addToAppComboFromTarget();
 
+               List<String> pkgs = appCombo.getItems();
                if (pkgs != null && pkgs.size() > 0) {
+                       PackageInfo pkgInfo = null;
                        String packageID = GlobalInformation.getCurrentDeviceInfo().getSelectedPackageID();
+
                        if (null != packageID && DACommunicator.getPkgInfoByPkgId(packageID) != null) {
-                               PackageInfo pkgInfo = DACommunicator.getPkgInfoByPkgId(packageID);
+                               pkgInfo = DACommunicator.getPkgInfoByPkgId(packageID);
                                appCombo.setText(pkgInfo.getMainApp().getInfo(AppInfo.PROPERTY.LABEL.index));
-                               GlobalInformation.setCurrentApplication(pkgInfo);
-                               GlobalInformation.getCurrentDeviceInfo().getCommunicator().onAppSelected(pkgInfo);
-                               GlobalInformation.getCurrentDeviceInfo().setSelectedPackageID(
-                                               pkgInfo.getPackageId());
-                               // startButton.setButtonEnabled(true);
-                               setStartButtonState(true);
                        } else {
+                               pkgInfo = DACommunicator.getPkgInfoByLabel(pkgs.get(0));
                                appCombo.select(0);
-                               GlobalInformation.setCurrentApplication(pkgs.get(0));
-                               GlobalInformation.getCurrentDeviceInfo().getCommunicator()
-                                               .onAppSelected(pkgs.get(0));
-                               GlobalInformation.getCurrentDeviceInfo().setSelectedPackageID(
-                                               pkgs.get(0).getPackageId());
                        }
+
+                       GlobalInformation.setCurrentApplication(pkgInfo);
+                       GlobalInformation.getCurrentDeviceInfo().getCommunicator().onAppSelected(pkgInfo);
+                       GlobalInformation.getCurrentDeviceInfo().setSelectedPackageID(pkgInfo.getPackageId());
+                       // startButton.setButtonEnabled(true);
+                       setStartButtonState(true);
                } else {
                        appCombo.select(0);
                        GlobalInformation.setCurrentApplication(null);
@@ -859,43 +860,72 @@ public class ToolbarArea {
                }
        }
 
-       private void addToAppCombo(List<PackageInfo> appPkgs) {
+       private void addToAppCombo(List<String> labels) {
                appCombo.initCombo();
 
-               if (appPkgs != null && appPkgs.size() > 0) {
-                       int itemsSize = appPkgs.size();
+               if (labels != null && labels.size() > 0) {
+                       int itemsSize = labels.size();
                        for (int i = 0; i < itemsSize; i++) {
-                               AppInfo mainapp = appPkgs.get(i).getMainApp();
-                               String label = mainapp.getInfo(AppInfo.PROPERTY.LABEL.index);
-                               if (label.isEmpty()) {
-                                       label = mainapp.getExecFileName();
-                                       mainapp.setInfo(AppInfo.PROPERTY.LABEL.index, label);
-                               }
-                               appCombo.add(label);
+                               appCombo.add(labels.get(i));
                        }
                } else {
                        appCombo.add(CommonConstants.EMPTY);
                }
        }
 
-       private List<PackageInfo> addToAppComboFromTarget() {
+       private void addToAppComboFromTarget() {
                Map<String, PackageInfo> pkgInfos = DACommunicator.getAppListFromTarget();
 
-               List<PackageInfo> appcomboList = new ArrayList<PackageInfo>();
+               List<String> labelList = new ArrayList<String>();
                if (pkgInfos != null) {
                        // TODO : reconstruct real app list for app combo
                        // relation between package and app?
                        for (Map.Entry<String, PackageInfo> entry : pkgInfos.entrySet()) {
                                AppInfo mainapp = entry.getValue().getMainApp();
                                if (!mainapp.getAppId().contains(AnalyzerConstants.APPCONTROL)) {
-                                       appcomboList.add(entry.getValue());
+                                       String label = mainapp.getInfo(AppInfo.PROPERTY.LABEL.index);
+                                       if (label.isEmpty()) {
+                                               label = mainapp.getExecFileName();
+                                               mainapp.setInfo(AppInfo.PROPERTY.LABEL.index, label);
+                                       }
+                                       labelList.add(label);
                                }
                        }
                }
 
-               addToAppCombo(appcomboList);
+               // sort label list by alphabet
+               Collections.sort(labelList, new Comparator<String>() {
+                       @Override
+                       public int compare(String o1, String o2) {
+                               int len1 = o1.length();
+                               int len2 = o2.length();
+
+                               if (o1.startsWith("[") && !o2.startsWith("[")) {
+                                       return 1;
+                               } else if (!o1.startsWith("[") && o2.startsWith("[")) {
+                                       return -1;
+                               } else {
+                                       int len = len1 > len2 ? len2 : len1;
+                                       for (int i = 0; i < len; i++) {
+                                               if (o1.charAt(i) > o2.charAt(i)) {
+                                                       return 1;
+                                               } else if (o1.charAt(i) < o2.charAt(i)) {
+                                                       return -1;
+                                               }
+                                       }
+
+                                       if (len1 > len2) {
+                                               return 1;
+                                       } else if (len1 < len2) {
+                                               return -1;
+                                       }
+                               }
+
+                               return 0;
+                       }
+               });
 
-               return appcomboList;
+               addToAppCombo(labelList);
        }
 
        public void setAppComboText(final String text) {