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;
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);
}
}
- 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) {